报文转发方法及VXLAN网关技术

技术编号:18259843 阅读:68 留言:0更新日期:2018-06-20 10:30
本申请实施例提供了一种报文转发方法及VXLAN网关,涉及网络技术领域。所述方法,用于VXLAN处理模块中,该VXLAN处理模块是设置在网关节点中的模块,该方法包括:从数据链路层获取第一虚拟机VM发送的第一报文,将第一报文的第一报文头中的外层以太头、外层IP头和外层UDP头进行一次解封装处理,得到UDP有效载荷,剥离UDP有效载荷的VXLAN头得到内层报文,对内层报文进行重新封装得到第二报文;使得三个报文头能够通过VXLAN处理模块进行一次解封装处理,缩短了解封装处理的时长,从而提高了VXL AN网关转发报文时的性能。

Message forwarding method and VXLAN gateway

The application embodiment provides a message forwarding method and a VXLAN gateway, which relate to the network technical field. In the VXLAN processing module, the VXLAN processing module is a module set in the gateway node, which includes: obtaining the first message sent by the first virtual machine VM from the data link layer, and the first packet processing of the outer layer Ethernet head, the outer layer IP head and the outer UDP head in the first message header of the first message. To get the UDP payload, the VXLAN header that stripped the payload of UDP gets the inner message, and the inner message is repackaged and the second message is repackaged. The three message heads can be packaged and processed through the VXLAN processing module to shorten the time of understanding the time of the package processing, thus the performance of the VXL AN gateway is improved when the message is forwarded. .

