CN104135439A - 一种icmp差错报文快速生成方法 - Google Patents
一种icmp差错报文快速生成方法 Download PDFInfo
- Publication number
- CN104135439A CN104135439A CN201410360267.1A CN201410360267A CN104135439A CN 104135439 A CN104135439 A CN 104135439A CN 201410360267 A CN201410360267 A CN 201410360267A CN 104135439 A CN104135439 A CN 104135439A
- Authority
- CN
- China
- Prior art keywords
- cell data
- message
- header
- icmp
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种ICMP差错报文快速生成方法,在高速查表的交换网络中,需将不定长的IP数据报拆分为几个甚至几百个数量不等的定长信元数据进行高速查表,该方法针对查表失败的信元数据,通过直接提取及处理信元数据中的有效信息,生成ICMP差错报文,解决了信元数据查表失败生成ICMP差错报文时需进行信元重组的问题。采用本发明方法对查表失败的信元数据可以直接生成ICMP差错报文,从而达到快速响应的目的,对于一个IP数据报,最多只需处理其拆分得到的前两个信元数据,即可生成ICMP差错报文,从而降低了生成ICMP报文的处理复杂度,并节约了系统实现的软/硬件资源。
Description
技术领域
本发明涉及一种ICMP差错报文快速生成方法,属于卫星通信中差错报文生成的技术领域。
背景技术
IP提供了无连接、不可靠和无确认的数据报交付机制,在有效利用网络资源的同时也带来了两个问题,一是缺少差错控制机制;二是没有设计辅助的主机管理和查询机制。为了解决这两个问题,ICMP(Internet ControlMessage Protocol,即Internet控制报文协议)被提出,用以对网络中的源路由器报告差错信息或提供需要查询的信息。ICMP是互联网控制报文协议,在发送方与接收方之间传递出错信息及查询报文信息,ICMP协议根据其功能可以分为两大类:一类是ICMP差错报文,一类是查询报文。其中ICMP差错报文是如果IP数据报文在互联网传输过程中出错,用以给发送方报告错误,在IP交换系统中,如果查表失败,则需要给发送方报告ICMP目的地不可达报文。
在高速查表的交换网络中,需将不定长的IP数据报拆分为几个甚至几百个数量不等的定长信元数据进行高速查表,若信元数据查表失败,则需生成ICMP目的地不可达差错报文,按照现有的处理方法:一、将信元数据重组为拆分前的原始IP数据报,由IP数据报提取生成ICMP报文所需信息,按照ICMP目的地不可达报文格式生成ICMP报文,该方法额外增加了信元重组处理流程,不仅不能及时对错误报文进行响应,且需要较多的软硬件资源;二、由于ICMP目的地不可达报文仅需要原始IP数据报的部分信息,可以在IP数据报拆分前将IP数据报中生成ICMP报文所需信息单独存储,若查表失败可直接提取该信息,该方法可以快速响应,但在交换网络中,一般情况下IP数据报查表失败的概率不大,若每一个IP数据报都存储部分信息,所需缓存空间太大,降低了系统的资源利用率;三、将信元数据视作特殊IP数据报,对每个错误信元都生成ICMP报文,由于信元数据不一定包含原始IP数据报的全部信息,因此生成的ICMP报文无法准确反馈错误信息,且如果每个信元都生成ICMP报文,大大增加错误报文数量,使链路中正常通信的IP数据报传输效率降低,导致链路吞吐率下降。因此,在高速查表网络中需要研究一种针对查表异常情况快速生成ICMP差错报文的方法。
发明内容
本发明的技术解决问题:针对高速查表网络中信元数据查表失败生成ICMP差错报文时需进行信元重组的问题,提出一种ICMP差错报文快速生成方法,根据信元数据的首部信息直接进行判断,提取所需的信元数据载荷中的原始IP数据报信息,生成ICMP目的地不可达差错报文。
本发明的技术解决方案:一种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数据报。
所述的步骤(21)中的具体步骤如下:
(1)接收生成的ICMP差错报文,根据ICMP报文所携带的原始IP数据报首部信息,设置新的IP数据报首部信息如下:版本字段、首部长度字段、区分服务字段、标识字段、标志字段、分片偏移字段以及生存时间字段与原始IP数据报首部信息中的设置相同,总长度字段为ICMP差错报文长度与原始IP数据报首部信息中的首部长度之和,协议字段设置为“1”(ICMP协议),源IP地址为网络本地地址,目的IP地址为原始IP数据报首部信息中的源IP地址,校验和字段置为“0”,生成新的IP首部信息,转至步骤(2);
(2)根据步骤(1)中新的IP首部信息计算新的IP首部校验和,将该IP首部校验和填入新的IP首部信息中的校验和字段,再将步骤(1)接收到的ICMP差错报文填入新的IP数据报的载荷字段,生成新的IP数据报并输出。
本发明与现有技术相比具有如下优点:
(1)本发明通过步骤(7)、(10)、(13)、(15),针对高速查表网络中信元数据查表失败的情况,本发明方法只需判断并处理原始IP数据报拆分得到的第1个信元数据或第1个和第2个信元数据即可生成ICMP目的地不可达差错报文,不需要将信元数据重组为原始IP数据报,也不需要对每个信元都进行处理,从而可以达到对错误信元数据进行快速响应的目的,并降低生成ICMP报文的处理复杂度。
(2)本发明通过步骤(8)、(9)、(11)、(12)、(14)、(16),针对高速查表网络中信元数据查表失败的情况,本发明方法只需存储及处理1个信元数据或2个信元数据即可生成ICMP目的地不可达差错报文,所需要的软、硬件资源较少,该优势在原始IP数据报较长时更为明显,在原始IP数据报长度较短的情况下,也不会额外增加所使用资源。
附图说明
图1为本发明IP数据报拆分得到的信元数据格式;
图2为本发明IP数据报出错生成携带ICMP报文的IP数据报流程图;
图3为本发明根据信元数据生成ICMP目的地不可达差错报文流程图。
具体实施方式
本发明的基本思路为:在高速查表网络中,需将不定长的IP数据报拆分为几个甚至几百个数量不等的定长信元数据进行高速查表,本发明方法针对查表失败的信元数据,根据信元数据的首部信息直接进行判断,对IP数据报拆分得到的第1个信元数据或第1个和第2个信元数据进行处理,通过提取信元数据载荷中的部分原始IP数据报信息,生成ICMP目的地不可达差错报文。
下面结合附图对本发明进行详细说明。
IP数据报是不定长的,在进行转发表及路由表查表前,将其拆分为适合查表的长度为64字节的信元数据,如附图1所示,是IP数据报拆分得到的信元数据格式,信元数据包括首部、载荷以及尾部三部分。
信元数据首部为信元数据的第1字节到第5字节信息,包括空标识、头标识、尾标识、拆分信元序号、有效长度、输入端口号以及输出端口号信息,与生成ICMP差错报文相关的信息为头标识、尾标识、拆分信元序号,其中头标识表示该信元数据为IP数据报拆分得到的第1个信元数据;尾标识表示该信元数据为IP数据报拆分得到的最后1个信元数据;拆分信元序号,表示该信元数据为IP数据报拆分得到的信元数据序号,拆分信元序号为“1”表示为拆分得到的第1个信元数据,序号为“2”表示为拆分得到的第2个信元数据。
信元数据载荷为信元数据的第6字节到第53字节,用于承载原始IP数据报信息,最大可乘载原始IP数据报的48字节信息。
信元数据尾部为信元数据的第54字节到第64字节,包括信元数据的输入端口号、输出端口号以及输出IP地址信息,该信息在生成ICMP差错报文时不被使用,在查表失败后,将第63字节用于存放ICMP差错报文错误类型字段,第64字节用于存放ICMP差错报文代码字段。
如附图2所示,为IP数据报出错生成携带ICMP报文的IP数据报流程图,该处理流程包括以下几个步骤:
(1)从IP交换网络接收IP数据报;
(2)对步骤(1)接收的IP数据报的首部信息进行判断,若IP数据报的首部信息出错,或输入IP数据报封装ICMP查询报文,且IP数据报的目的IP地址为本地网络地址,转到步骤(3);若IP数据报的首部信息正确,且IP数据报未封装ICMP查询报文,其目的IP地址不为本地网络地址,转到步骤(5);
(3)根据步骤(2)中IP数据报首部信息的错误类型,或IP数据报封装的ICMP查询报文类型,生成相应ICMP错误类型及代码,转到步骤(4);
(4)根据步骤(2)中的首部信息出错的IP数据报,或封装ICMP查询报文,且目的IP地址为本地网络地址的IP数据报以及步骤(3)中获得的ICMP错误类型及代码,生成相应ICMP差错报文或ICMP查询报文,转到步骤(11);
(5)将步骤(2)中首部信息正确的IP数据报拆分为适用于高速查表网络的固定长度的信元数据,转到步骤(6);
(6)根据高速查表网络的转发表信息,对步骤(5)所得到的信元数据进行查表,若在转发表中无法查找到信元数据中目的IP地址所对应的信息,转到步骤(7),若在转发表中可以查找到信元数据中目的IP地址所对应的信息,转到步骤(8);
(7)对步骤(6)在转发表中无法查找到的信元数据进行路由表查表,若在路由表中无法查找到信元数据中目的IP地址所对应的信息,转到步骤(9);若在路由表中可以查找到信元数据中目的IP地址所对应的信息,转到步骤(8);
(8)根据转发表或路由表中查找到信元数据中目的IP地址所对应的信息,将步骤(3)或步骤(4)中查表成功的信元数据输出;
(9)记录信元数据在步骤(8)中查找路由表失败的具体错误类型,将与该错误类型相应的ICMP错误类型字段及代码字段填充至该信元数据的第63、64字节,转到步骤(10);
(10)接收步骤(9)中填充ICMP错误类型字段及代码字段后的信元数据,根据信元数据所携带的信息,生成ICMP目的地不可达差错报文,转到步骤(11);
(11)将步骤(4)中的ICMP差错报文或ICMP查询报文,以及步骤(10)中的ICMP差错报文,封装为新的IP数据报,并将其送出。
上述流程中,步骤(5)需将IP数据报拆分为信元数据,具体方法为将IP数据报信息以48个8位字节为单位进行拆分,并将该信息填入信元数据载荷中,若IP数据报信息不足48字节则将其填入信元数据载荷中,不足的字节以“0”数据进行填充,每个信元数据载荷中乘载的实际IP数据报信息由该信元数据首部信息中的有效长度进行标识。由IP数据报拆分得到的信元数据包括三种情况:
A.起始信元:即该信元为1个IP数据报拆分得到的第1个信元,其首部信息中的头标识为“1”,拆分序号为“1”,由于IP数据报的首部信息长度范围为“20”~“60”,因此该信元不一定包含IP数据报的全部首部信息,但一定包含IP数据报首部长度信息。
B.中间信元:该信元为1个IP数据报拆分得到的中间信元,其首部信息中的拆分序号大于等于“2”,尾标识不为“1”,可能包含IP数据报的部分首部信息及载荷信息。
C.尾部信元:该信元为1个IP数据报拆分得到的最后1个信元,其首部信息中的有效长度指示该信元载荷中承载的实际IP数据报信息长度。
在生成ICMP目的地不可达差错报文时,需要原始IP数据报的首部信息及载荷前8字节信息,该信息长度范围为“28”~“68”。当IP数据报的长度小于或等于48字节时,只需要处理IP数据报拆分得到的唯一1个信元数据,当IP数据报的长度大于48字节时,需要处理IP数据报拆分得到的第1个和第2个信元数据。
上述流程中,步骤(11)的具体步骤为:
(11a)接收生成的ICMP差错报文。根据ICMP报文所携带的原始IP数据报首部信息,设置新的IP数据报首部信息如下:版本字段、首部长度字段、区分服务字段、标识字段、标志字段、分片偏移字段以及生存时间字段与原始IP数据报首部信息中的设置相同,总长度字段为ICMP差错报文长度与原始IP数据报首部信息中的首部长度之和,协议字段设置为“1”(ICMP协议),源IP地址为网络本地地址,目的IP地址为原始IP数据报首部信息中的源IP地址,校验和字段置为“0”,生成新的IP首部信息,转至步骤(11b);
(11b)根据步骤(11a)中新的IP首部信息计算新的IP首部校验和,将该IP首部校验和填入新的IP首部信息中的校验和字段,再将步骤(11a)接收到的ICMP差错报文填入新的IP数据报的载荷字段,生成新的IP数据报并输出。
如图3所示,为根据信元数据生成ICMP目的地不可达差错报文流程图,该处理流程包括以下几个步骤:
(1)接收查找路由表失败的信元数据,该信元数据包括首部信息、载荷及尾部信息,其中首部信息包括头标识、尾标识和拆分信元序号,转到步骤(2);
(2)对步骤(1)接收到的第1个信元数据首部信息进行判断,若该信元数据首部信息中头标识和尾标识同时为“1”,即原始IP数据报的IP首部信息和IP载荷都包含在该信元数据的载荷内,转到步骤(3),若信元数据首部信息中头标识和尾标识不同时为“1”,转到步骤(5);
(3)提取步骤(2)中头标识和尾标识同时为“1”的信元数据第63字节和第64字节中的ICMP错误类型字段及代码字段,以及该信元数据载荷中的IP首部信息中的首部长度字段,转到步骤(4);
(4)根据步骤(3)的首部长度字段,提取信元数据载荷中的IP首部信息、IP载荷前8字节信息,转到步骤(13);
(5)接收步骤(2)中信元数据首部信息中头标识和尾标识不同时为“1”的信元数据,若接收到的第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号为“2”,表示这两个信元为原始IP数据报拆分得到的第1个信元数据和第2个信元数据,已经包含生成ICMP差错报文所需信息,转到步骤(6);若接收到的第1个信元数据首部信息中头标识不为“1”或第2个信元数据首部信息中的拆分序号不为“2”,转到步骤(8);
(6)提取步骤(5)中满足条件的第1个信元数据的第63字节和第64字节中的ICMP错误类型字段及代码字段和第1个信元数据载荷中的IP首部信息中的首部长度,转到步骤(7);
(7)将第1个信元数据的载荷和第2个信元数据的载荷依次组合后存储,根据步骤(6)所提取的IP首部信息中的首部长度,提取组合后存储的载荷中的IP首部信息、IP载荷前8字节信息,转到步骤(13);
(8)接收步骤(5)中第1个信元数据首部信息中的头标识不为“1”或第2个信元数据首部信息中的拆分序号不为“2”的信元数据。
若第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”,这种情况表示接收到的信元数据在拆分时标定拆分信元序号出错,需进一步判断第1个信元数据,若该信元数据载荷中包含IP数据报首部信息以及IP载荷前8字节信息,仍然可以生成ICMP差错报文,若该信元数据载荷中不包含IP数据报首部信息以及IP载荷前8字节信息,则该信元数据不能生成ICMP差错报文;而第2个信元数据由于拆分信元序号出错,无法提供正确信息,不能用于生成ICMP差错报文。
转到步骤(9)处理第1个信元数据,转到步骤(12)处理第2个信元数据;若不满足第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”,则该信元数据为拆分得到的中间或尾部信元,转到步骤(12);
(9)接收步骤(8)中第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”条件下的第1个信元数据,提取该信元数据的第63字节和第64字节中的ICMP错误类型字段及代码字段和该信元数据载荷中的IP首部信息中的首部长度字段,转到步骤(10);
(10)判断步骤(9)接收到的信元数据载荷中的IP首部信息中的首部长度是否小于等于40,若是,则该信元数据已经包含生成ICMP差错报文所需信息,转到步骤(11),若IP首部长度大于40,转到步骤(12);
(11)根据步骤(10)接收到的信元数据载荷中的IP首部信息中的首部长度字段,提取该信元数据载荷中的IP首部信息、IP载荷前8字节信息,转到步骤(13);
(12)接收步骤(8)中第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”条件下的第2个信元数据,以及步骤(8)中不满足第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号不为“2”条件下的第1个信元数据和第2个信元数据以及步骤(11)中信元数据载荷中IP首部长度大于40的信元数据。将接收到的信元数据置为“0”,并输出该数据;
(13)ICMP目的地不可达差错报文包括错误类型字段、代码字段、检验和字段及原始IP数据报的首部信息及IP载荷前8字节信息,根据ICMP目的地不可达差错报文格式,填入步骤(4)或步骤(7)或步骤(11)的IP首部信息、IP载荷前8字节信息和步骤(3)或步骤(6)或步骤(9)的ICMP错误类型字段及代码字段到差错报文,检验和字段置为“0”,得到未进行检验和计算的ICMP差错报文,转到步骤(14);
(14)根据步骤(13)得到的未进行检验和计算的ICMP差错报文,计算ICMP差错报文检验和;
(15)将步骤(16)得到的ICMP差错报文检验和填入步骤(17)得到的未进行检验和计算的ICMP差错报文中的检验和字段,生成ICMP目的地不可达差错报文;
如图2所述流程中的步骤(11b)以及附图3所述流程中的步骤(14)都需要进行检验和计算,这里采用十六进制进行检验和计算,并使用10、11、12、13、14、15代替A、B、C、D、E和F,方法如下:
步骤A、将需要进行检验和的数据(IP数据报首部或ICMP报文)分为16位的段,转至步骤B;
步骤B、把16位数据的每一列相加,如果有进位,就加到下一列,转至步骤C;
步骤C、若相加得到的和超出16位,将超出16位的高位数字与低16位数字相加,相加的方法与步骤B相同,最终得到16位的数据和,转至步骤D;
步骤D、把得到的16位和的每一个十六进制数字求反码,得出检验和,在计算反码时,从15减去每一个数字,得出十六进制数字的反码,该反码即为最终得到的数据检验和。
不同网络的IP数据报报文最大长度不同,例如光纤分布式数据接口网(FDDI)中IP数据报的最大长度为4470字节,互联网中IP数据报的最大长度为576字节,以太网中IP数据报的最大长度为1500字节。下面以1个以太网中IP数据报为例对本发明进行说明,该IP数据报的长度设为1500字节,由其拆分得到的信元数据个数为32个,采用本发明快速生成ICMP目的地不可达差错报文及相应的IP数据包,步骤如下:
(1)从以太网网络中接收IP数据报;
(2)对步骤(1)接收的IP数据报的首部信息进行判断,将步骤(1)中首部信息正确的IP数据报拆分为适用于高速查表的固定长度的信元数据;
(3)根据高速查表网络的转发表信息,对步骤(2)所得到的信元数据进行查表,在转发表中无法查找到信元数据中目的IP地址所对应的信息,转到步骤(4);
(4)对步骤(3)在转发表中无法查找到的信元数据进行路由表查表,在路由表中无法查找到信元数据中目的IP地址所对应的信息,转到步骤(6);
(6)记录信元数据在步骤(4)中查找路由表失败的具体错误类型,将与该错误类型相应的ICMP错误类型字段及代码字段填充至该信元数据的第63、64字节,转到步骤(7);
(7)接收步骤(6)中填充ICMP错误类型字段及代码字段后的信元数据,该信元数据包括首部信息、载荷及尾部信息,其中首部信息包括头标识、尾标识和拆分序号。接收到信元数据首部信息中头标识和尾标识不同时为“1”,转到步骤(10);
(10)接收步骤(7)中信元数据首部信息中头标识和尾标识不同时为“1”的信元数据,判断信元首部信息,接收到的第1个信元数据首部信息中的头标识为“1”,第2个信元数据首部信息中的拆分序号为“2”,表示这两个信元为原始IP数据报拆分得到的第1个信元数据和第2个信元数据,已经包含生成ICMP差错报文所需信息,转到步骤(11),接收到的其余信元数据首部信息中头标识不为“1”或拆分序号不为“2”,转到步骤(13);
(11)提取步骤(10)中满足条件的第1个信元数据的第63字节和第64字节中的ICMP错误类型字段及代码字段和第1个信元数据载荷中的IP首部信息中的首部长度,转到步骤(12);
(12)将第1个信元数据的载荷和第2个信元数据的载荷依次组合后存储,根据步骤(11)所提取的IP首部信息中的首部长度,提取组合后存储的载荷中的IP首部信息、IP载荷前8字节信息,转到步骤(18);
(13)接收步骤(10)信元数据首部信息中头标识不为“1”或拆分序号不为“2”的信元数据,若信元数据首部信息中头标识既不为“1”且拆分序号不为“2”,表示接收到的信元数据为拆分得到的中间信元或尾部信元,转到步骤(17);
(17)接收步骤(13)中信元数据首部信息中的头标识不为“1”且拆分序号不为“2”的信元数据,将接收到的信元数据置为“0”,并输出该数据;
(18)ICMP目的地不可达差错报文包括错误类型字段、代码字段、检验和字段及原始IP数据报的首部信息及IP载荷前8字节信息,根据ICMP目的地不可达差错报文格式,填入步骤(12)的IP首部信息、IP载荷前8字节信息和步骤(11)的ICMP错误类型字段及代码字段到ICMP差错报文,检验和字段置为“0”,得到未进行检验和计算的ICMP差错报文,转到步骤(19);
(19)根据步骤(18)得到的未进行检验和计算的ICMP差错报文,计算ICMP差错报文检验和。
将ICMP差错报文用十六进制表示,并分为16位的不同段,将16位数据按列相加若相加得到的和超出16位,将超出16位的高位数字与低16位数字按列相加,最终得到16位的数据和,把得到的16位和的每一个十六进制数字求反码,在计算反码时,从15减去每一个数字,得到该16位数字的反码,该反码即为最终得到的数据检验和,转到步骤(20);
(20)将步骤(19)得到的ICMP差错报文检验和填入步骤(18)得到的未进行检验和计算的ICMP差错报文中的检验和字段,生成ICMP目的地不可达差错报文;
(21)将步骤(20)所生成的ICMP差错报文封装为IP数据报,并发送该IP数据报。
其中,步骤(21)中的具体步骤如下:
(1)接收生成的ICMP差错报文。根据ICMP报文所携带的原始IP数据报首部信息,设置新的IP数据报首部信息如下:版本字段、首部长度字段、区分服务字段、标识字段、标志字段、分片偏移字段以及生存时间字段与原始IP数据报首部信息中的设置相同,总长度字段为ICMP差错报文长度与原始IP数据报首部信息中的首部长度之和,协议字段设置为“1”(ICMP协议),源IP地址为网络本地地址,目的IP地址为原始IP数据报首部信息中的源IP地址,校验和字段置为“0”,生成新的IP首部信息,转至步骤(2);
(2)根据步骤(1)中新的IP首部信息计算新的IP首部校验和,将该IP首部校验和填入新的IP首部信息中的校验和字段,再将步骤(1)接收到的ICMP差错报文填入新的IP数据报的载荷字段,生成新的IP数据报并输出。
查阅国内外文献报告及专利,涉及到ICMP协议处理或ICMP协议快速响应的论文或专利,其思想及具体方法都与本发明不同。
本发明未详细阐述部分属于本领域公知技术。
Claims (2)
1.一种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数据报。
2.根据权利要求1所述的一种ICMP差错报文快速生成方法,其特征在于:所述的步骤(21)中的具体步骤如下:
(1)接收生成的ICMP差错报文,根据ICMP报文所携带的原始IP数据报首部信息,设置新的IP数据报首部信息如下:版本字段、首部长度字段、区分服务字段、标识字段、标志字段、分片偏移字段以及生存时间字段与原始IP数据报首部信息中的设置相同,总长度字段为ICMP差错报文长度与原始IP数据报首部信息中的首部长度之和,协议字段设置为“1”(ICMP协议),源IP地址为网络本地地址,目的IP地址为原始IP数据报首部信息中的源IP地址,校验和字段置为“0”,生成新的IP首部信息,转至步骤(2);
(2)根据步骤(1)中新的IP首部信息计算新的IP首部校验和,将该IP首部校验和填入新的IP首部信息中的校验和字段,再将步骤(1)接收到的ICMP差错报文填入新的IP数据报的载荷字段,生成新的IP数据报并输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410360267.1A CN104135439B (zh) | 2014-07-25 | 2014-07-25 | 一种icmp差错报文快速生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410360267.1A CN104135439B (zh) | 2014-07-25 | 2014-07-25 | 一种icmp差错报文快速生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104135439A true CN104135439A (zh) | 2014-11-05 |
CN104135439B CN104135439B (zh) | 2017-05-31 |
Family
ID=51807963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410360267.1A Active CN104135439B (zh) | 2014-07-25 | 2014-07-25 | 一种icmp差错报文快速生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104135439B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106790040A (zh) * | 2016-12-16 | 2017-05-31 | 郑州云海信息技术有限公司 | 网卡icmp协议的故障注入方法、系统及故障管理系统 |
CN108173717A (zh) * | 2018-01-11 | 2018-06-15 | 郑州云海信息技术有限公司 | 一种用户态下通过获取icmp差错报文监测网络状况的方法 |
CN113587073A (zh) * | 2021-09-28 | 2021-11-02 | 江苏未来智慧信息科技有限公司 | 智慧电厂控制系统与方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1630298A (zh) * | 2003-12-19 | 2005-06-22 | 三星电子株式会社 | 用于ip包的多个字段错误的icmp包产生系统及其方法 |
CN1728683A (zh) * | 2004-07-29 | 2006-02-01 | 国家数字交换系统工程技术研究中心 | 支持IPv6单组播业务线速转发的方法及路由器 |
CN101026578A (zh) * | 2007-01-29 | 2007-08-29 | 中兴通讯股份有限公司 | 一种快速响应icmp回送请求报文的方法 |
CN102316121A (zh) * | 2011-10-19 | 2012-01-11 | 武汉烽火网络有限责任公司 | 支持动态扩展帧头的过滤匹配预处理方法及装置 |
CN102404186A (zh) * | 2010-09-09 | 2012-04-04 | 杭州华三通信技术有限公司 | 一种报文分片重组的方法及装置 |
CN102571545A (zh) * | 2010-12-27 | 2012-07-11 | 华为技术有限公司 | 在IPv4网络中传递信息的方法和装置 |
-
2014
- 2014-07-25 CN CN201410360267.1A patent/CN104135439B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1630298A (zh) * | 2003-12-19 | 2005-06-22 | 三星电子株式会社 | 用于ip包的多个字段错误的icmp包产生系统及其方法 |
CN1728683A (zh) * | 2004-07-29 | 2006-02-01 | 国家数字交换系统工程技术研究中心 | 支持IPv6单组播业务线速转发的方法及路由器 |
CN101026578A (zh) * | 2007-01-29 | 2007-08-29 | 中兴通讯股份有限公司 | 一种快速响应icmp回送请求报文的方法 |
CN102404186A (zh) * | 2010-09-09 | 2012-04-04 | 杭州华三通信技术有限公司 | 一种报文分片重组的方法及装置 |
CN102571545A (zh) * | 2010-12-27 | 2012-07-11 | 华为技术有限公司 | 在IPv4网络中传递信息的方法和装置 |
CN102316121A (zh) * | 2011-10-19 | 2012-01-11 | 武汉烽火网络有限责任公司 | 支持动态扩展帧头的过滤匹配预处理方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106790040A (zh) * | 2016-12-16 | 2017-05-31 | 郑州云海信息技术有限公司 | 网卡icmp协议的故障注入方法、系统及故障管理系统 |
CN108173717A (zh) * | 2018-01-11 | 2018-06-15 | 郑州云海信息技术有限公司 | 一种用户态下通过获取icmp差错报文监测网络状况的方法 |
CN113587073A (zh) * | 2021-09-28 | 2021-11-02 | 江苏未来智慧信息科技有限公司 | 智慧电厂控制系统与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104135439B (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111934943B (zh) | 位转发入口路由器、位转发路由器及操作管理维护检测方法 | |
US8953486B2 (en) | Global auto-configuration of network devices connected to multipoint virtual connections | |
US9253062B2 (en) | Byte by byte received data integrity check | |
CN108965484A (zh) | 一种物联网数据的传输方法、系统及终端 | |
US20170300595A1 (en) | Data packet extraction method and apparatus | |
US9444915B2 (en) | Method and device for modifying and forwarding message in data communication network | |
CN105556916B (zh) | 网络流的信息统计方法和装置 | |
CN102790811B (zh) | 一种在监控网络中穿越nat设备的方法和装置 | |
CN102035738B (zh) | 一种获取路由信息的方法及装置 | |
CN101360046B (zh) | 一种带宽资源的节约方法 | |
US11134129B2 (en) | System for determining whether to forward packet based on bit string within the packet | |
US10594598B2 (en) | Path setup in a mesh network | |
WO2018171641A1 (zh) | 网络管理信息的收发方法、装置、发送设备和接收设备 | |
CN114050994B (zh) | 一种基于SRv6的网络遥测方法 | |
CN104135439A (zh) | 一种icmp差错报文快速生成方法 | |
US9106546B1 (en) | Explicit congestion notification in mixed fabric network communications | |
CN103379046A (zh) | Ip报文合并和分拆的技术提高报文发送效率的方法 | |
CN109391605B (zh) | 数据传输方法、装置及系统 | |
CN100484101C (zh) | 一种以太网传输IPv6报文方法、系统与装置 | |
CN112491647B (zh) | 一种交换机报文测试方法、系统及相关装置 | |
CN107404440B (zh) | 一种转发表项发送方法、报文转发方法及装置 | |
CN103731332B (zh) | 主从通信方法和olt系统 | |
CN102404152A (zh) | 识别应答报文的方法及设备 | |
CN101047620B (zh) | 快速处理报文的装置及方法 | |
WO2017132911A1 (zh) | 数据传输方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |