一种VXLAN报文处理方法、装置及存储介质与流程

文档序号:17158370发布日期:2019-03-20 00:18阅读:257来源:国知局
一种VXLAN报文处理方法、装置及存储介质与流程

本发明涉及通信技术领域,特别涉及一种虚拟可扩展局域网(virtualextensiblelan,vxlan)报文处理方法、装置及存储介质。



背景技术:

目前云计算互联网数据中心(internetdatacenter,idc)内部结构主要分为l2和l3。在l2结构中,所有的服务器在一个大的局域网中,通信和广播隔离需要靠虚拟局域网(virtuallocalareanetwork,vlan)。而vlan总共只有4096个,一台物理服务器可能会拥有若干虚拟主机(virtualmachine,vm),且每台vm拥有不同的mac地址,显然vlan不能满足需求。

另外在云计算idc中,要求服务器实现虚拟化,服务器可以随时随地迁移,而不需要改变ip,这时就需要l2网络。然而有时数据中心(datacenter,dc)内部服务器不在一个地域内,需要进行l3打通,在l3网络里传输l2数据,这就是覆盖(overlay)技术。

综上两个问题,vxlan诞生了。vxlan是一种overlay的虚拟网络技术,使用macinudp的方法进行封装,共50字节的封装报文头,如图1所示。vxlan提供了将二层网络overlay在三层网络上的能力,vxlanheader中的虚拟网络标识(virtualnetworkidentifier,vni)有24bit,数量远远大于4096,并且用户数据报协议(userdatagramprotocol,udp)的封装可以穿越三层网络,比vlan有更好的扩展性。

在现有技术中,如图2所示,虚拟可扩展局域网隧道终结节点(vxlantunnelendpoint,vtep)之间建立vxlan隧道,用户报文(即数据报文)从一个vtep转发到另一vtep是封装在vxlan头中传输的,如果网络中存在超长长度数据报文,只能把vtep出接口的最大传输单元(maximumtransmissionunit,mtu)配大,才能转发。线卡的报文分片都是需要在下行进行分片处理,如果报文超过了vtep出接口所能配置的最大mtu,那么vxlan报文经过vtep1发出的报文是分片报文,分片报文的首包是封装了vxlan头,而非首包报文是没有封装vxlan头的,到了vtep2设备上会把无vxlan报文头的非首包报文丢弃,那么在虚机2接收到的报文因为不完整而被丢弃。目前只能通过更改出接口mtu方法来规避。

综上,虽然可以通过更改出接口mtu来规避,但是使用有局限性。要求在vtep之间的所有节点的mtu都要大于报文长度。一旦出现中间任何一个节点不能设置mtu值或者最大mtu值小于报文长度那么报文就会被丢弃。



技术实现要素:

本发明实施例提供的一种vxlan报文处理方法、装置及存储介质,解决了vxlan报文较大时的报文传输问题。

根据本发明实施例提供的一种vxlan报文处理方法,包括:

vtep判断收到的数据报文是否是待封装报文;

当所述vtep判断所述数据报文是待封装报文时,根据所述数据报文的长度和vxlan隧道转发能力,确定是否需要对所述数据报文进行分片处理;

若确定需要对所述数据报文进行分片处理,则将所述数据报文进行分片后封装vxlan头,并进行转发。

优选地,所述vtep判断收到的数据报文是否是待封装报文包括:

所述vtep收到数据报文后,若所述数据报文的出接口是vxlan隧道,则确定所述数据报文是待封装报文。

优选地,所述根据所述数据报文的长度和vxlan隧道转发能力,确定是否需要对所述数据报文进行分片处理包括:

若所述数据报文的长度超出所述vxlan隧道转发能力,则确定需要对所述数据报文进行分片处理。

优选地,所述vxlan隧道转发能力是根据所述出接口的最大传输单元mtu值确定的。

优选地,所述若确定需要对所述数据报文进行分片处理,则将所述数据报文进行分片后封装vxlan头,并进行转发包括:

所述vtep根据所述隧道转发能力,对所述数据报文进行分片,得到多个分片报文;

所述vtep查找包含所述vxlan隧道的id号的vxlan头,并为每个分片报文封装所述vxlan头。

本发明实施例提供的一种vxlan报文处理装置,包括:

报文判断模块,用于判断收到的数据报文是否是待封装报文;

分片确定模块,用于当判断所述数据报文是待封装报文时,根据所述数据报文的长度和vxlan隧道转发能力,确定是否需要对所述数据报文进行分片处理;