【技术实现步骤摘要】
报文转发方法及VXLAN网关
本申请涉及网络
,特别涉及一种报文转发方法及虚拟可扩展局域网(VirtualExtensibleLocalAreaNetwork,VXLAN)网关。
技术介绍
VXLAN技术是用于扩展网络虚拟化,以得到足够数量的虚拟网络来满足用户使用的技术。相关技术中,用于VXLAN网关的报文转发方法包括:VXLAN网关接收第一计算节点发送的数据报文,通过内核协议栈剥离该数据报文的第一VXLAN封装,并获取数据报文的内层报文中的目的地址,根据映射表以及目的地址确定数据报文的下一跳地址,为数据报文添加第二VXLAN封装,第二VXLAN封装中的目的地址为下一跳地址,VXLAN网关向第二计算节点发送添加了第二VXLAN封装的数据报文。其中,第一VXLAN封装包括外层以太网头(英文:OuterEthernetheader)、外层网络之间互连的协议(OuterInternetProtocol,OuterIP)、外层用户数据报协议头(OuterUserDatagramProtocolheader,OuterUDPheader)和虚拟可扩展同域网头(英文:VXLANheader)这四个报文头。通常,VXLAN网关通过内核协议栈剥离第一VXLAN封装,包括通过内核协议栈中的各层进行逐层依次剥离,即每层剥离第一VXLAN封装中的一个报文头。其中,内核协议栈中的各层剥离第一VXLAN封装的过程中涉及通过socket接口收发报文,而通过socket接口收发报文时会存在用户态数据与内核态数据的切换,导致数据切换时的开销问题,从而大大降低了VXLAN网关转发报文时的性能。
技术实现思路
为了解决相关技术中通过socket接口收发报文时存在用户态数据与内核态数据的切换而导致VXLAN网关转发报文时的性能较低的问题,本申请实施例提供了一种报文转发方法及VXLAN网关。所述技术方案如下:第一方面,本申请实施例提供了一种报文转发方法,用于VXLAN处理模块中,该VXLAN处理模块是设置在网关节点中的模块,该方法包括:从数据链路层获取第一虚拟机(VirtualMachine,VM)发送的第一报文;将第一报文的第一报文头中的外层以太头、外层网络之间互连的协议IP头和外层用户数据报协议UDP头进行一次解封装处理,得到UDP有效载荷;剥离UDP有效载荷的VXLAN头,得到内层报文;对内层报文进行重新封装得到第二报文;将第二报文发送至第二VM所在的第二计算节点。在该实现方式中,通过VXLAN处理模块将第一报文的第一报文头中的外层以太头、外层IP头和外层UDP头进行一次解封装处理,得到UDP有效载荷,剥离UDP有效载荷的VXLAN头得到内层报文,对内层报文进行重新封装得到第二报文,避免了第一报文头中的外层以太头、外层IP头和外层UDP头这三个报文头通过内核协议栈进行逐层处理并剥离的情况,使得这三个报文头能够通过VXLAN处理模块直接进行一次解封装处理,缩短了解封装处理的时长,从而提高了VXLAN网关转发报文时的性能。在第一方面的一种可能的实现方式中,所述将所述第一报文的第一报文头中的外层以太头、外层网络之间互连的协议IP头和外层用户数据报协议UDP头进行一次解封装处理,得到UDP有效载荷,包括:将所述第一报文的第一报文头中的所述外层以太头、所述外层IP头和所述外层UDP头通过一次所述解封装处理进行全内核态的剥离,得到所述UDP有效载荷。在该实现方式中,将这三个报文头通过一次解封装处理进行全内核态的剥离,避免了相关技术中在VXLAN网关转发报文时存在用户态数据与内核态数据的切换而导致数据切换时的开销问题,进一步提高了VXLAN网关转发报文时的性能。在第一方面的另一种可能的实现方式中,对内层报文进行重新封装得到第二报文,包括:根据内层报文中的目的媒体介入控制层(MediaAccessControl,MAC)地址,生成与目的MAC地址对应的第二报文头,目的MAC地址是第二VM的MAC地址;根据第二报文头对内层报文进行封装,得到第二报文。在第一方面的另一种可能的实现方式中,根据内层报文中的目的MAC地址,生成与目的MAC地址对应的第二报文头,包括:根据内层报文中的目的MAC地址和流表,获取与目的MAC地址对应的隧道IP地址,隧道IP地址是第二VM所在的第二计算节点的IP地址;根据隧道IP地址,从本地缓存表中确定与隧道IP地址对应的下一跳MAC地址,本地缓存表中存储有隧道IP地址和下一跳MAC地址之间的对应关系;根据隧道IP地址和下一跳MAC地址生成第二报文头,第二报文头中的外层目的MAC地址为下一跳MAC地址,第二报文头中的外层目的IP地址为隧道IP地址。在该实现方式中,通过根据内层报文中的目的MAC地址和流表,获取与目的MAC地址对应的隧道IP地址,根据隧道IP地址,从本地缓存表中确定与隧道IP地址对应的下一跳MAC地址,根据隧道IP地址和下一跳MAC地址生成第二报文头;由于VXLAN处理模块中的本地缓存表中存储有隧道IP地址和下一跳MAC地址之间的对应关系,避免了相关技术中需要依次通过路由表和地址解析协议(AddressResolutionProtocol,ARP)表才能查找到下一跳MAC地址的情况,使得VXLAN处理模块能够通过内置的本地缓存表直接查找到下一跳MAC地址,大大缩短了查找时间,进而提高了VXLAN网关进行报文转发的效率。在第一方面的另一种可能的实现方式中,根据隧道IP地址,从本地缓存表中确定与隧道IP地址对应的下一跳MAC地址,包括:当尚未满足缓存表更新条件时,将查找次数加一;根据隧道IP地址,从本地缓存表中查找到与隧道IP地址对应的下一跳MAC地址;其中,缓存表更新条件包括查找次数小于预设查找次数,和/或,第一时刻与第二时刻的差值小于预设时间间隔,查找次数为当前累计的查找本地缓存表的次数,第一时刻为当前时刻,第二时刻为上一次查找路由表和ARP表的时刻。在第一方面的另一种可能的实现方式中,该方法,还包括:当从本地缓存表中未查找到与隧道IP地址对应的下一跳MAC地址时,从路由表查找到与隧道IP地址对应的下一跳IP地址;根据下一跳IP地址,从ARP表中查找到与下一跳IP地址对应的下一跳MAC地址;根据路由表和ARP表,对本地缓存表进行更新;将第二时刻重置为当前时刻。在第一方面的另一种可能的实现方式中,该方法,还包括:当满足缓存表更新条件时,将查找次数重置为零;根据隧道IP地址,从路由表查找到与隧道IP地址对应的下一跳IP地址;根据下一跳IP地址,从ARP表中查找到与下一跳IP地址对应的下一跳MAC地址;根据路由表和ARP表,对本地缓存表进行更新;将第二时刻重置为当前时刻。在该实现方式中,通过判断是否满足缓存表更新条件,若满足缓存表更新条件,则将查找次数重置为零,根据路由表和ARP表查找下一跳MAC地址,根据路由表和ARP表,对本地缓存表进行更新,由于该本地缓存表的表项均来源于路由表和ARP表,使得本地缓存表能够定期根据路由表和ARP表进行更新,及时同步路由表和ARP表的各个表项。在第一方面的另一种可能的实现方式中,该方法,还包括:根据隧道IP地址,从本地缓存表中确定与隧道IP地址对应的输出接口,本地缓存表中还本文档来自技高网
...
报文转发方法及VXLAN网关

