一种隧道报文的分片处理方法及装置与流程

文档序号:18543153发布日期:2019-08-27 21:25阅读:503来源:国知局
一种隧道报文的分片处理方法及装置与流程

本发明涉及通信技术领域,具体涉及一种隧道报文的分片处理方法及装置。



背景技术:

分片报文是指经过报文分片处理之后整包长度不超过mtu(maximumtransmissionunit,最大传输单元)大小的数据包,使用ip协议(internetprotocol,互联网协议)的设备通常在发送一个报文前会检查它的整包长度是否超过mtu,如果超过则对ip报文进行分片,得到两个新的ip报文,最后进行转发。分片后的两个小的ip报文长度均不超过mtu,且有相同的源ip地址。

隧道报文是指在原数据包头的某个位置新插入一段数据包,新插入的数据包记录了本隧道协议转发所需的内容。例如vxlan(virtualextensiblelocalareanetwork,虚拟可扩展局域网)隧道报文会在原数据包的开头处插入一个vxlan包头(8字节)和一个具备以太包头(14字节)、网络层包头(20字节)和传输层包头(8字节)信息的“外层包头”,总共50字节。如果原报文长度已经达到或接近mtu限制,那么它的隧道报文在被转发时就会因为过长而被分片。经过分片后的隧道报文会带来两个问题:一是部分隧道协议不支持分片报文,例如vxlan的vtep设备(vxlantunnelendpoint,vxlan隧道端点)在收到经过分片的隧道报文后会直接丢弃没有vxlan包头的其中一个分片包,导致内容丢失;二是传输大量数据时,分片报文会大大增加中间网络设备的负担,从而降低传输效率。

为了应对以上的问题,现有技术方案中,隧道报文分片的分片值通常基于设备的mtu生成的隧道mtu,根据分片值来衡量是否应在封装前对数据包分片。在隧道mtu确定之后,除非隧道断开并重新连接,否则不会再次计算隧道mtu。其中一种方式是基于隧道两端的设备mtu来计算出分片值,然而,这种分片方式仅能保证隧道报文发出去时不超过本地物理链路的mtu限制,当传输途中某一中间设备mtu小于发送隧道报文的本地设备的mtu时,仍然不能避免隧道报文被分片;另一种方式是,根据数据包沿途传输中网络设备的mtu计算分片值,然而,随着网络环境越发复杂,很难保证任意两个通信节点之间的路径是长时间唯一的。当网络路径发生变化时,就无法确保隧道报文在传输途中不被分片。总之,现有技术提供的方案灵活性差、适应性弱。



技术实现要素:

本发明的目的在于提供一种隧道报文的分片处理方法及装置,提供一种更加灵活、适应性强的隧道报文分片方式。

为了实现上述目的,本发明提供以下技术方案:

一种隧道报文的分片处理方法,所述方法包括:

实时获取最优报文长度值,所述最优报文长度值为本端设备与对端设备间未分片情况下可使用的最大数据包长度值,所述本端设备与对端设备为隧道搭建的两端设备;

将最优报文长度值减去隧道包头长度值,再减去一个以太包头长度后作为分片值;

针对需要通过隧道转发的报文,当报文长度大于所述分片值时,则将该报文分片。

进一步,所述分片得到的所有报文长度均不超过所述分片值。

可选地,所述最优报文长度值为配置的缺省值。

可选地,所述最优报文长度值通过以下方式获得:

周期性检测本端设备与对端设备间未分片数据包的最大长度,将所述未分片数据包的最大长度作为最优报文长度值,所述本端设备与对端设备为隧道搭建的两端设备。

进一步,所述方法还包括:

当所述最优报文长度值改变时,更新分片值;

当所述本端设备与对端设备进行隧道搭建时,配置隧道协议信息,所述隧道协议信息包括:隧道协议名称和隧道包头长度值。

一种隧道报文的分片处理装置,包括:

获取单元,用于实时获取最优报文长度值,所述最优报文长度值为本端设备与对端设备间未分片情况下可使用的最大数据包长度值,所述本端设备与对端设备为隧道搭建的两端设备;

分片值计算单元,用于将最优报文长度值减去隧道包头长度值,再减去一个以太包头长度后作为分片值;

处理单元,用于针对需要通过隧道转发的报文,当报文长度大于所述分片值时,则将该报文分片。

进一步,所述分片得到的所有报文长度均不超过所述分片值。

可选地,所述装置还包括:

配置单元,用于配置最优报文长度值的缺省值。

可选地,所述装置还包括:

检测单元,用于周期性检测本端设备与对端设备间未分片情况下可使用的最大数据包长度值,将所述最大数据包长度值作为最优报文长度值,所述本端设备与对端设备为隧道搭建的两端设备。

