CN107995129B - 一种nfv报文转发方法和装置 - Google Patents

一种nfv报文转发方法和装置 Download PDF

Info

Publication number
CN107995129B
CN107995129B CN201711248651.2A CN201711248651A CN107995129B CN 107995129 B CN107995129 B CN 107995129B CN 201711248651 A CN201711248651 A CN 201711248651A CN 107995129 B CN107995129 B CN 107995129B
Authority
CN
China
Prior art keywords
virtual machine
virtual
shared buffer
shared
message
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
CN201711248651.2A
Other languages
English (en)
Other versions
CN107995129A (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.)
Ruijie Networks Co Ltd
Original Assignee
Ruijie Networks 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 Ruijie Networks Co Ltd filed Critical Ruijie Networks Co Ltd
Priority to CN201711248651.2A priority Critical patent/CN107995129B/zh
Publication of CN107995129A publication Critical patent/CN107995129A/zh
Application granted granted Critical
Publication of CN107995129B publication Critical patent/CN107995129B/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
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal

Landscapes

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

Abstract

本申请实施例提供了一种NFV报文转发方法和装置,涉及网络技术领域,能够解决数据报文转发时,PCI Express总线带宽存在浪费的问题。该方案包括:虚拟交换机或网卡接收第一虚拟机从第一虚拟端口发送的数据报文;虚拟交换机或网卡确定数据报文的目的端口是否为第二虚拟端口;若确定数据报文的目的端口为第二虚拟端口,虚拟交换机或网卡确定第一虚拟机和第二虚拟机是否支持共享缓冲,共享缓冲用于指示第一虚拟机和第二虚拟机能够通过虚拟地址空间访问的物理内存;若第一虚拟机和第二虚拟机支持共享缓冲,虚拟交换机或网卡将数据报文的共享缓冲对应的编号写入第二虚拟机的接收队列。本申请应用于NFV报文转发过程中。

Description

