CN113098780A - 虚拟网络的报文处理方法、电子设备及存储介质 - Google Patents

虚拟网络的报文处理方法、电子设备及存储介质 Download PDF

Info

Publication number
CN113098780A
CN113098780A CN202110199113.9A CN202110199113A CN113098780A CN 113098780 A CN113098780 A CN 113098780A CN 202110199113 A CN202110199113 A CN 202110199113A CN 113098780 A CN113098780 A CN 113098780A
Authority
CN
China
Prior art keywords
message
udp
packet
forwarded
vxlan
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.)
Granted
Application number
CN202110199113.9A
Other languages
English (en)
Other versions
CN113098780B (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.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology 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 Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN202110199113.9A priority Critical patent/CN113098780B/zh
Publication of CN113098780A publication Critical patent/CN113098780A/zh
Application granted granted Critical
Publication of CN113098780B publication Critical patent/CN113098780B/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例涉及通信技术领域,公开了一种虚拟网络的报文处理方法、电子设备及存储介质。本申请中,应用于报文发送端的虚拟网络的报文处理方法包括:在虚拟交换机上获取到待转发的UDP报文后,判断待转发的UDP报文是否需要进行分片;若待转发的UDP报文需要进行分片,则通过虚拟交换机上运行的数据平面开发套件在mbuf存储器缓存中对待转发的UDP报文进行分片处理;转发经过分片处理后的UDP报文。通过上述手段,在虚拟交换机上实现了包括VXLAN报文在内的UDP报文的分片问题,使得计算节点上的虚拟交换机能够支持UDP报文分片卸载功能,从而使得虚拟机能够开启UDP卸载,进而减少虚拟机的性能消耗。

Description

虚拟网络的报文处理方法、电子设备及存储介质
技术领域
本申请实施例涉及通信技术领域,特别涉及一种虚拟网络的报文处理方法、电子设备及存储介质。
背景技术
随着互联网的高速发展,云产业快速崛起,为了支持多样化的网络功能,基础架构网络逐渐偏向基于通用计算平台或模块化计算平台的架构融合,也就是采用云计算平台来进行网络功能的虚拟化。目前在基于Openstack的云计算平台上,由于云计算的规模不断扩大,以往采用基于虚拟局域网(Virtual Local Area Network,VLAN)的租户隔离技术面临着越来越多的问题,其中包括VLAN数量的限制(只有4094个可用VLAN)、基于IP子网的区域划分局限了租户的二层网络只能在同一个区域内通信。因此目前的云计算平台上越来越多地采用基于虚拟扩展局域网(Virtual eXtensible Local Area Network,VXLAN)的租户隔离技术来代替旧的VLAN租户隔离。同时,现在云计算的网络数据转发一般由虚拟机交换机(OpenvSwitch,OVS)负责,内核态的OVS性能有限,而基于数据平面开发套件(DataPlaneDevelopmentKit,DPDK)的用户态OVS可以提高OVS的转发性能。尤其是在使用VXLAN网络的大规模数据中心中,转发流量越来越多,需要配合基于DPDK的用户态OVS来提高网络性能。
然而,发明人发现目前在OpenStack网络中基于DPDK的用户态OVS实现的VXLAN网络实施过程中,会遇到最大传输单元(Max Transmission Unit,MTU)问题,即租户网络的报文在OVS上封装VXLAN报文头或添加有UFO标识,报文的大小如果超过虚拟扩展局域网隧道端点(VXLANtunnelendpoint,Vtep)之间的基础网络的MTU后将会网卡被丢弃。在内核态OVS上,由于Vtep收发的报文经过内核协议栈,即便超过MTU后,也会被IP层分片处理。而在DPDK态OVS上,所有的报文都不经过内核协议栈,只在用户态OVS上处理,因此对于VXLAN报文只是简单地封装一个头部后发送,对于二层转发设备的OVS来说,不会进行报文的分片工作,导致部分报文被直接丢弃。
发明内容
本申请实施例的目的在于提供一种虚拟网络的报文处理方法、电子设备及存储介质,使得虚拟节点上的OVS能够接收携带有UFO标识的报文或超过MTU的分片报文,以及能够对超过MTU的UDP报文进行分片,即计算节点上的虚拟交换机能够支持UDP报文分片卸载功能UFO,从而使得虚拟机能够开启UDP卸载,进而减少虚拟机的性能消耗。
为解决上述技术问题,本申请的实施例提供了一种虚拟网络的报文处理方法,应用在报文发送端,包括:在虚拟交换机OVS上获取到待转发的UDP报文后,判断待转发的UDP报文是否需要进行分片;若待转发的UDP报文需要进行分片,则通过OVS上运行的数据平面开发套件DPDK在mbuf存储器缓存中对待转发的UDP报文进行分片处理;转发经过分片处理后的UDP报文。
本申请的实施例还提供了一种虚拟网络的报文处理方法,应用在报文接收端,包括:若在虚拟交换机OVS上接收到的报文为UDP分片报文,则通过DPDK在mbuf存储器缓存中对UDP分片报文进行组包处理;判断经过组包处理的UDP报文是否为VXLAN报文;若UDP报文不是VXLAN报文,则对UDP报文进行再次分片处理;向下一节点转发经过组包处理的VXLAN报文和/或经过再次分片处理的VXLAN报文。
本实施例还提供了一种电子设备,包括:与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上述应用在报文接收端的虚拟网络报文处理方法,或,应用在报文发送端的虚拟网络报文处理方法。
本实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述应用在报文接收端的虚拟网络报文处理方法,或,应用在报文发送端的虚拟网络报文处理方法。
本申请实施例相对于现有技术而言,在基于DPDK实现的OVS中,在网络层通过软件方法来实现对UDP报文的分片,使的虚拟节点能够在OVS上接收携带有UFO标识的UDP报文以及超过MTU的UDP报文,并对超过MTU的报文进行分片处理,提高虚拟网络中处理UDP报文的效率,同时降低OVS所在节点上的虚拟机的性能负载。
另外,本实施例中通过OVS上运行的数据平面开发套件DPDK对待转发的UDP报文进行分片处理,包括:复制并保存待转发的UDP报文的链路层头部字段;调用DPDK的分片函数在mbuf中对待转发的UDP报文进行分片,得到所有UDP报文分片;在所有UDP报文分片mbuf中添加保存的的链路层头部字段。通过上述技术手段,采用DPDK的分片函数进行分片处理,直接在mbuf中进行分片相关的修改操作以及报文头的添加,减少了对报文的数据处理操作,也就减少了节点上的I/O数据输入与输出的占用,降低了报文分片处理对节点资源的占用。
另外,本实施例中在判断待转发的UDP报文是否需要进行分片之前,还包括:若待转发的UDP报文为虚拟扩展局域网VXLAN报文,则在对待转发的UDP报文进行VXLAN封装时添加网络层标识。通过上述技术手段,对分片后的VXLAN报文进行标识,使得后续接收分片VXLAN报文的节点能够正常识别VXLAN报文。
另外,本实施例中在向下一节点转发经过组包处理的VXLAN报文或经过再次分片处理的非VXLAN报文之前,还包括:若UDP报文为非VXLAN报文,则对非VXLAN报文进行网络层的校验计算并根据校验计算的结果在所述非VXLAN报文中修改校验值字段;修改各报文分片mbuf中报文的包长字段和数据长度字段。通过上述技术手段,对非VXLAN报文的UDP分片报文进行校验,保证UDP报文的完整性与正确性。
另外,本实施例中对经过组包处理得到的UDP报文进行再次分片处理,包括:修改UDP报文首个报文分片缓存中的分片偏移字段;其中,修改后的分片偏移字段表示首个报文分片mbuf中的报文分片为首个报文分片;将除首个报文分片mbuf以外的剩余报文分片mbuf指针修改为指向UDP报文的链路层信息;修改所述剩余报文分片mbuf中的包长度字段和数据长度字段。通过上述技术手段,在缓存中修改报文分片的偏移字段,从而实现在报文接收端进行报文复原的零拷贝分片处理,降低OVS所在节点上的虚拟机的性能负载。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。
图1是根据本申请第一实施例中网络拓扑的结构示意图;
图2是根据本申请第一实施例中虚拟网络的报文处理方法的流程图;
图3是根据本申请第二实施例中虚拟网络的报文处理方法的流程图;
图4是根据本申请第三实施例中虚拟网络的报文处理装置的结构示意图;
图5是根据本申请第四实施例中虚拟网络的报文处理装置的结构示意图;
图6是根据本申请第五实施例中电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本申请的第一实施例涉及一种虚拟网络的报文处理方法,包括:在虚拟交换机OVS上获取到待转发的UDP报文后,判断待转发的UDP报文是否需要进行分片;若待转发的UDP报文需要进行分片,则通过OVS上运行的数据平面开发套件DPDK对待转发的UDP报文进行分片处理;转发经过分片处理后的UDP报文。在基于DPDK实现的OVS中,在网络层通过软件方法来实现对UDP报文的分片,使得虚拟节点能够在OVS上接收携带有UDP报文分片卸载功能(UFO)标识的UDP报文以及超过MTU的UDP报文,并使计算节点上的虚拟交换机能够支持UDP报文分片卸载功能UFO,从而使得虚拟机能够开启UDP卸载,进而减少虚拟机的性能消耗。
下面对本实施例中的虚拟网络的报文处理方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施例中的虚拟交换机的报文处理方法应用在如图1所示的网络拓扑结构中,下面结合图1对本实施例中的网络拓扑进行具体解释。
图1中的虚拟交换机OVS作为网络转发设备,为APP应用层中的应用提供基础的网络接入,应用层中运行有虚拟机、虚拟路由器Vrouter等应用。其中,本实施例的OVS中包括br-int、br-tun、br-vtep、br-private等网桥节点。图1中所示的两个不同的OVS通过分别通过DPDK以bond协议接管物理网卡,物理网卡通过dpdkb0接口接收来自云计算平台的控制指令。
在这一网络拓扑中,同一节点应用层中的虚拟机、Vrouter等上层应用之间的流量在仅在该节点OVS中的br-int桥上进行转发,实现同一节点下不同上层应用之间的流量传输。当这些上层应用需要跨节点通讯时,通过不同OVS之间建立的VXLAN隧道来将流量由一个节点租户网络发出的流量传输到其他节点的租户网络上的上层应用。
其中,VXLAN隧道的两端分别位于两个OVS的br-vtep上,封装后从发送端的br-vtep传输到接收端的br-vtep。在这一跨节点转发流量的情况下,流量报文在进入VXLAN隧道时,需要封装VXLAN头部,如果封装后的VXLAN报文大小超过MTU,则会在到达br-vtep的接口时被丢弃。;需要分片的UDP报文携带有UFO标识,不会被OVS丢弃,因此无需对携带有UFO标识的UDP报文进行分片也可以在br-int节点上正常接收,但在br-int将报文转发给其他节点的其他上层应用,或者需要从DPDK口出去时,则因为实际网卡出接口dpdkb0不支持UFO而被丢弃。
因此本实施例的方案设计如下:在上述br-int至上层应用的接口和br-private至物理网卡的接口处来对报文做分片处理,从而解决MTU限制报文大小导致报文被丢弃的问题,同时在这两处接口通过软件模拟UFO的报文分片处理过程。对报文进行UFO分片处理后,其他设备可以正常转发分片后的报文到上层应用,由上层应用正常组包;对于分片后的VXLAN报文,则必须要在其他节点的VXLAN隧道终点Vtep前做组包处理,否则只有第一个分片带有VXLAN头部,能够隧道终结,其他分片报文均无法被识别而导致被丢弃。此外,虽然第一片报文在被隧道终结,也会因为报文不完整的原因而被丢弃。因此需要在收到VXLAN分片报文后,进行组包再进行隧道终结。
下面结合附图对本实施例中应用在报文发送端的虚拟交换机的报文转发方法进行具体说明,流程如图2所示,具体包括:
步骤201,判断接收到的用户报文是否为需要封装的报文。若是,则执行步骤202,封装VXLAN报文头并随机生成网络层标识;否则执行步骤203,判断报文是否需要分片。
步骤202,封装VXLAN报文头并随机生成网络层标识。
具体地说,对于需要转发到其他租户网络中的用户报文,报文的转发通过VXLAN隧道来进行传输,因此需要在报文中封装VXLAN头部来使得用户报文能够通过VXLAN隧道到达指定的租户网络中。由于封装后的VXLAN报文将IP层的相关信息封装在报文内部,因此需要为封装后的VXLAN报文生成在一段时间内独一无二的标识,即网络层标识IP_ID来对分片后的VXLAN报文进行标识,使得报文接收端能够识别不同的分片是否属于同一报文。
步骤203,判断报文是否需要分片。是则执行步骤204,暂存报文二层头部;否则执行步骤209,发送分片报文。
具体地说,当报文的大小超过网络中各虚拟设备所设置的最大传输单元MTU时,则需要对报文进行分片,使得分片后所有报文分片的大小符合MTU的要求,避免报文在到达虚拟设备的接口时被直接丢弃。因此,在接收到报文后根据报文的大小来决定是否对报文进行分片,对于大小超过MTU的报文进行分片,使得报文能够被当前虚拟网络中的所有节点正常转发,而大小未超过MTU的报文则直接根据正常流程发送出去。
在一个情况下,若报文中还带有上一节点的UFO标识,则还需要在分片之前先做UDP报文的checksum校验。
步骤204,暂存报文二层头部。
步骤205,调整mbuf的报文指针指向IP头。
步骤206,调用DPDK RTE分片函数进行零拷贝分片。
步骤207,在所有分片mbuf中前置一个二层头。
步骤208,将暂存的二层头拷贝到每个分片mbuf。
步骤209,发送报文。
具体地说,在本领域相关技术中,报文里包含了二层链路层、三层网络层以及四层UDP层的报文头信息,而对于DPDK提供的分片函数来说,只需要利用到三层以上的内容,因此只需要在报文中保留三层以上的内容,根据UDP协议的要求,每一个报文的头部均需要有二层头部信息,因此分片以后的每一个UDP报文分片也需要保留二层头部,在分片之前,将原报文二层头部的字段进行暂存,留待后续添加到UDP报文分片中。将mbuf中的报文指针指向IP头,即对从IP头字段开始直到报文结束的所有数据进行分片。
由于DPDK分片函数的特性,并不需要对原报文进行复制后再分片,因此实现了零拷贝分片,能够降低报文分片处理所占用的性能资源。为了后续为各个报文分片添加二层头信息,因此在分片之后各个分片mbuf前设置预留给二层头部信息的缓存空间,便于将之前暂存的二层头拷贝到mbuf中。分片完成后,得到所有分片,但都没有二层头部信息,因此需要添加二层头部字段,将之前暂存的二层头部字段复制到所有分片mbuf中,之后将所有分片好的报文按预先确定的出口发送出去。
与现有技术相比,本实施例中的报文发送端的在OVS上接收到用户报文后,利用DPDK提供的分片函数对用户报文进行零拷贝分片,提高了报文分片处理的效率,同时,由于同一节点上的OVS与虚拟机运行在不同的CPU核心上,通过OVS来进行报文分片还减小了报文分片对报文发送端节点上虚拟机CPU性能的影响。
本申请的第二实施例涉及一种虚拟网络的报文处理方法。具体流程如图3所示,包括:若在虚拟交换机OVS上接收到的报文为UDP分片报文,则通过DPDK对UDP分片报文进行组包处理;判断经过组包处理的UDP报文是否为VXLAN报文;若UDP报文是VXLAN报文,则对UDP报文进行再次分片处理;向下一节点转发经过组包处理的VXLAN报文和/或经过再次分片处理的非VXLAN报文。
下面对本实施例中的虚拟网络的报文处理方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
下面结合附图对本实施例中应用在报文接收端的虚拟网络的报文处理方法进行具体说明,流程如图3所示,具体包括:
步骤301,判断接收到的报文是否为分片报文。如果是分片报文则进行组包,包括步骤302和步骤303;否则执行步骤309,进行后续报文转发流程。
具体地说,分片报文中头部具有表示自身是分片报文的标识,当报文接收端在OVS上接收到报文时,根据报文头中标识分包序号的字段来判断当前接收到的报文是否为分片报文。对于非分片报文来说,其头部的分包序号为默认值。而对于分片报文的第一分片报文来说,MF(More Fragment)标志位为1,片偏移(Fragment Offset)为0,当OVS接收到分片偏移为0的分片报文后,同时根据报文头中的IP_ID判断后续的分片报文是否属于同一报文,直到报文的分包序号与报文头中分片数字段的值相等,表示接收到了所有的报文分片。
步骤302,提取报文的l2_len、l3_len。
步骤303,调用DPDK RTE组包函数进行零拷贝组包。
步骤304,判断是否为VXLAN报文。若报文为VXLAN报文则执行步骤305,对组好的报文作校验;否则执行步骤308,复原分片。
步骤305,对组好的报文作校验。
步骤306,修改mbuf的pkt_len、data_len。
步骤307,放入收报文列表。
具体地说,l2_len、l3_len分别为二层头长度和三层头长度。调用DPDK的rte_ipv4_frag_reassemble_packet函数对报文进行组包处理,在没有组好所有分片之前,分片报文会被暂存起来,直到所有分片全部接收到,可以组成原始的报文。
组好报文后,由于不是所有的UDP报文都需要组包,只有VXLAN报文才需要,这是因为组包之前并不能判断分片是不是VXLAN的报文,而有些报文分片没有UDP头部。因此需要再次判断组好的报文是不是VXLAN报文。如果是VXLAN报文,则对组好后的报文进行校验后补充IP层校验信息,并且修改pkt_len包长度、data_len数据长度为加上l2_len的长度。修改完成后,就可以当作是收到一个完整的VXLAN报文继续进行正常的转发流程。如果是非VXLAN报文,则需要将组好的报文再次分片后进行转发。
步骤308,复原分片。
具体地说,对非VXLAN的报文重新复原成多个分片。DPDK的函数并不是真正地把多个报文拷贝在同一个mbuf组包,而是,将多个分片mbuf串连起来,修改分片信息,来表示一个组好包的报文。因此,只需要把多个mbuf拆成独立的mbuf,修改其携带的信息,就可以完全复原,而不必再次进行分片操作。首先是对第一个分片mbuf处理。修改pkt_len为其自身的date_len,重新计算ip头的total_len为data_len-l2_len,重置分片偏移字段,表示其是第一个分片。重新计算IP check_sum,mbuf的next指针赋值为NULL,nb_segs置为1。接下来,是其他分片的处理。组包动作会把其他分片的mbuf指针偏移到IP层处,因此需要偏移到原来的二层头,mbuf->data_off-=(l2_len+l3_len)。同样,pkt_len、data_len也要增加,mbuf->pkt_len+=(l2_len+l3_len),mbuf->data_len+=(l2_len+l3_len),即将mbuf的指针指向pkt_len后,修改为原pkt_len长度加上l2_len和l3_len的长度,然后将mbuf的指针指向data_len,修改为原data_len长度加上l2_len和l3_len的长度。同时,设置mbuf的next指针为NULL,分片数字段nb_segs的值为1。
步骤309,执行后续报文转发流程。
具体地说,对于非VXLAN报文,对再次分片后的报文执行正常的转发流程。而对于VXLAN报文来说,如果当前节点是隧道终点,则将报文进行解封装得到原报文后执行正常的转发流程。
需要说明的是,本实施例中的上述各示例均为方便理解进行的举例说明,并不对本申请的技术方案构成限定。
与现有技术相比,本实施例中报文接收端的OVS在接收到分片报文后,采用DPDK的报文组包函数对分片报文进行零拷贝组包,并在识别是否为VXLAN报文后对非VXLAN报文重新分片,提高了报文分片处理的效率。同时,由于同一节点上的OVS与虚拟机运行在不同的CPU核心上,通过OVS来进行报文组包与分片处理还减小了报文组包与分片对报文接收端节点上虚拟机CPU性能的影响。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本申请第三实施例涉及一种虚拟网络的报文处理装置,如图4所示,包括:
报文识别模块401,用于在虚拟交换机OVS上获取到待转发的UDP报文后,判断待转发的UDP报文是否需要进行分片。
报文处理模块402,用于通过OVS上运行的数据平面开发套件DPDK在存储器缓存mbuf中对待转发的UDP报文进行分片处理。
报文转发模块403,转发经过分片处理后的UDP报文。
在一个例子中,报文处理模块402具体用于复制并保存待转发的UDP报文的链路层头部字段;调用DPDK的分片函数在mbuf中对待转发的UDP报文进行分片,得到所有UDP报文分片;在所有UDP报文分片中添加保存的的链路层头部字段。
在一个例子中,报文处理模块402还用于在判断待转发的UDP报文是否需要进行分片之前,当待转发的UDP报文为虚拟扩展局域网VXLAN报文,则在待转发的UDP报文进行VXLAN封装时添加网络层标识。
在另一个例子中,报文处理模块402还用于在通过基于数据平面开发套件DPDK实现的虚拟交换机OVS对待转发的UDP报文进行分片处理之前,调用网卡设备对待转发的UDP报文进行校验计算,在待转发的UDP报文中修改校验值字段。
不难发现,本实施例为与第一实施例相对应的虚拟装置实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
本申请第四实施例涉及一种虚拟网络的报文处理装置,如图5所示,包括:
报文处理模块501,用于在虚拟交换机OVS上接收到的报文为UDP分片报文后,则通过DPDK对UDP分片报文进行组包处理。
报文识别模块502,用于判断经过组包处理的UDP报文是否为VXLAN报文。
报文转发模块503,用于向下一节点转发经过组包处理的非VXLAN报文或经过再次分片处理的VXLAN报文。
在一个例子中,报文处理模块501还用于修改UDP报文的首个报文分片的mbuf的分片偏移字段;其中,修改后的分片偏移字段表示首个报文分片mbuf的报文分片为首个报文分片;将除首个报文分片mbuf以外的剩余报文分片mbuf的指针修改为指向所述UDP报文的数据层报文头;修改剩余报文分片mbuf中的包长度字段和数据长度字段。
在另一个例子中,报文处理模块501具体用于修改UDP报文首个报文分片mbuf中的分片偏移字段;其中,修改后的分片偏移字段表示第一分配mbuf中的报文分片为首个报文分片;将UDP报文剩余报文分片mbuf指针修改为指向UDP报文的链路层信息。
在另一个例子中,报文处理模块501还用于在通过DPDK对UDP分片报文进行组包处理之前,提取UDP分片报文的数据层报文头长度;修改各报文分片mbuf中报文的包长字段和数据长度字段,包括:对报文的包长度字段值以及报文的数据长度字段值增加数据层和网链路层的报文头长度值。
不难发现,本实施例为与第二实施例相对应的虚拟装置实施例,本实施例可与第二实施例互相配合实施。第二实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第二实施例中。
值得一提的是,上述虚拟装置实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本申请的创新部分,本实施例中并没有将与解决本申请所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本申请第五实施例涉及一种电子设备,如图6所示,包括至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行,以使至少一个处理器601能够执行第一、或第二实施例中的虚拟网络的报文处理方法。
其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器601和存储器602的各种电路连接在一起。总线还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器601处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器601。处理器601负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器602可以被用于存储处理器601在执行操作时所使用的数据。
本申请第六实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。

Claims (10)

1.一种虚拟网络的报文处理方法,应用于报文发送端,包括:
在虚拟交换机上获取到待转发的UDP报文后,判断所述待转发的UDP报文是否需要进行分片;
若所述待转发的UDP报文需要进行分片,则通过虚拟交换机上运行的数据平面开发套件在存储器缓存中对所述待转发的UDP报文进行分片处理;
转发经过所述分片处理后的UDP报文。
2.根据权利要求1所述的虚拟网络的报文处理方法,其特征在于,所述通过虚拟交换机上运行的数据平面开发套件在存储器缓存中对所述待转发的UDP报文进行分片处理,包括:
复制并保存所述待转发的UDP报文的链路层头部字段;
调用数据平面开发套件的分片函数对所述待转发的UDP报文在存储器缓存中进行分片,得到所有UDP报文分片;
在所述所有UDP报文分片的所述存储器缓存中添加保存的所述链路层头部字段。
3.根据权利要求1所述的虚拟网络的报文处理方法,其特征在于,在所述判断所述待转发的UDP报文是否需要进行分片之前,还包括:
若所述待转发的UDP报文为虚拟扩展局域网VXLAN报文,则在所述待转发的UDP报文进行VXLAN封装时添加网络层标识。
4.根据权利要求3所述的虚拟网络的报文处理方法,其特征在于,所述待转发的UDP报文携带有UFO标识;
在所述通过基于数据平面开发套件实现的虚拟交换机对所述待转发的UDP报文进行分片处理之前,还包括:
调用网卡设备对所述待转发的UDP报文进行校验计算,在所述待转发的UDP报文中修改校验值字段。
5.根据权利要求1所述的虚拟网络的报文处理方法,其特征在于,还包括:
若在作为报文接收端的虚拟交换机上接收到的报文为UDP分片报文,则通过数据平面开发套件在存储器缓存中对所述UDP分片报文进行组包处理;
报文接收端判断经过组包处理得到的UDP报文是否为VXLAN报文;
若所述UDP报文是非VXLAN报文,则报文接收端对所述经过组包处理得到的UDP报文进行再次分片处理;
报文接收端向下一节点转发经过组包处理的VXLAN报文或所述经过再次分片处理的非VXLAN报文。
6.根据权利要求5所述的虚拟网络的报文处理方法,其特征在于,所述报文接收端在所述向下一节点转发经过组包处理的VXLAN报文或所述经过再次分片处理的非VXLAN报文之前,还包括:
若所述UDP报文为非VXLAN报文,则报文接收端对所述非VXLAN报文进行网络层的校验计算,并根据校验计算的结果在所述非VXLAN报文中修改校验值字段;
报文接收端修改各报文分片的所述存储器缓存中报文的包长字段和数据长度字段。
7.根据权利要求6所述的虚拟网络的报文处理方法,其特征在于,所述报文接收端对所述经过组包处理得到的UDP报文进行再次分片处理,包括:
报文接收端修改所述UDP报文的首个报文分片的所述存储器缓存的分片偏移字段;其中,修改后的分片偏移字段用于指示所述首个报文分片存储器缓存的报文分片为首个报文分片的值;
报文接收端将除首个报文分片存储器缓存以外的剩余报文分片存储器缓存的指针修改为指向所述UDP报文的数据层报文头;
报文接收端修改所述剩余报文分片存储器缓存中的包长度字段和数据长度字段。
8.根据权利要求6所述的虚拟网络的报文处理方法,其特征在于,在所述报文接收端通过数据平面开发套件对所述UDP分片报文进行组包处理之前,还包括:
报文接收端提取所述UDP分片报文的数据层和网络层的报文头长度;
报文接收端所述修改各报文分片存储器缓存中报文的包长字段和数据长度字段,包括:
报文接收端对所述报文的包长度字段值以及所述报文的数据长度字段值增加所述数据层和网络层的报文头长度值。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至8中任一项所述的虚拟网络的报文处理方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的虚拟网络的报文处理方法。
CN202110199113.9A 2021-02-22 2021-02-22 虚拟网络的报文处理方法、电子设备及存储介质 Active CN113098780B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110199113.9A CN113098780B (zh) 2021-02-22 2021-02-22 虚拟网络的报文处理方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110199113.9A CN113098780B (zh) 2021-02-22 2021-02-22 虚拟网络的报文处理方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113098780A true CN113098780A (zh) 2021-07-09
CN113098780B CN113098780B (zh) 2023-04-28

Family

ID=76666440

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110199113.9A Active CN113098780B (zh) 2021-02-22 2021-02-22 虚拟网络的报文处理方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113098780B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118175114A (zh) * 2024-05-13 2024-06-11 中移(苏州)软件技术有限公司 虚拟机报文发送的方法、装置、***、电子设备

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101645851A (zh) * 2009-09-03 2010-02-10 中兴通讯股份有限公司 一种ip分片报文的重组方法和装置
CN105743705A (zh) * 2016-03-31 2016-07-06 中国人民解放军国防科学技术大学 一种基于分级策略的数据中心网络可用性评估方法及评估装置
US9641435B1 (en) * 2014-03-28 2017-05-02 Juniper Neworks, Inc. Packet segmentation offload for virtual networks
CN108243118A (zh) * 2016-12-27 2018-07-03 华为技术有限公司 转发报文的方法和物理主机
CN108282391A (zh) * 2018-01-11 2018-07-13 新华三技术有限公司 一种vxlan报文分片方法和装置
CN108600049A (zh) * 2018-04-16 2018-09-28 苏州云杉世纪网络科技有限公司 一种数据中心网络tcp连接的性能测量方法及装置
CN108964959A (zh) * 2017-05-27 2018-12-07 阿里巴巴集团控股有限公司 一种用于虚拟化平台的网卡直通***及数据包监管方法
US20190065429A1 (en) * 2016-04-29 2019-02-28 Huawei Technologies Co., Ltd. Data transmission method and apparatus used in virtual switch technology
CN109495366A (zh) * 2017-09-11 2019-03-19 中兴通讯股份有限公司 一种vxlan报文处理方法、装置及存储介质
CN109863720A (zh) * 2016-08-27 2019-06-07 Nicira股份有限公司 网络控制***到公共云中的扩展
CN110048963A (zh) * 2019-04-19 2019-07-23 杭州朗和科技有限公司 虚拟网络中的报文传输方法、介质、装置和计算设备
CN110601881A (zh) * 2019-09-04 2019-12-20 厦门网宿有限公司 一种二层专线网络***、配置方法及设备
US20200278892A1 (en) * 2019-02-28 2020-09-03 Cisco Technology, Inc. Remote smart nic-based service acceleration
CN111800326A (zh) * 2019-04-08 2020-10-20 中移(苏州)软件技术有限公司 报文传输方法及装置、处理节点及存储介质
CN111817915A (zh) * 2020-06-30 2020-10-23 武汉虹旭信息技术有限责任公司 一种基于dpdk的协议解析框架
CN111865658A (zh) * 2020-06-05 2020-10-30 烽火通信科技股份有限公司 基于vCPE多租户的租户业务识别映射方法及***

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101645851A (zh) * 2009-09-03 2010-02-10 中兴通讯股份有限公司 一种ip分片报文的重组方法和装置
US9641435B1 (en) * 2014-03-28 2017-05-02 Juniper Neworks, Inc. Packet segmentation offload for virtual networks
CN105743705A (zh) * 2016-03-31 2016-07-06 中国人民解放军国防科学技术大学 一种基于分级策略的数据中心网络可用性评估方法及评估装置
US20190065429A1 (en) * 2016-04-29 2019-02-28 Huawei Technologies Co., Ltd. Data transmission method and apparatus used in virtual switch technology
CN109863720A (zh) * 2016-08-27 2019-06-07 Nicira股份有限公司 网络控制***到公共云中的扩展
CN108243118A (zh) * 2016-12-27 2018-07-03 华为技术有限公司 转发报文的方法和物理主机
CN108964959A (zh) * 2017-05-27 2018-12-07 阿里巴巴集团控股有限公司 一种用于虚拟化平台的网卡直通***及数据包监管方法
CN109495366A (zh) * 2017-09-11 2019-03-19 中兴通讯股份有限公司 一种vxlan报文处理方法、装置及存储介质
CN108282391A (zh) * 2018-01-11 2018-07-13 新华三技术有限公司 一种vxlan报文分片方法和装置
CN108600049A (zh) * 2018-04-16 2018-09-28 苏州云杉世纪网络科技有限公司 一种数据中心网络tcp连接的性能测量方法及装置
US20200278892A1 (en) * 2019-02-28 2020-09-03 Cisco Technology, Inc. Remote smart nic-based service acceleration
CN111800326A (zh) * 2019-04-08 2020-10-20 中移(苏州)软件技术有限公司 报文传输方法及装置、处理节点及存储介质
CN110048963A (zh) * 2019-04-19 2019-07-23 杭州朗和科技有限公司 虚拟网络中的报文传输方法、介质、装置和计算设备
CN110601881A (zh) * 2019-09-04 2019-12-20 厦门网宿有限公司 一种二层专线网络***、配置方法及设备
CN111865658A (zh) * 2020-06-05 2020-10-30 烽火通信科技股份有限公司 基于vCPE多租户的租户业务识别映射方法及***
CN111817915A (zh) * 2020-06-30 2020-10-23 武汉虹旭信息技术有限责任公司 一种基于dpdk的协议解析框架

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
胡卫文等: "基于DPDK技术实现OVS", 《网络新媒体技术》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118175114A (zh) * 2024-05-13 2024-06-11 中移(苏州)软件技术有限公司 虚拟机报文发送的方法、装置、***、电子设备

Also Published As

Publication number Publication date
CN113098780B (zh) 2023-04-28

Similar Documents

Publication Publication Date Title
CN113934660B (zh) 加速网络分组处理
CN113326228B (zh) 基于远程直接数据存储的报文转发方法、装置及设备
US6799220B1 (en) Tunneling management messages over a channel architecture network
CN106685826B (zh) 交换机堆叠***、从设备、交换芯片及处理协议报文方法
CN112243046B (zh) 通信方法和网卡
US20210160353A1 (en) Data sending method and device, data receiving method and device, and system
CN105591982A (zh) 一种报文传输的方法和装置
CN111614580B (zh) 一种数据转发方法、装置及设备
WO2021208092A1 (zh) 一种有状态业务的处理方法及装置
US11444874B2 (en) Packet transmission method, and communications apparatus and system
CN103365810B (zh) 在c.a.n.总线上减少闪速存储装置编程时间的方法和设备
WO2014135038A1 (zh) 基于pcie总线的报文传输方法与装置
CN113746749A (zh) 网络连接设备
CN112468407A (zh) 数据分包传输方法、装置、计算机设备和存储介质
CN111343148A (zh) 一种fgpa通信数据的处理方法、***及装置
CN114765631A (zh) 数据传输***、数据传输方法以及网络设备
CN112866206A (zh) 一种单向数据传输方法及装置
CN115225734A (zh) 一种报文处理方法和网络设备
CN113098780B (zh) 虚拟网络的报文处理方法、电子设备及存储介质
CN116074253B (zh) 一种报文链式转发方法及装置
US11436172B2 (en) Data frame interface network device
CN113709015A (zh) 数据传输方法、电子设备及存储介质
CN106230740A (zh) 一种vxlan中的报文转发方法及装置
CN110147344B (zh) 在多个物理机之间通信的方法、装置、存储介质和***
CN109587027B (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