进一步,所述装置还包括:

赋值单元,用于当所述最优报文长度值改变时,更新分片值;以及当所述本端设备与对端设备进行隧道搭建时,配置隧道协议信息,所述隧道协议信息包括:隧道协议名称和隧道包头长度值。

本发明的有益效果是:本发明公开一种隧道报文的分片处理方法及装置,将分片值的计算与静态的设备mtu解耦,通过实时获取最优报文长度值,根据最优报文长度值,结合关联的隧道信息中记录的隧道包头长度值和以太包头长度,计算得到分片值,及时应对网络环境的变化:一旦网络路径发生变化,可立即改变分片值,不必再等隧道断开重新建立后,重新进行报文分片。提高了报文分片的适应性,灵活性。

另一方面,对于基于ip层的隧道协议,本申请中提供的方案具备通用性。方案中提出的方法与装置不必对任何隧道协议的封装/解封装单元的实现进行任何改动,仅作为一个独立的模块与隧道协议单元邻接即可。

附图说明

下面结合附图和实例对本发明作进一步说明。

图1是本发明实施例一种隧道报文的分片处理方法的流程示意图;

图2是本发明实施例一种隧道报文的分片处理的网络架构图;

图3是本发明实施例一种隧道报文的分片处理的网络结构示意图;

图4是本发明实施例一种隧道报文的分片处理装置的结构示意图。

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所以其他实施例,都属于本发明的保护范围。

在本发明实施例中,为了避免固定不变的设备mtu对隧道报文分片的影响,及时应对网络环境的变化,提供一种更加灵活、适应性强的隧道报文分片方式。参考图1,本实施例提供一种隧道报文的分片处理方法,应用于隧道报文的封装之前与解封装之后。所述方法包括以下步骤:

步骤s100、实时获取最优报文长度值,所述最优报文长度值为本端设备与对端设备间未分片情况下可使用的最大数据包长度值,所述本端设备与对端设备为隧道搭建的两端设备。

步骤s200、将最优报文长度值减去隧道包头长度值,再减去一个以太包头长度后作为分片值。

步骤s300、针对需要通过隧道转发的报文,当报文长度大于所述分片值时,则将该报文分片。

本实施例中,将分片值的计算与静态的设备mtu解耦,避免了固定不变的设备mtu对隧道报文分片的影响,通过实时获取最优报文长度值,根据最优报文长度值,结合关联的隧道信息中记录的隧道包头长度值和以太包头长度,计算得到分片值,及时应对网络环境的变化:一旦网络路径发生变化,可立即改变分片值,不必再等隧道断开重新建立后,重新进行报文分片。

本实施例中,所述隧道包头特指数据包经过封装之后包头中新添加的内容,在完成报文分片后,对每个分片后的报文进行隧道包头封装。

本实施例中,所述分片得到的所有报文长度均不超过所述分片值,所述分片得到的报文不包括报文中以太包头的14字节。

在一个可选的实施例中,所述最优报文长度值为配置的缺省值。所述最优报文长度值通过手动配置命令行配置工具生成,或使用所述命令行配置工具预设的缺省值。

在另一个可选的实施例中,所述最优报文长度值通过以下方式获得:

周期性检测本端设备与对端设备间未分片数据包的最大长度,将所述未分片数据包的最大长度作为最优报文长度值,所述本端设备与对端设备为隧道搭建的两端设备。所述最优报文长度值通过全局链路状态检测工具检测、计算得出。

具体地,全局链路状态检测工具通过周期性收发不同长度的数据包,根据反馈的测试数据与通信指标进行比较,检测出本端设备与对端设备间的最大数据包长度值,所述最大数据包长度值为未分片情况下可使用的最优报文长度值。

在一个实施例中,当所述最优报文长度值改变时,更新分片值;

当所述本端设备与对端设备进行隧道搭建时,配置隧道协议信息,所述隧道协议信息包括:隧道协议名称和隧道包头长度值。

实际使用中,通过提供分片机制及分片值管理机制,同时以实时获得的最大数据包长度值作为隧道mtu的计算来源,可灵活地结合实时链路检测工具或命令行配置工具,从收集到的链路状态信息中计算出最优的数据包长度,当所述最优报文长度值改变时,及时更新分片值,灵活应对网络环境的变化。

为更好的对本发明进行说明,以图2和图3所示网络架构为例,vswitch-a网络设备101与vswitch-b网络设备102间建立vxlan隧道,并且vswitch-a网络设备101和vswitch-b网络设备102中都运行着相同的链路状态监测进程,通过在vswitch-a网络设备101与vswitch-b网络设备102间周期性地相互发送不同长度的数据包,从而检测出在未分片的情况下两台设备通信可用的最大数据包长度值,然后将该最大数据包长度值被上传至控制器301中。