一种NFV报文转发方法和装置
技术领域
本申请涉及网络技术领域,尤其涉及一种NFV报文转发方法和装置。
背景技术
网络功能虚拟化(Network Functions Virtualization,NFV)能够让多个虚拟机(Virtual Machine,VM)高效的运行在同一个服务器上,共享物理计算资源,大大提高了资源利用率。而且,虚拟化技术使得按需服务、任务自动编排、虚拟机热迁移等自动化和高可靠性技术成为可能。在支持虚拟化的物理服务器中,虚拟机管理程序(Virtual MachineMonitor,VMM,也称Hypervisor)负责管理其上所运行的虚拟机实例,为其提供所需的虚拟计算资源、虚拟存储资源以及虚拟网络资源。运行于物理服务器中的虚拟机存在互相进行网络通信,以及与服务器外部实体进行网络通信的需求,为此,虚拟机管理程序会在内部实现一个虚拟交换机(Virtual Switch,vSwitch)。虚拟交换机通过虚拟端口(Virtual Port,vPort)连接到物理网卡或虚拟机的虚拟网卡(Virtual Network Interface Controller,vNIC)。虚拟交换机通过在虚拟端口之间、物理网卡与虚拟端口之间交换数据报文,实现虚拟机之间以及虚拟机与服务器外部实体之间的网络通信功能。
现有技术一提供一种虚拟交换机转发方案。该方案通过软件实现的虚拟交换机功能实现虚拟机与虚拟机之间、虚拟机与外部网络之间的报文交换功能。一方面,由于每个报文的转发均需要中央处理参与处理,并且大量报文也将产生大量中断,因此大量中央处理器资源被浪费了。另一方面,由于报文在网卡与虚拟交换机、虚拟交换机与虚拟机之间复制,也消耗大量中央处理器周期。此外,对于转发穿越流量,即从物理端口或虚拟端口进入转发设备、处理后又从物理端口或虚拟端口发送出去的流量,报文数据需要通过外部设备互连总线(Peripheral Component Interconnect,PCI)Express总线从网卡搬运到内存,然后再通过PCI Express总写从内存搬运到网卡,浪费了PCI Express总线带宽。
当网络通信数据量特别大时,基于软件实现的虚拟交换机将成为性能瓶颈,进而降低单台物理服务器能够部署的虚拟机实例数,降低资源效率。因此,发展出基于硬件的虚拟交换机方案。现有技术二提供一种基于独立交换机硬件的转发方案,通过把交换功能外包到独立交换机硬件,降低了软件开销。但是虚拟机与虚拟机之间的通信流量需要先发送到虚拟交换机然后再发送回去,在NFV场景下,大量的虚拟机间通信将使PCI Express总线带宽和NFV转发设备与交换机之间的链路带宽成为性能瓶颈。
现有技术三提供一种基于支持虚拟交换机交换功能卸载的网卡的转发方案。这类方案能够把虚拟交换机的部分报文交换功能卸载到网卡,并且利用网卡的单根输入输出虚拟化(Single Root Input/Output Virtualization,SRIOV)功能,在硬件上实现虚拟机之间以及虚拟机与外部网络之间的报文交换功能。虚拟机之间的流量需要首先通过PCIExpress总线搬运到网卡,然后再通过PCI Express总线搬运到下一个虚拟机的缓冲(缓存)。在大流量场景下,PCI Express带宽会成为性能瓶颈。
现有技术四提供一种基于定制化可编程硬件实现的虚拟机之间通过直接内存访问(Direct Memory Access,DMA)进行数据搬运的转发方案。该方案能够在虚拟机之间建立DMA数据搬运通道,并且根据控制信息,使得特定业务流量旁路虚拟交换机处理,直接通过虚拟机之间的DMA通道把报文从前一个虚拟机的缓冲中搬运到下一个虚拟机的缓冲中。但是虚拟机间的流量仍然需要通过DMA通道和PCI Express总线在内存之间搬运,总线带宽存在浪费。
在实现上述现有技术一到现有技术四的数据报文转发方案的过程中,发明人发现现有技术一到现有技术四中普遍存在PCI Express总线带宽存在浪费的问题。
发明内容
本申请的实施例提供一种NFV报文转发方法和装置,能够解决数据报文转发时,PCI Express总线带宽存在浪费的问题。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供一种网络功能虚拟化NFV报文转发方法,应用于包括虚拟交换机、网卡和至少一个虚拟机的转发设备上,至少一个虚拟机包括第一虚拟机和第二虚拟机,网卡与虚拟交换机用于转发第一虚拟机和第二虚拟机之间的数据报文;该方法包括:
虚拟交换机或网卡接收第一虚拟机从第一虚拟端口发送的数据报文;
虚拟交换机或网卡确定数据报文的目的端口是否为第二虚拟端口,虚拟交换机或网卡通过第二虚拟端口与第二虚拟机通信;
若确定数据报文的目的端口为第二虚拟端口,虚拟交换机或网卡确定第一虚拟机和第二虚拟机是否支持共享缓冲,共享缓冲用于指示第一虚拟机和第二虚拟机能够通过虚拟地址空间访问的物理内存;
若虚拟交换机或网卡确定第一虚拟机和第二虚拟机支持共享缓冲,虚拟交换机或网卡将数据报文的共享缓冲对应的编号写入第二虚拟机的接收队列。
第二方面,提供一种转发设备,包括:
虚拟交换机或网卡,用于接收第一虚拟机从第一虚拟端口发送的数据报文;
虚拟交换机或网卡,还用于确定数据报文的目的端口是否为第二虚拟端口;
若确定数据报文的目的端口为第二虚拟端口,虚拟交换机或网卡,还用于确定第一虚拟机和第二虚拟机是否支持共享缓冲,共享缓冲用于指示第一虚拟机和第二虚拟机能够通过虚拟地址空间访问的物理内存;
若确定第一虚拟机和第二虚拟机支持共享缓冲,虚拟交换机或网卡还用于,将数据报文的共享缓冲对应的编号写入第二虚拟机的接收队列。
第三方面,提供一种转发系统,包括:
虚拟交换机或网卡,用于接收第一虚拟机从第一虚拟端口发送的数据报文;
虚拟交换机或网卡,还用于确定数据报文的目的端口是否为第二虚拟端口;
若数据报文的目的端口为第二虚拟端口,虚拟交换机或网卡,还用于确定第一虚拟机和第二虚拟机是否支持共享缓冲,共享缓冲用于指示第一虚拟机和第二虚拟机能够通过虚拟地址空间访问的物理内存;
若第一虚拟机和第二虚拟机支持共享缓冲,虚拟交换机或网卡还用于,将数据报文的共享缓冲对应的编号写入第二虚拟机的接收队列。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可以实现第一方面提供的NFV报文转发方法。
由此,虚拟交换机或网卡接收数据报文的过程中,如果确定来自上一个虚拟机的数据报文需要转发到下一个虚拟机处理,那么虚拟交换机或网卡可以将数据报文的共享缓冲对应的编号写入下一个虚拟机的接收队列。例如,当第一虚拟机的数据报文需要转发到第二虚拟机处理时,虚拟交换机或网卡可以将数据报文的共享缓冲对应的编号写入第二虚拟机的接收队列。从而避免了虚拟机间流量需要从前一个虚拟机的缓冲复制到下一个虚拟机的缓冲存在的报文复制开销。
附图说明
图1为本申请实施例提供的一种转发设备的硬件结构示意图;
图2为本申请实施例提供的一种转发设备的逻辑结构示意图;
图3为本申请实施例提供的一种共享缓冲内存和共享缓冲池的关系示意图;
图4为本申请实施例提供的一种NFV报文转发方法的流程示意图;
图5为本申请实施例提供的一种转发设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例提供的NFV报文转发方法和装置进行详细描述。
本申请实施例涉及的转发设备的硬件结构如图1所示。转发设备可以包括一个或者多个中央处理器,每个中央处理器包括一个或者多个处理器核心。例如,中央处理器可以是X86处理器、高级精简指令集计算机(Advanced RISC(Reduced Instruction-SetComputer)Machines,ARM)处理器或者其他类型的处理器。该转发设备还包括一个或者多个双倍速率同步动态随机存储器(Double Data Rate,DDR)。中央处理器与内存设备之间通过高速互联技术和/或内存接口互相连接。例如,高速互联技术可以是快速通道互联(QuickPath Interconnect,QPI)技术、超路径互连(Ultra Path Interconnect,UPI)或者其他高速互联技术。内存接口可以是双列直插式存储模块(Dual Inline Memory Modules,DIMM)或者其他接口规范所规定的接口。在一种可能的情况中,转发设备中所有中央处理器以及其内部的处理器核心在访问内存时是对称操作的,属于对称多处理器(SymmetricalMulti-Processing,SMP)架构。在一种可能的情况中,转发设备中不同中央处理器和/或其内部的处理器核心在访问内存时是非对称操作的,属于非均匀内存访问架构(Non-UniformMemory Access,NUMA)。该转发设备可以通过输入/输出端口(input/output,I/O)总线和接口连接到外部设备。I/O总线包括通用串行总线(Universal Serial Bus,USB)、PCIExpress、InfiniBand、光纤通道(Fiber Channel,FC)以及其他I/O总线。外部接口包括串行高级技术附件(Serial Advanced Technology Attachment,SATA)、串行连接小型计算机系统接口(Serial Attached Small Computer System Interface,SAS)、串口以及其他外部接口。该PCI Express总线连接到一个或者多个网卡设备。每个网卡设备包括一个或者多个网络端口。网卡设备把转发设备耦合到以太网络中,使转发设备参与到网络报文的处理系统中。网卡设备可以使用交换芯片(Switch)或者其他专用集成电路(ApplicationSpecificIntegrated Circuit,ASIC)、通用中央处理器、嵌入式处理器、网络处理器(Network Processor,NP)、数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、其他处理计算单元以及它们的任意组合实现。该转发设备可以通过SAS、SATA或者其他接口连接到零个、一个或者多个存储设备。该转发设备也可以通过InfiniBand、FC或者其他总线技术以及以太网光纤通道(FiberChannel over Ethernet,FCoE)、小型计算机系统接口(Internet Small Computer SystemInterface,Internet,iSCSI)或者其他融合技术连接到零个、一个或者多个远程逻辑存储设备。存储设备保存了转发设备运行所需要的操作系统、应用程序以及数据。该转发设备还可以通过InfiniBand、FC或者其他总线技术以及FCoE、iSCSI或者其他融合技术连接其他I/O设备或者加速设备。本申请的转发设备可以是一台通用服务器,也可以是任何其他能够提供计算和处理能力的计算设备,本申请实施例不做限定。
本申请实施例涉及的转发设备的逻辑结构如图2所示。本申请涉及的转发设备在逻辑上包含宿主操作系统、网卡和虚拟机等功能模块,其中:
宿主操作系统是运行在转发设备上的特权操作系统,能够管理转发设备上的所有硬件和软件资源。宿主操作系统可以是UNIX、Linux、MacOS、Windows或者其他操作系统。在一些实现中,宿主操作系统功能可以被包含在虚拟机管理程序中,例如VMwareESXi、Xen等。宿主操作系统可以包括共享缓冲管理模块和虚拟机管理程序。共享缓冲管理模块运行于宿主操作系统中,负责根据虚拟机请求,分配和管理报文转发所需的共享缓冲。虚拟机管理程序是转发设备上负责资源虚拟化的功能模块。示例性的,虚拟机管理程序可以是VMwareESXi、Xen、VMware Workstation、Virtual Box、Linux KVM等,其中KVM即Kernel VirtualMachine。虚拟机管理程序还可以是其他任何支持虚拟化的虚拟机管理程序。虚拟机管理程序可以包括虚拟交换机和物理网卡驱动。虚拟交换机负责实现虚拟机与虚拟机之间、虚拟机与网络之间的报文交换功能。在一些实现中,虚拟交换机通过纯软件实现的虚拟端口连接到虚拟机的虚拟网卡,例如测试接入端口(Test Access Port,TAP)、Virtio网络接口以及其他软件虚拟端口。在另一些实现中,比如在网卡支持SRIOV的情况下,虚拟交换机能够把报文交换功能卸载到网卡的嵌入式交换机上,只处理必要的控制面功能和/或流首包转发。在一些实现中,虚拟交换机运行于非软件定义网络(Software Defined Network,SDN)环境中,只实现诸如网桥、路由等传统功能;在另一些实现中,虚拟交换机运行于SDN环境中,转发规则通过集中式的网络控制器安装到这类虚拟交换机中。在一些实现中,虚拟交换机由虚拟机管理程序实现;在另一些实现中,虚拟交换机由第三方提供实现。物理网卡驱动负责对网卡功能进行配置、管理以及功能交互。所谓配置、管理是指物理网卡可以根据需求对网卡的队列、缓冲、中断、嵌入式交换机以及其他硬件资源进行分配、管理和配置。所谓功能交互主要是指物理网卡驱动负责操作网卡实现报文的接收和发送。如果网卡支持SRIOV,则物理网卡驱动还负责把硬件资源分配给虚拟功能实例,以及协调各个虚拟功能和谐运行。
网卡,可以为一张或者多张,是实现报文接收和发送的功能模块。每张网卡可以包含一个或者多个物理端口。在一些实现中,网卡支持SRIOV和虚拟交换机功能卸载。支持SRIOV的网卡通过PCI Express物理功能(Physical Function,PF)接口与物理网卡驱动交互,通过PCI Express虚拟功能(Virtual Function,VF)接口与虚拟网卡驱动交互,并且内部包含一个嵌入式交换机,以实现物理端口与虚拟端口之间的报文交换功能。在另一些实现中,网卡不支持SRIOV和/或虚拟交换机功能卸载。不支持SRIOV的网卡通过普通PCIExpress功能接口与物理网卡驱动交互,但不提供虚拟功能接口,一般内部也不包含嵌入式交换机。在支持SRIOV的网卡环境中,嵌入式交换机负责实现虚拟交换机报文交换功能卸载。
虚拟机是转发设备根据业务需求运行的一个或者多个虚拟机实例。每个转发设备可以包括多个虚拟机,每个虚拟机实例包含一张或者多张虚拟网卡,运行了所需的虚拟网络功能以及虚拟网卡驱动、缓冲管理模块。虚拟网卡驱动负责在虚拟机中实现报文接收、发送等功能。如果物理网卡支持SRIOV和/或虚拟交换机报文交换功能卸载,并且把网卡的虚拟功能分配给虚拟机,那么虚拟网卡驱动通过PCI Express虚拟功能接口与硬件直接交互;否则虚拟网卡驱动通过某种软件仿真接口或者半虚拟化接口(比如Virtio)连接到虚拟交换机的虚拟端口。虚拟机还包括缓冲管理模块,缓冲管理模块负责虚拟机的缓冲的管理,虚拟机的缓冲包括普通缓冲和共享缓冲。普通缓冲即非共享缓冲,只在本虚拟机可见,其他虚拟机无法访问。共享缓冲对于转发设备中的多个虚拟机都是可见的,多个虚拟机都可以申请共享缓冲中的缓冲资源。缓冲管理模块从共享缓冲管理模块申请所需的共享缓冲。共享缓冲可以包含一组报文缓冲,构成共享缓冲池。共享缓冲池中的报文缓冲可以处于空闲和已用两种状态,分别组织在共享缓冲池空闲链表和共享缓冲池已用链表中。共享缓冲池除了包含报文缓冲,还包含一些管理所需要的控制信息。
如图3所示,在本申请实施例中,共享内存管理模块可以根据转发设备的硬件资源大小和预先配置的策略,分配一块物理内存作为共享缓冲内存,共享缓冲内存包括多个共享缓冲。对于转发设备中的每个虚拟机,共享内存管理模块可以为该虚拟机在共享缓冲内存分配一个共享缓冲池,该共享缓冲池包括至少一个共享缓冲,即该虚拟机的共享缓冲池的报文缓冲计数至少为1。共享内存管理模块为虚拟机分配共享缓冲池的具体步骤如下:
a)申请一块物理内存作为控制信息内存。需要说明的是,虚拟机与共享缓冲管理模块均可以访问该控制信息内存。控制信息内存中存储的控制信息可以包括共享缓冲池的缓冲数量、共享缓冲池空闲链表头、共享缓冲池已用链表头以及其他需要的控制信息。
b)将控制信息内存的地址通知给虚拟机。控制信息内存中存储有共享缓冲内存的地址、共享缓冲池空闲链表第一个报文缓冲的编号、以及其他需要的信息。
c)当共享缓冲管理模块接收到第一虚拟机发送的第一申请请求时,根据第一申请请求和预先配置的策略为第一虚拟机分配共享缓冲,即从共享缓冲内存中分配一定数量报文缓冲作为第一虚拟机的共享缓冲。当共享缓冲管理模块接收到第二虚拟机发送的第二申请请求时,根据第二申请请求和预先配置的策略为第二虚拟机分配共享缓冲。即从共享缓冲内存中分配一定数量报文缓冲作为第二虚拟机的共享缓冲。共享缓冲管理模块还可以将第一虚拟机和/或第二虚拟机的报文缓冲串成共享缓冲链表。
如果有虚拟机关闭或者释放共享缓冲池,则释放分配给该虚拟机的共享缓冲池,具体的,可以释放分配给虚拟机的共享缓冲以及释放分配给虚拟机的控制信息内存。
在一种可能的设计中,转发设备的共享缓冲管理模块可以确定本地虚拟机的共享缓冲池的报文缓冲计数是否小于第一预设阈值,或共享缓冲管理模块确定本地虚拟机的共享缓冲池的报文缓冲计数是否大于第二预设阈值,第一预设阈值可以小于第二预设阈值。其中,本地虚拟机的报文缓冲计数即本地虚拟机可用于接收或发送数据报文的报文缓冲数量。共享缓冲管理模块可以按照固定时间间隔,周期性的检查各个本地虚拟机的共享缓冲池的缓冲计数。共享缓冲管理模块也可以在接收到虚拟机内的缓冲管理模块发送的增加共享缓冲的请求时,检查各个本地虚拟机的共享缓冲池的报文缓冲计数。在本申请实施例中,转发设备中的本地虚拟机包括转发设备中的第一虚拟机和第二虚拟机等,第一虚拟机与第二虚拟机执行的功能可以不同,对数据报文的处理过程可以不同。需要说明的是,转发设备中的本地虚拟机可以有多个,下文以本地虚拟机包括第一虚拟机和第二虚拟机为例进行说明。
若转发设备确定第一虚拟机的共享缓冲池的报文缓冲计数小于第一预设阈值,转发设备将预设数量的空闲共享缓冲添加至第一虚拟机的共享缓冲池的空闲链表。其中,第一虚拟机的报文缓冲计数即第一虚拟机可用于接收或发送数据报文的报文缓冲数量。例如,第一预设阈值可以为10,也就是说,若转发设备确定第一虚拟机的共享缓冲池的报文缓冲计数小于10,转发设备将预设数量的空闲共享缓冲添加至第一虚拟机的共享缓冲池的空闲链表。这是由于第一虚拟机的共享缓冲池的报文缓冲计数小于第一预设阈值时,意味着第一虚拟机的共享缓冲可能不足以接收或发送数据报文了,因此需要增加空闲共享缓冲。类似的,若转发设备确定第二虚拟机的共享缓冲池的报文缓冲数量计数小于第一预设阈值,转发设备将预设数量的空闲共享缓冲添加至第二虚拟机的共享缓冲池空闲链表。
若转发设备确定第一虚拟机的共享缓冲池的报文缓冲计数大于第二预设阈值,转发设备从第一虚拟机的共享缓冲池的空闲链表中删除预设数量的共享缓冲。其中,第二虚拟机的报文缓冲计数即第二虚拟机可用于接收或发送数据报文的报文缓冲数量。例如,第二预设阈值可以为20,也就是说,若转发设备确定第一虚拟机的共享缓冲池的报文缓冲计数大于20,转发设备从第一虚拟机的共享缓冲池的空闲链表中删除预设数量的共享缓冲。这是由于第一虚拟机的共享缓冲池的报文缓冲计数大于第二预设阈值时,意味着第一虚拟机的报文缓冲过多了,除了接收或发送数据报文以外有很多共享缓冲是闲置的,因此需要删除预设数量的共享缓冲,以便其他虚拟机可以申请到充足的共享缓冲。类似的,若转发设备确定第二虚拟机的共享缓冲池的报文缓冲计数大于第二预设阈值,转发设备从第二虚拟机的共享缓冲池的空闲链表中删除预设数量的共享缓冲。
本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同对象,而不是用于限定特定顺序。例如,第一虚拟机和第二虚拟机仅仅是为了区分不同的虚拟机,并不对其先后顺序进行限定。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
需要说明的是,本申请实施例中,“的(of)”,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例提供一种NFV报文转发方法,如图4所示,包括:
401、转发设备加载相应程序。
转发设备启动后,从存储设备加载共享内存管理模块、虚拟机、虚拟交换机、操作系统、虚拟机管理程序、物理网卡驱动以及其他必要的程序和数据。
共享内存管理模块对共享缓冲内存进行初始化。
转发设备根据业务的请求加载和运行一个或者多个虚拟机,把网卡的虚拟功能分配给虚拟机实例,并设置虚拟交换机的流表项,使得虚拟交换机能够把从网卡端口接收到的、需要转发设备的本地虚拟机处理的报文转发到该虚拟机;把被一个虚拟机处理完成的、需要由转发设备上的另一个虚拟机继续处理的报文转发到下一个虚拟机;以及把被最后一个虚拟机处理完成的、需要从某一网卡端口发送出去的报文转发到对应的网卡端口。
在一些情况下,虚拟交换机的转发功能可以部分或者完全的卸载到网卡的嵌入式交换机。在该情况下,上述报文转发动作将在网卡内置的嵌入式交换机上执行,无需虚拟交换机参与。在另外一些情况下,网卡不支持SRIOV和/或网卡不支持虚拟交换机转发卸载功能,和/或不能把虚拟功能VF分配虚拟机,则虚拟交换机通过软件实现的虚拟端口与虚拟机的虚拟端口连接,且上述转发动作将在虚拟交换机执行。上述由软件实现的虚拟端口包括基于Virtio实现的虚拟端口以及其他类型的虚拟端口。
虚拟机启动后,加载客户操作系统、虚拟网卡驱动、缓冲管理模块、虚拟网络功能以及其他需要的功能和数据。
虚拟机中的缓冲管理模块加载后,从共享缓冲管理模块获取共享缓冲内存的大小、配置、地址等信息,建立页表数据结构,从而使得虚拟机能够访问共享缓冲内存。
虚拟机中的虚拟网卡驱动加载后,根据是否支持共享缓冲,向虚拟交换机和/或物理网卡驱动通告其支持共享缓冲的能力。
402、网卡的物理端口接收数据报文。
网卡从物理端口接收外部网络发送的数据报文,执行报文解析,获取报文头部信息。对报文头部信息与流表进行对比,获取匹配的流表项。根据流表项规则,对报文进行编辑、转发等操作,并获得目的端口。
也就是说,网卡从物理端口接收外部网络发送的数据报文时,虚拟交换机通过首先接收报文头部信息,然后把报文修改指令下发给网卡硬件,并使网卡硬件直接从片上缓冲发送数据的方式,从而避免了传统虚拟交换机把报文数据先拷贝到虚拟交换机缓冲,然后再从虚拟交换机缓冲发送报文所带来的总线I/O带宽开销。
403、网卡确定数据报文的目的端口是否为第一虚拟端口,网卡通过第一虚拟端口与第一虚拟机通信。
如果网卡确定数据报文的目的端口不是本地虚拟机的虚拟端口,网卡把报文头部与数据拼接后,从目的物理端口发送出去即可。
如果网卡确定数据报文的目的端口是第一虚拟端口,即网卡确定将从物理端口接收到的数据报文转发到第一虚拟机时,网卡或虚拟交换机获取第一虚拟机申请的第一共享缓冲,即网卡或虚拟交换机从第一虚拟机的接收队列获取接收缓冲。而后,网卡或虚拟交换机把数据报文的头部和数据拷贝到该接收缓冲,然后通知第一虚拟机报文接收完成。这样,可以避免传统虚拟交换机把报文数据先接收到虚拟交换机缓冲再拷贝到虚拟机接收缓冲的PCI Express总线带宽开销,能够解决数据报文转发时,PCI Express总线带宽存在浪费的问题。可以理解的是,网卡从第一虚拟机的接收队列获取接收缓冲之前,第一虚拟机可以申请第一虚拟机的共享缓冲。从而,网卡可以把数据报文的头部和数据拷贝到第一虚拟机申请的第一共享缓冲。
其中,接收缓冲可以是普通缓冲或共享缓冲。若第一虚拟机使用共享缓冲,则报文将被拷贝到第一虚拟机分配的共享缓冲中。报文从物理网卡拷贝到VM1共享缓冲的动作完全由物理网卡硬件通过DMA技术实现,无需中央处理器参与,节省了中央处理器资源。
404、第一虚拟机从第一虚拟机的接收队列中获取数据报文,并对数据报文进行处理。
第一虚拟机从第一虚拟机的接收队列中获取数据报文的共享缓冲之前,需要等待报文接收完成。一般有两种等待方式,一种方式是轮询方式,即中央处理器主动查询报文接收是否完成。另一种是异步等待方式,即网卡完成报文接收后,通过一个异步的事件或者中断请求中央处理器处理报文。也可以采用上述两种方式的结合方式,比如在报文速率较低时采用异步等待方式,而当报文速率较高时,切换到轮询方式。
数据报文接收完成时,第一虚拟机的虚拟网络功能可以从第一虚拟机的虚拟网卡的接收队列获取数据报文的共享缓冲,并从该共享缓冲中获取报文描述符,以便对数据报文进行相应处理。报文描述符中包括与数据报文处理相关的元信息,比如报文缓冲类型、报文缓冲位置、报文长度、报文协议类型等等。
405、第一虚拟机将数据报文的共享缓冲对应的编号写入第一虚拟机的发送队列。
第一虚拟机的虚拟网络功能对数据报文进行相应处理完成后,第一虚拟机确定数据报文是否被第一虚拟机消耗,即第一虚拟机确定数据报文是否需要发送到第一虚拟机的虚拟网卡。如果数据报文未被第一虚拟机消耗,即需要发送到第一虚拟机的虚拟网卡,则将数据报文的共享缓冲对应的编号写入第一虚拟机的发送队列,通知第一虚拟机的虚拟网卡发送数据报文,并等待第一虚拟机的虚拟网卡完成数据报文发送。如果数据报文被第一虚拟机消耗,即不需要发送到第一虚拟机的虚拟网卡,则释放数据报文的共享缓冲。
406、虚拟交换机或网卡接收第一虚拟机从第一虚拟端口发送的数据报文。
虚拟交换机或网卡从第一虚拟机的发送队列获取数据报文的共享缓冲对应的编号,并从数据报文的共享缓冲获取数据报文的头部信息。
而后,虚拟交换机或网卡将报文头部与流表进行对比,获取匹配的流表项。并根据流表项规则对数据报文进行编辑、转发等操作,并获取目的端口。
407、虚拟交换机或网卡确定数据报文的目的端口是否是第二虚拟端口,虚拟交换机或网卡通过第二虚拟端口与第二虚拟机通信。
若虚拟交换机或网卡确定数据报文的目的端口是第二虚拟端口,虚拟交换机或网卡确定第一虚拟机和第二虚拟机是否支持共享缓冲,共享缓冲用于指示第一虚拟机和第二虚拟机能够通过虚拟地址空间访问的物理内存。若虚拟交换机或网卡确定第一虚拟机和第二虚拟机支持共享缓冲,虚拟交换机或网卡将数据报文的共享缓冲对应的编号写入第二虚拟机的接收队列。即从第二虚拟机的接收队列获取报文描述符,并将数据报文的共享缓冲信息填写到该报文描述符中。若虚拟交换机或网卡确定第一虚拟机和/或第二虚拟机不支持共享缓冲,则从第二虚拟机的接收队列获取一个报文描述符,然后把报文头部和数据从第一虚拟机的共享缓冲拷贝到第二虚拟机的接收缓冲中,而后通知第二虚拟机数据报文接收完成,通知第一虚拟机数据报文发送完成。
若虚拟交换机或网卡确定数据报文的目的端口不是第二虚拟端口,而是物理端口,则从第一虚拟机的共享缓冲中获取数据报文的数据,并与报文头部拼接后从目的物理端口发送出去。而后通知第一虚拟机数据报文发送完成。
上述数据报文的接收过程是通过共享缓冲的方式从前一个虚拟机传递给下一个虚拟机,避免了一些技术中中央处理器的内存拷贝开销;嵌入式交换机只需读取报文头部而不必读取报文数据,避免了一些技术通过PCIExpress总线把报文数据从前一个虚拟机缓冲拷贝到后一个虚拟机缓冲的总线带宽开销。因此,大大提高了转发设备的处理效率。
408、第二虚拟机释放第二虚拟机申请的第二共享缓冲,并将数据报文的共享缓冲添加至第二虚拟机的共享缓冲池。
由于数据报文的接收缓冲为第一虚拟机的共享缓冲,说明第二虚拟机申请的第二共享缓冲中并无报文数据,可以释放第二虚拟机申请的第二共享缓冲。然后第二虚拟机可以创建报文对象,并使报文对象的数据指针指向第一虚拟机的共享缓冲,即将数据报文的共享缓冲添加至第二虚拟机的共享缓冲池。
第二虚拟机释放第二虚拟机申请的第二共享缓冲即第二虚拟机将第二虚拟机申请的第二共享缓冲从第二虚拟机的共享缓冲池的已用链表删除,并将第二虚拟机申请的第二共享缓冲加入第二虚拟机的共享缓冲池的空闲链表。
其中,共享缓冲池包括已用链表和空闲链表,已用链表或空闲链表包括至少一个报文缓冲。
409、第二虚拟机确定第二虚拟机的报文对象,报文对象的数据部分指向数据报文的共享缓冲。
第二虚拟机对报文对象处理完成后,可以判断数据报文是否需要发送到第二虚拟机的虚拟网卡。如果需要发送到第二虚拟机的虚拟网卡,则将数据报文的共享缓冲对应的编号写入第二虚拟机的发送队列,通知第二虚拟机的虚拟网卡发送数据报文,并等待第二虚拟机的虚拟网卡完成数据报文发送;如果不需要发送到第二虚拟机的虚拟网卡,则释放数据报文的共享缓冲。
需要说明的是,数据报文还可以通过虚拟交换机或网卡在转发设备更多的本地虚拟机之间转发,本申请实施例不再赘述。
由此,本申请实施例中,如果来自上一个虚拟机的数据报文需要转发到下一个虚拟机处理,那么转发设备可以通过虚拟交换机或网卡将数据报文的共享缓冲对应的编号写入下一个虚拟机的接收队列。例如,当第一虚拟机的数据报文需要转发到第二虚拟机处理时,虚拟交换机或网卡可以将数据报文的共享缓冲对应的编号写入第二虚拟机的接收队列。由此,可以避免虚拟机间流量需要从前一个虚拟机的缓冲复制到下一个虚拟机的缓冲存在的报文复制开销。
而且,转发设备通过虚拟交换机或网卡接收数据报文的处理过程中,如果数据报文转发到本地虚拟机处理,那么虚拟交换机首先接收报文头部信息,然后可以将报文数据直接拷贝到虚拟机接收缓冲,例如但不限于通过DMA机制进行拷贝。从而避免了传统虚拟交换机把报文数据先接收到虚拟交换机缓冲再拷贝到虚拟机接收缓冲的PCI Express总线带宽开销,能够解决数据报文转发时,PCI Express总线带宽存在浪费的问题。
另外,如果报文转发到物理端口,那么虚拟交换机通过首先接收报文头部信息,然后把报文修改指令下发给网卡硬件,并使网卡硬件直接从片上缓冲发送数据的方式,从而避免了传统虚拟交换机把报文数据先拷贝到虚拟交换机缓冲、然后再从虚拟交换机缓冲发送报文所带来的总线I/O带宽开销。
本申请实施例提供一种转发设备,如图5所示,包括:虚拟交换机501、网卡502、第一虚拟机503、第二虚拟机504和共享缓冲管理模块505。
虚拟交换机501或网卡502,用于接收第一虚拟机503从第一虚拟端口发送的数据报文;
确定数据报文的目的端口是否为第二虚拟端口;
若确定数据报文的目的端口为第二虚拟端口,确定第一虚拟机503和第二虚拟机504是否支持共享缓冲,共享缓冲用于指示第一虚拟机503和第二虚拟机504能够通过虚拟地址空间访问的物理内存;
若确定第一虚拟机503和第二虚拟机504支持共享缓冲,将数据报文的共享缓冲对应的编号写入第二虚拟机504的接收队列。
共享缓冲管理模块505,用于:根据转发设备的物理内存和预先配置的策略分配共享缓冲内存;将共享缓冲内存划分为至少一个报文缓冲并依次编号;申请控制信息内存,控制信息内存用于存储至少一个报文缓冲的数量和共享缓冲池空闲链表头;共享缓冲池空闲链表头用于指示共享缓冲内存中未被占用的第一个报文缓冲;
向第一虚拟机503或第二虚拟机504通知控制信息内存的地址;
当接收到第一虚拟机503发送的第一申请请求时,根据第一申请请求和预先配置的策略为第一虚拟机503分配共享缓冲;当接收到第二虚拟机504发送的第二申请请求时,根据第二申请请求和预先配置的策略为第二虚拟机504分配共享缓冲。
可选的,网卡502还用于:从网卡502的物理端口接收数据报文;
确定数据报文的目的端口是否为第一虚拟端口;
若确定数据报文的目的端口为第一虚拟端口,获取第一虚拟机503申请的第一共享缓冲;将数据报文的头部和数据拷贝到第一虚拟机503申请的第一共享缓冲中;
第一虚拟机503,用于从第一共享缓冲中获取数据报文,并对数据报文进行处理;对数据报文处理完成后,将数据报文的共享缓冲对应的编号写入第一虚拟机503的发送队列。
第二虚拟机504,用于:释放第二虚拟机504申请的第二共享缓冲,并将数据报文的共享缓冲添加至第二虚拟机504的共享缓冲池,共享缓冲池包括至少一个报文缓冲;
确定第二虚拟机504的报文对象,报文对象的数据部分指向数据报文的共享缓冲。
可选的,第二虚拟机504用于:将第二虚拟机504申请的第二共享缓冲从第二虚拟机504的共享缓冲池的已用链表删除;
将第二虚拟机504申请的第二共享缓冲加入第二虚拟机504的共享缓冲池的空闲链表。
可选的,共享缓冲管理模块505还用于:确定第一虚拟机503或第二虚拟机504的共享缓冲池的报文缓冲计数是否小于第一预设阈值,或确定第一虚拟机503或第二虚拟机504的共享缓冲池的报文缓冲计数是否大于第二预设阈值;
若确定第一虚拟机503的共享缓冲池的报文缓冲计数小于第一预设阈值,将预设数量的空闲共享缓冲添加至第一虚拟机503的共享缓冲池的空闲链表;若确定第二虚拟机504的共享缓冲池的报文缓冲数量计数小于第一预设阈值,将预设数量的空闲共享缓冲添加至第二虚拟机504的共享缓冲池空闲链表;
若确定第一虚拟机503的共享缓冲池的报文缓冲计数大于第二预设阈值,从第一虚拟机503的共享缓冲池的空闲链表中删除预设数量的共享缓冲;若确定第二虚拟机504的共享缓冲池的报文缓冲计数大于第二预设阈值,从第二虚拟机504的共享缓冲池的空闲链表中删除预设数量的共享缓冲。
由此,虚拟交换机501或网卡502接收数据报文的过程中,如果确定来自上一个虚拟机的数据报文需要转发到下一个虚拟机处理,那么虚拟交换机501或网卡502可以将数据报文的共享缓冲对应的编号写入下一个虚拟机的接收队列。例如,当第一虚拟机503的数据报文需要转发到第二虚拟机504处理时,虚拟交换机501或网卡502可以将数据报文的共享缓冲对应的编号写入第二虚拟机504的接收队列。从而避免了虚拟机间流量需要从前一个虚拟机的缓冲复制到下一个虚拟机的缓冲存在的报文复制开销。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (11)

