发明名称 一种ICMP差错报文快速生成方法
摘要 本发明公开了一种ICMP差错报文快速生成方法,在高速查表的交换网络中,需将不定长的IP数据报拆分为几个甚至几百个数量不等的定长信元数据进行高速查表,该方法针对查表失败的信元数据,通过直接提取及处理信元数据中的有效信息,生成ICMP差错报文,解决了信元数据查表失败生成ICMP差错报文时需进行信元重组的问题。采用本发明方法对查表失败的信元数据可以直接生成ICMP差错报文,从而达到快速响应的目的,对于一个IP数据报,最多只需处理其拆分得到的前两个信元数据,即可生成ICMP差错报文,从而降低了生成ICMP报文的处理复杂度,并节约了系统实现的软/硬件资源。
申请公布号 CN104135439A 申请公布日期 2014.11.05
申请号 CN201410360267.1 申请日期 2014.07.25
申请人 西安空间无线电技术研究所 发明人 李静玲;周诠;黎军;呼延烺;张怡;崔涛;魏佳圆;粱薇
分类号 H04L12/741(2013.01)I 主分类号 H04L12/741(2013.01)I
代理机构 中国航天科技专利中心 11009 代理人 安丽
主权项 一种ICMP差错报文快速生成方法,其特征在于步骤如下:(1)从IP交换网络中接收IP数据报;(2)对步骤(1)接收的IP数据报的首部信息进行判断,将步骤(1)中首部信息正确的IP数据报拆分为适用于高速查表的固定长度的信元数据;(3)根据高速查表网络的转发表信息,对步骤(2)所得到的信元数据进行查表,若在转发表中无法查找到信元数据中目的IP地址所对应的信息,转到步骤(4),若在转发表中可以查找到信元数据中目的IP地址所对应的信息,转到步骤(5);(4)对步骤(3)在转发表中无法查找到的信元数据进行路由表查表,若在路由表中无法查找到信元数据中目的IP地址所对应的信息,转到步骤(6),若在路由表中可以查找到信元数据中目的IP地址所对应的信息,转到步骤(5);(5)根据转发表或路由表中查找到信元数据中目的IP地址所对应的信息,将步骤(3)或步骤(4)中查表成功的信元数据输出;(6)记录信元数据在步骤(4)中查找路由表失败的具体错误类型,将与该错误类型相应的ICMP错误类型字段及代码字段填充至该信元数据的第63、64字节,转到步骤(7);(7)接收步骤(6)中填充ICMP错误类型字段及代码字段后的信元数据,该信元数据包括首部信息、载荷及尾部信息,其中首部信息包括头标识、尾标识和拆分序号,对接收到的第1个信元数据首部信息进行判断,若该信元数据首部信息中头标识和尾标识同时为“1”,转到步骤(8),若信元数据首部信息中头标识和尾标识不同时为“1”,转到步骤(10);(8)接收步骤(7)中满足条件信元数据,提取该信元数据第63字节和第64字节中的ICMP错误类型字段及代码字段和信元数据载荷中的IP首部信息中的首部长度字段,转到步骤(9);(9)根据步骤(8)的首部长度字段,提取信元数据载荷中的IP首部信息、IP载荷前8字节信息,转到步骤(18);(10)接收步骤(7)中信元数据首部信息中头标识和尾标识不同时为“1”的信元数据,若接收到的第1个信元数据首部信息中的头标识为“1”,接收到的第2个信元数据首部信息中的拆分序号为“2”,表示这两个信元为原始IP数据报拆分得到的第1个信元数据和第2个信元数据,已经包含生成ICMP差错报文所需信息,转到步骤(11);若接收到的第1个信元数据首部信息中头标识不为“1”或第2个信元数据首部信息中的拆分序号不为“2”,转到步骤(13);(11)接收步骤(10)中满足条件信元数据,提取第1个信元数据的第63字节和第64字节中的ICMP错误类型字段及代码字段和第1个信元数据载荷中的IP首部信息中的首部长度,转到步骤(12);(12)接收步骤(10)中满足条件信元数据,将第1个信元数据的载荷和第2个信元数据的载荷依次组合后存储,根据步骤(11)所提取的IP首部信息中的首部长度,提取组合后存储的载荷中的IP首部信息、IP载荷前8字节信息,转到步骤(18);(13)接收步骤(10)中第1个信元数据首部信息的头标识不为“1”或第2个信元数据首部信息的拆分序号不为“2”的信元数据,若第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”,转到步骤(14)处理第1个信元数据,转到步骤(17)处理第2个信元数据;若不满足第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”,则该信元数据为拆分得到的中间信元或尾部信元,转到步骤(17);(14)接收步骤(13)中第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”条件下的第1个信元数据,提取该信元数据的第63字节和第64字节中的ICMP错误类型字段及代码字段和该信元数据载荷中的IP首部信息中的首部长度字段,转到步骤(15);(15)判断步骤(14)接收到的信元数据载荷中的IP首部信息中的首部长度是否小于等于40,若是,则该信元数据已经包含生成ICMP差错报文所需信息,转到步骤(16),若该IP首部长度大于40,转到步骤(17);(16)根据步骤(15)接收到的信元数据载荷中的IP首部信息中的首部长度字段,提取该信元数据载荷中的IP首部信息、IP载荷前8字节信息,转到步骤(18);(17)接收步骤(13)中第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”条件下的第2个信元数据,以及步骤(13)中不满足第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”条件下的第1个信元数据和第2个信元数据,以及步骤(15)中IP首部长度大于40的信元数据,将接收到的信元数据置为“0”,并输出该数据;(18)ICMP目的地不可达差错报文包括错误类型字段、代码字段、检验和字段及原始IP数据报的首部信息及IP载荷前8字节信息,根据ICMP目的地不可达差错报文格式,填入步骤(9)或步骤(12)或步骤(16)的IP首部信息、IP载荷前8字节信息和步骤(8)或步骤(11)或步骤(14)的ICMP错误类型字段及代码字段到差错报文,检验和字段置为“0”,得到未进行检验和计算的ICMP差错报文,转到步骤(19);(19)根据步骤(18)得到的未进行检验和计算的ICMP差错报文,计算ICMP差错报文检验和;(20)将步骤(19)得到的ICMP差错报文检验和填入步骤(18)得到的未进行检验和计算的ICMP差错报文中的检验和字段,生成ICMP目的地不可达差错报文;(21)将步骤(20)所生成的ICMP差错报文封装为IP数据报,并发送该IP数据报。
地址 710100 陕西省西安市长安区西街150号