报文处理模块,用于若确定需要对所述数据报文进行分片处理,则将所述数据报文进行分片后封装vxlan头,并进行转发。

优选地,所述报文判断模块在所述数据报文的出接口是vxlan隧道时,确定所述数据报文是待封装报文。

优选地,所述分片确定模块在所述数据报文的长度超出所述vxlan隧道转发能力时,确定需要对所述数据报文进行分片处理。

优选地,所述报文处理模块根据所述隧道转发能力,对所述数据报文进行分片,得到多个分片报文,查找包含所述vxlan隧道的id号的vxlan头,并为每个分片报文封装所述vxlan头。

本发明实施例提供的存储介质,其上存储有处理器可执行的程序,该程序使处理器执行以下步骤:

判断收到的数据报文是否是待封装报文;

当判断所述数据报文是待封装报文时,根据所述数据报文的长度和vxlan隧道转发能力,确定是否需要对所述数据报文进行分片处理;

若确定需要对所述数据报文进行分片处理,则将所述数据报文进行分片后封装vxlan头,并进行转发。

本发明实施例提供的技术方案具有如下有益效果:

本发明实施例实现在vtep上实现vxlan报文分片,从而避免报文传输中被丢弃的风险。

附图说明

图1是现有技术提供的vxlan报文格式示意图;

图2是现有技术提供的组网场景图;

图3是本发明实施例提供的vxlan报文处理方法流程图;

图4是本发明实施例提供的vxlan报文处理装置框图;

图5是本发明实施例提供的vxlan分片具体流程图。

具体实施方式

以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图3是本发明实施例提供的vxlan报文处理方法流程图,如图3所示,步骤包括:

步骤s101:vtep判断收到的数据报文是否是待封装报文。

所述vtep收到数据报文后,查询路由转发表,找到所述数据报文的出接口,如果出接口是vxlan隧道,则确定所述数据报文是需要封装vxlan头的待封装报文。

步骤s102:当所述vtep判断所述数据报文是待封装报文时,根据所述数据报文的长度和vxlan隧道转发能力,确定是否需要对所述数据报文进行分片处理。

如果所述数据报文的长度超出所述vxlan隧道转发能力,则确定需要对所述数据报文进行分片处理,其中所述vxlan隧道转发能力是根据所述出接口的最大传输单元mtu值确定的。

步骤s103:若确定需要对所述数据报文进行分片处理,则将所述数据报文进行分片后封装vxlan头,并进行转发。

首先所述vtep根据所述隧道转发能力,对所述数据报文进行分片,得到多个分片报文,使每个分片报文的转发均在隧道转发能力内。然后所述vtep查找包含所述vxlan隧道的id号的vxlan头,并为每个分片报文封装所述vxlan头。最后所述vtep转发已封装vxlan头的分片报文。

本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,该程序在执行时,包括步骤s101至步骤s103。进一步说,本发明还可以提供一种存储介质,其上存储有处理器可执行的程序,该程序使处理器执行以下步骤:判断收到的数据报文是否是待封装报文;当判断所述数据报文是待封装报文时,根据所述数据报文的长度和vxlan隧道转发能力,确定是否需要对所述数据报文进行分片处理;若确定需要对所述数据报文进行分片处理,则将所述数据报文进行分片后封装vxlan头,并进行转发。其中,所述的存储介质可以包括rom/ram、磁碟、光盘、u盘。

图4是本发明实施例提供的vxlan报文处理装置框图,如图4所示,包括报文判断模块、分片确定模块和报文处理模块。

报文判断模块,用于判断收到的数据报文是否是待封装报文。

分片确定模块,用于当判断所述数据报文是待封装报文时,根据所述数据报文的长度和vxlan隧道转发能力,确定是否需要对所述数据报文进行分片处理。

报文处理模块,用于若确定需要对所述数据报文进行分片处理,则将所述数据报文进行分片后封装vxlan头,并进行转发。

所述装置的工作过程如下:报文判断模块通过查询路由转发表,找到所述数据报文的出接口,如果出接口是vxlan隧道,则确定所述数据报文是待封装报文。分片确定模块进一步确定所述数据报文的长度是否超出所述vxlan隧道转发能力,如果已超出所述vxlan隧道转发能力,则确定需要对所述数据报文进行分片处理。此时,报文处理模块根据所述隧道转发能力,对所述数据报文进行分片,得到多个分片报文,并查找包含所述vxlan隧道的id号的vxlan头,为每个分片报文封装所述vxlan头,然后转发出去。