1.一种网络功能虚拟化NFV报文转发方法,其特征在于,应用于包括虚拟交换机、网卡和至少一个虚拟机的转发设备上,所述至少一个虚拟机包括第一虚拟机和第二虚拟机,所述网卡与所述虚拟交换机用于转发所述第一虚拟机和所述第二虚拟机之间的数据报文;该方法包括:
所述虚拟交换机或所述网卡接收所述第一虚拟机从第一虚拟端口发送的数据报文;
所述虚拟交换机或所述网卡确定所述数据报文的目的端口是否为第二虚拟端口,所述虚拟交换机或所述网卡通过所述第二虚拟端口与所述第二虚拟机通信;
若确定所述数据报文的目的端口为第二虚拟端口,所述虚拟交换机或所述网卡确定所述第一虚拟机和所述第二虚拟机是否支持共享缓冲,所述共享缓冲用于指示所述第一虚拟机和所述第二虚拟机能够通过虚拟地址空间访问的物理内存;
若所述虚拟交换机或所述网卡确定所述第一虚拟机和所述第二虚拟机支持共享缓冲,所述虚拟交换机或所述网卡将所述数据报文的共享缓冲对应的编号写入所述第二虚拟机的接收队列;
其中,所述虚拟交换机或所述网卡接收所述第一虚拟机从第一虚拟端口发送的数据报文之前,所述方法还包括:
所述网卡从所述网卡的物理端口接收所述数据报文;
所述网卡确定所述数据报文的目的端口是否为所述第一虚拟端口;
若所述网卡确定所述数据报文的目的端口为所述第一虚拟端口,所述虚拟交换机或所述网卡获取所述第一虚拟机申请的第一共享缓冲;
所述虚拟交换机或所述网卡将所述数据报文的头部和数据拷贝到所述第一虚拟机申请的第一共享缓冲中;
所述第一虚拟机从所述第一共享缓冲中获取所述数据报文,并对所述数据报文进行处理;
所述第一虚拟机对所述数据报文处理完成后,将所述数据报文的共享缓冲对应的编号写入所述第一虚拟机的发送队列。
2.根据权利要求1所述的NFV报文转发方法,其特征在于,所述转发设备还包括共享缓冲管理模块,所述虚拟交换机或所述网卡接收所述第一虚拟机从第一虚拟端口发送的数据报文之前,所述方法还包括:
所述共享缓冲管理模块根据所述转发设备的物理内存和预先配置的策略分配共享缓冲内存;将所述共享缓冲内存划分为至少一个报文缓冲并依次编号;申请控制信息内存,所述控制信息内存用于存储所述至少一个报文缓冲的数量和共享缓冲池空闲链表头;所述共享缓冲池空闲链表头用于指示所述共享缓冲内存中未被占用的第一个报文缓冲;
所述共享缓冲管理模块向所述第一虚拟机或所述第二虚拟机通知所述控制信息内存的地址;
当所述共享缓冲管理模块接收到所述第一虚拟机发送的第一申请请求时,所述共享缓冲管理模块根据所述第一申请请求和预先配置的策略为所述第一虚拟机分配共享缓冲;当所述共享缓冲管理模块接收到所述第二虚拟机发送的第二申请请求时,所述共享缓冲管理模块根据所述第二申请请求和预先配置的策略为所述第二虚拟机分配共享缓冲。
3.根据权利要求2所述的NFV报文转发方法,其特征在于,所述方法还包括:
所述第二虚拟机释放所述第二虚拟机申请的第二共享缓冲,并将所述数据报文的共享缓冲添加至所述第二虚拟机的共享缓冲池,所述共享缓冲池包括至少一个报文缓冲;
所述第二虚拟机确定所述第二虚拟机的报文对象,所述报文对象的数据部分指向所述数据报文的共享缓冲。
4.根据权利要求3所述的NFV报文转发方法,其特征在于,所述第二虚拟机释放所述第二虚拟机申请的第二共享缓冲包括:
所述第二虚拟机将所述第二虚拟机申请的第二共享缓冲从所述第二虚拟机的共享缓冲池的已用链表删除;
所述第二虚拟机将所述第二虚拟机申请的第二共享缓冲加入所述第二虚拟机的共享缓冲池的空闲链表。
5.根据权利要求4所述的NFV报文转发方法,其特征在于,所述方法还包括:
所述共享缓冲管理模块确定所述第一虚拟机或所述第二虚拟机的共享缓冲池的报文缓冲计数是否小于第一预设阈值,或所述共享缓冲管理模块确定所述第一虚拟机或所述第二虚拟机的共享缓冲池的报文缓冲计数是否大于第二预设阈值;
若确定所述第一虚拟机的共享缓冲池的报文缓冲计数小于第一预设阈值,所述共享缓冲管理模块将预设数量的空闲共享缓冲添加至所述第一虚拟机的共享缓冲池的空闲链表;若确定所述第二虚拟机的共享缓冲池的报文缓冲数量计数小于第一预设阈值,所述共享缓冲管理模块将预设数量的空闲共享缓冲添加至所述第二虚拟机的共享缓冲池空闲链表;
若确定所述第一虚拟机的共享缓冲池的报文缓冲计数大于第二预设阈值,所述共享缓冲管理模块从所述第一虚拟机的共享缓冲池的空闲链表中删除预设数量的共享缓冲;若确定所述第二虚拟机的共享缓冲池的报文缓冲计数大于第二预设阈值,所述共享缓冲管理模块从所述第二虚拟机的共享缓冲池的空闲链表中删除预设数量的共享缓冲。
6.一种转发设备,其特征在于,包括:
虚拟交换机或网卡,用于接收第一虚拟机从第一虚拟端口发送的数据报文;
所述虚拟交换机或所述网卡,还用于确定所述数据报文的目的端口是否为第二虚拟端口;
若确定所述数据报文的目的端口为第二虚拟端口,所述虚拟交换机或所述网卡,还用于确定所述第一虚拟机和第二虚拟机是否支持共享缓冲,所述共享缓冲用于指示所述第一虚拟机和所述第二虚拟机能够通过虚拟地址空间访问的物理内存;
若确定所述第一虚拟机和所述第二虚拟机支持共享缓冲,所述虚拟交换机或所述网卡还用于,将所述数据报文的共享缓冲对应的编号写入所述第二虚拟机的接收队列;
其中,所述网卡还用于:
从所述网卡的物理端口接收所述数据报文;
确定所述数据报文的目的端口是否为所述第一虚拟端口;
若确定所述数据报文的目的端口为所述第一虚拟端口,获取所述第一虚拟机申请的第一共享缓冲;将所述数据报文的头部和数据拷贝到所述第一虚拟机申请的第一共享缓冲中;
第一虚拟机,用于从所述第一共享缓冲中获取所述数据报文,并对所述数据报文进行处理;对所述数据报文处理完成后,将所述数据报文的共享缓冲对应的编号写入所述第一虚拟机的发送队列。
7.根据权利要求6所述的转发设备,其特征在于,还包括共享缓冲管理模块,用于:
根据所述转发设备的物理内存和预先配置的策略分配共享缓冲内存;将所述共享缓冲内存划分为至少一个报文缓冲并依次编号;申请控制信息内存,所述控制信息内存用于存储所述至少一个报文缓冲的数量和共享缓冲池空闲链表头;所述共享缓冲池空闲链表头用于指示所述共享缓冲内存中未被占用的第一个报文缓冲;
向所述第一虚拟机或所述第二虚拟机通知所述控制信息内存的地址;
当接收到所述第一虚拟机发送的第一申请请求时,根据所述第一申请请求和预先配置的策略为所述第一虚拟机分配共享缓冲;当接收到所述第二虚拟机发送的第二申请请求时,根据所述第二申请请求和预先配置的策略为所述第二虚拟机分配共享缓冲。
8.根据权利要求7所述的转发设备,其特征在于,所述第二虚拟机,用于:
释放所述第二虚拟机申请的第二共享缓冲,并将所述数据报文的共享缓冲添加至所述第二虚拟机的共享缓冲池,所述共享缓冲池包括至少一个报文缓冲;
确定所述第二虚拟机的报文对象,所述报文对象的数据部分指向所述数据报文的共享缓冲。
9.根据权利要求8所述的转发设备,其特征在于,所述第二虚拟机用于:
将所述第二虚拟机申请的第二共享缓冲从所述第二虚拟机的共享缓冲池的已用链表删除;
将所述第二虚拟机申请的第二共享缓冲加入所述第二虚拟机的共享缓冲池的空闲链表。
10.根据权利要求9所述的转发设备,其特征在于,所述共享缓冲管理模块还用于:
确定所述第一虚拟机或所述第二虚拟机的共享缓冲池的报文缓冲计数是否小于第一预设阈值,或确定所述第一虚拟机或所述第二虚拟机的共享缓冲池的报文缓冲计数是否大于第二预设阈值;
若确定所述第一虚拟机的共享缓冲池的报文缓冲计数小于第一预设阈值,将预设数量的空闲共享缓冲添加至所述第一虚拟机的共享缓冲池的空闲链表;若确定所述第二虚拟机的共享缓冲池的报文缓冲数量计数小于第一预设阈值,将预设数量的空闲共享缓冲添加至所述第二虚拟机的共享缓冲池空闲链表;
若确定所述第一虚拟机的共享缓冲池的报文缓冲计数大于第二预设阈值,从所述第一虚拟机的共享缓冲池的空闲链表中删除预设数量的共享缓冲;若确定所述第二虚拟机的共享缓冲池的报文缓冲计数大于第二预设阈值,从所述第二虚拟机的共享缓冲池的空闲链表中删除预设数量的共享缓冲。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的NFV报文转发方法。
CN201711248651.2A 2017-11-30 2017-11-30 一种nfv报文转发方法和装置 Active CN107995129B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711248651.2A CN107995129B (zh) 2017-11-30 2017-11-30 一种nfv报文转发方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711248651.2A CN107995129B (zh) 2017-11-30 2017-11-30 一种nfv报文转发方法和装置

