CN113890789B - 适用于数据中心的udp隧道流量的分流方法、流量转发方法 - Google Patents

适用于数据中心的udp隧道流量的分流方法、流量转发方法 Download PDF

Info

Publication number
CN113890789B
CN113890789B CN202111153796.0A CN202111153796A CN113890789B CN 113890789 B CN113890789 B CN 113890789B CN 202111153796 A CN202111153796 A CN 202111153796A CN 113890789 B CN113890789 B CN 113890789B
Authority
CN
China
Prior art keywords
udp tunnel
packet
traffic
udp
virtual router
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.)
Active
Application number
CN202111153796.0A
Other languages
English (en)
Other versions
CN113890789A (zh
Inventor
纪伟龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huayun Data Holding Group Co ltd
Original Assignee
Huayun Data Holding Group Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huayun Data Holding Group Co ltd filed Critical Huayun Data Holding Group Co ltd
Priority to CN202111153796.0A priority Critical patent/CN113890789B/zh
Publication of CN113890789A publication Critical patent/CN113890789A/zh
Application granted granted Critical
Publication of CN113890789B publication Critical patent/CN113890789B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供了适用于数据中心的UDP隧道流量的分流方法,所述数据中心包括多个虚拟路由器,所述方法包括:在至少一个虚拟路由器的节点设置SRO模块,并为所述SRO模块设定UDP隧道端口;使用MPLSoverUDP封装模式将所述UDP隧道流量从第一虚拟路由器的节点发送至第二虚拟路由器的节点,且在UDP隧道端口设置监听;判断所述UDP隧道流量包是否为本地数据包;响应于所述UDP隧道流量包为本地数据包,执行软件包合并操作,以及将执行所述GRO操作后的所述UDP隧道流量包解封装后发送至所述第二虚拟路由器。本申请实施例能够对跨节点南北向流量实现解析分流并跳过GRO处理,减少路径上聚合后再分段的过程,提高网络转发效率,节省CPU资源。

Description

适用于数据中心的UDP隧道流量的分流方法、流量转发方法
技术领域
本申请涉及计算机技术领域,尤其是涉及一种适用于数据中心的UDP隧道流量的分流方法及适用于数据中心的流量转发方法。
背景技术
随着web网站与电子商务的发展,网络已经成为了目前人们离不开的生活必需品之一。“云计算”自首次在2006年8月的搜索引擎会议上提出,成为了互联网的第三次革命,其属于分布式计算的一种,通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后通过多部服务器组成的***进行处理和分析这些小程序得到结果并返回给用户。近几年来,云计算也正在成为信息技术产业发展的战略重点,全球的信息技术企业都在纷纷向云计算转型。最近几年,随着网络、虚拟化、存储技术的发展,我们已经迈入了云计算时代,各大云计算厂商或大的IT企业纷纷建立自己的数据中心以支撑和发展自己的业务。
如果不能在数据中心实现对流量数据的高速转发分流,将会给用户带来不可估量的损失。现有GRO(Generic Receive Offloading)技术作为LRO(Large ReceiveOffloading)的软件实现,在网卡驱动层面上将接收到的多个VXLAN/TCP数据包聚合成一个大的数据包,然后上传给协议栈处理。这样可以减少协议栈处理的开销,提高***接收TCP数据的能力和效率。
然而,现有的GRO技术仅支持对主流的UDP tunnel(隧道)。例如,使用vxlan封装数据包,则支持receive offload;使用mpls over udp tunnel封装数据包,则将无法进行GRO。而且跨节点访问路由器出外网的流量本来无需进行GRO,但却无法智能的区分,因此仍需进行GRO后发包前再次分包,额外占用CPU资源。
如图1所示为现有的虚拟路由器结构示意图,跨节点使用Mpls over Udp tunnel,当vm1跨节点访问vm2时,在网卡驱动层面无法支持GRO,故数据包将以数据段小于mtu的长度发送至kernel协议栈后进行解封装(decap)转发处理。以mtu长度1500为例,最大报文长度为1514字节,如可以支持MplsOudp数据包的GRO,则可等待并将数据包组成64K长度的大包后送再发送至协议栈,则可以少执行42次解封装处理,依次达到节省cpu资源、提高转发性能的目的。
如图2所示为现有的虚拟路由器的另一结构图,跨节点使用vxlan tunnel,且外网路由器在Controller02节点。当vm1访问外网客户端时,数据包将从Con troller01节点跨节点通过vxlan tunnel转发至Controller02的外网路由器后发送至外网客户端。此场景在vxlan tunnel数据包到达Controller02节点时,会进行GRO处理后组成64K的大包后送至协议栈,经解封装查路由后发现需将数据包转发至外网网卡,且需要按外网网卡mtu分段后发送至外网客户端。然而,此种场景的数据包,如能够智能确定不进行gro处理则可以节省数据组包及分段消耗的CPU资源。
基于此,有必要对现有数据中心的UDP隧道流量的分流方式进行改进。
发明内容
本申请的目的在于提供适用于数据中心的UDP隧道流量的分流方法及适用于数据中心的流量转发方法,提高网络转发效率,节省CPU资源。
本申请的目的采用以下技术方案实现:
第一方面,本申请提供了适用于数据中心的UDP隧道流量的分流方法,所述数据中心包括多个虚拟路由器,所述方法包括:在至少一个虚拟路由器的节点设置智能接收分流(SRO)模块,并为所述SRO模块设定UDP隧道端口;在所述UDP隧道端口设置监听,以接收不同虚拟路由器的节点间的UDP隧道流量包;判断所述UDP隧道流量包是否为本地数据包,并响应于所述UDP隧道流量包为本地数据包,执行软件包合并(GRO)操作。通过智能识别数据包为本地包,实现跨节点东西向流量的proto over UDP tunnel流量的GRO功能,聚合成大包后发送至协议栈,大幅度减少后续路径的解封装次数,降到CPU的使用开销,提高转发性能。在识别数据包为外网数据包时,实现跨节点南北向流量解析分流,跳过GRO过程直接转发,减少路径上的先聚合再分段过程,减少CPU的使用开销。
在一些可选的实施例中,所述SRO模块还用于设置初始偏移或初始化注册GRO处理函数。
在一些可选的实施例中,所述在UDP隧道端口设置监听包括:
在至少一个虚拟路由器的节点,判断所述UDP隧道流量的目的端口是否为所述SRO模块设定的UDP隧道端口。
在一些可选的实施例中,所述虚拟路由器的节点包括第一虚拟路由器的节点和第二虚拟路由器的节点,所述UDP隧道流量包通过如下方式实现跨节点接收:使用MPLSoverUDP封装模式将所述UDP隧道流量从第一虚拟路由器的节点发送至第二虚拟路由器的节点。
在一些可选的实施例中,判断所述UDP隧道流量包是否为本地数据包包括:根据所述初始偏移取出MPLS header与GRO列表上缓存的数据包进行比较;响应于未找到相同header的所述UDP隧道流量包,临时剥离所述UDP隧道流量包的header并取出所述UDP隧道流量包的内层IP;利用所述内层IP查询本地路由表,以判断所述UDP隧道流量包是否为本地数据包。
在一些可选的实施例中,在判断所述UDP隧道流量包是否为本地数据包之前还包括:根据所述初始偏移对所述UDP隧道流量包进行合法性检查,且响应于所述UDP隧道流量包未合法,停止所述GRO操作和/或停止判断所述UDP隧道流量包是否为本地数据包的操作。
在一些可选的实施例中,所述方法还包括:响应于所述UDP隧道流量包为外网数据包,停止所述GRO操作。
第二方面,本申请提供了适用于数据中心的流量转发方法,所述数据中心包括第一虚拟路由器和第二虚拟路由器,所述方法包括:在第一虚拟路由器进行流量封装;在第一虚拟路由器和/或第二虚拟路由器的节点设置SRO模块,并为所述SRO模块设定UDP隧道端口;使用MPLSoverUDP封装模式将所述UDP隧道流量从第一虚拟路由器的节点发送至第二虚拟路由器的节点,且在所述UDP隧道端口设置监听;判断所述UDP隧道流量包是否为本地数据包;响应于所述UDP隧道流量包为本地数据包,执行GRO操作,以及将执行所述GRO操作后的所述UDP隧道流量包解封装后发送至所述第二虚拟路由器;或者,响应于所述UDP隧道流量包为外网数据包,将所述UDP隧道流量包解封装后发送至所述第二虚拟路由器。该技术方案的有益效果在于,SRO模块可以在各个节点自定义配置使用的UDP封装的GRO参数;能实现跨节点东西向流量的proto over UDP tunnel流量的GRO功能,聚合成大包后发送至协议栈,大幅度减少后续路径的解封装次数,降到cpu的使用开销,提高转发性能;能实现实现跨节点南北向流量解析分流,跳过GRO过程直接转发,减少路径上的先聚合再分段过程,减少CPU的使用开销。
在一些可选的实施例中,所述SRO模块还用于设置初始偏移或初始化注册GRO处理函数。
在一些可选的实施例中,在所述UDP隧道端口设置监听包括:
在第二虚拟路由器的节点,判断所述UDP隧道流量的目的端口是否为所述SRO模块设定的UDP隧道端口。
在一些可选的实施例中,判断所述UDP隧道流量包是否为本地数据包包括:根据所述初始偏移取出MPLS header与GRO列表上缓存的数据包进行比较;响应于未找到相同header的所述UDP隧道流量包,临时剥离所述UDP隧道流量包的header并取出所述UDP隧道流量包的内层IP;利用所述内层IP查询本地路由表,以判断所述UDP隧道流量包是否为本地数据包。
在一些可选的实施例中,在判断所述UDP隧道流量包是否为本地数据包之前还包括:根据所述初始偏移对所述UDP隧道流量包进行合法性检查,且响应于所述UDP隧道流量包未合法,停止所述GRO操作和/或停止判断所述UDP隧道流量包是否为本地数据包的操作。
第三方面,本申请提供了一种电子设备,所述电子设备包括存储器、处理器以及用于执行任务的硬件模组,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项方法的步骤。
附图说明
下面结合附图和实施例对本申请进一步说明。
图1为现有技术的虚拟路由器结构示意图;
图2为现有技术的虚拟路由器另一结构示意图;
图3为本申请一实施例的适用于数据中心的UDP隧道流量的分流方法流程示意图;
图4为本申请一实施例的东西向流量转发示意图;
图5为本申请一实施例的南北向流量转发示意图;
图6为本申请一实施例的SRO模块配置初始化及数据流转发至SRO模块流程图;
图7为本申请一实施例的数据流在SRO模块处理流程示意图;
图8为本申请一实施例的适用于数据中心的流量转发方法流程示意图;
图9是本申请实施例提供的一种电子设备的结构示意图;
图10是本申请实施例提供的一种用于实现选型方法的程序产品的结构示意图。
具体实施方式
下面,结合附图以及具体实施方式,对本申请做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
参见图3,本申请实施例提供了适用于数据中心的UDP隧道流量的分流方法,可自定义配置的UDP隧道流量的分流(offload),该法适用于电子邮箱的检查和发送、在线存储、即时通信的商务合作、虚拟办公等具体场景,能够在数据中心实现对流量数据的高速转发分流。控制方法包括步骤S101~S103,在此实施例中,数据中心可包括多个虚拟路由器。
步骤S101,在至少一个虚拟路由器的节点设置智能接收分流(smart receiv eoffload,SRO)模块,并为SRO模块设定UDP隧道端口。示例性的,数据中心虚拟路由器(Virtual Router,VRouter)可使用MPLSoverUDP tunnel封装部署安装,在数据中心的各个VRouter节点安装部署SRO模块,并设置自定UDP tunnel port。在此实施例中,具体执行命令:modprobe sro port=6635,offset=4,重启所在节点的VRouter agent。
步骤S102,在UDP隧道端口设置监听,以接收不同虚拟路由器的节点间的UDP隧道流量包。当加载SRO模块后,在UDP隧道端口创建监听UDP socket。虚拟路由器的节点可包括第一虚拟路由器的节点和第二虚拟路由器的节点。UD P隧道端口(tunnel socket)创建监听是在加载SRO模块的时候设置的,仅是第一虚拟路由器节点流量加封装(vxlan/mpls)发送至第二虚拟路由器的节点,第二虚拟路由器的节点根据封装协议端口即第一虚拟路由器节点加封装发到第二虚拟路由器的节点的数据包的目的端口判断,是否为SRO注册监听的socket判断处理。在此实施例中,由SRO模块基于port=6635创建监听UDP socket 6635,并设置挂载GRO receive/complete处理函数,数据报头长度偏移为offset=4,完成初始偏移的设置。可选的,SRO模块还将根据前述配置初始化注册GRO处理函数。通过上述操作,在部署SRO模块时,实现指定配置数据中心使用的UDP tunnel端口、偏移offset长度,同时SRO模块完成初始化操作。
步骤S103,判断UDP隧道流量包是否为本地数据包,并响应于UDP隧道流量包为本地数据包,执行软件包合并(generic receive offload,GRO)操作。
示例性的,数据中心所包括的多个虚拟路由器的节点数据网卡收包时,SR O装置将监听捕获目的端口为部署时配置的UDP数据包。
可选的,判断UDP隧道流量包是否为本地数据包包括:根据初始偏移取出MPLSheader与GRO列表上缓存的数据包进行比较;响应于未找到相同heade r的UDP隧道流量包,临时剥离UDP隧道流量包的header并取出UDP隧道流量包的内层IP;利用内层IP查询本地路由表,以判断UDP隧道流量包是否为本地数据包。
可选的为了保证检测效率,在判断UDP隧道流量包是否为本地数据包之前还执行:根据初始偏移对UDP隧道流量包进行合法性检查,且响应于UDP隧道流量包未合法,停止GRO操作和/或停止判断UDP隧道流量包是否为本地数据包的操作。
在一个实施例中,UDP隧道流量包通过如下方式确定是否为本地数据包:
首先,SRO模块将数据包/UDP隧道流量包送至GRO receive/complete处理函数(GRO func)处理,根据offset获取到封装头部,并对数据包进行合法性检查。对合法性数据包进行后续处理;如数据包不合法,则中止后续操作。
其次,根据初始偏移取出mpls header与GRO list上缓存的数据包进行比较,如相同same flow置1,按offset剥离mpls头后,设置flush=0,按下一层协议type送至对应的kernel GRO函数处理;如根据初始偏移取出mpls header与GRO list上缓存的数据包进行比较,但没有找到相同的header数据包,则临时剥离数据包header取出内层IP并查询本地路由表,判断检测是否为本地数据包。
在一个实施例中,UDP隧道流量包/数据包检测为本地数据包时,则为东西向流量,则将数据包添加至GRO list后,按offset剥离mpls头后,设置flush=0,按下一层协议type送至对应的kernel gro函数处理。在一个实施例中,UDP隧道流量包检测为外网数据包时,则为南北向流量,设置flush=1,不进行GRO处理。
本申请实施例的适用于数据中心的UDP隧道流量的分流方法,在虚拟路由器的节点设置SRO模块,能够自定义配置的UDP tunnel流量的分流;利用SR O模块根据UDP隧道端口设置监听,以接收不同虚拟路由器的节点间的UDP隧道流量包;判断UDP隧道流量包是否为本地数据包,并响应于UDP隧道流量包为本地数据包,执行软件包合并(GRO)操作。本方法能够对自定义的UDP tu nnel封装数据包实现GRO功能,对跨节点南北向流量实现解析分流跳过GRO处理,减少路径上聚合后再分段的过程,提高网络转发效率,节省CPU资源。
如图4所示,为本申请一实施例的东西向流量转发示意图。其中,节点1(Controller1)对应虚拟路由器1(VRouter1),其包括虚拟机VM1;节点2(Contr oller2)对应虚拟路由器2(VRouter2),其包括虚拟机VM2。流量从VM1发出后,经虚拟路由转发(Virtual Routing Forwarding,VRF)、一个或多次封装操作,使用MPLSoverUDP的封装模式流量从节点controller1发送至节点controlle r2;controller2节点网卡驱动收到UDPtunnel数据包后,将流量送至kernel的UDP GRO receive接口并遍历查找本地的UDPsocket列表,即在UDP隧道端口设置监听,执行UDP socket匹配;在此实施例中,MPLSoverUDP tunnel是以UDP目的端口6635封装,且SRO注册创建监听了6635端口,所以会将目的端口为6635的数据包捕获至SRO模块处理。在此实施例中,在节点2内部还进行Custom GRO func处理,根据offset获取到封装头部,对数据包进行合法性检查;接着进行数据包为本地数据包的确认(本地检测),在确定数据包合法且为本地数据包后,执行GRO操作以及后续的解析/解封装操作。
如图5所示,为本申请一实施例的南北向流量转发示意图。其中,节点3(Controller3)对应虚拟路由器3(VRouter3),其包括虚拟机VM3;节点4(Contr oller4)对应虚拟路由器4(VRouter4),其包括虚拟机VM4。流量从VM3发出后,经虚拟路由转发(Virtual Routing Forwarding,VRF)、一个或多次封装操作,使用MPLSoverUDP的封装模式流量从节点controller3发送至节点controlle r4;controller4节点网卡驱动收到UDPtunnel数据包后将流量送至kernel的UD P GRO receive接口并遍历查找本地的UDPsocket列表,即执行UDP socket匹配,在此实施例中,MPLSoverUDP tunnel是以UDP目的端口6635封装,且SRO注册创建监听了6635端口,所以会将目的端口为6635的数据包捕获至SRO模块处理。在此实施例中,检测为外网数据包,则为南北向流量,具体数据,设置flush=1,不进行GRO处理。
在一个实施例中,SRO模块配置初始化及数据流转发至SRO模块流程图如图6所示。在数据中心的各个VRouter节点安装部署SRO模块,并设置自定UDP tunnel port,具体执行命令:modprobe sro port=6635offset=4,重启所在节点的vrouter agent。加载SRO模块后,由SRO模块基于port=6635创建监听UDP socket 6635,并设置挂载GRO receive/complete处理函数,数据报头长度偏移为offset=4。
在处理各节点的跨节点流量时,如前所述,使用mpls over udp的封装模式流量从第一虚拟路由器的节点和第二虚拟路由器的节点,第二虚拟路由器的节点网卡驱动(kernel)收到UDP tunnel数据包后,会将流量送至kernel的UDP GRO receive接口并遍历查找本地的UDP socket列表,即使用目的端口查询本地的socket选项。在此实施例中,目的端口命中socket A。进一步的,流量进入custom GRO接口处理。接着,在合法性检查不通过时则设置flush=1标识,不进行后续GRO处理,直接送至kernel;在合法性检查通过时设置flush=0,按下一层协议type送至对应的kernel GRO函数处理,继续逐层头检查合并。
在一个实施例中,数据流在SRO模块处理过程如图7所示。
首先,对于执行custom GRO func,完成合法化检验的流量;
其次,按照offset长度,获取tunnel header A。在此实施例中,即根据offs et=4偏移取出mpls header A,且校验header A正确。如校验header A正确,则继续执行后续操作;如果校验header A不正确/错误,则flush置1,不进行后续操作。
接着,使用当前数据包遍历查找GROlist是否存在same flow。在此实施例中,将header A与gro list上缓存的数据包进行比较,如相同same flow置1,按offset剥离mpls头后,设置flush=0,按下一层协议type送至对应的kernel gr o函数处理;如没有找到相同的header数据包,则取内层头的IP地址,对数据包进行解封装,临时剥离数据包header取出内层IP并查询本地路由表(检查目的是否为本地IP),并判断检测是否为本地数据包。
在一个实施例中,当检测为本地数据包,则为东西向流量,具体数据流参照图4所示,则将数据包添加至GRO list后,按offset剥离mpls头后,设置flus h=0,按下一层协议type送至对应的kernel GRO函数处理。在一个实施例中,当检测为外网数据包,则为南北向流量,具体数据流参照图5所示,设置flush=1,不进行GRO处理。本申请实施例中,通过使用SRO模块后,在UDP tunnel封装数据包,单条流性能以10G网卡为例由5Gbits/sec能够提升至9Gbits/sec,出外网数据包相同流量下cpu使用率下降25%。
应当注意以上关于UDP隧道流量的分流方法流程的描述仅仅是出于说明的目的而提供的,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,根据本申请的教导可以做出多种变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,UDP隧道流量的分流方法流程可以利用未描述的一个或以上附加操作和/或没有所讨论的一个或以上个操作来完成。
在一个实施例中,本申请提供了适用于数据中心的流量转发方法,数据中心包括第一虚拟路由器和第二虚拟路由器,在各个虚拟路由器节点能够自定义配置使用的UDP封装的GRO参数,如图8所述方法包括:
步骤S201,在第一虚拟路由器进行流量封装;
步骤S202,在第一虚拟路由器和/或第二虚拟路由器的节点设置SRO模块,并为SRO模块设定UDP隧道端口;可选的,SRO模块还用于设置初始偏移或初始化注册GRO处理函数;
步骤S203,使用MPLSoverUDP封装模式将UDP隧道流量从第一虚拟路由器的节点发送至第二虚拟路由器的节点,且在UDP隧道端口设置监听;可选的,UDP隧道端口(tunnelsocket)创建监听是在加载SRO模块的时候设置的,仅是第一虚拟路由器节点流量加封装(vxlan/mpls)发送至第二虚拟路由器的节点,第二虚拟路由器的节点根据封装协议端口即第一虚拟路由器节点加封装发到第二虚拟路由器的节点的数据包的目的端口判断,是否为SRO注册监听的socket判断处理;
步骤S204,判断UDP隧道流量包是否为本地数据包;
步骤S205,响应于所述UDP隧道流量包为本地数据包,执行GRO操作,以及将执行所述GRO操作后的所述UDP隧道流量包解封装后发送至所述第二虚拟路由器;
步骤S206,响应于所述UDP隧道流量包为外网数据包,将所述UDP隧道流量包解封装后发送至所述第二虚拟路由器。
可选的,判断UDP隧道流量包是否为本地数据包包括:
根据初始偏移取出MPLS header与GRO列表上缓存的数据包进行比较;响应于未找到相同header的所述UDP隧道流量包,临时剥离UDP隧道流量包的header并取出UDP隧道流量包的内层IP;利用内层IP查询本地路由表,以判断UDP隧道流量包是否为本地数据包。
可选的,在判断所述UDP隧道流量包是否为本地数据包之前还包括:根据初始偏移对UDP隧道流量包进行合法性检查,且响应于UDP隧道流量包未合法,停止GRO操作和/或停止判断UDP隧道流量包是否为本地数据包的操作。
本申请实施例中,通过智能识别数据包为本地包,实现跨节点东西向流量的protoover UDP tunnel流量的GRO功能,聚合成大包后发送至协议栈,大幅度减少后续路径的解封装次数,降到CPU的使用开销,提高转发性能。在识别数据包为外网数据包时,实现跨节点南北向流量解析分流,跳过GRO过程直接转发,减少路径上的先聚合再分段过程,减少CPU的使用开销。
参见图9,本申请实施例还提供了一种电子设备200,电子设备200包括至少一个存储器210、至少一个处理器220以及连接不同平台***的总线230。
存储器210可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)211和/或高速缓存存储器212,还可以进一步包括只读存储器(ROM)213。
其中,存储器210还存储有计算机程序,计算机程序可以被处理器220执行,使得处理器220执行适用于数据中心的UDP隧道流量的分流方法和/或适用于数据中心的流量转发方法。
适用于数据中心的UDP隧道流量的分流方法包括:在至少一个虚拟路由器的节点设置SRO模块,并为SRO模块设定UDP隧道端口;在UDP隧道端口设置监听,以接收不同虚拟路由器的节点间的UDP隧道流量包;判断UDP隧道流量包是否为本地数据包,并响应于UDP隧道流量包为本地数据包,执行GRO操作;响应于UDP隧道流量包为外网数据包,停止GRO操作。
适用于数据中心的流量转发方法包括:在第一虚拟路由器进行流量封装;在第一虚拟路由器和/或第二虚拟路由器的节点设置SRO模块,并为SRO模块设定UDP隧道端口;使用MPLSoverUDP封装模式将UDP隧道流量从第一虚拟路由器的节点发送至第二虚拟路由器的节点,且在UDP隧道端口设置监听;判断UDP隧道流量包是否为本地数据包;响应于UDP隧道流量包为本地数据包,执行GRO操作,以及将执行GRO操作后的UDP隧道流量包解封装后发送至第二虚拟路由器;或者,响应于UDP隧道流量包为外网数据包,将UDP隧道流量包解封装后发送至第二虚拟路由器。
其具体实现方式与上述方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。存储器210还可以包括具有一组(至少一个)程序模块215的程序/实用工具214,这样的程序模块215包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
相应的,处理器220可以执行上述计算机程序,以及可以执行程序/实用工具214。
总线230可以为表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、***总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备240例如键盘、指向设备、蓝牙设备等通信,还可与一个或者多个能够与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储平台等。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现:
在至少一个虚拟路由器的节点设置SRO模块,并为SRO模块设定UDP隧道端口;在UDP隧道端口设置监听,以接收不同虚拟路由器的节点间的UDP隧道流量包;判断UDP隧道流量包是否为本地数据包,并响应于UDP隧道流量包为本地数据包,执行GRO操作;响应于UDP隧道流量包为外网数据包,停止GRO操作。
或者,在第一虚拟路由器进行流量封装;在第一虚拟路由器和/或第二虚拟路由器的节点设置SRO模块,并为SRO模块设定UDP隧道端口;使用MPLSo verUDP封装模式将UDP隧道流量从第一虚拟路由器的节点发送至第二虚拟路由器的节点,且在第二虚拟路由器的节点,判断UDP隧道流量的目的端口是否为SRO模块设定的UDP隧道端口;判断UDP隧道流量包是否为本地数据包;响应于UDP隧道流量包为本地数据包,执行GRO操作,以及将执行GRO操作后的UDP隧道流量包解封装后发送至第二虚拟路由器;或者,响应于UDP隧道流量包为外网数据包,将UDP隧道流量包解封装后发送至第二虚拟路由器。
具体实现方式与上述方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。图10示出了本实施例提供的用于实现上述方法的程序产品300,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品300不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。程序产品300可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言诸如Java、C++等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本申请从使用目的上,效能上,进步及新颖性等观点进行阐述,其设置有的实用进步性,已符合专利法所强调的功能增进及使用要件,本申请以上的说明及附图,仅为本申请的较佳实施例而已,并非以此局限本申请,因此,凡一切与本申请构造,装置,特征等近似、雷同的,即凡依本申请专利申请范围所作的等同替换或修饰等,皆应属本申请的专利申请保护的范围之内。