控制器301根据收集到的不同时段的最大数据包长度值计算出最优数据包长度,并分别调用vswitch-a网络设备101、vswitch-b网络设备102中的api401,用于对外开放的api401将最优数据包长度值下发到各自的管理单元501中。

管理单元501根据隧道报文处理单元601为要使用的隧道协议计算并设置分片值,例如,假设这时的最优数据包长度值为1514字节,那么分片值就由最优数据包长度值的1514字节减去以太包头长度的14字节、vxlan包头的8字节、外层udp包头的8字节、外层ip包头的20字节以及外层以太头的14字节之后得出,即分片值为1450字节。

按照上述过程初始化隧道之后,从节点201向节点202发送ping请求的数据包,ping(packetinternetgroper,因特网包探索器)是用于测试网络连接量的程序。ping发送一个icmp(internetcontrolmessagesprotocol,因特网信报控制协议),回声请求消息给目的地并报告是否收到目标的icmp回声应答。本实施例中,所有ping包的整包长度为1514字节。

vswitch-a网络设备101收到来自节点201的数据包之后,将其送入以vswitch-b网络设备102作为对端网络设备的隧道报文处理单元601,vswitch-b网络设备102中的隧道报文处理单元601读取该报文ip头部中的总长字段值(例如1500字节)并与分片值对比,发现大于分片值,于是将该报文按分片值分片为两个更小的数据包,它们的整包长度分别是1464字节与84字节。

最后,vswitch-b网络设备102中的隧道报文处理单元601将这两个数据包传递到vtep封装为vxlan隧道报文,并将其转发至节点202。最终实现vswitch-b网络设备102收到来自vswitch-a网络设备101发送的隧道报文后,将其解封装之后转发至节点202。

参考图3,本实施例提供一种隧道报文的分片处理的网络结构示意图,对外开放的api401设置于管理单元501中,对外开放的api401的基本要求为:支持接收最优报文长度值,以及支持配置处理单元关联的隧道协议信息。

此外,与各隧道报文处理单元601相关联的隧道协议信息也通过api401进行配置。

隧道协议信息包括:隧道协议名称和隧道包头长度值,实际实现中允许包含更多其他信息。

管理单元501可在任意时刻接收从api401传入的最优报文长度值,可在任意时刻更新任意隧道报文处理单元601上的分片值。

分片值记录在隧道报文处理单元601上,且分片值仅由管理单元501进行更新。

本实施例中,通过局链路状态检测工具或命令行配置工具对接api401,对于全局链路状态检测工具,要求可检测出本端设备与对端设备间未分片情况下可使用的最大数据包长度值。例如,通过周期性收发数据包。对于命令行配置工具,可通过手动配置最优数据包长度或使用预设的缺省值作为最优数据包长度。本端设备与对端设备特指需要进行隧道搭建的两端的网络设备。

图4为本发明实施例提供的一种隧道报文的分片处理装置的结构示意图,所述装置包括:

获取单元100,用于实时获取最优报文长度值,所述最优报文长度值为本端设备与对端设备间未分片情况下可使用的最大数据包长度值,所述本端设备与对端设备为隧道搭建的两端设备;

分片值计算单元200,用于将最优报文长度值减去隧道包头长度值,再减去一个以太包头长度后作为分片值;

处理单元300,用于针对需要通过隧道转发的报文,当报文长度大于所述分片值时,则将该报文分片。

在一个或多个实施例中,所述分片得到的所有报文长度均不超过所述分片值。

在一个可选地实施例中,所述装置还包括:

配置单元400,用于配置最优报文长度值的缺省值。

在另一个可选地实施例中,所述装置还包括:

检测单元500,用于周期性检测本端设备与对端设备间未分片情况下可使用的最大数据包长度值,将所述最大数据包长度值作为最优报文长度值,所述本端设备与对端设备为隧道搭建的两端设备。

在一个实施例中,所述装置还包括:

赋值单元600,用于当所述最优报文长度值改变时,更新分片值;以及当所述本端设备与对端设备进行隧道搭建时,配置隧道协议信息,所述隧道协议信息包括:隧道协议名称和隧道包头长度值。

本实施例所述的分片处理装置为网络设备中的一个模块,可通过软件或硬件方式实现。应用该装置的设备应具备完整的数据包收发功能以及某一隧道协议的数据包封装/解封单元。所述装置仅应用于隧道报文的封装之前与解封装之后,并不干涉隧道报文封装/解封单元的实现方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1