Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND DEVICE FOR SENDING GENERIC ROUTING ENCAPSULATION TUNNEL MESSAGE
Document Type and Number:
WIPO Patent Application WO/2014/026571
Kind Code:
A1
Abstract:
Provided are a method and device for sending a generic routing encapsulation tunnel message. The method includes: determining a partitioned value of a generic routing encapsulation tunnel message; according to the message partitioned value, judging whether a message to be sent needs to be partitioned; if needed, partitioning the message to be sent; and sending the partitioned message to be sent or the message to be sent which need not be partitioned, after encapsulating same using a generic routing encapsulation protocol. The present invention can reduce the partitioning probability of a message after being encapsulated, thereby reducing the occupancy of the decapsulation node resources due to restructuring, and improving the network transmission capability.

Inventors:
QIU JUN (CN)
JIAO XINWEN (CN)
LIU BIZHEN (CN)
JIANG CHAO (CN)
Application Number:
PCT/CN2013/081236
Publication Date:
February 20, 2014
Filing Date:
August 09, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ZTE CORP (CN)
International Classes:
H04L45/741; H04L45/74
Domestic Patent References:
WO2008040203A12008-04-10
Foreign References:
CN1716943A2006-01-04
CN102868613A2013-01-09
CN101207571A2008-06-25
Attorney, Agent or Firm:
CHINA PAT INTELLECTUAL PROPERTY OFFICE (CN)
北京派特恩知识产权代理事务所(普通合伙) (CN)
Download PDF:
Claims:
权利要求书

1、 一种通用路由封装隧道报文发送方法, 该方法包括:

确定通用路由封装隧道报文分片值;

根据所述报文分片值, 判断待发送报文是否需要分片; 若需要, 则对 所述待发送报文进行分片;

对分片后的待发送报文、 或者不需要分片的待发送报文, 使用通用路 由封装协议封装后发送。

2、 如权利要求 1所述的通用路由封装隧道报文发送方法, 其中, 所述 报文分片值为预设的固定值。

3、 如权利要求 1所述的通用路由封装隧道报文发送方法, 其中, 所述 报文分片值的获取方式包括: 发送探测报文, 根据反馈的报文信息计算得 到所述通用路由封装隧道的最大传输单元值, 将该最大传输单元值设置为 所述报文分片值。

4、 如权利要求 3所述的通用路由封装隧道报文发送方法, 其中, 所述 利用探测报文设置所述通用路由封装隧道的报文分片值, 包括:

获取通用路由封装隧道的第一最大传输单元值, 将所述第一最大传输 单元值设置为初始报文分片值;

根据所述第一最大传输单元值, 构造探测报文, 封装并发送所述探测 报文; 其中, 所述探测报文为不可分片报文;

若接收的回应报文为丟弃所述探测报文的回应报文, 则根据该回应报 文计算得到实时的所述通用路由封装隧道的第二最大传输单元值, 并用所 述第二最大传输单元值更新所述初始报文分片值;

将所述第二最大传输单元值更新为报文分片值。

5、 如权利要求 4所述的通用路由封装隧道报文发送方法, 其中, 所述 获取通用路由封装隧道的第一最大传输单元值, 包括: 获取通用路由封装隧道出接口的最大传输单元值, 并用该最大传输单 元值减去封装头长度, 得到通用路由封装隧道的所述第一最大传输单元值; 其中, 所述封装头长度包括: 外层 IP头长度和外层通用路由封装包头 长度。

6、 如权利要求 3-5中任一项所述的通用路由封装隧道报文发送方法, 其中, 该方法还包括: 定期或者不定期重复发送所述探测报文。

7、 一种通用路由封装隧道报文发送装置, 该装置包括: 分片值获取单 元、 报文分片单元、 报文封装单元和报文发送单元; 其中,

所述分片值获取单元, 配置为确定通用路由封装隧道报文分片值; 所述报文分片单元, 配置为根据所述报文分片值, 判断待发送报文是 否需要分片; 若需要, 则对所述待发送报文进行分片;

所述报文封装单元, 配置为将分片后的待发送报文、 或者不需要分片 的待发送报文, 根据通用路由封装协议进行封装;

所述报文发送单元, 配置为发送所述报文封装单元已封装的待发送报 文。

8、 如权利要求 7所述的通用路由封装隧道报文发送装置, 其中, 所述 分片值获取单元, 还配置为预设置所述报文分片值为固定值。

9、 如权利要求 7所述的通用路由封装隧道报文发送装置, 其中, 分片 值获取单元还包括: 探测报文模块和分片值设定模块; 其中,