Publications (2)

Publication Number Publication Date
CN107995129A CN107995129A (zh) 2018-05-04
CN107995129B true CN107995129B (zh) 2021-12-17

Family

ID=62035139

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711248651.2A Active CN107995129B (zh) 2017-11-30 2017-11-30 一种nfv报文转发方法和装置

Country Status (1)

Country Link
CN (1) CN107995129B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110554977A (zh) * 2018-05-30 2019-12-10 阿里巴巴集团控股有限公司 数据缓存方法、数据处理方法、计算机设备、存储介质
CN110636036A (zh) * 2018-06-22 2019-12-31 复旦大学 一种基于SDN的OpenStack云主机网络访问控制的方法
CN110912825B (zh) * 2018-09-18 2022-08-02 阿里巴巴集团控股有限公司 一种报文的转发方法、装置、设备及系统
CN111147369B (zh) * 2018-11-05 2022-02-08 中国电信股份有限公司 路由系统、路由方法和服务器
CN111224897A (zh) * 2018-11-23 2020-06-02 北京金山云网络技术有限公司 一种流量转发方法、装置、交换机设备及智能网卡
CN109450701B (zh) * 2018-12-07 2020-04-17 北京金山云网络技术有限公司 一种虚拟交换机切换方法、装置、宿主机及计算机可读存储介质
CN110391993B (zh) * 2019-07-12 2022-12-30 苏州浪潮智能科技有限公司 一种数据处理方法及系统
CN110943941B (zh) * 2019-12-06 2022-03-11 北京天融信网络安全技术有限公司 一种报文接收方法、网卡及电子设备
CN111447155B (zh) * 2020-03-24 2023-09-19 广州市百果园信息技术有限公司 数据传输方法、装置、设备及存储介质
CN111698167B (zh) * 2020-04-01 2023-04-07 新华三大数据技术有限公司 一种报文处理方法及装置
CN113746749A (zh) * 2020-05-29 2021-12-03 阿里巴巴集团控股有限公司 网络连接设备
CN113923158B (zh) 2020-07-07 2023-09-22 华为技术有限公司 一种报文转发、路由发送和接收方法及装置
CN111538694B (zh) * 2020-07-09 2020-11-10 常州楠菲微电子有限公司 一种用于网络接口支持多链接和重传的数据缓存方法
CN112565372B (zh) * 2020-11-27 2023-05-09 山东乾云启创信息科技股份有限公司 一种网络隔离时虚拟机与客户机的通信方法及系统
CN112783810B (zh) * 2021-01-08 2022-05-03 国网浙江省电力有限公司电力科学研究院 一种面向应用的多通道srio dma传输系统及方法
CN115314262B (zh) * 2022-07-20 2024-04-23 杭州熠芯科技有限公司 一种可信网卡的设计方法及其组网方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1658176A (zh) * 2004-02-21 2005-08-24 华为技术有限公司 数据通信的方法及设备
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN101847105A (zh) * 2009-03-26 2010-09-29 联想(北京)有限公司 一种计算机及多操作系统共享内存的方法
CN102004675A (zh) * 2010-11-11 2011-04-06 福建星网锐捷网络有限公司 跨进程数据传输方法、装置及网络设备
CN102693162A (zh) * 2011-12-29 2012-09-26 中国科学技术大学苏州研究院 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法
CN103618809A (zh) * 2013-11-12 2014-03-05 华为技术有限公司 一种虚拟化环境下通信的方法、装置和系统
CN106612306A (zh) * 2015-10-22 2017-05-03 中兴通讯股份有限公司 虚拟机的数据共享方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10063446B2 (en) * 2015-06-26 2018-08-28 Intel Corporation Netflow collection and export offload using network silicon

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1658176A (zh) * 2004-02-21 2005-08-24 华为技术有限公司 数据通信的方法及设备
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN101847105A (zh) * 2009-03-26 2010-09-29 联想(北京)有限公司 一种计算机及多操作系统共享内存的方法
CN102004675A (zh) * 2010-11-11 2011-04-06 福建星网锐捷网络有限公司 跨进程数据传输方法、装置及网络设备
CN102693162A (zh) * 2011-12-29 2012-09-26 中国科学技术大学苏州研究院 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法
CN103618809A (zh) * 2013-11-12 2014-03-05 华为技术有限公司 一种虚拟化环境下通信的方法、装置和系统
CN106612306A (zh) * 2015-10-22 2017-05-03 中兴通讯股份有限公司 虚拟机的数据共享方法及装置

