CN106605399B - 用于将虚拟服务端点卸载到网络接口卡的技术 - Google Patents
用于将虚拟服务端点卸载到网络接口卡的技术 Download PDFInfo
- Publication number
- CN106605399B CN106605399B CN201580045461.3A CN201580045461A CN106605399B CN 106605399 B CN106605399 B CN 106605399B CN 201580045461 A CN201580045461 A CN 201580045461A CN 106605399 B CN106605399 B CN 106605399B
- Authority
- CN
- China
- Prior art keywords
- network
- virtual
- computing device
- offloaded
- service endpoint
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/122—Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
用于卸载虚拟服务端点能力的技术包括计算节点和网络控制器。计算设备的设备驱动器可以发现所述计算设备的网络接口卡的已卸载的虚拟服务端点能力。所述设备驱动器可以将所述已卸载的虚拟服务端点能力通告给网络代理以及由所述计算设备提供的虚拟网络功能。可以将带外标签与所述已卸载的虚拟服务端点相关联,以便标识待由所述已卸载的虚拟服务端点处理的网络分组。所述网络代理可以基于从所述网络控制器处接收的网络流信息来将流条目添加到所述计算设备的网络交换机的转发表中。所述网络代理还可以基于所述带外标签来将所述所添加的流条目与所述已卸载的虚拟服务端点相关联,并且基于所述网络流信息来配置所述已卸载的虚拟服务端点。
Description
相关美国专利申请的交叉引用
本申请要求于2014年9月25日提交的题为“TECHNOLOGIES FOROFFLOADING AVIRTUAL SERVICE ENDPOINT TO A NETWORKINTERFACE CARD(用于将虚拟服务端点卸载到网络接口卡的技术)”的美国实用新型专利申请序列号14/496,417的优先权。
背景技术
电信和其他数据网络功能被逐渐虚拟化并合并到网络服务器中。例如,如分组交换、分组过滤和入侵检测等在历史上已经由专用或专有硬件设备提供的网络功能现在由在成品服务器、台式计算机、网络交换机以及基于工作负荷需要而被实时地实例化的其他设备上执行的虚拟机进行虚拟化并提供。然而,每一个虚拟化的网络功能基于所提供的特定网络功能而需要不同的开销量。例如,相比执行网络缓存的虚拟化网络功能所需要的每分组开销量,对从远程计算设备处接收的网络分组执行深度分组检测的虚拟化网络功能可能需要更多的每分组开销。
在网络服务提供商当中的增长趋势将会把虚拟化的网络功能链接在一起,以便基于客户需要而提供定制化的网络服务供应,而无需要求客户购买和/或安装专用或专有硬件设备。例如,服务提供商可以限定单独的虚拟化网络安全功能(例如,虚拟化防火墙功能、虚拟化入侵检测功能等)链,所述虚拟化网络安全功能中的每一个都被配置成用于以特定顺序来处理从远程计算设备处接收的网络分组。基于客户工作负荷需要和/或与在所述链中限定的虚拟化网络功能中的每一个虚拟化网络功能相关联的每分组开销,可以将特定虚拟化网络功能的多个实例实例化。然而,这种实践将附加复杂性引入到了通过单独的虚拟化网络功能链来引导网络分组所需的转发决策中。
附图说明
在附图中,以示例的方式而非限制的方式来展示在本文中所描述的概念。为了说明的简单和清晰起见,在附图中所展示的元件不一定按比例绘制。在认为适当的情况下,在附图当中重复参考标号以表示相应或相似的元件。
图1是一种用于将虚拟服务端点卸载到网络设备的网络接口卡的系统的至少一个实施例的简化框图;
图2是图1的系统的计算设备的环境的至少一个实施例的简化框图;
图3是可由图1的系统的计算设备执行的一种用于将虚拟服务端点卸载到网络接口卡的方法的至少一个实施例的简化流程图;以及
图4是可由图1的系统的计算设备执行的一种用于使用已卸载虚拟服务端点来处理网络分组的方法的至少一个实施例的简化流程图。
具体实施方式
虽然本公开的概念易于经历各种修改和替代形式,但是在附图中已经通过示例的方式来示出了其特定实施例并且将在本文中详细地对其进行描述。然而,应当理解的是,并不旨在将本公开的概念限制于所公开的特定形式,而相反,意图是覆盖与本公开和所附权利要求书一致的所有修改型式、等效型式和替代型式。
在说明书中提到的“一个实施例”、“实施例”、“说明性施例”等指示所描述的实施例可以包括特定特征、结构或特性,但每一个实施例可能或者可能不一定包括该特定特征、结构或特性。此外,这种短语不一定指相同的实施例。此外,当关于实施例而描述了特定特征、结构或特性时,所认为的是,无论是否进行了明确描述,关于其他实施例来实现这种特征、结构或特性都在本领域技术人员的知识内。另外,应当理解的是,包括在采用“A、B和C中的至少一者”的形式的列表中的项目可以指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B、和C)。类似地,采用“A、B或C中的至少一个”的形式来列出的项目可以指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
在一些情况下,可以在硬件、固件、软件或其任何组合中实施所公开的实施例。所公开的实施例还可以实施为一个或多个瞬态或非瞬态机器可读(例如,计算机可读)存储介质所携带或存储在其上的指令,所述指令可以由一个或多个处理器读取和执行。机器可读存储介质可以具体化为任何存储设备、机制、或用于存储或传输采用机器可读形式的信息的其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。
在附图中,可以采用特定安排和/或排序来示出一些结构特征或方法特征。然而,应当理解的是,可能不需要这种特定的安排和/或排序。相反,在一些实施例中,可以采用与在说明性附图中所示出的方式和/或顺序不同的方式和/或顺序来安排这种特征。另外,在具体的图中包括结构性特征或方法特征并不意味着暗示在所有实施例中都需要这种特征,并且在某些实施例中,可以不包括这种特征或者这种特征可以与其他特征组合。
现参照图1,在说明性实施例中,用于卸载虚拟服务端点的系统100包括计算设备110、网络控制器140和远程计算设备150,上述设备中的每一个设备可能能够经由网络160通信并在软件定义联网(SDN)环境和/或网络功能虚拟化(NFV)环境中进行操作。如以下更加详细地讨论的,计算设备110对一个或多个虚拟机进行实例化,以便根据服务功能链执行任何数量的计算任务或工作负荷(例如,虚拟网络功能或服务)。服务功能链定义或以其他方式指定虚拟网络功能或服务(例如,防火墙服务、网络地址转换服务、负载均衡服务、深度分组检测服务、TCP优化服务等)的有序集合(例如,序列等),将对从远程计算设备(如例如,远程计算设备150)处接收的网络分组执行所述虚拟网络功能或服务。在操作中,在所接收的网络分组已经被一个虚拟网络功能处理之后,它必须被转发到下一个虚拟网络功能,以便基于由服务功能链定义的顺序进行处理。
在说明性实施例中,计算设备110被配置成用于将分组转发决策的一部分(例如,子集等)从计算设备110的网络交换机126(例如,虚拟交换机或硬件交换机)卸载到计算设备110的网络接口卡122的虚拟服务端点(例如,已卸载虚拟服务端点124)上。为此,网络接口卡122通告已卸载虚拟服务端点能力。响应于发现网络接口卡122的已卸载虚拟服务端点能力,由计算设备110执行的网络代理使已卸载虚拟服务端点124与带外标签相关联。如以下更加详细地讨论的,带外标签由已卸载虚拟服务端点(VSE)124用于标识从计算设备110提供的一个虚拟网络功能处接收的以及将由计算设备110提供的另一个虚拟网络功能根据服务功能链来进行处理的网络分组。在使已卸载VSE 124与带外标签相关联之后,网络代理基于从网络控制器140处接收的网络流信息以及与已卸载VSE 124相关联的带外标签来将网络流添加到网络交换机126的转发表中。在一些实施例中,从网络控制器140处接收的网络流信息至少部分基于由服务功能链指定的虚拟网络功能或服务的有序集合(例如,序列等)。此外,网络代理基于从网络控制器140处接收的网络流信息配置已卸载VSE 124。应当理解的是,通过将分组转发决策的一部分从计算设备110的网络交换机126卸载到已卸载VSE 124上,释放了许多处理周期并使其可供虚拟机用于执行其他计算任务或工作负荷(例如,虚拟网络功能或服务)。
此外,在说明性实施例中,网络接口卡122的已卸载VSE 124被配置成用于基于由服务功能链指定的顺序将网络分组从一个虚拟网络功能转发至另一个虚拟网络功能。为此,在虚拟网络功能已经完成其对网络分组的处理之后,计算设备110的网络交换机126从虚拟网络功能处接收网络分组。网络交换机126可以基于其转发表或从网络控制器140或另一个控制器(例如,网络功能虚拟化控制器)处接收的信息来判定从其中接收了网络分组的虚拟网络功能是否是将对网络分组执行的或将以其他方式处理网络分组的最后一个虚拟网络功能。响应于确定从其中接收了网络分组的虚拟网络功能不是将对网络分组执行的或将以其他方式处理网络分组的最后一个虚拟网络功能,网络交换机126使用带外标签来标记网络分组进行。然后,由网络交换机126将网络分组转发至已卸载VSE 124,所述已卸载VSE响应于确定网络分组标记有带外标签而标识下一个虚拟网络功能,应当将网络分组转发至所述下一个虚拟网络功能。
计算设备110可以具体化为或以其他方式包括能够执行本文中所描述的功能的任何类型的计算设备,包括但不限于服务器计算机、台式计算机、膝上型计算设备、消费者电子设备、移动计算设备、移动电话、智能电话、平板计算设备、个人数字助理、可穿戴计算设备、智能电视、智能家电和/或其他类型的计算设备。如图1中所示意性地示出的,计算设备110包括处理器112、存储器116、输入/输出(I/O)子系统118、通信电路120和数据存储设备128。当然,在其他实施例中,计算设备110可以包括其他或附加部件,如计算机中常见的部件(例如,各种输入/输出设备)。另外,在某些实施例中,说明性部件中的一个或多个说明性部件可以结合在另一部件中,或以其他方式形成其一部分。例如,在某些实施例中,存储器116或其部分可以结合在处理器112中。
处理器112可以具体化为能够执行在本文中所描述的功能的任何类型的处理器。例如,在一些实施例中,处理器112可以具体化为单核处理器、数字信号处理器、微控制器、或其他处理器或处理/控制电路。在其他实施例中,如图1中所示意性地示出的实施例,处理器112可以具体化为具有多个处理器核114的多核处理器。在这种实施例中,处理器112的每个处理器核114能够执行一个或多个应用。
在一些实施例中,处理器112可以包括基于硬件的、硬件辅助的或硬件加速的虚拟化支持,如例如,虚拟机扩展(VMX)支持。在这种实施例中,VMX支持通过提供两种执行模式来促进对操作系统的虚拟化执行:VMX根模式和VMX非根模式。VMX根模式允许执行软件具有对计算设备110及其硬件资源的广泛控制。因此,虚拟机监视器(VMM)或管理程序可以在VMX根模式下执行。VMX非根模式限制访问某些硬件指令,同时仍实施处理器112的普通环/特权系统。由此,一个或多个客户虚拟机(VM)和/或操作系统(OS)可以在VMX非根模式下执行。类似于在没有虚拟化的情况下的执行,那些客户OS可以在环零中执行。VMX支持可以具体化为例如VT-x技术。
存储器116可以具体化为能够执行在本文中所描述的功能的任何类型的易失性或非易失性存储器或数据存储设备。在操作中,存储器116可以存储在对计算设备110的操作期间所使用的各种数据和软件,如操作系统、应用、程序、库、和驱动器。存储器116经由I/O子系统118通信地耦合至处理器112,所述I/O子系统可以具体化为用于促进与计算设备110的处理器112、存储器116、以及其他部件的输入/输出操作的电路和/或部件。例如,I/O子系统118可以具体化为或以其他方式包括用于促进输入/输出操作的存储器控制器中枢、输入/输出控制中枢、固件设备、通信链路(即,点到点链路、总线链路、线、电缆、光导、印刷电路板迹线等)和/或其他部件和子系统。在一些实施例中,I/O子系统118可以形成片上系统(SoC)的一部分并且可以与计算设备110的处理器112、存储器116以及其他部件一起被结合在单个集成电路芯片上。
计算设备110的通信电路120可以具体化为能够使得能够在计算设备110、网络控制器140、远程计算设备150和/或其他计算设备之间经由如网络160等一个或多个通信网络(例如,局域网、个域网、广域网、蜂窝网络、全球网(如互联网)等)来进行通信的任何类型的通信电路、设备或其集合。通信电路120可以被配置成用于使用任何一种或多种通信技术(例如,无线或有线通信)以及相关联的协议(例如,以太网、WiMAX等)来实现这种通信。在说明性实施例中,通信电路120包括网络接口卡122,所述网络接口卡被配置成用于将计算设备110通信地耦合至网络控制器140、远程计算设备150和/或任何其他计算设备。如以下更加详细地讨论的,计算设备110的网络接口卡122包括或以其他方式提供已卸载虚拟服务端点(VSE)124。在一些实施例中,已卸载VSE 124被配置成用于确定虚拟网络功能链中用于处理从远程计算设备150和/或另一个虚拟网络功能处接收的网络分组的下一个虚拟网络功能。
计算设备110的网络交换机126可以具体化为能够使得能够在计算设备110的部件和/或模块(例如,端口、虚拟机等)之间通信并转发网络分组的任何类型的通信电路、设备、硬件逻辑、固件、软件和/或其集合或组合。例如,在一些实施例中,网络交换机126可以具体化为包括在或以其他方式嵌入在计算设备110的通信电路120和/或网络接口卡122中的硬件交换机。另外地或可替代地,网络交换机126可以具体化为虚拟或软件交换机(例如,图2中示意性地示出的虚拟交换机220)。不管网络交换机的具体类型是什么,计算设备110的网络交换机126可能能够在软件定义联网(SDN)环境和/或网络功能虚拟化(NFV)环境中进行操作。如此,网络交换机126可以与转发表相关联,所述转发表包括响应于从网络控制器140处接收的网络流信息而添加的网络流条目。
数据存储设备128可以具体化为被配置成用于对数据进行短期或长期存储的任何类型的一种或多种设备,如例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。例如,数据存储设备128可以被配置成用于存储待由计算设备110初始化和/或执行的操作系统130。在一些实施例中,可以在操作期间为了更快的处理和/或任何其他原因而将操作系统130的部分复制到存储器116中。
网络控制器140可以具体化为或以其他方式包括能够执行本文中所描述的功能的任何类型的计算设备,包括但不限于服务器计算机、台式计算机、膝上型计算设备、消费者电子设备、移动计算设备、移动电话、智能电话、平板计算设备、个人数字助理、可穿戴计算设备、智能电视、智能家电和/或其他类型的计算或联网设备。如此,网络控制器140可以包括网络控制器或类似计算设备中常见的设备和结构,如处理器、存储器设备、通信电路和数据存储设备,为了描述的清晰性,这些设备和结构均未在图1中示出。在说明性实施例中,网络控制器140能够在软件定义联网(SDN)环境和/或网络功能虚拟化(NFV)环境中进行操作。如此,网络控制器140可以向计算设备110和/或能够在SDN环境和/或NFV环境中进行操作的其他计算设备发送(例如,传输等)网络流信息。例如,网络控制器140可以传输网络流信息,如例如,与网络流相关联的网络分组的流标识符和流元组(例如,源IP地址、源端口号、目的IP地址、目的端口号和协议)。在一些实施例中,由网络控制器140传输的网络流信息包括标识针对与网络流相关联的网络分组的源和目的虚拟网络功能(例如,图2中示出的虚拟网络功能210)和/或虚拟机(例如,图2中示出的虚拟机204)的标识信息。
远程计算设备150可以具体化为或以其他方式包括能够执行本文中所描述的功能的任何类型的计算设备,包括但不限于台式计算机、膝上型计算设备、服务器计算机、消费者电子设备、移动计算设备、移动电话、智能电话、平板计算设备、个人数字助理、可穿戴计算设备、智能电视、智能家电和/或其他类型的计算设备。如此,远程计算设备150可以包括计算设备中常见的设备和结构,如处理器、存储器设备、通信电路和数据存储设备,为了描述的清晰性,这些设备和结构均未在图1中示出。在一些实施例中,远程计算设备150可以被配置成用于将网络分组传输至计算设备110/从其中接收网络分组。
现在参照图2,在使用时,计算设备110在操作期间建立环境200。说明性环境200包括操作系统130、虚拟机监视器(VMM)202、一个或多个虚拟机(VM)204、设备驱动器逻辑216、网络代理模块218、网络接口卡122和已卸载VSE 124。尽管被展示为包括两个VM 204(例如,虚拟机(1)206和虚拟机(n)208),但应当理解的是,其他实施例可以包括附加VM 204。如所讨论的,在一些实施例中,网络交换机126具体化为虚拟或软件交换机。在这种实施例中,操作系统130包括虚拟交换机220。此外,在一些实施例中,已卸载VSE 124包括帧解析器模块222、散列计算模块224、下一跳确定模块226和虚拟服务端点管理模块228。环境200的模块、逻辑和其他部件中的每一者可以具体化为硬件、软件、固件或其组合。例如,环境200的模块、逻辑和其他部件中的每一者可以形成计算设备110的处理器112或其他硬件部件的一部分或以其他方式由所述计算设备的所述处理器或所述其他硬件部件建立。应当理解的是,计算设备110可以包括计算设备中常见的其他部件、子部件、模块和设备,为了描述的清晰性,这些均未在图2中展示。
虚拟机监视器(VMM)202或管理程序可以具体化为任何虚拟机监视器、管理程序、专用操作系统或允许和管理在计算设备110上对多个虚拟化工作负荷的执行的其他部件。例如,VMM 202允许多个客户操作系统和/或其他应用在计算设备110上同时执行。在说明性实施例中,VMM 202在计算设备110的特权或根模式下执行,并且实质上具有对计算设备110的硬件资源的完全控制。
虚拟机(VM)204(例如,虚拟机(1)206和虚拟机(n)208)中的每个虚拟机在VMM 202上被执行为客户。也就是说,VM 204在非特权或非根模式下执行。VM 204中的每个VM被配置成用于对从远程计算设备150和/或在VMM 202上执行的另一个虚拟机(VM)204处接收的网络分组执行计算工作负荷,如网络功能虚拟化(NFV)工作负荷。为此,每个虚拟机(VM)204包括被配置成用于处理或以其他方式对所接收的网络分组执行特定服务或功能的虚拟网络功能210。例如,除了其他服务以外,每个虚拟网络功能210可以提供或对从远程计算设备150和/或另一个虚拟网络功能210处接收的网络分组执行一个或多个防火墙服务、网络地址转换服务、负载均衡服务、深度分组检测服务、和/或TCP优化服务。尽管被展示为包括两个VM 204(例如,虚拟机(1)206和虚拟机(n)208),但应当理解的是,其他实施例可以包括附加VM 204。在一些实施例中,在由一个虚拟网络功能210(例如,虚拟网络功能(1)212)处理网络分组之后,基于虚拟网络功能210或服务的链或有序集合(例如,序列等)来将网络分组转发至另一个虚拟网络功能210(例如,虚拟网络功能(n)214)。在这种实施例中,虚拟网络功能210中的每个虚拟网络功能被配置成用于将经处理的网络分组转发至计算设备110的网络交换机126(例如,虚拟交换机220和/或硬件交换机)。如以下更加详细地讨论的,将分组转发决策的一部分从网络交换机126卸载到网络接口卡122的已卸载虚拟服务端点(VSE)124上。
操作系统(OS)130可以具体化为任何类型的OS或其他类似的指令集合,以便执行功能和/或提供本文中描述的特征。例如,在各种实施例中,OS 130可以具体化为可以从华盛顿雷德蒙德州的微软公司商购获得的版本、Linux版本(包括可以从加利福尼亚州山景城的谷歌公司商购获得的AndroidTM)、可以从加利福尼亚州库比蒂诺的苹果公司商购获得的OS(版本)、和/或任何其他类型的OS 130。在使用时,OS 130可以管理由计算设备110执行的一个或多个应用的硬件和软件资源。在一些实施例中,OS 130可以被配置成用于经由设备驱动器逻辑216与网络接口卡122通信和/或交互。例如,在由计算设备110进行的对OS 130的初始化期间,OS 130(经由相关联的OS加载程序或其他部件)可以初始化和/或加载设备驱动器逻辑216,所述设备驱动器逻辑可以被配置成用于使OS 130能够与网络接口卡122和/或网络接口卡122的已卸载VSE 124进行交互和/或通信。
如所讨论的,设备驱动器逻辑216可以由操作系统(OS)130初始化,并且可以被配置成用于与网络接口卡122和网络代理模块218进行交互或以其他方式接口连接。在说明性实施例中,设备驱动器逻辑216被配置成用于发现网络接口卡122的已卸载VSE能力。也就是说,设备驱动器逻辑216被配置成用于发现嵌入或以其它方式包括在网络接口卡122内的已卸载VSE 124。如所讨论的,在一些实施例中,网络接口卡122被配置成用于向计算设备110的器件和/或部件(例如,硬件设备、逻辑、驱动器、模块、虚拟机、工作负荷控制器、操作系统等)通告其包括已卸载VSE能力。在这种实施例中,设备驱动器逻辑216可以被配置成用于响应于从网络接口卡122处接收消息和/或信号而发现已卸载VSE能力。另外地或可替代地,设备驱动器逻辑216可以被配置成用于响应于检查网络接口卡122和/或计算设备110的一个或多个寄存器指示网络接口卡122包括已卸载VSE能力而发现已卸载VSE能力。
响应于发现已卸载VSE能力,设备驱动器逻辑216还被配置成用于将网络接口卡122的已卸载VSE能力通告给网络代理模块218。此外,在一些实施例中,设备驱动器逻辑216还可以将网络接口卡122的已卸载VSE能力通告给虚拟网络功能210中的一个或多个虚拟网络功能。应当理解的是,设备驱动器逻辑216可以被配置成用于将网络接口卡122的VSE能力通告给计算设备110的任何其他器件或部件(例如,硬件设备、逻辑、驱动器、模块、虚拟机、工作负荷控制器、操作系统等)。
设备驱动器逻辑216还被配置成用于关联由计算设备110的器件或部件使用的已卸载VSE,以便标识网络分组,所述网络分组是从一个虚拟网络功能210(例如,虚拟网络功能(1)212)处接收的并且根据服务功能链或待执行的虚拟网络功能的另一个有序集合将由另一个虚拟网络功能210(例如,虚拟网络功能(n)214)来处理。如以下所讨论的,例如,在一些实施例中,已卸载VSE 124被配置成用于对确定包括带外标签的所接收的网络分组执行分组转发过程的一部分(例如,子集等)。在一些实施例中,带外标签可由设备驱动器逻辑216本地生成或者其可以被具体化为预配置标签或参考标签。在其他实施例中,带外标签可以由计算设备110的不同部件和/或器件生成并由设备驱动器逻辑216接收以便与已卸载VSE 124相关联。尽管在说明性实施例中带外标签与已卸载VSE 124相关联,但是任何其他类型的标签或标识符可以与已卸载VSE 124相关联。
设备驱动器逻辑216还被配置成用于将与已卸载VSE 124相关联的带外标签传输至计算设备110的一个或多个器件和/或部件(例如,硬件设备、逻辑、驱动器、模块、虚拟机、工作负荷控制器、操作系统等),以便促进分组转发决策。例如,在说明性实施例中,设备驱动器逻辑216被配置成用于将带外标签传输至网络代理模块218。如以下所讨论的,在一些实施例中,网络代理模块218将带外标签传输至网络控制器140,以便促进未来转发决策。应当理解的是,设备驱动器逻辑216还可以被配置成用于将任何类型的信息传输至网络代理模块218,以供随后传输至网络控制器140并用于促进分组转发决策。
网络代理模块218可以由操作系统(OS)130初始化,并且可以被配置成用于与网络控制器140进行交互或以其他方式接口连接。例如,在说明性实施例中,网络代理模块218被配置成用于从网络控制器140处接收与网络流相关联的网络流信息。网络流信息可以指示特定虚拟网络功能210,应当将与网络流相关联的网络分组转发至所述特定虚拟网络功能。另外地或可替代地,网络流信息可以指示不同计算设备(例如,经由网络160通信地耦合至计算设备110的不同计算设备),应将与网络流相关联的网络分组转发至所述不同计算设备。从网络控制器140处接收的网络流信息包括与特定网络流相对应的流标识符和流元组(例如,源IP地址、源端口号、目的IP地址、目的端口号和协议)。应当理解的是,网络流信息可以包括对应于特定网络流的任何其他类型或组合的信息。例如,在一些实施例中,从网络控制器140处接收的网络流信息还可以包括标识用于与特定网络流相关联的网络分组的目的和/或下一个虚拟网络功能210和/或VM 204。另外地或可替代地,从网络控制器140处接收的网络流信息还可以包括与已卸载VSE 124相关联的带外标签。在一些实施例中,网络代理模块218具体化为由计算设备110的OS 130和/或另一个部件执行的软件定义联网(SDN)代理。
在一些实施例中,网络代理模块218可以被配置成用于从网络控制器140处接收网络流信息作为一个或多个开放流(OpenFlow)消息。另外地或可替代地,网络代理模块218可以被配置成用于从网络控制器140处接收网络信息作为一个或多个简单对象存取协议(SOAP)消息。当然,应当理解的是,任何其他合适的消息和/或通知协议(例如,代表性状态传输(REST)消息、可扩展标记语言(XML)等)可以由网络代理模块218用于从网络控制器140处接收网络流信息。
网络代理模块218还被配置成用于与计算设备110的网络交换机126进行交互或以其他方式接口连接。如以下所讨论的,例如,在一些实施例中,计算设备110包括虚拟交换机220。在这种实施例中,网络代理模块218被配置成用于基于从网络控制器140处接收的网络流信息来与虚拟交换机220进行交互或以其他方式接口连接。另外地或可替代地,在计算设备110包括硬件交换机的实施例中,网络代理模块218被配置成用于基于从网络控制器140处接收的网络流信息来与硬件交换机进行交互或以其他方式接口连接。不论计算设备110包括的网络交换机126(例如,虚拟交换机220或硬件交换机)的类型,网络代理模块218都被配置成用于将一个或多个网络流条目添加到与网络交换机126相关联的转发表中。添加到转发表中的网络流条目包括流标识符、流元组、和/或与特定网络流相对应的任何其他类型或组合的信息。
在一些实施例中,网络代理模块218被配置成用于至少部分地基于或以其他方式根据带外标签来使添加到网络交换机126的转发表中的流条目与已卸载VSE 124关联。在这种实施例中,网络代理模块218将添加到转发表中的一个或多个流条目配置成包括使网络交换机126(例如,虚拟交换机220和/或硬件交换机)使用带外标签来标记匹配网络分组的动作。用于配置添加到转发表中的流条目的动作的带外标签可以从设备驱动器逻辑216和/或从网络控制器140处接收。
网络代理模块218还被配置成用于基于从网络控制器140处接收的网络流信息来更新或以其他方式配置网络接口卡122的已卸载VSE 124。例如,在一些实施例中,网络代理模块218基于从网络控制器140处接收的下一跳信息来配置和/或更新已卸载VSE 124。在这种实施例中,已卸载VSE 124可以利用下一跳信息来确定用于处理确定包括带外标签的特定网络分组的下一个虚拟网络功能210(例如,虚拟网络功能(n)214)。当然,网络代理模块218可以基于从不同控制器(如例如,计算设备110的网络功能虚拟化(NFV)工作负荷控制器)处接收的信息来配置和/或更新已卸载VSE 124。例如,在一些实施例中,网络代理模块218使用一个或多个参考散列值来配置和/或更新已卸载VSE 124,所述参考散列值中的每个参考散列值唯一地标识虚拟网络功能210和/或VM 204中的不同虚拟网络功能和/或VM。在这种实施例中,散列值可以从网络控制器140和/或不同控制器处接收,或者它们可以由网络代理模块218基于从网络控制器140和/或不同控制器处接收的信息生成。如以下更加详细地讨论的,已卸载VSE 124可以基于确定哪个参考散列值与从所接收的网络分组中计算的散列值相匹配来标识用于处理所接收的网络分组的下一个虚拟网络功能210。
如所讨论的,在一些实施例中,OS 130还包括虚拟交换机220。尽管在说明性实施例中虚拟交换机220由操作系统执行,但是虚拟交换机220还可以由计算设备110的其他器件或部件执行或初始化。例如,在一些实施例中,虚拟交换机220可以由VMM 202或VM 204之一执行。虚拟交换机220被配置成用于在计算设备110的部件和/或模块(例如,端口、虚拟机等)之间转发网络分组和/或信息。为此,虚拟交换机220可以与转发表相关联,所述转发表包括响应于从网络控制器140处接收的网络流信息而添加的网络流条目。在一些实施例中,虚拟交换机220能够在软件定义联网(SDN)环境和/或网络功能虚拟化(NFV)环境中进行操作。应当理解的是,在网络交换机126相反被具体化为硬件交换机的实施例中,硬件交换机可以包括与虚拟交换机220的虚拟化功能类似的功能。
如所讨论的,网络接口卡122包括已卸载VSE 124。已卸载VSE 124被配置成用于将分组转发决策的一部分(例如,子集等)从计算设备110的网络交换机126(例如,虚拟交换机220和/或硬件交换机)处卸载。也就是说,已卸载VSE 124被配置成用于代替网络交换机126执行针对从虚拟网络功能210处接收的网络分组的分组转发决策的一部分。应当理解的是,通过将转发决策的一部分从网络交换机126(如例如,虚拟交换机220)卸载到已卸载VSE124上,释放了许多处理周期并使其可供VM 204用于执行其他计算任务或工作负荷(例如,虚拟网络功能或服务)。
为了促进将转发决策的一部分从网络交换机126处卸载,已卸载VSE 124被配置成用于判定从网络交换机126(例如,虚拟交换机220和/或硬件交换机)处接收的网络分组是否标记有或以其他方式与带外标签相关联。为此,在一些实施例中,已卸载VSE 124包括帧解析器模块222。已卸载VSE 124的帧解析器模块222被配置成用于提取从网络交换机126处接收的网络分组的一个或多个报头字段。例如,在一些实施例中,帧解析器模块222被配置成用于从网络分组中提取5元组和/或包括OSI层信息或数据(例如,数据链路层信息、网络层信息、传输层信息、会话层信息、表示层信息和/或应用层信息)的各种其他报头字段。在一些实施例中,已卸载VSE 124被配置成用于检查所提取的(多个)报头字段,以便判定网络分组是否标记有或以其他形式与带外标签相关联。如果已卸载VSE 124确定网络分组标记有带外标签,则所需要的针对网络分组的分组转发决策由已卸载VSE 124而不是网络交换机126做出。在这种情况下,已卸载VSE 124被配置成用于确定虚拟网络功能链中用于处理或以其他方式对从网络交换机126处接收的以及标记有带外标签的网络分组执行的下一个虚拟网络功能210(例如,虚拟网络功能(n)214)。
在一些实施例中,已卸载VSE 124包括散列计算模块224和下一跳确定模块226,所述下一跳确定模块用于促进确定虚拟网络功能链中用于处理或以其他方式对从网络交换机126处接收的网络分组执行的下一个虚拟网络功能210(例如,虚拟网络功能(n)214)。在这种实施例中,散列计算模块224被配置成用于基于由帧解析器模块222从网络分组中提取的(多个)报头字段来计算散列值。然后,下一跳确定模块226被配置成用于利用所计算的散列值来确定虚拟网络功能链中用于处理或以其他方式对从网络交换机126处接收的网络分组执行的下一个虚拟网络功能210(例如,虚拟网络功能(n)214)。为此,在一些实施例中,下一跳确定模块226被配置成用于将所计算的散列值与各种参考散列值进行比较,所述参考散列值中的每个参考散列值唯一地标识虚拟网络功能210和/或VM 204中的不同虚拟网络功能和/或VM。在这种实施例中,下一跳确定模块226被配置成用于基于确定哪个参考散列值与所计算的散列值相匹配来标识用于处理网络分组的下一个虚拟网络功能210。如所讨论的,参考散列值可以从网络代理模块218处接收。
已卸载VSE 124还被配置成用于转发从网络交换机126处接收的网络分组。例如,在从网络交换机126处接收的网络分组标记有带外标签的实施例中,已卸载VSE 124被配置成用于将网络分组转发至已标识的下一个虚拟网络功能210(例如,虚拟网络功能(n)214)。此外,在从网络交换机126处接收的网络分组未标记有带外标签的实施例中,已卸载VSE124被配置成用于将网络分组转发至不同的计算设备(例如,经由网络160通信地耦合至计算设备110的不同计算设备)。
在一些实施例中,已卸载VSE 124还包括VSE管理模块228。在这种实施例中,VSE管理模块228被配置成用于将更新的网络通信量(traffic)统计传输至网络代理模块218,所述网络代理模块可以进而将更新的网络通信量统计传输至网络控制器140。应当理解的是,更新的通信量统计可以由网络控制器140、网络代理模块218和/或已卸载VSE 124用于做出未来转发决策。
现在参照图3,计算设备110可以执行用于将虚拟服务端点(VSE)能力卸载到网络接口卡122的已卸载虚拟服务端点124上的方法300。方法300开始于框302,在所述框中,网络接口卡122将已卸载VSE能力通告给计算设备110的器件和/或部件(例如,硬件设备、逻辑、驱动器、模块、虚拟机、工作负荷控制器、操作系统等)。也就是说,网络接口卡122通告其包括已卸载VSE 124。为此,在一些实施例中,网络接口卡122生成指示其包括已卸载VSE能力的通知消息或信号。在这种实施例中,在系统初始化时(例如,在启动进程期间)和/或响应于计算设备110的各种器件和部件的请求或轮询而可以将通知消息或信号传输至计算设备110的所述器件和部件。另外地或可替代地,网络接口卡122或者计算设备110的另一个部件(例如,BIOS子系统、处理器112、I/O子系统118等)可以将网络接口卡122和/或计算设备110的一个或多个寄存器设置成或以其他方式配置成用于指示网络接口卡122包括已卸载VSE能力。可以在启动进程期间、在启动进程之前、和/或在可能配置寄存器的任何其他时间设置或配置这种寄存器。
在框304中,计算设备110的设备驱动器逻辑216发现网络接口卡122的已卸载VSE能力。为此,在一些实施例中,设备驱动器逻辑216可以如以上所讨论的从通告已卸载VSE能力的网络接口卡122处接收通知消息或信号。在计算设备110的网络接口卡122和/或另一个部件配置寄存器的实施例中,设备驱动器逻辑216可以被配置成用于检查寄存器,以便发现网络接口卡122的已卸载VSE能力。
在框306中,设备驱动器逻辑216将网络接口卡122的已卸载VSE能力通告给网络代理模块218(例如,软件定义联网代理)。如所讨论的,网络代理模块218可由OS 130、VMM202、虚拟交换机220、和/或计算设备110的任何其他部件或器件执行。在一些实施例中,设备驱动器逻辑216还将网络接口卡122的已卸载VSE能力通告给(多个)虚拟网络功能210和/或(多个)虚拟机204。
在框308中,设备驱动器逻辑216使已卸载VSE 124与带外标签相关联。如以下所讨论的,带外标签由已卸载VSE 124用于标识从一个虚拟网络功能210(例如,虚拟网络功能(1)212)处接收的并且将由另一个虚拟网络功能210(例如,虚拟网络功能(n)214)根据服务功能链来进行处理的网络分组。带外标签可由设备驱动器逻辑216生成并且/或者其可以被具体化为预配置标签或参考标签。
在使带外标签与已卸载VSE 124相关联之后,在框310中,设备驱动器逻辑216将带外标签传输至网络代理模块218。在一些实施例中,网络代理模块218将带外标签转发至网络控制器140,以便促进未来转发决策。应当理解的是,设备驱动器逻辑216还可以将任何其他类型的信息传输至网络代理模块218,以供随后传输至网络控制器140并用于未来转发决策。
在框312中,计算设备110的网络代理模块218从网络控制器140(例如,软件定义联网控制器)处接收与网络流相关联的网络流信息。网络流信息可以指示特定虚拟网络功能210,应当将与网络流相关联的网络分组转发至所述特定虚拟网络功能。另外地或可替代地,网络流信息可以指示不同计算设备(例如,经由网络160通信地耦合至计算设备110的不同计算设备),应将与网络流相关联的网络分组转发至所述不同计算设备。在一些实施例中,从网络控制器140处接收的网络流信息包括与网络流相对应的流标识符和流元组(例如,源IP地址、源端口号、目的IP地址、目的端口号、和协议)。应当理解的是,网络流信息可以包括对应于特定网络流的任何其他类型或组合的信息。例如,在一些实施例中,从网络控制器140处接收的网络流信息还可以包括标识用于与网络流相关联的网络分组的目的和/或下一个虚拟网络功能210和/或虚拟机(VM)204。另外地或可替代地,从网络控制器140处接收的网络流信息还可以包括与已卸载VSE 124相关联的带外标签。
在框314中,网络代理模块218将一个或多个流条目添加到与计算设备110的网络交换机126相关联的转发表中。如所讨论的,计算设备110的网络交换机126可以被具体化为由VMM 202、计算设备110的OS 130、和/或计算设备110的不同虚拟机(VM)204执行的虚拟交换机220。另外地或可替代地,计算设备110的网络交换机126可以被具体化为硬件交换机,所述硬件交换机可以嵌入或者以其他方式包括在网络接口卡122和/或通信电路120中。添加到转发表中的网络流条目包括流标识符、流元组、和/或与特定网络流相对应的任何其他类型或组合的信息。
在一些实施例中,在框316中,网络代理模块218基于带外标签来使流条目与已卸载VSE 124相关联。在这种实施例中,网络代理模块218将添加到转发表中的一个或多个流条目配置成包括使网络交换机126(例如,虚拟交换机220和/或硬件交换机)使用带外标签来标记匹配网络分组的动作。用于配置添加到转发表中的流条目的动作的带外标签可以从设备驱动器逻辑216和/或从网络控制器140处接收。
在框318中,网络代理模块218基于从网络控制器140处接收的网络流信息来配置已卸载VSE 124。例如,在一些实施例中,网络代理模块218基于从网络控制器140处接收的下一跳信息来配置和/或更新已卸载VSE 124。另外地或可替代地,网络代理模块218基于从不同控制器(如例如,NFV控制器)处接收的信息来配置和/或更新已卸载VSE 124。在一些实施例中,网络代理模块218使用一个或多个参考散列值来配置和/或更新已卸载VSE 124,所述参考散列值中的每一个参考散列值唯一地标识虚拟网络功能210和/或VM 204中的不同虚拟网络功能和/或VM。在这种实施例中,散列值可以从网络控制器140和/或不同控制器处接收,或者它们可以由网络代理模块218基于从网络控制器140和/或不同控制器处接收的信息生成。如以下更加详细地讨论的,已卸载VSE 124可以基于确定哪个参考散列值与从所接收的网络分组中计算的散列值相匹配来标识用于处理所接收的网络分组的下一个虚拟网络功能210。
现在参照图4,计算设备110可以使用已卸载虚拟服务端点(VSE)124来执行用于对网络分组进行虚拟网络功能处理的方法400。方法400开始于框402,在所述框中,第一个/下一个虚拟网络功能210处理从远程计算设备150处接收的网络分组。应当理解的是,在对方法400的第一次迭代期间,虚拟网络功能210链中的第一虚拟网络功能210(例如,虚拟网络功能(1)212)处理从远程计算设备150处接收的网络分组。如以上所讨论的,虚拟网络功能210链(例如,服务功能链)可以处理或以其他方式对所接收的网络分组执行特定服务或功能。例如,除了其他服务以外,每个虚拟网络功能210可以提供或对从远程计算设备150和/或另一个虚拟网络功能210处接收的网络分组执行一个或多个防火墙服务、网络地址转换服务、负载均衡服务、深度分组检测服务、和/或TCP优化服务。在第一个/下一个虚拟网络功能210(例如,在第一次迭代期间的虚拟网络功能(1)212)处理网络分组之后,方法400前进到框404,在所述框中,第一个/下一个虚拟网络功能210将网络分组转发至计算设备110的网络交换机126。计算设备110的网络交换机126可以被具体化为由VMM 202、计算设备110的OS 130、和/或计算设备110的不同VM 204执行的虚拟交换机220。另外地或可替代地,计算设备110的网络交换机126可以被具体化为硬件交换机,所述硬件交换机可以嵌入或者以其他方式包括在网络接口卡122和/或通信电路120中。
在决策框406中,网络交换机126(例如,虚拟交换机220和/或硬件交换机)判定从其中接收了网络分组的第一个/下一个虚拟网络功能210(例如,在第一次迭代期间的虚拟网络功能(1)212)是否为要对网络分组执行的或者要以其他方式处理网络分组的最后一个虚拟网络功能。为此,在一些实施例中,网络交换机126可以将所接收的网络分组的报头字段与转发表进行比较,所述转发表可以包括响应于从网络控制器140处接收的网络流信息而添加的网络流条目。另外地或可替代地,网络交换机126(例如,虚拟交换机220和/或硬件交换机)可以判定从其中接收了网络分组的第一个/下一个虚拟网络功能210是否为要基于从不同控制器(如例如,NFV控制器)处接收的信息来执行的最后一个虚拟网络功能。在决策框406中,如果网络交换机126确定从其中接收了网络分组的第一个/下一个虚拟网络功能210(例如,在第一次迭代期间的虚拟网络功能(1)212)为要执行的最后一个虚拟网络功能,则方法400前进到框410。然而,如果网络交换机126确定从其中接收了网络分组的第一个/下一个虚拟网络功能210不是要执行的最后一个虚拟网络功能,则方法400前进到框408。
在框408中,网络交换机126(例如,虚拟交换机220和/或硬件交换机)使用带外标签来标记从第一个/下一个虚拟网络功能210(例如,在第一次迭代期间的虚拟网络功能(1)212)处接收的网络分组。对于已卸载VSE 124而言,带外标签标识从一个虚拟网络功能210(例如,虚拟网络功能(1)212)处接收的并且将由另一个虚拟网络功能210(例如,虚拟网络功能(n)214)处理的网络分组。在标记从第一个/下一个虚拟网络功能210处接收的网络分组之后,方法400前进到框410。
在框410中,网络交换机126(例如,虚拟交换机220和/或硬件交换机)将从第一个/下一个虚拟网络功能210(例如,在第一次迭代期间的虚拟网络功能(1)212)处接收的网络分组转发至已卸载VSE 124,以供进一步处理(例如,确定要执行的下一个虚拟网络功能210、将网络分组转发至另一个计算设备等)。应当理解的是,由网络交换机126转发至已卸载VSE 124的网络分组可以或可以不与如以上在框406和408中所讨论的带外标签相关联。
在决策框412中,已卸载VSE 124判定从第一个/下一个虚拟网络功能210处接收的网络分组是否标记有带外标签。为此,在一些实施例中,已卸载VSE 124检查所接收的网络分组的一个或多个报头字段,以便判定其是否已经被标记。在决策框412中,如果已卸载VSE124确定网络分组未标记有带外标签,则方法400前进到框414,并且已卸载VSE 124将网络分组转发至另一个计算设备(例如,经由网络160通信地耦合至计算设备110的不同计算设备)。然而,如果已卸载VSE 124相反确定网络分组标记有带外标签,则方法400相反前进到框416。
在框416中,计算设备110的已卸载VSE 124确定虚拟网络功能链中用于处理或以其他方式对所接收的网络分组执行的下一个虚拟网络功能210(例如,虚拟网络功能(n)214)。为此,在一些实施例中,已卸载VSE 124基于与所接收的网络分组相关联的报头信息来确定用于处理所接收的网络分组的下一个虚拟网络功能210。在这种实施例中,在框418中,已卸载VSE 124从所接收的网络分组中提取一个或多个报头字段(例如,5元组、各种OSI数据链路层、网络层、传输层、会话层、表示层、和/或应用层报头字段等)。随后,在框420中,已卸载VSE 124基于所提取的报头字段来计算散列值。然后,在框422中,已卸载VSE 124利用所计算的散列值来标识用于处理所接收的网络分组的下一个虚拟网络功能210(例如,虚拟网络功能(n)214)。在一些实施例中,已卸载VSE 124将所计算的散列值与各种参考散列值进行比较,所述参考散列值中的每一个参考散列值唯一地标识虚拟网络功能210和/或VM204中的不同虚拟网络功能和/或VM。在这种实施例中,已卸载VSE 124基于确定哪个参考散列值与所计算的散列值相匹配来标识用于处理网络分组的下一个虚拟网络功能210。如所讨论的,参考散列值可由网络代理模块218基于从网络控制器140处接收的信息(例如,下一跳信息)和/或从不同控制器(例如,NFV工作负荷控制器)处接收的信息来生成。另外地或可替代地,参考散列值可由除了网络代理模块218以外的计算设备和/或部件生成。在这种情况下,所生成的参考散列值可以直接从其他计算设备和/或部件处接收。
在框424中,计算设备110的已卸载VSE 124将所接收的网络分组转发(例如,传输、路由、发送等)至所确定的下一个虚拟网络功能210(例如,虚拟网络功能(n)214)。为此,在一些实施例中,已卸载VSE 124使用下一个虚拟网络功能210(例如,虚拟网络功能(n)214)的MAC地址来替代或以其他方式替换所接收的网络分组的目的MAC地址。如所讨论的,下一个虚拟网络功能210(例如,虚拟网络功能(n)214)可以被配置成用于在接收到网络分组时进一步对其进行处理。
在一些实施例中,在框426中,已卸载VSE 124将更新的网络通信量统计传输至网络代理模块218,所述网络代理可以进而将更新的网络通信量传输至网络控制器140。应当理解的是,更新的通信量统计可由网络控制器140、网络代理模块218和/或已卸载VSE 124用于做出未来转发决策。
示例
以下提供了在本文中所公开的技术的说明性示例。所述技术的实施例可以包括以下所描述的示例中的任何一个或多个示例或者其任何组合。
示例1包括一种用于卸载虚拟服务端点能力的计算设备,所述计算设备包括:网络接口卡,所述网络接口卡用于通告已卸载的虚拟服务端点能力;设备驱动器逻辑,所述设备驱动器逻辑由所述计算设备的操作系统初始化用于:(i)发现由所述网络接口卡通告的所述已卸载的虚拟服务端点能力;(ii)将所述已卸载的虚拟服务端点能力通告给由所述操作系统初始化的网络代理以及在所述计算设备的多个虚拟机上执行的多个虚拟网络功能;以及(iii)使所述网络接口卡的已卸的载虚拟服务端点与带外标签相关联,其中,所述带外标签标识待由所述已卸载的虚拟服务端点处理的网络分组;网络交换机,所述网络交换机用于基于所述网络交换机的转发表来转发网络分组;并且其中,所述网络代理用于:(i)基于从网络控制器处接收的网络流信息来将流条目添加到所述转发表中;(ii)基于所述带外标签来使添加到所述转发表中的所述流条目与所述已卸载的虚拟服务端点相关联;以及(iii)基于所述网络流信息来配置所述网络接口卡的所述已卸载的虚拟服务端点。
示例2包括如示例1所述的主题,并且其中,所述设备驱动器逻辑进一步用于:将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络代理;并且其中,所述网络代理进一步用于:从所述网络控制器处接收所述网络流信息。
示例3包括如示例1和2中任一项所述的主题,并且其中,从所述网络控制器处接收的所述网络流信息包括:流元组,所述流元组指示与网络流相关联的网络分组的来源和目的地;以及下一跳信息,所述下一跳信息标识所述多个虚拟网络功能中用于处理与所述网络流相关联的网络分组的下一个虚拟网络功能。
示例4包括如示例1至3中任一项所述的主题,并且其中,配置所述网络接口卡的所述已卸载的虚拟服务端点包括:基于所述所接收的网络流信息的所述下一跳信息来配置所述网络接口的所述已卸载的虚拟服务端点。
示例5包括如示例1至4中任一项所述的主题,并且其中,所述网络代理进一步用于将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络控制器;并且其中,从所述网络控制器处接收的所述网络流信息进一步包括与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签。
示例6包括如示例1至5中任一项所述的主题,并且进一步包括所述多个虚拟网络功能中用于进行以下各项的虚拟网络功能:(i)处理从远程计算设备处接收的网络分组;以及(ii)将所述网络分组转发至所述计算设备的所述网络交换机;其中,所述网络交换机用于:(i)判定所述虚拟网络功能是否为用于处理所述网络分组的最后一个虚拟网络功能;(ii)响应于确定了所述虚拟网络功能不是用于处理所述网络分组的所述最后一个虚拟网络功能而使用所述带外标签来标记从所述虚拟网络功能处接收的所述网络分组;以及(iii)将所述网络分组转发至所述网络接口卡的所述已卸载的虚拟服务端点;并且其中,所述已卸载的虚拟服务端点用于:(i)判定所述网络分组是否标记有所述带外标签;(ii)响应于确定了所述网络分组标记有所述带外标签而确定所述多个虚拟网络功能中用于处理所述网络分组的下一个虚拟网络功能;以及(iii)将所述网络分组转发至用于处理所述网络分组的所确定的下一个虚拟网络功能。
示例7包括如示例1至6中任一项所述的主题,并且其中,所述已卸载的虚拟服务端点进一步用于:响应于确定了所述网络分组未标记有所述带外标签而将所述网络分组转发至另一个计算设备。
示例8包括如示例1至7中任一项所述的主题,并且其中,确定用于处理所述网络分组的所述下一个虚拟网络功能包括:(i)从所述网络分组中提取网络报头字段;(ii)基于所提取的网络报头字段来计算散列;以及(iii)基于所计算的散列来标识用于处理所述网络分组的所述下一个虚拟网络功能。
示例9包括如示例1至8中任一项所述的主题,并且其中,所述已卸载的虚拟服务端点进一步用于:将与所述已卸载的虚拟服务端点相关联的网络通信量统计传输至所述网络代理,并且其中,所述网络代理进一步用于:将从所述已卸载的虚拟服务端点处接收的所述网络通信量统计传输至所述网络控制器。
示例10包括如示例1至9中任一项所述的主题,并且其中,所述计算设备的所述网络交换机包括所述计算设备的所述网络接口卡的硬件交换机。
示例11包括如示例1至10中任一项所述的主题,并且其中,所述计算设备的所述网络交换机包括由所述计算设备执行的虚拟交换机。
示例12包括如示例1至11中任一项所述的主题,并且其中,所述虚拟交换机由以下各项中的至少一项执行:所述计算设备的虚拟机监视器、所述计算设备的所述操作系统、或者所述多个虚拟机中的虚拟机。
示例13包括一种用于卸载计算设备上的拟服务端点能力的方法,所述方法包括:由所述计算设备的网络接口卡通告已卸载的虚拟服务端点能力;由被所述计算设备的操作系统初始化的设备驱动器逻辑发现由所述网络接口卡通告的所述已卸载的虚拟服务端点能力;由所述设备驱动器逻辑将所述已卸载的虚拟服务端点能力通告给由所述操作系统初始化的网络代理以及在所述计算设备的多个虚拟机上执行的多个虚拟网络功能;由所述设备驱动器逻辑使所述网络接口卡的已卸载的虚拟服务端点与带外标签相关联,其中,所述带外标签标识待由所述已卸载的虚拟服务端点处理的网络分组;由所述网络代理基于从网络控制器处接收的网络流信息来将流条目添加到所述计算设备的网络交换机的转发表中;由所述网络代理基于所述带外标签来使添加到所述转发表中的所述流条目与所述已卸载的虚拟服务端点相关联;以及由所述网络代理基于所述网络流信息来配置所述网络接口卡的所述已卸载的虚拟服务端点。
示例14包括如示例13所述的主题,并且进一步包括:由所述设备驱动器逻辑将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络代理;以及由所述网络代理从所述网络控制器处接收所述网络流信息。
示例15包括如示例13和14中任一项所述的主题,并且其中,从所述网络控制器处接收的所述网络流信息包括:流元组,所述流元组指示与网络流相关联的网络分组的来源和目的地;以及下一跳信息,所述下一跳信息标识所述多个虚拟网络功能中用于处理与所述网络流相关联的网络分组的下一个虚拟网络功能。
示例16包括如示例13至15中任一项所述的主题,并且其中,配置所述网络接口卡的所述已卸载的虚拟服务端点包括:基于所述所接收的网络流信息的所述下一跳信息来配置所述网络接口的所述已卸载的虚拟服务端点。
示例17包括如示例13至16中任一项所述的主题,并且进一步包括:由所述网络代理将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络控制器;并且其中,从所述网络控制器处接收的所述网络流信息进一步包括与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签。
示例18包括如示例13至17中任一项所述的主题,并且进一步包括:由所述多个虚拟网络功能中的虚拟网络功能处理从远程计算设备处接收的网络分组;由所述虚拟网络功能将所述网络分组转发至所述计算设备的所述网络交换机;由所述网络交换机判定所述虚拟网络功能是否为用于处理所述网络分组的最后一个虚拟网络功能;由所述网络交换机响应于确定了所述虚拟网络功能不是用于处理所述网络分组的所述最后一个虚拟网络功能而使用所述带外标签来标记从所述虚拟网络功能处接收的所述网络分组;由所述网络交换机将所述网络分组转发至所述网络接口卡的所述已卸载的虚拟服务端点;由所述已卸载的虚拟服务端点判定所述网络分组是否标记有所述带外标签;由所述已卸载的虚拟服务端点响应于确定了所述网络分组标记有所述带外标签而确定所述多个虚拟网络功能中用于处理所述网络分组的下一个虚拟网络功能;以及由所述已卸载的虚拟服务端点将所述网络分组转发至用于处理所述网络分组的所确定的下一个虚拟网络功能。
示例19包括如示例13至18中任一项所述的主题,并且进一步包括:由所述已卸载的虚拟服务端点响应于确定了所述网络分组未标记有所述带外标签而将所述网络分组转发至另一个计算设备。
示例20包括如示例13至19中任一项所述的主题,并且其中,确定用于处理所述网络分组的所述下一个虚拟网络功能包括:(i)从所述网络分组中提取网络报头字段;(ii)基于所述所提取的网络报头字段来计算散列;以及(iii)基于所计算的散列来标识用于处理所述网络分组的所述下一个虚拟网络功能。
示例21包括如示例13至20中任一项所述的主题,并且进一步包括:由所述已卸载的虚拟服务端点将与所述已卸载的虚拟服务端点相关联的网络通信量统计传输至所述网络代理;以及由所述网络代理将从所述已卸载的虚拟服务端点处接收的所述网络通信量统计传输至所述网络控制器。
示例22包括如示例13至21中任一项所述的主题,并且其中,所述计算设备的所述网络交换机包括所述计算设备的所述网络接口卡的硬件交换机。
示例23包括如示例13至22中任一项所述的主题,并且其中,所述计算设备的所述网络交换机包括由所述计算设备执行的虚拟交换机。
示例24包括如示例13至23中任一项所述的主题,并且其中,所述虚拟交换机由以下各项中的至少一项执行:所述计算设备的虚拟机监视器、所述计算设备的所述操作系统、或者所述多个虚拟机中的虚拟机。
示例25包括一种用于卸载虚拟服务端点能力的计算设备,所述计算设备包括:处理器;存储器,所述存储器具有存储于其中的多条指令,所述多条指令当被所述处理器执行时使所述计算设备执行如示例13至24中任一项所述的方法。
示例26包括一种或多种机器可读介质,具有存储于其上的多条指令,所述多条指令响应于被执行而使计算设备执行如示例13至24中任一项所述的方法。
示例27包括一种用于卸载虚拟服务端点能力的计算设备,所述计算设备包括:用于由所述计算设备的网络接口卡通告已卸载的虚拟服务端点能力的装置;用于由被所述计算设备的操作系统初始化的设备驱动器逻辑发现由所述网络接口卡通告的所述已卸载的虚拟服务端点能力的装置;用于由所述设备驱动器逻辑将所述已卸载的虚拟服务端点能力通告给由所述计算设备的所述操作系统初始化的网络代理以及在所述计算设备的多个虚拟机上执行的多个虚拟网络功能的装置;用于由所述设备驱动器逻辑使所述网络接口卡的已卸载的虚拟服务端点与带外标签相关联的装置,其中,所述带外标签标识待由所述已卸载的虚拟服务端点处理的网络分组;用于由所述计算设备的网络交换机基于所述网络交换机的转发表来转发网络分组的装置;用于由所述网络代理基于从网络控制器处接收的网络流信息来将流条目添加到所述网络交换机的所述转发表中的装置;用于由所述网络代理基于所述带外标签来使添加到所述转发表中的所述流条目与所述已卸载的虚拟服务端点相关联的装置;以及用于由所述网络代理基于所述网络流信息来配置所述网络接口卡的所述已卸载的虚拟服务端点的装置。
示例28包括如示例27所述的主题,并且进一步包括:用于由所述设备驱动器逻辑将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络代理的装置;以及用于由所述网络代理从所述网络控制器处接收所述网络流信息的装置。
示例29包括如示例27和28中任一项所述的主题,并且其中,从所述网络控制器处接收的所述网络流信息包括:流元组,所述流元组指示与网络流相关联的网络分组的来源和目的地;以及下一跳信息,所述下一跳信息标识所述多个虚拟网络功能中用于处理与所述网络流相关联的网络分组的下一个虚拟网络功能。
示例30包括如示例27至29中任一项所述的主题,并且其中,用于配置所述网络接口卡的所述已卸载的虚拟服务端点的装置包括:用于基于所接收的网络流信息的所述下一跳信息来配置所述网络接口的所述已卸载的虚拟服务端点的装置。
示例31包括如示例27至30中任一项所述的主题,并且进一步包括:用于由所述网络代理将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络控制器的装置;并且其中,从所述网络控制器处接收的所述网络流信息进一步包括与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签。
示例32包括如示例27至31中任一项所述的主题,并且进一步包括:用于由所述多个虚拟网络功能中的虚拟网络功能处理从远程计算设备处接收的网络分组的装置;用于由所述虚拟网络功能将所述网络分组转发至所述计算设备的所述网络交换机的装置;用于由所述网络交换机判定所述虚拟网络功能是否为用于处理所述网络分组的最后一个虚拟网络功能的装置;用于由所述网络交换机响应于确定了所述虚拟网络功能不是用于处理所述网络分组的所述最后一个虚拟网络功能而使用所述带外标签来标记从所述虚拟网络功能处接收的所述网络分组的装置;用于由所述网络交换机将所述网络分组转发至所述网络接口卡的所述已卸载的虚拟服务端点的装置;用于由所述已卸载的虚拟服务端点判定所述网络分组是否标记有所述带外标签的装置;用于由所述已卸载的虚拟服务端点响应于确定了所述网络分组标记有所述带外标签而确定所述多个虚拟网络功能中用于处理所述网络分组的下一个虚拟网络功能的装置;以及用于由所述已卸载的虚拟服务端点将所述网络分组转发至用于处理所述网络分组的所述所确定的下一个虚拟网络功能的装置。
示例33包括如示例27至32中任一项所述的主题,并且进一步包括:用于由所述已卸载的虚拟服务端点响应于确定了所述网络分组未标记有所述带外标签而将所述网络分组转发至另一个计算设备的装置。
示例34包括如示例27至33中任一项所述的主题,并且其中,用于确定用于处理所述网络分组的所述下一个虚拟网络功能的装置包括:(i)用于从所述网络分组中提取网络报头字段的装置;(ii)用于基于所提取的网络报头字段来计算散列的装置;以及(iii)用于基于所计算的散列来标识用于处理所述网络分组的所述下一个虚拟网络功能的装置。
示例35包括如示例27至34中任一项所述的主题,并且进一步包括:用于由所述已卸载的虚拟服务端点将与所述已卸载的虚拟服务端点相关联的网络通信量统计传输至所述网络代理的装置;以及用于由所述网络代理将从所述已卸载的虚拟服务端点处接收的所述网络通信量统计传输至所述网络控制器的装置。
示例36包括如示例27至35中任一项所述的主题,并且其中,所述计算设备的所述网络交换机包括所述计算设备的所述网络接口卡的硬件交换机。
示例37包括如示例27至36中任一项所述的主题,并且其中,所述计算设备的所述网络交换机包括由所述计算设备执行的虚拟交换机。
示例38包括如示例27至37中任一项所述的主题,并且其中,所述虚拟交换机由以下各项中的至少一项执行:所述计算设备的虚拟机监视器、所述计算设备的所述操作系统、或者所述多个虚拟机中的虚拟机。
Claims (35)
1.一种用于卸载虚拟服务端点能力的计算设备,所述计算设备包括:
网络接口卡,所述网络接口卡用于通告已卸载的虚拟服务端点能力;
设备驱动器逻辑,所述设备驱动器逻辑由所述计算设备的操作系统初始化用于:(i)发现由所述网络接口卡通告的所述已卸载的虚拟服务端点能力;(ii)将所述已卸载的虚拟服务端点能力通告给由所述操作系统初始化的网络代理以及在所述计算设备的多个虚拟机上执行的多个虚拟网络功能;以及(iii)使所述网络接口卡的已卸载的虚拟服务端点与带外标签相关联,其中,所述带外标签标识待由所述已卸载的虚拟服务端点处理的网络分组;
网络交换机,所述网络交换机用于基于所述网络交换机的转发表来转发网络分组;并且
其中,所述网络代理用于:(i)基于从网络控制器处接收的网络流信息来将流条目添加到所述转发表中;(ii)基于所述带外标签来使添加到所述转发表中的所述流条目与所述已卸载的虚拟服务端点相关联;以及(iii)基于所述网络流信息来配置所述网络接口卡的所述已卸载的虚拟服务端点。
2.如权利要求1所述的计算设备,其中,所述设备驱动器逻辑进一步用于:将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络代理;并且
其中,所述网络代理进一步用于:从所述网络控制器处接收所述网络流信息。
3.如权利要求2所述的计算设备,其中,从所述网络控制器处接收的所述网络流信息包括:流元组,所述流元组指示与网络流相关联的网络分组的来源和目的地;以及下一跳信息,所述下一跳信息标识所述多个虚拟网络功能中用于处理与所述网络流相关联的网络分组的下一个虚拟网络功能。
4.如权利要求3所述的计算设备,其中,配置所述网络接口卡的所述已卸载的虚拟服务端点包括:基于所接收的网络流信息的所述下一跳信息来配置所述网络接口的所述已卸载的虚拟服务端点。
5.如权利要求3所述的计算设备,其中,所述网络代理进一步用于:将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络控制器;并且
其中,从所述网络控制器处接收的所述网络流信息进一步包括与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签。
6.如权利要求1或2中任一项所述的计算设备,进一步包括所述多个虚拟网络功能中用于进行以下各项的虚拟网络功能:(i)处理从远程计算设备处接收的网络分组;以及(ii)将所述网络分组转发至所述计算设备的所述网络交换机;
其中,所述网络交换机用于:(i)判定所述虚拟网络功能是否为用于处理所述网络分组的最后一个虚拟网络功能;(ii)响应于确定了所述虚拟网络功能不是用于处理所述网络分组的所述最后一个虚拟网络功能而使用所述带外标签来标记从所述虚拟网络功能处接收的所述网络分组;以及(iii)将所述网络分组转发至所述网络接口卡的所述已卸载的虚拟服务端点;并且
其中,所述已卸载的虚拟服务端点用于:(i)判定所述网络分组是否标记有所述带外标签;(ii)响应于确定了所述网络分组标记有所述带外标签而确定所述多个虚拟网络功能中用于处理所述网络分组的下一个虚拟网络功能;以及(iii)将所述网络分组转发至用于处理所述网络分组的所确定的下一个虚拟网络功能。
7.如权利要求6所述的计算设备,其中,所述已卸载的虚拟服务端点进一步用于:响应于确定了所述网络分组未标记有所述带外标签而将所述网络分组转发至另一个计算设备。
8.如权利要求6所述的计算设备,其中,确定用于处理所述网络分组的所述下一个虚拟网络功能包括:(i)从所述网络分组中提取网络报头字段;(ii)基于所提取的网络报头字段来计算散列;以及(iii)基于所计算的散列来标识用于处理所述网络分组的所述下一个虚拟网络功能。
9.如权利要求6所述的计算设备,其中,所述已卸载的虚拟服务端点进一步用于:将与所述已卸载的虚拟服务端点相关联的网络通信量统计传输至所述网络代理,并且
其中,所述网络代理进一步用于:将从所述已卸载的虚拟服务端点处接收的所述网络通信量统计传输至所述网络控制器。
10.如权利要求1或2中任一项所述的计算设备,其中,所述计算设备的所述网络交换机包括以下至少一者:由所述计算设备执行的虚拟交换机;或所述计算设备的所述网络接口卡中的硬件交换机。
11.如权利要求1或2中任一项所述的计算设备,其中,所述计算设备的所述网络交换机包括由以下各项中的至少一项执行的虚拟交换机:所述计算设备的虚拟机监视器、所述计算设备的所述操作系统、或者所述多个虚拟机中的虚拟机。
12.一种用于卸载计算设备上的虚拟服务端点能力的方法,所述方法包括:
由所述计算设备的网络接口卡通告已卸载的虚拟服务端点能力;
由被所述计算设备的操作系统初始化的设备驱动器逻辑发现由所述网络接口卡通告的所述已卸载的虚拟服务端点能力;
由所述设备驱动器逻辑将所述已卸载的虚拟服务端点能力通告给由所述操作系统初始化的网络代理以及在所述计算设备的多个虚拟机上执行的多个虚拟网络功能;
由所述设备驱动器逻辑使所述网络接口卡的已卸载的虚拟服务端点与带外标签相关联,其中,所述带外标签标识待由所述已卸载的虚拟服务端点处理的网络分组;
由所述网络代理基于从网络控制器处接收的网络流信息来将流条目添加到所述计算设备的网络交换机的转发表中;
由所述网络代理基于所述带外标签来使添加到所述转发表中的所述流条目与所述已卸载的虚拟服务端点相关联;以及
由所述网络代理基于所述网络流信息来配置所述网络接口卡的所述已卸载的虚拟服务端点。
13.如权利要求12所述的方法,进一步包括:
由所述设备驱动器逻辑将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络代理;以及
由所述网络代理从所述网络控制器处接收所述网络流信息。
14.如权利要求13所述的方法,其中,从所述网络控制器处接收的所述网络流信息包括:流元组,所述流元组指示与网络流相关联的网络分组的来源和目的地;以及下一跳信息,所述下一跳信息标识所述多个虚拟网络功能中用于处理与所述网络流相关联的网络分组的下一个虚拟网络功能;并且
其中,配置所述网络接口卡的所述已卸载的虚拟服务端点包括:基于所接收的网络流信息的所述下一跳信息来配置所述网络接口的所述已卸载的虚拟服务端点。
15.如权利要求14所述的方法,进一步包括:
由所述网络代理将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络控制器;并且
其中,从所述网络控制器处接收的所述网络流信息进一步包括与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签。
16.如权利要求12或13中的任一项所述的方法,进一步包括:
由所述多个虚拟网络功能中的虚拟网络功能处理从远程计算设备处接收的网络分组;
由所述虚拟网络功能将所述网络分组转发至所述计算设备的所述网络交换机;
由所述网络交换机判定所述虚拟网络功能是否为用于处理所述网络分组的最后一个虚拟网络功能;
由所述网络交换机响应于确定了所述虚拟网络功能不是用于处理所述网络分组的所述最后一个虚拟网络功能而使用所述带外标签来标记从所述虚拟网络功能处接收的所述网络分组;
由所述网络交换机将所述网络分组转发至所述网络接口卡的所述已卸载的虚拟服务端点;
由所述已卸载的虚拟服务端点判定所述网络分组是否标记有所述带外标签;
由所述已卸载的虚拟服务端点响应于确定了所述网络分组标记有所述带外标签而确定所述多个虚拟网络功能中用于处理所述网络分组的下一个虚拟网络功能;以及
由所述已卸载的虚拟服务端点将所述网络分组转发至用于处理所述网络分组的所确定的下一个虚拟网络功能。
17.如权利要求16所述的方法,进一步包括:由所述已卸载的虚拟服务端点响应于确定了所述网络分组未标记有所述带外标签而将所述网络分组转发至另一个计算设备。
18.如权利要求16所述的方法,其中,确定用于处理所述网络分组的所述下一个虚拟网络功能包括:(i)从所述网络分组中提取网络报头字段;(ii)基于所提取的网络报头字段来计算散列;以及(iii)基于所计算的散列来标识用于处理所述网络分组的所述下一个虚拟网络功能。
19.如权利要求16所述的方法,进一步包括:
由所述已卸载的虚拟服务端点将与所述已卸载的虚拟服务端点相关联的网络通信量统计传输至所述网络代理;以及
由所述网络代理将从所述已卸载的虚拟服务端点处接收的所述网络通信量统计传输至所述网络控制器。
20.如权利要求12或13中的任一项所述的方法,其中,所述计算设备的所述网络交换机包括以下至少一者:由所述计算设备执行的虚拟交换机;或所述计算设备的所述网络接口卡中的硬件交换机。
21.一种用于卸载虚拟服务端点能力的计算设备,所述计算设备包括:
用于由所述计算设备的网络接口卡通告已卸载的虚拟服务端点能力的装置;
用于由被所述计算设备的操作系统初始化的设备驱动器逻辑发现由所述网络接口卡通告的所述已卸载的虚拟服务端点能力的装置;
用于由所述设备驱动器逻辑将所述已卸载的虚拟服务端点能力通告给由所述计算设备的所述操作系统初始化的网络代理以及在所述计算设备的多个虚拟机上执行的多个虚拟网络功能的装置;
用于由所述设备驱动器逻辑使所述网络接口卡的已卸载的虚拟服务端点与带外标签相关联的装置,其中,所述带外标签标识待由所述已卸载的虚拟服务端点处理的网络分组;
用于由所述计算设备的网络交换机基于所述网络交换机的转发表来转发网络分组的装置;
用于由所述网络代理基于从网络控制器处接收的网络流信息来将流条目添加到所述网络交换机的所述转发表中的装置;
用于由所述网络代理基于所述带外标签来使添加到所述转发表中的所述流条目与所述已卸载的虚拟服务端点相关联的装置;以及
用于由所述网络代理基于所述网络流信息来配置所述网络接口卡的所述已卸载的虚拟服务端点的装置。
22.如权利要求21所述的计算设备,进一步包括:
用于由所述设备驱动器逻辑将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络代理的装置;
用于由所述网络代理从所述网络控制器处接收所述网络流信息的装置,其中,从所述网络控制器处接收的所述网络流信息包括:流元组,所述流元组指示与网络流相关联的网络分组的来源和目的地;以及下一跳信息,所述下一跳信息标识所述多个虚拟网络功能中用于处理与所述网络流相关联的网络分组的下一个虚拟网络功能;并且
其中,用于配置所述网络接口卡的所述已卸载的虚拟服务端点的装置包括:用于基于所接收的网络流信息的所述下一跳信息来配置所述网络接口的所述已卸载的虚拟服务端点的装置。
23.如权利要求21或22中的任一项所述的计算设备,进一步包括:
用于由所述多个虚拟网络功能中的虚拟网络功能处理从远程计算设备处接收的网络分组的装置;
用于由所述虚拟网络功能将所述网络分组转发至所述计算设备的所述网络交换机的装置;
用于由所述网络交换机判定所述虚拟网络功能是否为用于处理所述网络分组的最后一个虚拟网络功能的装置;
用于由所述网络交换机响应于确定了所述虚拟网络功能不是用于处理所述网络分组的所述最后一个虚拟网络功能而使用所述带外标签来标记从所述虚拟网络功能处接收的所述网络分组的装置;
用于由所述网络交换机将所述网络分组转发至所述网络接口卡的所述已卸载的虚拟服务端点的装置;
用于由所述已卸载的虚拟服务端点判定所述网络分组是否标记有所述带外标签的装置;
用于由所述已卸载的虚拟服务端点响应于确定了所述网络分组标记有所述带外标签而确定所述多个虚拟网络功能中用于处理所述网络分组的下一个虚拟网络功能的装置;以及
用于由所述已卸载的虚拟服务端点将所述网络分组转发至用于处理所述网络分组的所确定的下一个虚拟网络功能的装置。
24.如权利要求23所述的计算设备,进一步包括:
用于由所述已卸载的虚拟服务端点响应于确定了所述网络分组未标记有所述带外标签而将所述网络分组转发至另一个计算设备的装置。
25.如权利要求23所述的计算设备,其中,用于确定用于处理所述网络分组的所述下一个虚拟网络功能的装置包括:(i)用于从所述网络分组中提取网络报头字段的装置;(ii)用于基于所提取的网络报头字段来计算散列的装置;以及(iii)用于基于所计算的散列来标识用于处理所述网络分组的所述下一个虚拟网络功能的装置。
26.一种计算机可读介质,存储多条计算机程序指令,所述计算机程序指令可被处理器执行以实现如权利要求12-20中任一项所述的方法。
27.一种用于卸载计算设备上的虚拟服务端点能力的设备,所述设备包括:
用于由所述计算设备的网络接口卡通告已卸载的虚拟服务端点能力的装置;
用于由被所述计算设备的操作系统初始化的设备驱动器逻辑发现由所述网络接口卡通告的所述已卸载的虚拟服务端点能力的装置;
用于由所述设备驱动器逻辑将所述已卸载的虚拟服务端点能力通告给由所述操作系统初始化的网络代理以及在所述计算设备的多个虚拟机上执行的多个虚拟网络功能的装置;
用于由所述设备驱动器逻辑使所述网络接口卡的已卸载的虚拟服务端点与带外标签相关联的装置,其中,所述带外标签标识待由所述已卸载的虚拟服务端点处理的网络分组;
用于由所述网络代理基于从网络控制器处接收的网络流信息来将流条目添加到所述计算设备的网络交换机的转发表中的装置;
用于由所述网络代理基于所述带外标签来使添加到所述转发表中的所述流条目与所述已卸载的虚拟服务端点相关联的装置;以及
用于由所述网络代理基于所述网络流信息来配置所述网络接口卡的所述已卸载的虚拟服务端点的装置。
28.如权利要求27所述的设备,进一步包括:
用于由所述设备驱动器逻辑将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络代理的装置;以及
用于由所述网络代理从所述网络控制器处接收所述网络流信息的装置。
29.如权利要求28所述的设备,其中,从所述网络控制器处接收的所述网络流信息包括:流元组,所述流元组指示与网络流相关联的网络分组的来源和目的地;以及下一跳信息,所述下一跳信息标识所述多个虚拟网络功能中用于处理与所述网络流相关联的网络分组的下一个虚拟网络功能;并且
其中,用于配置所述网络接口卡的所述已卸载的虚拟服务端点的装置包括:用于基于所接收的网络流信息的所述下一跳信息来配置所述网络接口的所述已卸载的虚拟服务端点的装置。
30.如权利要求29所述的设备,进一步包括:
用于由所述网络代理将与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签传输至所述网络控制器的装置;并且
其中,从所述网络控制器处接收的所述网络流信息进一步包括与所述网络接口卡的所述已卸载的虚拟服务端点相关联的所述带外标签。
31.如权利要求27或28中的任一项所述的设备,进一步包括:
用于由所述多个虚拟网络功能中的虚拟网络功能处理从远程计算设备处接收的网络分组的装置;
用于由所述虚拟网络功能将所述网络分组转发至所述计算设备的所述网络交换机的装置;
用于由所述网络交换机判定所述虚拟网络功能是否为用于处理所述网络分组的最后一个虚拟网络功能的装置;
用于由所述网络交换机响应于确定了所述虚拟网络功能不是用于处理所述网络分组的所述最后一个虚拟网络功能而使用所述带外标签来标记从所述虚拟网络功能处接收的所述网络分组的装置;
用于由所述网络交换机将所述网络分组转发至所述网络接口卡的所述已卸载的虚拟服务端点的装置;
用于由所述已卸载的虚拟服务端点判定所述网络分组是否标记有所述带外标签的装置;
用于由所述已卸载的虚拟服务端点响应于确定了所述网络分组标记有所述带外标签而确定所述多个虚拟网络功能中用于处理所述网络分组的下一个虚拟网络功能的装置;以及
用于由所述已卸载的虚拟服务端点将所述网络分组转发至用于处理所述网络分组的所确定的下一个虚拟网络功能的装置。
32.如权利要求31所述的设备,进一步包括:用于由所述已卸载的虚拟服务端点响应于确定了所述网络分组未标记有所述带外标签而将所述网络分组转发至另一个计算设备的装置。
33.如权利要求31所述的设备,其中,用于确定用于处理所述网络分组的所述下一个虚拟网络功能的装置包括:(i)用于从所述网络分组中提取网络报头字段的装置;(ii)用于基于所提取的网络报头字段来计算散列的装置;以及(iii)用于基于所计算的散列来标识用于处理所述网络分组的所述下一个虚拟网络功能的装置。
34.如权利要求31所述的设备,进一步包括:
用于由所述已卸载的虚拟服务端点将与所述已卸载的虚拟服务端点相关联的网络通信量统计传输至所述网络代理的装置;以及
用于由所述网络代理将从所述已卸载的虚拟服务端点处接收的所述网络通信量统计传输至所述网络控制器的装置。
35.如权利要求27或28中的任一项所述的设备,其中,所述计算设备的所述网络交换机包括以下至少一者:由所述计算设备执行的虚拟交换机;或所述计算设备的所述网络接口卡中的硬件交换机。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/496,417 US10237354B2 (en) | 2014-09-25 | 2014-09-25 | Technologies for offloading a virtual service endpoint to a network interface card |
US14/496,417 | 2014-09-25 | ||
PCT/US2015/046746 WO2016048527A1 (en) | 2014-09-25 | 2015-08-25 | Technologies for offloading a virtual service endpoint to a network interface card |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106605399A CN106605399A (zh) | 2017-04-26 |
CN106605399B true CN106605399B (zh) | 2019-12-10 |
Family
ID=55581750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580045461.3A Active CN106605399B (zh) | 2014-09-25 | 2015-08-25 | 用于将虚拟服务端点卸载到网络接口卡的技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10237354B2 (zh) |
EP (1) | EP3198814A4 (zh) |
CN (1) | CN106605399B (zh) |
WO (1) | WO2016048527A1 (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2975808B1 (en) * | 2013-03-15 | 2020-07-29 | Huawei Technologies Co., Ltd. | Method for packet processing and packet device and system |
US10616377B2 (en) * | 2014-04-03 | 2020-04-07 | Centurylink Intellectual Property Llc | System and method for implementing network enhanced gateway functionality |
US10261817B2 (en) * | 2014-07-29 | 2019-04-16 | Nxp Usa, Inc. | System on a chip and method for a controller supported virtual machine monitor |
US20160094668A1 (en) * | 2014-09-29 | 2016-03-31 | Alcatel-Lucent Usa Inc. | Method and apparatus for distributed customized data plane processing in a data center |
US9723071B2 (en) * | 2014-09-29 | 2017-08-01 | Samsung Electronics Co., Ltd. | High bandwidth peer-to-peer switched key-value caching |
US10298435B2 (en) * | 2015-06-08 | 2019-05-21 | Quanta Computer Inc. | Server link state detection and notification |
US11201761B2 (en) * | 2016-02-11 | 2021-12-14 | Lg Electronics Inc. | Method and terminal for acquiring information on service function chain in next-generation mobile communication network |
US10637772B2 (en) * | 2016-05-28 | 2020-04-28 | Guardtime Sa | Verification mechanism for network service chain paths |
KR102576869B1 (ko) * | 2016-10-10 | 2023-09-11 | 한국전자통신연구원 | 소프트웨어 정의 네트워크 기반 서비스 기능 체인의 서비스 기능 경로 설정 장치 및 방법 |
CN108512779B (zh) * | 2017-02-24 | 2020-11-27 | 华为技术有限公司 | 控制信息传递方法、服务器和系统 |
US10333822B1 (en) * | 2017-05-23 | 2019-06-25 | Cisco Technology, Inc. | Techniques for implementing loose hop service function chains price information |
KR102020357B1 (ko) * | 2017-12-27 | 2019-10-18 | 충남대학교산학협력단 | Nfv 환경에서 보안 통신 방법 및 그 시스템 |
US10726045B2 (en) * | 2018-03-19 | 2020-07-28 | Accenture Global Solutions Limited | Resource-efficient record processing in unified automation platforms for robotic process automation |
US11038866B2 (en) * | 2018-09-18 | 2021-06-15 | Microsoft Technology Licensing, Llc | Securing an injection of a workload into a virtual network hosted by a cloud-based platform |
CN111224897A (zh) * | 2018-11-23 | 2020-06-02 | 北京金山云网络技术有限公司 | 一种流量转发方法、装置、交换机设备及智能网卡 |
EP4052442A1 (en) * | 2019-10-30 | 2022-09-07 | Telefonaktiebolaget LM Ericsson (publ) | In-band protocol-based in-network computation offload framework |
US11258885B2 (en) * | 2019-12-10 | 2022-02-22 | Mellanox Technologies, Ltd. | Flexible parser in a networking device |
CN113285892A (zh) * | 2020-02-20 | 2021-08-20 | 华为技术有限公司 | 报文处理系统、方法、机器可读存储介质以及程序产品 |
CN114008998B (zh) * | 2020-03-12 | 2023-03-10 | 华为技术有限公司 | 基于通信节点的解析深度的数据包处理方法和装置 |
US11343152B2 (en) | 2020-04-07 | 2022-05-24 | Cisco Technology, Inc. | Traffic management for smart network interface cards |
US11323372B2 (en) | 2020-04-21 | 2022-05-03 | Mellanox Technologies Ltd. | Flexible steering |
US11470007B2 (en) | 2021-01-19 | 2022-10-11 | Mellanox Technologies, Ltd. | Bandwidth-control policers in a network adapter |
US11425230B2 (en) | 2021-01-28 | 2022-08-23 | Mellanox Technologies, Ltd. | Efficient parsing tuned to prevalent packet types |
CN112905192B (zh) * | 2021-02-07 | 2024-02-06 | 优刻得科技股份有限公司 | 在云服务器上进行卸载的方法、控制装置、存储介质 |
US11310163B1 (en) | 2021-02-10 | 2022-04-19 | Mellanox Technologies, Ltd. | Network flow sampling fairness |
CN114979028B (zh) * | 2021-02-26 | 2024-02-23 | 中移(苏州)软件技术有限公司 | 一种数据包处理方法、装置以及存储介质 |
US11711453B2 (en) | 2021-10-24 | 2023-07-25 | Mellanox Technologies, Ltd. | Template-based packet parsing |
US11888737B1 (en) * | 2022-07-29 | 2024-01-30 | Red Hat, Inc. | Implementing network function logic in a virtual switch |
US11909656B1 (en) * | 2023-01-17 | 2024-02-20 | Nokia Solutions And Networks Oy | In-network decision for end-server-based network function acceleration |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101356783A (zh) * | 2006-01-12 | 2009-01-28 | 博通以色列研发公司 | 虚拟化网络环境中具有i/o共享的协议卸载和直接i/o的方法和系统 |
US7523179B1 (en) * | 2004-12-14 | 2009-04-21 | Sun Microsystems, Inc. | System and method for conducting direct data placement (DDP) using a TOE (TCP offload engine) capable network interface card |
CN102017544A (zh) * | 2008-02-29 | 2011-04-13 | 甲骨文美国公司 | 卸载网络处理的方法和系统 |
CN103051510A (zh) * | 2011-09-07 | 2013-04-17 | 微软公司 | 网络策略向网络接口卡的安全和高效卸载 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060535A1 (en) * | 2003-09-17 | 2005-03-17 | Bartas John Alexander | Methods and apparatus for monitoring local network traffic on local network segments and resolving detected security and network management problems occurring on those segments |
US20060036551A1 (en) * | 2004-03-26 | 2006-02-16 | Microsoft Corporation | Protecting elementary stream content |
US7783880B2 (en) * | 2004-11-12 | 2010-08-24 | Microsoft Corporation | Method and apparatus for secure internet protocol (IPSEC) offloading with integrated host protocol stack management |
US7483423B2 (en) * | 2005-03-30 | 2009-01-27 | Intel Corporation | Authenticity of communications traffic |
US8270413B2 (en) * | 2005-11-28 | 2012-09-18 | Cisco Technology, Inc. | Method and apparatus for self-learning of VPNS from combination of unidirectional tunnels in MPLS/VPN networks |
US20080189769A1 (en) * | 2007-02-01 | 2008-08-07 | Martin Casado | Secure network switching infrastructure |
US8711817B2 (en) * | 2008-06-04 | 2014-04-29 | Microsoft Corporation | Low cost mesh network capability |
US8787303B2 (en) | 2010-10-05 | 2014-07-22 | Cisco Technology, Inc. | Methods and apparatus for data traffic offloading at a router |
US8462780B2 (en) | 2011-03-30 | 2013-06-11 | Amazon Technologies, Inc. | Offload device-based stateless packet processing |
US9110703B2 (en) * | 2011-06-07 | 2015-08-18 | Hewlett-Packard Development Company, L.P. | Virtual machine packet processing |
US8792353B1 (en) * | 2011-06-14 | 2014-07-29 | Cisco Technology, Inc. | Preserving sequencing during selective packet acceleration in a network environment |
US8930690B2 (en) | 2012-03-21 | 2015-01-06 | Microsoft Corporation | Offloading packet processing for networking device virtualization |
US9092269B2 (en) | 2012-06-21 | 2015-07-28 | Microsoft Technology Licensing, Llc | Offloading virtual machine flows to physical queues |
US20130343181A1 (en) * | 2012-06-21 | 2013-12-26 | Jonathan Stroud | Systems and methods of data processing using an fpga-implemented hash function |
US9130879B2 (en) * | 2012-08-24 | 2015-09-08 | Vmware, Inc. | Methods and systems for offload processing of encapsulated packets |
-
2014
- 2014-09-25 US US14/496,417 patent/US10237354B2/en active Active
-
2015
- 2015-08-25 EP EP15844147.7A patent/EP3198814A4/en not_active Withdrawn
- 2015-08-25 CN CN201580045461.3A patent/CN106605399B/zh active Active
- 2015-08-25 WO PCT/US2015/046746 patent/WO2016048527A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7523179B1 (en) * | 2004-12-14 | 2009-04-21 | Sun Microsystems, Inc. | System and method for conducting direct data placement (DDP) using a TOE (TCP offload engine) capable network interface card |
CN101356783A (zh) * | 2006-01-12 | 2009-01-28 | 博通以色列研发公司 | 虚拟化网络环境中具有i/o共享的协议卸载和直接i/o的方法和系统 |
CN102017544A (zh) * | 2008-02-29 | 2011-04-13 | 甲骨文美国公司 | 卸载网络处理的方法和系统 |
CN103051510A (zh) * | 2011-09-07 | 2013-04-17 | 微软公司 | 网络策略向网络接口卡的安全和高效卸载 |
Also Published As
Publication number | Publication date |
---|---|
US10237354B2 (en) | 2019-03-19 |
CN106605399A (zh) | 2017-04-26 |
US20160094667A1 (en) | 2016-03-31 |
WO2016048527A1 (en) | 2016-03-31 |
EP3198814A1 (en) | 2017-08-02 |
EP3198814A4 (en) | 2018-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106605399B (zh) | 用于将虚拟服务端点卸载到网络接口卡的技术 | |
US10812378B2 (en) | System and method for improved service chaining | |
EP3367636B1 (en) | System and method for automatically updating bios setup options | |
US9602400B2 (en) | Hypervisor independent network virtualization | |
US10331434B2 (en) | System and method for remotely updating firmware | |
US10263832B1 (en) | Physical interface to virtual interface fault propagation | |
US10831527B2 (en) | Providing link aggregation and high availability through network virtualization layer | |
US10742690B2 (en) | Scalable policy management for virtual networks | |
US10419239B2 (en) | Switch dependent teaming for high availability of virtual network functions | |
EP3353997B1 (en) | Technologies for offloading data object replication and service function chain management | |
US20170366605A1 (en) | Providing data plane services for applications | |
US9325630B2 (en) | Wild card flows for switches and virtual switches based on hints from hypervisors | |
US11700236B2 (en) | Packet steering to a host-based firewall in virtualized environments | |
US10911405B1 (en) | Secure environment on a server | |
US10581730B2 (en) | Packet processing using service chains | |
US10164892B2 (en) | Overhead management for virtual machines | |
US9787608B2 (en) | Unified fabric port | |
WO2020000401A1 (en) | Transparent Encryption | |
WO2015121750A1 (en) | System and method for data communication between virtual interfaces | |
EP3352417B1 (en) | System recovery using wol | |
KR20120062174A (ko) | 다양한 특성의 패킷을 동적으로 처리하는 패킷 처리장치 및 방법 | |
Garcia et al. | An nsh-enabled architecture for virtualized network function platforms | |
EP4304148A1 (en) | Edge services using network interface cards having processing units |
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 |