所述探测报文模块, 配置为生成探测所述通用路由封装隧道最大传输 单元值的探测报文, 并将所述探测报文发送给报文封装单元;

所述分片值设定模块, 配置为根据反馈的报文信息计算所述通用路由 封装隧道的最大传输单元值, 并将该最大传输单元值设定为所述报文分片 值。

10、 如权利要求 9所述的通用路由封装隧道报文发送装置, 其中, 所 述分片值设定模块, 还配置为获取通用路由封装隧道的第一最大传输单元 值, 并将该第一最大传输单元值设置为初始报文分片值;

所述探测报文模块, 还配置为根据所述分片值设定模块获取的所述第 一最大传输单元值, 构造探测报文, 并将所述探测报文发送给报文封装单 元; 其中, 所述探测报文为不可分片报文;

所述分片值设定模块, 还配置为判断接收的回应报文是否为丟弃所述 探测报文的回应报文, 若是, 则根据该回应报文计算得到实时的所述通用 路由封装隧道的第二最大传输单元值, 并用所述第二最大传输单元值更新 所述初始报文分片值, 并将所述第二最大传输单元值更新为报文分片值。

11、 如权利要求 10所述的通用路由封装隧道报文发送装置, 其中, 所 述分片值设定模块, 配置为通过获取通用路由封装隧道出接口的最大传输 单元值, 并用该最大传输单元值减去封装头长度, 得到通用路由封装隧道 的所述第一最大传输单元值;

其中, 所述封装头长度包括: 外层 IP头长度和外层通用路由封装包头 长度。

12、如权利要求 9-11中任一项所述的通用路由封装隧道报文发送装置, 其中, 所述探测报文模块, 还配置为定期或者不定期的重复发送所述探测 报文。

Description:
一种通用路由封装隧道报文发送方法和装置 技术领域

本发明涉及通信领域, 特别涉及一种通用路由封装隧道报文发送方法 和装置。 背景技术

通用路由封装 ( Generic Routing Encapsulation, GRE )协议是一种隧道 封装协议, 它提供了将某种网络层协议, 如: IP、 IPv6、 MPLS等的报文封 装在另外一种网络层协议, 如 IP、 IPv6报文中的机制, 使报文能够在异种 网络中传输。 在某些情况下, 系统需要传输一个有效载荷包, 需要将它封 装并发送至某个目的地, 而该有效载荷包使用的协议不同于该网络所支 持 的协议, 这时需要将有效载荷进行 GRE封装, 然后将此 GRE 包封装在其 它协议中进行转发, 该外层协议即为封装协议, 为该网络上使用的协议。

请参考图 1, 当用户网络改造为 IPv6网络, 而骨干网络依然是 IPv4网 络时, 用户网络的 IPv6用户要访问远端的 IPv6服务时, GRE提供了一种 隧道封装技术, 以使得用户的 IPv6报文能够穿越 IPv4骨干网络。封装和解 封装都是在 IPv4网络边缘设备进行的, 当 IPv6用户的原始 IPv6报文到达 IPv4网络边缘设备 R1进行转发时,查找转发路由表,将 IPv6报文导入 GRE 隧道进行 GRE封装: 封装 GRE头和外层 IPv4头,封装后的 IPv4报文穿越 IPv4网络到达 IPv4网络另一个边缘设备 R2, 在 R2设备上进行解封装, 剥 去外层封装的 IPv4头和 GRE头,还原出原始的 IPv6报文进行 IPv6转发到 达 IPv6目的地。 当封装后的 IPv4报文长度大于 GRE隧道出接口最大传输 单元( Maximum Transmission Unit, MTU )或者中间转发设备出口 MTU时, 封装后的 IPv4报文将进行分片,分片后传输的报文在 GRE解封装节点要先 重组后才能进行解封装, 并继续转发。

当 GRE隧道 MTU设置不合理时, 封装后的 GRE报文就会在 GRE隧 道出接口或者中间转发设备上分片, 分片后的 GRE报文要在 GRE解封装 节点上重组后才能转发, 这增加了 GRE隧道解封装节点的重组处理负担, 当有大量用户接入 GRE隧道并且存在大量分片的情况下, 解封装节点的处 理能力将成为网络传输的瓶颈。 另外, 重组需要占用大量的重组池资源, 如果解封装节点的重组池资源有限, 大量分片到达解封装节点时, 会导致 部分分片申请不到重组池资源而丟包。 发明内容

本发明实施例要解决的主要技术问题是, 提供一种通用路由封装隧道 报文发送方法和装置, 可减小报文在封装后进行分片的概率, 减少因重组 对解封装节点资源的占用, 提高网络传输能力。