需要说明的是,如果未超出所述vxlan隧道转发能力,则报文处理模块按照常规处理方式处理所述数据报文,即无需进行分片处理,直接封装vxlan头转发即可。

其中,本发明实施例实现vxlan报文分片,具体地,包括:

1、vtep上生成vxlan报文封装头(即vxlan头)。

在vtep上的vxlan隧道状态可用后,生成vxlan的报文封装头,便于报文转发。表中包含了vxlan转发时所需要的各种vxlan报文头所需要的封装信息,包括vxlan隧道id等信息。

2、vtep上计算出数据报文实际所对应的mtu值。

传统处理流程是将用户发过来的数据报文封装vxlan头后,根据出接口的mtu值再进行分片后转发出去。本发明实施例中是在封装vxlan头之前就将数据报文进行分片,再将数据分片报文封装上vxlan头转发出去。

数据报文分片的时候需要根据mtu_1进行分片。这里的mtu_1的值需要提前计算得到。计算mtu_1的值mtu_1=mtu-50-4*vlannumber,其中mtu值是指出接口的mtu,50是指vxlan头固定长度,vlannumber是出接口带的vlan层数。这样就得到了数据报文提前分片所需要的mtu_1值。

3、vtep上收到长度大于mtu_1的数据报文处理流程。

vtep上收到数据报文后,先检查其路由出接口,如果需要封装vxlan出去,那么先解析其报文长度,并与mtu_1的值进行比较。如果长度大于mtu_1的值,那么就把数据报文进行分片,再把每个分片数据报文封装vxlan头转发出去。

本发明实施例根据vxlan出接口计算内部数据报文实际需要分片的mtu值(即mtu_1),由设备上行带上报文vxlan封装属性和分片属性给下行,下行完成分片再封装vxlan头转发,实现vxlan报文的分片。

将路由器作为vtep来举例,vxlan分片具体实现流程如图5所示,步骤包括:

第一步:路由器上配置了vxlan隧道后,隧道源和目的地址路由可达,vxlan隧道状态up了,表示此vxlan隧道可用。这时路由器上会生成一个vxlan封装头,到路由器上的转发报文如果路由出接口是此vxlan隧道,那就在需要转发的报文前面封装上vxlan头再进行转发。封装头中包含了vxlan隧道的id号。

第二步:路由器上vxlan隧道也对应着实际的物理出接口。出接口上有mtu,表示收到的数据报文外层再封装上vxlan头后的转发报文最大长度不能超过此mtu。本发明实施例中是让数据报文在封装vxlan头之前就进行分片,并且计算出数据报文分片所需的mtu_1值。

第三步:当路由器上行线卡(即接收报文的线卡)收到报文后,先查询路由转发表。如果出接口是走的vxlan隧道,得到对应vxlan隧道id号,并计算出收到的数据报文的长度length1。

如果length1大于mtu_1值,就不封装vxlan头,把数据报文打上标记。

标记中包含:

1.标记位,这个需要流量上行接收端和下行转发端协商一致,表示此数据报文需要先分片再封装vxlan头出去;

2.mtu_1值,是为了下行线卡(即发送报文的线卡)根据此mtu_1值对数据报文分片;

3.vxlantunnelid值,为了便于数据分片后根据vxlantunnelid值查找到对应的需要封装的vxlan头;

当然标记头中包含但也不局限以上几种值,以实际情况而定。

路由器上行线卡收到报文后打上标记后直接转到下行线卡。

如果length1小于或者等于mtu_1值,线卡上行收到此报文后就直接查路由,封装vxlan头转发下到线卡下行,再由下行直接转发出去。

第四步:下行线卡收到上行发送过来的报文后,如果看到报文有标记,提取标记中的mtu_1值,对数据报文进行分片。

先预申请缓存存储区,把分片报文先放在缓存存储区。分片完成后,根据标记中的vxlantunnelid查询到需要封装的vxlan头,将每个分片报文封装vxlan头,然后走普通转发流程出去,同时释放缓存。

综上所述,本发明的实施例具有以下技术效果:

1.本发明实施例可以实现vxlan报文的分片,解决了传统分片方法带来的重组失败问题;

2.从转发性能上讲,mtu_1的值是报文转发之前就根据vxlan隧道出接口计算好的,占用少量的存储空间,并不影响转发;

3.如果报文不需要分片,比较报文长度后转发性能与现有的报文转发性能基本一致。

尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

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