Claims (14)

1.一种适用于数据中心的UDP隧道流量的分流方法,所述数据中心包括多个虚拟路由器,其特征在于,所述方法包括:
在至少一个虚拟路由器的节点设置智能接收分流(smart receive offload,SRO)模块,并为所述SRO模块设定UDP隧道端口;
在所述UDP隧道端口设置监听,以接收不同虚拟路由器的节点间的UDP隧道流量包;
判断所述UDP隧道流量包是否为本地数据包,并响应于所述UDP隧道流量包为本地数据包,执行软件包合并(generic receive offload,GRO)操作。
2.根据权利要求1所述的适用于数据中心的UDP隧道流量的分流方法,其特征在于,所述SRO模块还用于设置初始偏移或初始化注册GRO处理函数。
3.根据权利要求1或2所述的适用于数据中心的UDP隧道流量的分流方法,其特征在于,所述在UDP隧道端口设置监听包括:
在至少一个虚拟路由器的节点,判断所述UDP隧道流量的目的端口是否为所述SRO模块设定的UDP隧道端口。
4.根据权利要求2所述的适用于数据中心的UDP隧道流量的分流方法,其特征在于,所述虚拟路由器的节点包括第一虚拟路由器的节点和第二虚拟路由器的节点,所述UDP隧道流量包通过如下方式实现跨节点接收:
使用MPLSoverUDP封装模式将所述UDP隧道流量从第一虚拟路由器的节点发送至第二虚拟路由器的节点。
5.根据权利要求4所述的适用于数据中心的UDP隧道流量的分流方法,其特征在于,判断所述UDP隧道流量包是否为本地数据包包括:
根据所述初始偏移取出MPLS header与GRO列表上缓存的数据包进行比较;
响应于未找到相同header的所述UDP隧道流量包,临时剥离所述UDP隧道流量包的header并取出所述UDP隧道流量包的内层IP;
利用所述内层IP查询本地路由表,以判断所述UDP隧道流量包是否为本地数据包。
6.根据权利要求5所述的适用于数据中心的UDP隧道流量的分流方法,其特征在于,在判断所述UDP隧道流量包是否为本地数据包之前还包括:
根据所述初始偏移对所述UDP隧道流量包进行合法性检查,且响应于所述UDP隧道流量包未合法,停止所述GRO操作和/或停止判断所述UDP隧道流量包是否为本地数据包的操作。
7.根据权利要求1、2或4任一项所述的适用于数据中心的UDP隧道流量的分流方法,其特征在于,所述方法还包括:
响应于所述UDP隧道流量包为外网数据包,停止所述GRO操作。
8.一种适用于数据中心的流量转发方法,所述数据中心包括第一虚拟路由器和第二虚拟路由器,其特征在于,所述方法包括:
在第一虚拟路由器进行流量封装;
在第一虚拟路由器和第二虚拟路由器的节点设置智能接收分流(SRO)模块,并为所述SRO模块设定UDP隧道端口;
使用MPLSoverUDP封装模式将UDP隧道流量从第一虚拟路由器的节点发送至第二虚拟路由器的节点,且在所述UDP隧道端口设置监听;
判断所述UDP隧道流量包是否为本地数据包;
响应于所述UDP隧道流量包为本地数据包,执行软件包合并(GRO)操作,以及将执行所述GRO操作后的所述UDP隧道流量包解封装后发送至所述第二虚拟路由器;或者,
响应于所述UDP隧道流量包为外网数据包,将所述UDP隧道流量包解封装后发送至所述第二虚拟路由器。
9.根据权利要求8所述的适用于数据中心的流量转发方法,其特征在于,所述SRO模块还用于设置初始偏移或初始化注册GRO处理函数。
10.根据权利要求8或9所述的适用于数据中心的流量转发方法,其特征在于,所述在所述UDP隧道端口设置监听包括:
在第二虚拟路由器的节点,判断所述UDP隧道流量的目的端口是否为所述SRO模块设定的UDP隧道端口。
11.根据权利要求9所述的适用于数据中心的流量转发方法,其特征在于,判断所述UDP隧道流量包是否为本地数据包包括:
根据所述初始偏移取出MPLS header与GRO列表上缓存的数据包进行比较;
响应于未找到相同header的所述UDP隧道流量包,临时剥离所述UDP隧道流量包的header并取出所述UDP隧道流量包的内层IP;
利用所述内层IP查询本地路由表,以判断所述UDP隧道流量包是否为本地数据包。
12.根据权利要求11所述的适用于数据中心的流量转发方法,其特征在于,在判断所述UDP隧道流量包是否为本地数据包之前还包括:
根据所述初始偏移对所述UDP隧道流量包进行合法性检查,且响应于所述UDP隧道流量包未合法,停止所述GRO操作和/或停止判断所述UDP隧道流量包是否为本地数据包的操作。
13.一种电子设备,所述电子设备包括存储器、处理器以及用于执行任务的硬件模组,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-12任一项方法的步骤。
14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-12任一项方法的步骤。
CN202111153796.0A 2021-09-29 2021-09-29 适用于数据中心的udp隧道流量的分流方法、流量转发方法 Active CN113890789B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111153796.0A CN113890789B (zh) 2021-09-29 2021-09-29 适用于数据中心的udp隧道流量的分流方法、流量转发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111153796.0A CN113890789B (zh) 2021-09-29 2021-09-29 适用于数据中心的udp隧道流量的分流方法、流量转发方法