Also Published As

Publication number Publication date
CN107995129A (zh) 2018-05-04

Similar Documents

Publication Publication Date Title
CN107995129B (zh) 一种nfv报文转发方法和装置
US11748278B2 (en) Multi-protocol support for transactions
EP3754498B1 (en) Architecture for offload of linked work assignments
US20200319812A1 (en) Intermediary for storage command transfers
US9935899B2 (en) Server switch integration in a virtualized system
US10936535B2 (en) Providing remote, reliant and high performance PCI express device in cloud computing environments
CN110888827B (zh) 数据传输方法、装置、设备及存储介质
US9606838B2 (en) Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
US7484029B2 (en) Method, apparatus, and computer usable program code for migrating virtual adapters from source physical adapters to destination physical adapters
US20200133909A1 (en) Writes to multiple memory destinations
US7594060B2 (en) Data buffer allocation in a non-blocking data services platform using input/output switching fabric
CN112540941B (zh) 一种数据转发芯片及服务器
US20130346531A1 (en) Systems and methods for input/output virtualization
US8606975B2 (en) Managing interrupts in a virtualized input/output device supporting multiple hosts and functions
US11940933B2 (en) Cross address-space bridging
US9747233B2 (en) Facilitating routing by selectively aggregating contiguous data units
US11863469B2 (en) Utilizing coherently attached interfaces in a network stack framework
US11741039B2 (en) Peripheral component interconnect express device and method of operating the same
Mahabaleshwarkar et al. TCP/IP protocol accelaration
Kong et al. PCI express System Interconnect Software Architecture for x86-based Systems

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