CN100499579C - 对ipv4分片报文进行通用路由封装的方法 - Google Patents
对ipv4分片报文进行通用路由封装的方法 Download PDFInfo
- Publication number
- CN100499579C CN100499579C CNB2005100898877A CN200510089887A CN100499579C CN 100499579 C CN100499579 C CN 100499579C CN B2005100898877 A CNB2005100898877 A CN B2005100898877A CN 200510089887 A CN200510089887 A CN 200510089887A CN 100499579 C CN100499579 C CN 100499579C
- Authority
- CN
- China
- Prior art keywords
- message
- heading
- ipv4
- value
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种对IP分片报文进行通用路由封装的方法,包括:(1)设置需要对报文进行通用路由封装的中间节点的前一级节点的最大可传输IP报文字节数,使其小于或等于该中间节点的最大可传输报文字节与通用路由封装报文头字节的差值;(2)中间节点接收到报文后,判断该报文是否为分片报文,若否,则在该报文净荷的前面插入通用路由封装报文头,并修改该未分片报文的IP报文头中的相关字段的值,保证IP报文头的正确性;若是,则判断该报文是否是第一个分片,若是则按未分片报文的处理方式进行处理,若该报文不是第一个分片,则直接修改该分片报文IP报文头中的相关字段的值,保证IP报文头的正确性。本发明提高了通用性和转发效率。
Description
技术领域
本发明涉及计算机通讯领域,尤其涉及一种基于隧道协议的中间节点中对IPV4分片报文进行通用路由封装的方法。
背景技术
网络隧道协议是用来实现两个网络协议之间的数据传输,也即将一种协议报文封装到另一种协议中。通用路由封装(GRE,General Routing Encapsulation)是常用的隧道协议中的一种,不仅支持IP协议,而且还支持其他类型的网络层协议,因此应用较广。在进行多协议封装时将要封装在其他协议数据包中作为净荷的数据包被称为净荷包,封装其他数据包的外层数据包被称为传送包。RFC1701、RFC1702中说明了GRE协议的封装包格式、GRE报文头格式和GRE over IPV4的方法。例如,标准的GRE隧道技术可在IPV4上承载IPV6数据报文,GRE隧道是两点之间的链路,每条链路都是一条单独的隧道,实际接口的IPV4地址是隧道的源地址和目的地址,IPV6地址是配置在隧道逻辑接口上的。IPV6报文先封装为GRE报文,再封装为IPV4报文。IPV4报文中的源地址和目的地址是隧道的起点和终点所依托物理端口的IPV4地址。GRE隧道技术同样可承载其他类型的协议。因此,对于下一代网络和IPV6的推广来讲,GRE隧道技术至关重要。
IP协议在传输数据包时,如果传输的IP报文大小超过了最大传输单位MTU(Maximum Transmission Unit),则需要将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片。比如说,在以太网(Ethernet)环境中可传输最大IP报文(MTU)的大小为1500字节。如果要传输的报文大小超过1500字节,则需要分片之后进行传输。
而RFC1701、RFC1702给出的方法仅适用于在源端对报文净荷进行GRE封装后再通过IP层发送的情况。
发明内容
针对上述现有IP链路中报文转发中间节点上无法对IP分片进行GRE封装的问题和不足,本发明的目的是提供一种简单通用、转发效率高的对IP分片报文进行通用路由封装的方法。
本发明是这样实现的:一种对IPV4分片报文进行通用路由封装的方法,包括以下步骤:
(1)设置需要对报文进行通用路由封装的中间节点的前一级节点的最大可传输IPV4报文字节数,使其小于或等于该中间节点的最大可传输报文字节与通用路由封装报文头字节的差值;
(2)所述中间节点接收到报文后,判断该报文是否为分片报文,若否,则在该报文净荷的前面插入通用路由封装报文头,并将该未分片报文的IPV4报文头中的“生存时间”字段的值减1、“数据包总长度”字段的值增加一个GRE报文头的长度、并重新计算“首部校验和”字段的值,保证IPV4报文头的正确性;若是,则判断该报文是否是第一个分片,若是则按未分片报文的处理方式进行处理,若该报文不是第一个分片,则将该分片报文的IPV4报文头中的“生存时间”字段的值减1、“标准偏移”字段的值增加一个GRE报文头的长度、并重新计算“首部校验和”字段的值,保证IPV4报文头的正确性。
本发明通过设置IP链路中报文转发中间节点的前一级节点(包括源节点)的最大可传输IP报文字节数,以使该中间节点对前一级节点发送过来的报文插入GRE报头后,不会超出最大的可传输IP报文字节数。这样,本发明可实现中间节点对分片报文的GRE方式的封装。本发明提高了系统的通用性和节点转发效率。
附图说明
图1是标准的无选项的IP报文头的结构示意图;
图2是GRE报文头的结构示意图;
图3是本发明的应用报文结构示意图。
具体实施方式
下面结合附图对本发明作进一步的详细描述。
在IP网络中需要中间节点完成对分片报文进行封装时,需要考虑封装(增加相应隧道协议报头)后是否超出了最大可传输IP报文(MTU)字节数,若超出了MTU,则需要对该新报文进行重新分包,这将造成数据的丢失。因此,需要对前一级节点进行报文长度的限制,以避免重新封装后溢出的现象。而对于存在多个协议封装节点的,应当自源节点至后分别进行报文长度的限制。然后再在各节点上完成对分片报文或非分片报文的重新封装。以下对IPV4中间节点对报文进行GRE方式封装为例详细说明封装过程。假设中间节点接收到的报文长度满足封装后不超出MTU的要求。
如图1所示,标准的无选项的IP报文头包括4位的“版本(当前为第4版本)”字段,4位“首部长度”字段。8比特的服务类型字段分为两个部分——优先级和服务类型。16位的“数据包总长度”字段,用来定义以字节为单位的整个IP分组的总长。16位的“标识”字段,目的主机用它来识别和组合IP分组的片段。3位“标志”,第一位保留,最后一位中“0”代表最后一个段,“1”代表还有更多的段。13位“标准偏移”字段,原始IP分组被分段后,每一个分段生成的数据块都有一个从IP分组起始位置开始编号的序号,该序号记录在偏移字段中;8位的“生存时间(TTL)”字段用来防止在网络中出现IP分组的无限循环。“协议”字段用来鉴别利用了IP服务的邻接高层所采用的协议。16位“首部校验和”字段是根据IPv4分组头中的其他字段计算出来的。源地址和目的地址均为IPV4的32位地址。如图2所示,和IP报头一样,GRE报头也为20字节,但其包括很多可选项。由于IP协议规定分片报文的长度(除最后一片外)必须是8字节的整数倍,因此,也必须保障GRE报头为8字节的整数倍(8字节或16字节)。
如果中间节点接收到IP报文时,首先判断3位“标志”字段的最后一位是否为“0”,同时判断13位“标准偏移”字段的字段是否为“0”,如果该两个条件都满足,则中间节点接收到的IP报文是未分片报文,则执行以下步骤:
a、“TTL”字段的值减“1”;
b、16位的“数据包总长度”字段的值增加一个GRE报文头的长度;
c、重新计算16位“首部校验和”字段的值;
d、净荷的前面插入GRE报文头;
e、转发给下一级节点。
如果中间节点接收到IP报文时,判断3位“标志”字段的最后一位为“1”,同时13位“标准偏移”字段的值为“0”,则表明该中间节点接收到的IP报文是第一个分片,则执行与前述未分片报文相同的处理步骤。
如果中间节点接收到IP报文时,判断3位“标志”字段的最后一位为“1”,同时13位“标准偏移”字段的值非“0”,则表明该中间节点接收到的IP报文不是第一个分片,则执行也不是最后一个分片,则执行以下步骤:
a、“TTL”字段的值减“1”;
b、13位的“标准偏移”字段的值增加一个GRE报文头的长度;
c、重新计算16位“首部校验和”字段的值;
d、转发给下一级节点。
如果中间节点接收到IP报文时,判断3位“标志”字段的最后一位为“0”,同时13位“标准偏移”字段的值非“0”,则表明该中间节点接收到的IP报文是最后一个分片,则执行前述与分片报文中非第一分片相同的处理步骤。
如图3所示,对于净荷的前面插入GRE报文头,即在IP报文的数据区前面添加GRE报文头。图中IP报文的数据区是指IPV6报头和IPV6数据。当然,该数据区也可以是普通的数据。
当以太网的中间节点需要对IP报文进行GRE封装时,传统的方法只能对非IP分片进行GRE封装,采用本发明则突破了这个限制,对于所有的IP报文均可以进行GRE封装。提高了系统的兼容性和通用性。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (2)
1、一种对IPV4分片报文进行通用路由封装的方法,其特征在于,该方法包括以下步骤:
(1)设置需要对报文进行通用路由封装的中间节点的前一级节点的最大可传输IPV4报文字节数,使其小于或等于该中间节点的最大可传输报文字节与通用路由封装报文头字节的差值;
(2)所述中间节点接收到报文后,判断该报文是否为分片报文,若否,则在该报文净荷的前面插入通用路由封装报文头,并将该未分片报文的IPV4报文头中的“生存时间”字段的值减1、“数据包总长度”字段的值增加一个GRE报文头的长度、并重新计算“首部校验和”字段的值,保证IPV4报文头的正确性;若是,则判断该报文是否是第一个分片,若是则按未分片报文的处理方式进行处理,若该报文不是第一个分片,则将该分片报文的IPV4报文头中的“生存时间”字段的值减1、“标准偏移”字段的值增加一个GRE报文头的长度、并重新计算“首部校验和”字段的值,保证IPV4报文头的正确性。
2、根据权利要求1所述的对IPV4分片报文进行通用路由封装的方法,其特征在于,所述通用路由封装报文头的字节数是8字节的整数倍。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100898877A CN100499579C (zh) | 2005-08-10 | 2005-08-10 | 对ipv4分片报文进行通用路由封装的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100898877A CN100499579C (zh) | 2005-08-10 | 2005-08-10 | 对ipv4分片报文进行通用路由封装的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1913482A CN1913482A (zh) | 2007-02-14 |
CN100499579C true CN100499579C (zh) | 2009-06-10 |
Family
ID=37722257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100898877A Expired - Fee Related CN100499579C (zh) | 2005-08-10 | 2005-08-10 | 对ipv4分片报文进行通用路由封装的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100499579C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101277305A (zh) * | 2008-05-12 | 2008-10-01 | 华为技术有限公司 | 通用路由封装gre承载的方法、装置及系统 |
US8320372B2 (en) * | 2008-06-23 | 2012-11-27 | Alcatel Lucent | Processing of packet fragments |
US9064216B2 (en) * | 2012-06-06 | 2015-06-23 | Juniper Networks, Inc. | Identifying likely faulty components in a distributed system |
US9898317B2 (en) | 2012-06-06 | 2018-02-20 | Juniper Networks, Inc. | Physical path determination for virtual network packet flows |
US9479457B2 (en) | 2014-03-31 | 2016-10-25 | Juniper Networks, Inc. | High-performance, scalable and drop-free data center switch fabric |
CN106685862B (zh) * | 2015-11-11 | 2019-11-12 | 大唐移动通信设备有限公司 | 一种分片数据包处理方法及装置 |
US10243840B2 (en) | 2017-03-01 | 2019-03-26 | Juniper Networks, Inc. | Network interface card switching for virtual networks |
CN111212060A (zh) * | 2019-12-31 | 2020-05-29 | 盛科网络(苏州)有限公司 | 一种剥离可变长gre头部的方法及装置 |
CN114039749A (zh) * | 2021-10-26 | 2022-02-11 | 中国银联股份有限公司 | 一种攻击检测方法、装置、设备及存储介质 |
-
2005
- 2005-08-10 CN CNB2005100898877A patent/CN100499579C/zh not_active Expired - Fee Related
Non-Patent Citations (10)
Title |
---|
Generic Routing Encapsulation (GRE). S. Hanks, T. Li, P. Traina.Network Working Group Request for Comment: 1701. 1994 |
Generic Routing Encapsulation (GRE). S. Hanks, T. Li, P. Traina.Network Working Group Request for Comment: 1701. 1994 * |
Generic Routing Encapsulation over IPv4 networks. S. Hanks, T. Li, P. Traina.Network Working Group Request for Comment: 1702. 1994 |
Generic Routing Encapsulation over IPv4 networks. S. Hanks, T. Li, P. Traina.Network Working Group Request for Comment: 1702. 1994 * |
IP Encapsulation within IP. C. Perkins.Network Working Group Request for Comment: 2003. 1996 |
IP Encapsulation within IP. C. Perkins.Network Working Group Request for Comment: 2003. 1996 * |
P. Traina. D. Farinacci, S. Hanks, D. Meyer, P. Traina.Network Working Group Request for Comment: 2784. 2000 |
P. Traina. D. Farinacci, S. Hanks, D. Meyer, P. Traina.Network Working Group Request for Comment: 2784. 2000 * |
移动IP技术概述. 林勇.移动通信,第2001年第8期. 2001 |
移动IP技术概述. 林勇.移动通信,第2001年第8期. 2001 * |
Also Published As
Publication number | Publication date |
---|---|
CN1913482A (zh) | 2007-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100499579C (zh) | 对ipv4分片报文进行通用路由封装的方法 | |
CN107493238A (zh) | 一种网络拥塞控制方法、设备及系统 | |
US8325689B2 (en) | Efficient data transmission by data aggregation | |
US20080130659A1 (en) | Internet protocol over ethernet first mile | |
CN109379359A (zh) | SRv6数据包的处理方法和装置 | |
US10601610B2 (en) | Tunnel-level fragmentation and reassembly based on tunnel context | |
US7848323B2 (en) | Method for transporting data packets, data network system, and network nodes | |
WO2016107122A1 (zh) | RapidIO报文和以太网报文之间的转换方法和设备 | |
US20050271066A1 (en) | Method, device and system for transmitting Ethernet packets | |
WO2010031324A1 (zh) | 数据传输的方法、装置和系统 | |
CN103262606A (zh) | 对gtp隧道中的ip分片的改进 | |
CN101258719A (zh) | 延长InfiniBand网络的实时到达的方法 | |
WO2021088813A1 (zh) | 报文封装方法及装置、报文解封装方法及装置 | |
CN107079017A (zh) | 一种报文转换方法及装置 | |
CN114631290B (zh) | 数据分组的传输 | |
CN101212390A (zh) | 一种数据传输方法及装置 | |
US7577136B1 (en) | Ethernet switch fabric interface | |
CN100433714C (zh) | 一种ip分片报文传输处理方法 | |
CN101640635A (zh) | 一种6over4隧道中避免报文重组的方法及系统 | |
EP3264707B1 (en) | Data processing method and apparatus | |
EP2600569B1 (en) | Method, apparatus and system for processing a tunnel packet | |
CN105763659A (zh) | 一种IPv6隧道报文封装方法及系统 | |
US20100329245A1 (en) | Transparent Mapping of Cell Streams to Packet Services | |
US20220407742A1 (en) | Time-sensitive transmission of ethernet traffic between endpoint network nodes | |
CN101252526B (zh) | 流量控制方法以及vpws网络系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090610 Termination date: 20150810 |
|
EXPY | Termination of patent right or utility model |