Publications (2)

Publication Number Publication Date
CN113890789A CN113890789A (zh) 2022-01-04
CN113890789B true CN113890789B (zh) 2023-03-21

Family

ID=79008375

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111153796.0A Active CN113890789B (zh) 2021-09-29 2021-09-29 适用于数据中心的udp隧道流量的分流方法、流量转发方法

Country Status (1)

Country Link
CN (1) CN113890789B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217464A (zh) * 2007-12-28 2008-07-09 北京大学 一种udp数据包的传输方法
CN107078936A (zh) * 2014-08-19 2017-08-18 思杰***有限公司 用于提供对传输层连接的mss值的细粒度控制的***和方法
CN108337183A (zh) * 2017-12-19 2018-07-27 南京大学 一种数据中心网络流负载均衡的方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3569248B2 (ja) * 1999-02-05 2004-09-22 株式会社東芝 ストリーム情報処理システム
CN105162674A (zh) * 2015-10-16 2015-12-16 上海斐讯数据通信技术有限公司 一种物理机访问虚拟网络的方法及网卡
US10469359B2 (en) * 2016-11-03 2019-11-05 Futurewei Technologies, Inc. Global resource orchestration system for network function virtualization
US10243840B2 (en) * 2017-03-01 2019-03-26 Juniper Networks, Inc. Network interface card switching for virtual networks
CN107278360B (zh) * 2017-06-16 2020-07-14 唐全德 一种实现网络互连的***、方法及装置
KR102604290B1 (ko) * 2018-07-13 2023-11-20 삼성전자주식회사 전자 장치의 데이터 패킷 처리 장치 및 방법
CN109246189B (zh) * 2018-08-03 2021-02-26 广州广哈通信股份有限公司 网络数据分发方法及装置、存储介质、服务端
CN109639488B (zh) * 2018-12-18 2020-02-28 无锡华云数据技术服务有限公司 一种多外网分流加速方法及***
CN109510740A (zh) * 2019-01-02 2019-03-22 郑州云海信息技术有限公司 一种自动监控网卡mtu值的方法、装置、终端及存储介质
CN112532468B (zh) * 2019-09-19 2023-03-28 华为技术有限公司 网络测量***、方法、设备及存储介质
WO2021128089A1 (zh) * 2019-12-25 2021-07-01 华为技术有限公司 转发设备、网卡及报文转发方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217464A (zh) * 2007-12-28 2008-07-09 北京大学 一种udp数据包的传输方法
CN107078936A (zh) * 2014-08-19 2017-08-18 思杰***有限公司 用于提供对传输层连接的mss值的细粒度控制的***和方法
CN108337183A (zh) * 2017-12-19 2018-07-27 南京大学 一种数据中心网络流负载均衡的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Yiran Zhang.VMS: Load Balancing Based on the Virtual Switch Layer in Datacenter Networks.2020,全文. *
胡进军.网络流量识别技术的研究与实现.2018,全文. *