为解决上述技术问题, 本发明实施例采用的技术方案如下:

一种通用路由封装隧道报文发送方法, 该方法包括以下步骤: 确定通用路由封装隧道报文分片值;

根据所述报文分片值, 判断待发送报文是否需要分片; 若需要, 则对 所述待发送报文进行分片;

对分片后的待发送报文或者不需要分片的待发 送报文使用通用路由封 装协议封装后发送。

优选地, 所述报文分片值为预设的固定值。

优选地, 所述报文分片值的获取方式是: 发送探测报文, 根据反馈的 报文信息计算得到所述通用路由封装隧道的最 大传输单元值, 将该最大传 输单元值设置为所述报文分片值。

优选地, 所述利用探测报文设置所述通用路由封装隧道 的报文分片值, 包括: 获取通用路由封装隧道的第一最大传输单元值 , 将所述第一最大传输 单元值设置为初始报文分片值;

根据所述第一最大传输单元值, 构造探测报文; 封装并发送所述探测 报文; 其中, 所述探测报文为不可分片报文;

若接收的回应报文为丟弃所述探测报文的回应 报文, 则根据该回应报 文计算得到实时的所述通用路由封装隧道的第 二最大传输单元值, 并用所 述第二最大传输单元值更新所述初始报文分片 值;

将第二最大传输单元值更新为报文分片值。

优选地, 所述获取通用路由封装隧道的第一最大传输单 元值, 包括: 获取通用路由封装隧道出接口的最大传输单元 值, 并用该最大传输单元值 减去封装头长度得到通用路由封装隧道的所述 第一最大传输单元值; 所述 封装头长度包括: 外层 IP头长度和外层通用路由封装包头长度。

优选地, 该方法还包括: 定期或者不定期重复发送所述探测报文。 本发明实施例还提供一种通用路由封装隧道报 文发送装置, 包括分片 值获取单元、 报文分片单元、 报文封装单元和报文发送单元;

所述分片值获取单元, 配置为确定通用路由封装隧道报文分片值; 所述报文分片单元, 配置为根据所述报文分片值, 判断待发送报文是 否需要分片; 若需要, 则对所述待发送报文进行分片;

所述报文封装单元, 配置为将分片后的待发送报文或者不需要分片 的 待发送报文根据通用路由封装协议进行封装;

所述报文发送单元, 配置为将所述报文封装单元封装完成的待发送 报 文进行发送。

优选地, 所述的分片值获取单元, 还配置为预设置所述报文分片值为 固定值。

优选地, 分片值获取单元还包括探测报文模块和分片值 设定模块; 所述探测报文模块, 配置为生成探测所述通用路由封装隧道最大传 输 单元值的探测报文; 并将所述探测报文发送给报文封装单元;

所述分片值设定模块, 配置为根据反馈的报文信息计算所述通用路由 封装隧道的最大传输单元值, 并将该最大传输单元值设定为所述报文分片 值。

优选地, 所述分片值设定模块, 还配置为获取通用路由封装隧道的第 一最大传输单元值, 并将该最大传输单元值设置为初始报文分片值 ;

所述探测报文模块, 还配置为根据所述分片值设定模块获取的所述 第 一最大传输单元值, 构造探测报文, 并将构造好的所述探测报文发送给报 文封装单元;

所述分片值设定模块, 还配置为判断接收的回应报文是否为丟弃所述 探测报文的回应报文, 若是, 则根据该回应报文计算得到实时的所述通用 路由封装隧道的第二最大传输单元值, 并用所述第二最大传输单元值更新 所述初始报文分片值, 并将所述第二最大传输单元值更新为报文分片 值。

优选地, 所述分片值设定模块通过获取通用路由封装隧 道出接口的最 大传输单元值, 并用该最大传输单元值减去封装头长度得到通 用路由封装 隧道的所述第一最大传输单元值; 所述封装头长度包括: 外层 IP头长度和 外层通用路由封装包头长度。

优选地, 所述探测报文模块, 还配置为定期或者不定期的重复发送所 述探测报文。

本发明实施例的有益效果是: 通过设置一个报文分片值, 使待发送的 报文与该值进行对比判断是否进行分片, 使较大的报文在封装之前进行分 片处理, 减小了报文在封装后进行分片的概率, 进一步减少因重组对解封 装节点资源的占用, 提高网络传输能力。

此外, 本发明实施例的通用路由封装隧道报文发送方 法和装置, 还通 过使用探测报文的方式动态的探测通用路由封 装隧道的 MTU值,并通过该 值动态设置报文分片值, 使对报文的分片更具实效性和精确性; 同时, 利 用探测所得的 MTU值对要经过 GRE隧道发送或者转发的报文进行分片处 理, 进一步减少封装后的 GRE报文分片的概率, 分散重组节点以降低 GRE 隧道解封装节点重组的负担, 减少因重组对解封装节点资源的占用, 提高 网络传输能力。 附图说明

图 1为现有技术中通用路由封装隧道传输的网络 朴图;

图 2为本发明一实施例中通用路由封装隧道报文 送方法的流程图; 图 3 为本发明一实施例中通用路由封装隧道报文发 送装置的结构示意 图。 具体实施方式

为使本发明实施例的技术方案和优点更加清楚 , 下面通过具体实施方 式结合附图对本发明实施例作进一步详细说明 。

请参考图 2, 本发明实施例提供了一种通用路由封装隧道报 文发送方 法, 其主要包括以下步骤:

步骤 S201 : 获取 GRE隧道的报文分片值;

在本步骤中, 获取 GRE隧道的报文分片值, 用该值作为待发送图片进 行分片的参照值。 其中, 该报文分片值的获取方式有许多种, 较优的, 在 本实施例中, 可以有两种获取方式: 一种是通过对该 GRE隧道大致的传输 能力界定, 设置一个合适的分片值, 该值为一个最优的固定值, 当报文超 过该分片值时, 即进行分片操作。

此外, 还有一种获取方式是: 通过动态的实时调控报文分片值, 使报 文的传输更具实效性和精确性, 具体的做法为: 发送探测报文, 根据反馈 的报文信息计算得到所述通用路由封装隧道的 最大传输单元值, 将该值作 为所述报文分片值。

所述通过探测报文设置报文分片值的具体过程 可以分为以下几步: 步骤 S2011 : 获取通用路由封装隧道的第一最大传输单元值 ,设置为初 始报文分片值;

在该步骤中, 可以通过直接获取或者探测获取的方式获取 GRE隧道的 最大传输单元值。 本实施例中, 提供一种较优的获取方式: 首先根据 GRE 隧道所配置的目的地址查路由,从路由条目中 得到所述 GRE隧道的出接口, 获取出接口的 MTU值;根据 GRE隧道的选项配置,计算出 GRE包头长度, 加上外层 IP头长度记为封装头长度。 GRE原始包头长度为 4字节, GRE 能够配置的选项有 Checksum选项、 Key选项和 Sequence Number选项, 每 增加一种选项, 包头长度就增加 4字节, Check选项长度为 2字节, 加上两 字节的填充字段,也是 4字节,由此得到的 GRE包头长度为 4-16字节不等。 GRE外层 IP头长度为 20字节, 外层 IP头不能包含选项。 然后用所述该出 接口的 MTU值减去封装头长度, 计算结果作为 GRE隧道第一 MTU值, 并将该值设置为初始报文分片值。

步骤 S2012: 根据所述第一最大传输单元值, 构造探测报文; 封装并发 送所述探测报文;

在本实施例中, 探测报文可以有多种形式, 较优的选择为 GRE Keepalive报文, 填充封装后内层 IP报文长度为 GRE隧道第一 MTU大小。 GRE Keepalive报文为两层 GRE封装, 内层 GRE头封装时对于 GRE隧道 选项配置的选项仅添力口 Key选项,不添力口 Checksum选项和 Sequence Number 选项, 外层 GRE 头依据 GRE 隧道选项配置进行封装; 设置所述 GRE Keepalive报文外层 IP头中不可分片 DF标志位为 1,发送该 Keepalive报文。 GRE Keepalive报文在网络中传输,如果 GRE网络中某个节点的 MTU小于 GRE Keepalive报文长度, 由于外层 IP头中设置了不可分片 DF标志, 则该 节点在丟弃该 Keepalive报文的同时会向源节点发送 Internet控制报文协议 ( Internet Control Message Protocol, ICMP ) Datagram Too Big才艮文, 并在 该 ICMP报文头部下一跳 MTU字段填入本节点的 MTU值。 ICMP Datagram Too Big报文属于 ICMP目标不可达( Destination Unreachable )报文, 类型 字段为 3, 即 type 3, 代码字段为 4, 即 code 4, ICMP包头后面携带产生该 ICMP报文的原始 IP头和 8字节的数据部分。

步骤 S2013 : 若接收的回应报文为丟弃探测报文的回应报文 , 则根据该 回应报文计算得到实时的通用路由封装隧道的 第二最大传输单元值, 并用 该第二最大传输单元值更新初始报文分片值;

在本实施例中, 如果收到网络中回应的 ICMP Datagram Too Big报文, 说明网络中某个节点的 MTU小于 Keepalive报文长度, 解析收到的 ICMP Datagram Too Big报文,从 ICMP Datagram Too Big报文携带的原始 IP头中 取出源地址、 目的地址和协议号, 如果协议号为 47, 表明封装的是 GRE报 文, 依据此源、 目的 IP地址查找到 GRE隧道, 并用 ICMP报文中的下一跳 MTU字段值减去封装头长度, 以得到第二最大传输单元值, 并用该第二最 大传输单元值更新初始报文分片值。

如果收到的是 Keepalive报文的正常回应, 说明 GRE网络中各节点的 MTU值均大于或等于 Keepalive报文长度, 则保持 GRE隧道 MTU不变, 也不对报文分片值进行更新。

在通过上述方法获取到报文分片值之后, 进入以下步骤:

步骤 S202: 根据所述报文分片值, 判断待发送报文是否需要分片; 如 果需要分片, 则转入步骤 S203; 否则, 执行步骤 S204;

在本实施例中, 将更新后的报文分片值下发转发面, 作为转发面转发 报文经过该 GRE隧道时判断是否进行提前分片的依据; 同时控制面发包经 过该 GRE隧道封装时, 也以该分片值作为判断是否提前分片的依据。 如果 待转发或者发送的报文长度大于该报文分片值 , 则转入步骤 S203, 如果判 断待转发或者发送的报文长度小于或等于该报 文分片值, 则直接进入步骤 S204。

步骤 S203: 对需要进行分片的报文进行分片处理;

在该步骤中, 主要对步骤 S202中判断需要进行分片的报文按照相应的 分片方式进行分片处理。

步骤 S204: 对处理后的报文进行 GRE封装;

在该步骤中, 对上述经过处理的分片后的报文或者不需要进 行分片的 报文进行 GRE封装, 进入步骤 S205。

步骤 S205: 对已封装的所述报文进行发送。

在本实施例中, 因为 GRE隧道目的地址的路由或者出接口可能会发生 变化, 为了保持报文分片值的实时性和有效性, 较优的, 可以定期或者不 定期的发送探测报文, 以获取最新的 GRE隧道的 MTU值, 并更新最优的 报文分片值。

请参考图 3,在本发明实施例中还提供一种通用路由封 隧道报文发送 装置, 其主要包括分片值获取单元 301、 报文分片单元 302、 报文封装单元 303和报文发送单元 304;

其中, 所述分片值获取单元 301, 配置为获取通用路由封装隧道报文分 片值。

为实现较优的获取 GRE隧道的报文分片值, 分片值获取单元 301进一 步包括: 探测报文模块 3011和分片值设定模块 3012;

所述探测报文模块 3011 不仅可以配置为自定义一个较优的报文分片 值, 以便 GRE隧道对报文进行分片; 还可以配置为生成探测通用路由封装 隧道最大传输单元值的探测报文, 并将所述探测报文发送给报文封装单元 303进行封装后, 由报文发送单元 304进行发送, 其通过该种方式来高效的 获取报文分片值;

分片值设定模块 3012, 配置为根据反馈的报文信息计算通用路由封装 隧道的最大传输单元值, 并将该值设定为报文分片值。

进一步地, 探测报文模块 3011, 还配置为根据分片值设定模块 3012获 取的所述第一最大传输单元值, 构造探测报文; 并将已构造的探测报文发 送给报文封装单元 303进行封装后, 由报文发送单元 304进行发送; 所述 探测报文为不可分片报文;

分片值设定模块 3012, 还配置为判断反馈报文是否为丟弃所述探测报 文的回应报文, 若是, 则根据该回应报文计算得到实时所述通用路由 封装 隧道的第二最大传输单元值, 并将该第二最大传输单元值更新设置为最新 报文分片值。

在本实施例中, 分片值获取单元 301 获取报文分片值的具体过程在上 述通用路由封装隧道报文发送方法中已经进行 了详细的参数, 在此就不再 进行赘述了。

报文分片单元 302, 主要配置为根据所述报文分片值, 判断待发送报文 是否需要分片; 若需要, 则对该待发送报文进行分片;

报文封装单元 303,配置为将分片后的待发送报文或者不需要 分片的待 发送报文根据进行 GRE封装;

报文发送单元 304,配置为将报文封装单元 303封装完成的待发送报文 进行发送。

以上内容是结合具体的实施方式对本发明所作 的进一步详细说明, 不 能认定本发明的具体实施只局限于这些说明。 对于本发明所属技术领域的 普通技术人员来说, 在不脱离本发明构思的前提下, 还可以做出若干简单 推演或替换, 都应当视为属于本发明的保护范围。