【技术保护点】
1.一种报文转发方法,其特征在于,用于VXLAN处理模块中,所述VXLAN处理模块是设置在网关节点中的模块,所述方法包括:从数据链路层获取第一虚拟机VM发送的第一报文;将所述第一报文的第一报文头中的外层以太头、外层网络之间互连的协议IP头和外层用户数据报协议UDP头进行一次解封装处理,得到UDP有效载荷;剥离所述UDP有效载荷的VXLAN头,得到内层报文;对所述内层报文进行重新封装得到第二报文;将所述第二报文发送至第二VM所在的第二计算节点。

【技术特征摘要】
1.一种报文转发方法,其特征在于,用于VXLAN处理模块中,所述VXLAN处理模块是设置在网关节点中的模块,所述方法包括:从数据链路层获取第一虚拟机VM发送的第一报文;将所述第一报文的第一报文头中的外层以太头、外层网络之间互连的协议IP头和外层用户数据报协议UDP头进行一次解封装处理,得到UDP有效载荷;剥离所述UDP有效载荷的VXLAN头,得到内层报文;对所述内层报文进行重新封装得到第二报文;将所述第二报文发送至第二VM所在的第二计算节点。2.根据权利要求1所述的方法,其特征在于,所述将所述第一报文的第一报文头中的外层以太头、外层网络之间互连的协议IP头和外层用户数据报协议UDP头进行一次解封装处理,得到UDP有效载荷,包括:将所述第一报文的第一报文头中的所述外层以太头、所述外层IP头和所述外层UDP头通过一次所述解封装处理进行全内核态的剥离,得到所述UDP有效载荷。3.根据权利要求1所述的方法,其特征在于,所述对所述内层报文进行重新封装得到第二报文,包括:根据所述内层报文中的目的MAC地址,生成与所述目的MAC地址对应的第二报文头,所述目的MAC地址是所述第二VM的MAC地址;根据所述第二报文头对所述内层报文进行封装,得到所述第二报文。4.根据权利要求3所述的方法,其特征在于,所述根据所述内层报文中的目的MAC地址,生成与所述目的MAC地址对应的第二报文头,包括:根据所述内层报文中的目的MAC地址和流表,获取与所述目的MAC地址对应的隧道IP地址,所述隧道IP地址是所述第二VM所在的第二计算节点的IP地址;根据所述隧道IP地址,从本地缓存表中确定与所述隧道IP地址对应的下一跳MAC地址,所述本地缓存表中存储有所述隧道IP地址和所述下一跳MAC地址之间的对应关系;根据所述隧道IP地址和所述下一跳MAC地址生成所述第二报文头,所述第二报文头中的外层目的MAC地址为所述下一跳MAC地址,所述第二报文头中的外层目的IP地址为所述隧道IP地址。5.根据权利要求4所述的方法,其特征在于,所述根据所述隧道IP地址,从本地缓存表中确定与所述隧道IP地址对应的下一跳MAC地址,包括:当尚未满足缓存表更新条件时,将查找次数加一;根据所述隧道IP地址,从所述本地缓存表中查找到与所述隧道IP地址对应的所述下一跳MAC地址;其中,所述缓存表更新条件包括所述查找次数小于预设查找次数,和/或,第一时刻与第二时刻的差值小于预设时间间隔,所述查找次数为当前累计的查找所述本地缓存表的次数,所述第一时刻为当前时刻,所述第二时刻为上一次查找路由表和ARP表的时刻。6.根据权利要求5所述的方法,其特征在于,所述方法,还包括:当从所述本地缓存表中未查找到与所述隧道IP地址对应的所述下一跳MAC地址时,从所述路由表查找到与所述隧道IP地址对应的下一跳IP地址;根据所述下一跳IP地址,从所述ARP表中查找到与所述下一跳IP地址对应的所述下一跳MAC地址;根据所述路由表和所述ARP表,对所述本地缓存表进行更新;将所述第二时刻重置为所述当前时刻。7.根据权利要求5所述的方法,其特征在于,所述方法,还包括:当满足所述缓存表更新条件时,将所述查找次数重置为零;根据所述隧道IP地址,从所述路由表查找到与所述隧道IP地址对应的下一跳IP地址;根据所述下一跳IP地址,从所述ARP表中查找到与所述下一跳IP地址对应的所述下一跳MAC地址;根据所述路由表和所述ARP表,对所述本地缓存表进行更新;将所述第二时刻重置为所述当前时刻。8.根据权利要求4所述的方法,其特征在于,所述方法,还包括:根据所述隧道IP地址,从所述本地缓存表中确定与所述隧道IP地址对应的输出接口,所述本地缓存表中还存储有所述隧道IP地址和所述输出接口之间的对应关系;所述将所述第二报文发送至所述第二VM所在的所述第二计算节点,包括:将所述第二报文通过所述输出接口发送至所述第二计算节点。9.根据权利要求1至8任一所述的方法,其特征在于,所述将所述第二报文发送至第二VM所在的第二计算节点,包括:获取所述第二报文对应的开始指针和指针数组,所述开始指针用于指向第一内存区域,所述指针数组包括n+1个指针,所述指针数组中的第i个指针用于指向第i个第二内存区域,所述n为正整数,所述i小于n的非负整数;当所述第一内存区域小于所述第二报文的第二报文头所需的内存区域时,将所述指针数组中的第0个指针重新指向所述第一内存区域,并将所述指针数组中的第j个指针重新指向第j-1个所述第二内存区域,所述j为小于或者等于n的正整数;为所述第二报文的第二报文头重新分配第三内存区域,所述第三内存区域是不同于所述第一内存区域和所述第二内存区域的区域;将所述第二报文的第二报文头中的外层以太头、外层IP头和外层UDP头拷贝至所述第三内存区域;将所述开始指针重新指向所述第三内存区域;将所述第二报文发送至所述第二计算节点。10.根据权利要求1至8任一所述的方法,其特征在于,所述剥离所述UDP有效载荷的VXLAN头,得到内层报文,包括:当所述UDP有效载荷中包括虚拟可扩展局域网网络标识VNI时,确定所述第一报文为VXLAN报文;当检测到存在与所述VXLAN报文对应的VXLAN端口时,剥离所述UDP有效载荷的VXLAN头,得到所述内层报文。11.一种VXLAN网关,其特征在于,包括VXLAN处理模块的网关节点,接收模块,用于从数据链路层获取第一虚拟机VM发送的第一报文,将所述第一报文发送至所述VXLAN处理模块;所述VXLAN处理模块,还用于将所述第一报文的第一报文...

【专利技术属性】
技术研发人员:梁亦历高晓秋
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1