Also Published As

Publication number Publication date
CN113890789A (zh) 2022-01-04

Similar Documents

Publication Publication Date Title
US9602307B2 (en) Tagging virtual overlay packets in a virtual networking system
CN109547580B (zh) 一种处理数据报文的方法和装置
CN110313163B (zh) 分布式计算***中的负载平衡
US10191758B2 (en) Directing data traffic between intra-server virtual machines
US9385912B1 (en) Framework for stateless packet tunneling
EP3796163A1 (en) Data processing method and related device
CN115134245A (zh) 用于云与电信网络之间的网络分组处理的技术
US9910687B2 (en) Data flow affinity for heterogenous virtual machines
US9619272B1 (en) Virtual machine networking
US8533320B2 (en) Coalescing network notifications for live migration
CN115589383B (zh) 基于eBPF的虚拟机数据传输方法、装置、设备、存储介质和程序产品
US10608889B2 (en) High-level interface to analytics engine
CN113890789B (zh) 适用于数据中心的udp隧道流量的分流方法、流量转发方法
CN113765867A (zh) 一种数据传输方法、装置、设备及存储介质
US10298606B2 (en) Apparatus, system, and method for accelerating security inspections using inline pattern matching
CN111669310B (zh) 一种pptp vpn中网络隔离空间的批量处理方法及pptp vpn服务器
CN115277558B (zh) 报文发送方法、装置、计算机存储介质及电子设备
CN111371723B (zh) 一种在dpdk框架下实现pptp vpn网络隔离的方法和装置
CN116132435B (zh) 一种容器云平台的双栈跨节点通信方法和***
CN115296956B (zh) 一种内核的隧道转发方法、装置、电子设备及存储介质
US11637812B2 (en) Dynamic forward proxy chaining
CN108519912B (zh) 数据清洗方法、装置、计算机可读存储介质及电子设备
US20230127430A1 (en) Data read method, data storage method, electronic device, and computer program product
CN115514771A (zh) 数据传输方法、装置、电子设备及计算机可读存储介质
CN117793038A (zh) 报文处理方法、装置、电子设备、计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant