CN105049464B - 用于加速网络虚拟化的技术 - Google Patents
用于加速网络虚拟化的技术 Download PDFInfo
- Publication number
- CN105049464B CN105049464B CN201510140436.5A CN201510140436A CN105049464B CN 105049464 B CN105049464 B CN 105049464B CN 201510140436 A CN201510140436 A CN 201510140436A CN 105049464 B CN105049464 B CN 105049464B
- Authority
- CN
- China
- Prior art keywords
- network
- packet
- interface controller
- host
- network interface
- 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
Images
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/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
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
- H04L41/5054—Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer Security & Cryptography (AREA)
Abstract
用于加速的网络虚拟化的技术包含由建立在计算设备的提供者分区中的网络虚拟化器执行分组处理功能,以及卸载分组移动功能至计算设备的网络接口控制器。在示例性实施例中,网络接口控制器包含一个或多个租户面对端口、提供者面对端口、以及外部网络面对端口,其由网络接口控制器使用来从、向、以及在计算设备的各种分区之间接收、发送、以及传递分组。为了传输分组,网络虚拟化器产生提供者报头,要么网络虚拟化器要么网络接口控制器用提供者报头来封装从租户分区接收的分组。为了接收分组,要么网络虚拟化器要么网络接口控制器从接收的分组剥去提供者报头。
Description
背景技术
网络虚拟化是用于在相同的“物理”网络上建立多个“虚拟”网络的技术。网络虚拟化是用于云计算模型(包含基础设施即服务(IaaS)模型)的关键技术。类似于其他虚拟化技术,网络虚拟化向用户(经常被称为访客或者租户)提供私有网络的体验,虽然通信可以跨共享或者公共部件发生。
典型的网络虚拟化技术完全以在物理网络的边缘处(例如,在物理网络的入口或者出口点)的软件实现,该技术允许虚拟网络“物理网络不知情”。因为典型的网络虚拟化以软件实现,网络虚拟化器必须模拟显著量的传统网络接口控制器(NIC)功能,例如包含经由直接存储器存取(DMA)的数据的移动;以及相关联的现有分组加速功能,诸如大型分割卸载(LSO)、接收方调整(RSS)、以及接收方聚结(RSC)。在很多实现中,这样的数据移动和分组加速功能可能被认为是对主要处理器的工作周期的低效使用。
尽管已开发了附加的技术来缓和处理器时间(例如,单根I/O虚拟化(SR-IOV))的低效使用,但这样的技术可能在网络虚拟化环境中创建了其他挑战。例如,SR-IOV技术典型地对主机(例如虚拟监控器)提供直接的路径来跨网络传输分组,完全绕开网络虚拟化器,其可能对于很多基础设施即服务(IaaS)实现是不可接受的。
附图说明
本文说明的概念在附图中是以示例的方式,而非以限制的方式示出。为了简洁并清楚示出,在图中示出的要素不一定是成比例绘出的。认为适当时,附图标记在附图中重复,以表明对应的或类似的要素。
图1是用于加速的网络虚拟化的系统的至少一个实施例的简化框图;
图2是图1的计算设备的分区环境的至少一个实施例的简化框图;
图3是可以建立在图1和2的计算设备上的环境的至少一个实施例的简化框图;
图4是可以由图1-3的计算设备实现的网络堆栈的简化框图;
图5和6是用于接收可以由图1-3的计算设备执行的分组的方法的至少一个实施例的简化流程图;以及
图7和8是用于传输可以由图1-3的计算设备执行的分组的方法的至少一个实施例的简化流程图。
具体实施方式
本公开的概念容许各种修改和替代形式,其具体实施例已在附图中以示例的方式示出,本文将详细说明。然而应该理解的是,不意图将本公开的概念限制至公开的特定形成,相反,意图覆盖符合本公开和添附的权利要求的所有修改、等同、以及替代。
说明书中对于“一个实施例”、“实施例”、“示例实施例”等的提及表明所描述的实施例可以包括特定的特征、结构、或特性,而每个实施例不一定包括特定的特征、结构、或特性。而且,这些短语不一定是指同一实施例。此外,当结合实施例描述特定的特征、结构、或特性时,无论是否明确说明,都认为结合其他实施例实现这些特征、结构、或特性是本领域技术人员的技能范围内的。另外,应该理解的是以“A、B、以及C中的至少一个”的形式包含在列表中的项目能够指代(A)、(B)、(C)、(A和B)、(B和C)、或者(A、B、以及C)。类似地,以“A、B、或C中的至少一个”的形式列出的项目能够指代(A)、(B)、(C)、(A和B)、(B和C)、或者(A、B、以及C)。
在一些情况下,公开的实施例可以以硬件、固件、软件、或者其任何组合实现。公开的实施例还可以实现为一个或多个暂时性或者非暂时性机器可读(例如计算机可读)存储介质携带或者存储的指令,其可以由一个或多个处理器读出并执行。机器可读存储介质可以实施为任何存储设备、机构、或者其他物理构造,用于以由机器可读的形式(例如易失性或者非易失性存储器、介质盘、或者其他介质设备)存储或者传输信息。
在附图中,一些构造的或者方法特征可以示出为特定布置和/或顺序。然而,应该理解的是可以不要求这样的特定布置和/或顺序。相反,在一些实施例中,这样的特征可以以不同于示例性图中示出的方式和/或顺序布置。另外,包含特定图中的构造或者方法特征不意味着隐含了这样的特征在所有实施例中都需要,在一些实施例中,可能不包含或者可以与其他特征组合。
现在参考图1,用于加速的网络虚拟化的示例性系统100包含计算设备102,其跨网络106与远程计算设备104通信。具体而言如下所述,计算设备102实现网络虚拟化,以允许计算设备102上建立在对应的租户分区中的一个或多个租户(主机)在网络106中体验私有网络。网络虚拟化是通过用提供者分组报头来封装由租户分区的主机产生的分组而完成的。另外,计算设备102的网络虚拟化是通过:向建立在提供者分区中的网络虚拟化器分配分组处理功能;和向计算设备102的网络接口控制器120分配卸载分组移动功能和现有网络接口控制器加速/卸载功能(例如LSO、RSS、RSC等)来加速的。为了这样做,网络接口控制器120包含多个端口来与租户分区和提供者分区通信,以向、从、和/或在分区之间移动分组。网络虚拟化由网络虚拟化器提供,网络虚拟化器产生并管理被用于封装源于租户的分组的提供者分组报头。应该理解的是典型的网络接口控制器加速功能仍然可用于租户面对端口,因为这样的端口对于没有封装的分组用作标准网络接口控制器端口。
详细而言如下所述,为了从计算设备102传输分组,租户分区的主机产生要传输的分组,并经由对应的租户面对端口将分组传递至网络接口控制器120。在一些实施例中,网络接口控制器120接下来经由提供者面对端口将分组传递至网络虚拟化器,并且网络虚拟化器用提供者分组报头来封装分组。网络接口控制器120接下来通过网络106经由网络面对端口传输封装的分组。在其他实施例中,网络接口控制器120可以经由提供者面对端口从网络接口控制器120接收产生的提供者分组报头,并使用接收的提供者分组报头来封装分组。
相反地,为了从网络106接收分组,网络接口控制器120经由网络面对端口从网络106接收分组,并在一些实施例中,经由提供者面对端口将分组传递至网络虚拟化器。在这样的实施例中,网络虚拟化器处理分组来剥去分组的任何提供者分组报头并将经剥去的分组传递回网络接口控制器120,其接下来将经剥去的分组发送至租户分区的指定主机。在其他实施例中,网络接口控制器120可以被配置为从分组剥去提供者分组报头,将提供者分组报头(以及分组的一部分或者全部)传递至网络虚拟化器用于进一步的处理或者分析,并将经剥去的分组传递至租户分区的指定主机。
计算设备102可以实施为用于使用网络虚拟化通过网络106通信的任何类型的计算设备。例如、计算设备102可以实施为服务器、服务器控制器、路由器、交换机、网络设备、分布式计算系统、多处理器系统、台式计算机、消费者电子设备、智能家电、膝上型计算机、笔记本计算机、平板计算机、智能电话、蜂窝电话、和/或能够网络虚拟化的任何其他计算设备。如图1所示,示例性计算设备102包含处理器110、I/O子系统112、存储器114、数据存储116、一个或多个外围设备118、以及网络接口控制器120。当然,在其他实施例中,计算设备102可以包含其他或者附加部件,诸如通常在计算机中发现的那些(例如各种输入/输出设备)。另外,在一些实施例中,一个或多个示例性部件可以整合到另一个部件,或者来自另一个部件的一部分。例如,在一些实施例中,存储器114或者其部分可以整合到处理器110中。
处理器110可以实施为能够执行本文描述的功能的任何类型的处理器。例如,处理器可以实施为单核或者多核处理器、数字信号处理器、微控制器、或者其他处理器或者处理/控制电路。类似地,存储器114可以实施为任何类型的易失性或者非易失性存储器、或者能够执行本文描述的功能的数据存储。在操作中,存储器114可以存储在计算设备102的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库、以及驱动器。存储器114经由I/O子系统112可通信地耦合至处理器110,I/O子系统112可以实施为便于与处理器110、存储器114、以及计算设备102的其他部件进行输入/输出操作的电路和/或部件。例如,I/O子系统112可以实施为,或者包含存储器控制器中心、输入/输出控制中心、固件设备、通信链路(即点对点链接、总线链接、导线、线缆、光导、印制电路板走线等)和/或其他部件和子系统,以便于输入/输出操作。在一些实施例中,I/O子系统112可以形成片上系统(SoC)的一部分,并与处理器110、存储器114、以及计算设备102的其他部件整合在单个集成电路芯片上。
数据存储装置116可以实施为配置为数据的短期或者长期存储的任何类型的设备,诸如,例如存储器设备和电路、存储卡、硬盘驱动器、固态驱动器、或者其他数据存储设备。外围设备118可以包含通常在典型的计算设备中发现的任何类型的外围设备,诸如各种输入/输出设备。例如,外围设备118可以包含通信电路、显示器电路、各种输入按钮和交换机、键盘、鼠标、扬声器、麦克风、和/或其他外围设备。
网络接口控制器120可以实施为能够便于通过网络106在计算设备102与远程计算设备104之间通信的任何设备、电路、或者设备和/或电路的集合。例如,网络接口控制器120可以实施为通信地耦合至计算设备102的母板的分离的外围设备卡;或者可以实施为集成在母板上的电路或者设备的集合。另外,网络接口控制器120可以实施为单个网络接口控制器设备或者电路、或者作为通信地耦合在一起的多个网络接口控制器设备或者电路,如下所述。在一些实施例中,网络接口控制器120可以包含专用的存储器122来存储便于在计算设备102的各种分区之间传递分组的分组,如下所述。
类似于计算设备102,远程计算设备104可以实施为使用网络虚拟化通过网络106通信的任何类型的计算设备。例如,计算设备102可以实施为服务器、服务器控制器、路由器、交换机、网络设备、分布式计算系统、多处理器系统、台式计算机、消费者电子设备、智能家电、膝上型计算机、笔记本计算机、平板计算机、智能电话、蜂窝电话、和/或能够网络虚拟化的任何其他计算设备。远程计算设备104的部件、构造、以及处理可以实质上类似于关于计算设备102描述的对应的部件、构造、以及处理,并且为了描述的清楚,不在本文中重复。
如上所述,计算设备102和远程计算设备104通过外部网络106互相彼此通信。网络106可以实施为任何数量的各种有线和/或无线网络。例如,网络106可以实施为,或者包含有线或者无线局域网(LAN)、有线或者无线广域网(WAN)、蜂窝网络、和/或可公共访问的全球网络(诸如互联网)。这样,网络106可以包含任何数量的附加设备,诸如附加的计算机、路由器、以及交换机,以便于在系统100的各种设备之间通信。
现在参考图2,在示例性实施例中,计算设备102建立提供者分区202和一个或多个租户分区204。如下所述,网络虚拟化器被建立在提供者分区202中,并且一个或多个主机(例如虚拟机、操作系统、应用等)建立在每个租户分区204中(例如参见图3)。对提供者分区202和分离的租户分区204进行的分区在这些分区之间提供隔离量。为了这样做,在一些实施例中,根管理程序(hypervisor)210可以建立在计算设备102上,以将提供者分区202与租户分区204隔离。网络虚拟化器302(参见图3)可以在根管理程序上执行,而分离的管理程序212和相关联的虚拟机214可以建立在每个租户分区204中。通过这种方式,每个租户分区204可以管理程序独立(即,每个租户分区204可以执行不同的管理程序)。替代地,一个或多个租户分区204可以在原生或者裸金属I/O上操作,而不使用任何管理程序212。替代地,在其他实施例中,计算设备102可以不利用根管理程序210,并在这样的实施例中,提供者分区202和租户分区204由对应的管理程序管理。
如上所述,网络接口控制器120包含与分区202、204和网络106通信的多个端口。在示例性实施例中,网络接口控制器120包含对于每个租户分区204的租户面对端口220(其可以启用SR-IOV)、提供者面对端口222、以及网络面对端口224。示例性地如图2所示,源于租户分区204的分组经由租户面对端口220由网络接口控制器120接收,经由提供者面对端口222传递至提供者分区中的网络虚拟化器(被植入作为“导线中的凸块”),并接下来经由网络面对端口224跨网络106传输。这样的分组的传递可以经由使用与网络接口控制器120的存储器122的直接存储器存取(DMA)来完成。通过这种方式,分组处理功能(例如封装、解封装、接入控制列表等)可以完全或者部分在提供者分区中执行,而分组移动功能由网络接口控制器120经由直接存储器存取处理。
每个租户面对端口220和提供者面对端口222可以实施为物理或者虚拟端口。例如,在一些实施例中,网络接口控制器120可以实施为其中物理端口串联的、单个双端口网络接口控制器。在这样的实施例中,租户分区204可以耦合至虚拟租户面对端口220。网络接口控制器120可以将分组从虚拟租户面对端口220传递至物理提供者面对端口222,并接下来经由物理网络面对端口224跨网络106传递。替代地,网络接口控制器120可以实施为其中租户分区204附接到物理租户面对端口220的、串联对的双端口网络接口控制器,提供者分区202附接到物理提供者面对端口222,并且分组经由物理网络面对端口224从计算设备102传输。在这样的实施例中,物理租户面对端口220和物理提供者面对端口222背对背连接。此外,在一些实施例中,网络接口控制器120可以实施为多功能网络接口控制器,其具有3个主机面对接口和1个网络面对端口,具有内部管芯上结构和共享资源。
现在参考图3,计算设备102可以在操作期间建立环境300。环境300包含建立在提供者分区中的网络虚拟化器302、建立在租户分区204中的主机304(例如虚拟机、操作系统、应用等)、以及建立在网络接口控制器120中的分组处理器模块306。网络虚拟化器302包含分组处理模块310和分组报头产生模块312。网络虚拟化器302还可以包含分组虚拟化模块314。替代地,分组虚拟化模块314可以包含在网络接口控制器120的分组处理器模块306中。环境300的每个模块和部件可以实施为固件、软件、硬件、和/或其任何组合。
环境300的各种模块可以实施为硬件、固件、软件、或者其组合。例如环境300的各种模块、逻辑、和其他部件可以形成处理器110、网络接口控制器120、或者计算设备102的其他硬件部件的一部分,或者由其建立。这样,在一些实施例中,环境300的任何一个或多个模块可以实施为电路或者电设备的集合(例如分组处理器电路、网络虚拟化器电路等)。
如上所述,网络虚拟化器302被配置为对计算设备102执行网络虚拟化功能。为了这样做,分组处理模块310被配置为处理分组,来将租户上下文(例如访问规则)应用至接收和传输的通信,如下所述。另外,分组报头产生模块312被配置为产生提供者分组报头,用于封装传出分组(即,由租户分区204的主机304产生的分组)。分组虚拟化模块314被配置为处理传出和传入分组,来启用网络虚拟化。为了这样做,例如,分组虚拟化模块314使用产生的提供者分组报头来封装传出分组,并从传入分组剥去任何提供者分组报头。
分组处理器模块306便于分组向、从、和/或在租户分区204和提供者分区202之间的移动。为了这样做,如上所述,网络接口控制器120可以利用向本地存储器122的直接存储器存取。在一些实施例中,分组处理器模块306包含分组虚拟化模块314,以进一步加速网络虚拟化功能。在这样的实施例中,分组处理器模块306负责使用从网络虚拟化器302的分组报头产生模块312接收的提供者分组报头来封装传出分组,并解封装传入分组,如上所述。在任何情况下,分组处理器模块306可以将传入/传出分组、或者其一部分传递至网络虚拟化器,用于进一步的处理(例如,分组或者通信分析)。
为了便于公开的网络虚拟化,计算设备102可以实现图4所示的网络堆栈400。网络堆栈400类似于传统网络堆栈,除了附加层2”、3”、以及4”,其对应于提供者分组报头。即,如所示,租户分组层2-7由提供者分组层1-4”封装。这样的配置提供基于分组的抽象的量。
现在参考图5和6,在使用中计算设备102可以执行方法500用于从网络106接收分组。方法500开始于框502,其中,计算设备102确定是否已从网络106接收分组。如果是,方法500前进至框504,其中,网络接口控制器120确定是否启用了分组处理加速。分组处理加速可以手动或者自动启用,并可以由对应的标记或者指示符寄存器、值、或者存储单元表明。
如果没有启用分组处理加速,那么方法500前进至框506,其中,提供者分区202的网络虚拟化器302处理分组。为了这样做,在框508中,网络虚拟化器302的分组处理模块310将任何相关租户网络虚拟化上下文应用至分组。例如,分组处理模块310可以应用指定租户分区204的主机304要求的任何适当的联网规则或者数据处理功能。在框510中,网络虚拟化器302的分组虚拟化模块314从接收的分组剥去任何提供者分组报头,并且在框514中,网络虚拟化器302接下来将经剥去的分组转发至对应的租户分区的网络分组的目的地主机。为了这样做,网络虚拟化器302将提供者报头被剥去的分组发送至提供者面对端口222,并且对应租户分区的主机经由对应的租户面对端口220接收提供者报头被剥去的分组。接下来,在框516中,对应的租户分区的主机处理接收的分组,并且方法循环回框502以等待收到进一步的分组。
参考回框504,如果启用了分组处理加速,那么方法500前进至框518,其中,网络接口控制器120确定是否网络接口控制器120的存储器122包含分组的目的地租户分区204的网络虚拟化上下文。如果是,方法500前进至框520,其中,网络接口控制器120确定是否准备好分组处理加速。为了这样做,网络接口控制器120确定对于该特定租户是否有任何剩余或者挂起的分组正由网络虚拟化器进行处理。即,网络接口控制器120保证分组以适当顺序被处理,并没有以乱序序列被提供给主机304。
如果网络接口控制器120准备好分组处理加速,那么方法500前进至框522,其中,网络接口控制器120处理接收的分组。例如,在框524中,网络接口控制器120的分组处理器模块306将存储在存储器122中的任何相关租户网络虚拟化上下文应用至接收的分组。例如,分组处理器模块306可以应用指定租户分区204的主机304要求的任何适当的联网规则或者数据处理功能。在框526中,网络接口控制器120的分组虚拟化模块314从接收的分组剥去任何提供者分组报头。在框528中,网络接口控制器120的分组处理器模块306接下来经由对应的租户面对端口220,将提供者报头被剥去的分组发送至指定租户分区204的主机304,并且在框516中主机304处理接收的分组,如上所述。
参考回框518和520,如果网络接口控制器120的存储器122不包含相关网络虚拟化上下文,或者网络接口控制器120没有准备好分组处理加速,那么方法500前进至框530(参见图6)。在框530中,网络虚拟化器302处理分组,如上关于框508所述。例如,在框532中,网络虚拟化器302的分组处理模块310将任何相关租户网络虚拟化上下文应用至分组,并且在框534中,分组虚拟化模块314从接收的分组剥去任何提供者分组报头。在框536中,网络虚拟化器302将提供者报头被剥去的分组发送至提供者面对端口222,并且对应的租户分区的主机经由对应的租户面对端口220接收提供者报头被剥去的分组。
在框540中,网络虚拟化器302还将相关租户网络虚拟化上下文发送至网络接口控制器120的分组处理器模块306,其在框542中被存储在本地存储器122中。网络虚拟化器302可以经由网络面对端口224或者提供者面对端口222将相关租户网络虚拟化上下文发送至网络接口控制器120。另外,在框544中,网络接口控制器120对于相关租户分区清除任何剩余或者挂起的分组,以保证当收到将来的分组时网络接口控制器120准备好分组处理加速。方法500接下来环回框502,其中,计算设备102等待要接收的附加的分组。
现在参考图7和8,在使用中,计算设备102可以执行方法700用于跨网络106传输分组。方法700开始于框702,其中,计算设备102确定是否要传输分组。如果是,方法700前进至框704,其中,相关租户分区的主机304准备要传输的分组,并经由租户面对端口220(例如经由到存储器122的直接存储器存取)传输分组。因为租户面对端口220是通信地连接至提供者面对端口222,如上所述,所以,在框706中,传输的分组经由提供者面对端口222由提供者分区202的网络虚拟化器302接收。在框708中,网络接口控制器120确定是否启用了分组处理加速。
如果没有启用分组处理加速,那么方法700前进至框710,其中,网络虚拟化器302处理分组。例如,在框712中,网络虚拟化器302的分组处理模块310将任何相关租户网络虚拟化上下文应用至分组。在框714中,分组报头产生模块312产生提供者分组报头,并且在框716中,分组虚拟化模块314使用产生的提供者分组报头来封装分组。接下来,在框718中,网络虚拟化器302跨网络106经由网络面对端口224将封装的分组传输至其目的地地址。
参考回框708,如果启用了分组处理加速,那么方法700前进至框720,其中,网络接口控制器120确定是否网络接口控制器120的存储器122包含分组所源于的租户分区204的网络虚拟化上下文。如果是,方法700前进至框722,其中,网络接口控制器120确定网络接口控制器120是否准备好分组处理加速。如上所述,为了这样做,网络接口控制器120可以确定对于该特定租户是否有任何剩余或者挂起的分组正由网络虚拟化器进行处理。
如果网络接口控制器120准备好分组处理加速,那么方法700前进至框724,其中,网络虚拟化器302的分组报头产生模块312产生提供者分组报头,并经由要么网络面对端口224要么提供者面对端口222将提供者分组报头发送至网络接口控制器120,如上所述。接下来,在框726中,网络接口控制器120处理要传输的分组。为了这样做,在框730中,网络接口控制器120的分组虚拟化模块314使用接收的提供者分组报头来封装分组。在框732中,分组处理器模块306将任何相关租户网络虚拟化上下文应用至分组。在一些实施例中,在框734中,网络接口控制器120还可以将分组或者其一部分发送至提供者分区202的网络虚拟化器302,用于进一步的处理和/或分析。不管怎样,在框736中,网络接口控制器120经由网络面对端口224跨网络106传输封装的分组,如上所述。
参考回框720和722,如果网络接口控制器120的存储器122不包含相关网络虚拟化上下文,或者网络接口控制器120没有准备好分组处理加速,那么方法700前进至框738(参见图8)。在框738中,网络虚拟化器302处理分组,如上关于框710所述。例如,在框740中,分组处理模块310将任何相关租户网络虚拟化上下文应用至分组;在框742中,分组报头产生模块312产生提供者分组报头;并且在框744中,分组虚拟化模块314使用产生的提供者分组报头来封装分组。接下来,在框746中,网络虚拟化器302跨网络106经由网络面对端口224将封装的分组传输至其目的地地址。
在框748中,网络虚拟化器302将相关租户网络虚拟化上下文发送至网络接口控制器120的分组处理器模块306,其在框750中被存储在本地存储器122中。如上所述,网络虚拟化器302可以经由网络面对端口224或者提供者面对端口222将相关租户网络虚拟化上下文发送至网络接口控制器120。另外,在框752中,网络接口控制器120对于框752中的相关租户分区,从网络虚拟化器清除任何剩余或挂起的分组,以保证网络接口控制器120准备好对于将来的分组传输进行分组处理加速。方法700接下来循环回框702,其中,计算设备102等待传输附加的分组。
示例
下文提供本文公开的设备、系统、以及方法的示例性示例。设备、系统、以及方法的实施例可以包含任何一个或多个下述示例和任何组合。
示例1包含一种用于加速的网络虚拟化的计算设备,计算设备包括:主机,其建立在计算设备的租户分区上;网络虚拟化器,其建立在计算设备的不同于租户分区的提供者分区中,网络虚拟化器产生提供者报头;以及网络接口控制器,其具有便于与租户分区的主机通信的第一端口、便于与提供者分区的网络虚拟化器通信的第二端口、以及便于与计算设备外部的网络通信的第三端口,其中,网络接口控制器包含分组处理器模块,以在租户分区与提供者分区之间传递分组,并经由第三端口跨网络传输用提供者报头封装的分组。
示例2包含示例1的主题,其中,网络接口控制器经由第一端口从租户分区的主机接收分组,并经由第二端口将分组发送至提供者部分的网络虚拟化器,并且网络虚拟化器:(i)产生对于分组的提供者报头;(ii)使用提供者报头来封装分组;并且(iii)经由网络接口控制器的第三端口将封装的分组发送至网络。
示例3包含示例1和2中任何一个的主题,其中,网络虚拟化器还:基于分组来确定主机网络虚拟化上下文;以及将主机网络虚拟化上下文应用至分组。
示例4包含示例1-3中任何一个的主题,其中,网络虚拟化器产生对于分组的提供者报头,并经由第二端口或者第三端口将提供者报头传递至网络接口控制器,并且网络接口控制器:(i)经由第一端口从租户分区的主机接收分组;(ii)经由第二端口或者第三端口从网络虚拟化器接收提供者报头;(iii)用提供者报头来封装分组,并且(iv)跨网络经由第三端口传输封装的分组。
示例5包含示例1-4中任何一个的主题,其中,网络接口控制器还:基于分组来确定主机网络虚拟化上下文;以及将主机网络虚拟化上下文应用至分组。
示例6包含示例1-5中任何一个的主题,其中,网络接口控制器还:经由第一端口从租户分区的主机接收分组;确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中;以及响应于确定关联于主机的网络虚拟化上下文被存储在本地存储器中:(i)从本地存储器取回关联于主机的网络虚拟化上下文;(ii)将网络虚拟化上下文应用至分组;(iii)从网络虚拟化器接收提供者报头;并且(iv)用提供者报头来封装分组。
示例7包含示例1-6中任何一个的主题,其中网络接口控制器:(i)经由第一端口从租户分区的主机接收分组;(ii)确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中;并且(iii)响应于确定关联于主机的网络虚拟化上下文未被存储在本地存储器中,经由第二端口将分组发送至提供者分区的网络虚拟化器,网络虚拟化器:(i)基于分组来确定主机网络虚拟化上下文;(ii)将主机网络虚拟化上下文应用至分组;(iii)用提供者报头来封装分组;(iv)经由第二端口或者第三端口将主机网络虚拟化上下文发送至网络接口控制器;并且(v)经由网络接口控制器的第三端口将封装的分组发送至网络。
示例8包含示例1-7中任何一个的主题,其中,网络接口控制器还将主机网络虚拟化上下文存储在网络接口控制器的本地存储器中。
示例9包含示例1-8中任何一个的主题,其中,网络接口控制器还:经由第一端口接收由租户分区的主机产生的另一个分组;取回被存储在本地存储器中的主机网络虚拟化上下文;并且将主机网络虚拟化上下文应用至分组。
示例10包含示例1-9中任何一个的主题,其中,网络接口控制器还经由第二端口从网络虚拟化器接收提供者报头,并且用提供者报头来封装分组。
示例11包含示例1-10中任何一个的主题,其中,网络接口控制器还:经由第一端口从租户分区的主机接收分组;从网络虚拟化器接收关联于主机的主机网络虚拟化上下文;并且将主机网络虚拟化上下文应用至分组。
示例12包含示例1-11中任何一个的主题,其中,网络虚拟化器:经由网络接口控制器的第三端口从网络接收分组;剥去接收的分组的提供者报头;并经由第二端口将经剥去的接收的分组发送至租户分区的主机,其中,网络接口控制器将经剥去的接收的分组从第二端口传递到第一端口。
示例13包含示例1-12中任何一个的主题,其中,网络虚拟化器还:基于分组来确定主机网络虚拟化上下文;以及将主机网络虚拟化上下文应用至分组。
示例14包含示例1-13中任何一个的主题,其中,继收到分组之后,网络接口控制器确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中;以及响应于确定关联于主机的网络虚拟化上下文被存储在本地存储器中:从本地存储器取回关联于主机的网络虚拟化上下文,并将网络虚拟化上下文应用至另一个分组。
示例15包含示例1-14中任何一个的主题,其中,网络接口控制器确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中,并响应于确定关联于主机的网络虚拟化上下文未被存储在本地存储器中,经由第三端口将分组发送至提供者分区的网络虚拟化器,网络虚拟化器:(i)基于分组来确定主机网络虚拟化上下文;(ii)将主机网络虚拟化上下文应用至分组;并且(iii)经由第二端口将主机网络虚拟化上下文发送至网络接口控制器。
示例16包含示例1-15中任何一个的主题,其中,网络接口控制器将主机网络虚拟化上下文存储在网络接口控制器的本地存储器中。
示例17包含示例1-16中任何一个的主题,其中,网络接口控制器:经由第三端口从网络接收另一个分组;取回被存储在本地存储器中的主机网络虚拟化上下文;并且将主机网络虚拟化上下文应用至另一个分组。
示例18包含示例1-17中任何一个的主题,其中,网络接口控制器还:剥去另一个分组的提供者报头;并且经由第一端口将经剥去的另一个分组发送至租户分区的主机。
示例19包含示例1-18中任何一个的主题,其中,网络接口控制器还:经由第三端口从网络接收分组;剥去接收的分组的提供者报头;并且经由第一端口将经剥去的分组发送至租户分区的主机。
示例20包含示例1-19中任何一个的主题,其中,网络接口控制器还:基于另一个分组来确定主机网络虚拟化上下文;以及将主机网络虚拟化上下文应用至另一个分组。
示例21包含一种用于加速的网络虚拟化的方法,方法包括:由计算设备的租户分区的主机产生从计算设备传输的分组;由建立在计算设备的不同于租户分区的提供者分区中的网络虚拟化器产生对于分组的提供者报头;由计算设备的网络接口控制器的第一端口从租户分区的主机接收分组;由网络接口控制器的第二端口与网络虚拟化器通信,来用提供者报头封装分组;以及通过网络接口控制器的第三端口,跨计算设备外部的网络传输用提供者报头封装的分组。
示例22包含示例21的主题,其中,与网络虚拟化器通信包括:从网络接口控制器,经由第二端口将从租户分区的主机接收的分组发送至提供者分区的网络虚拟化器;由网络虚拟化器用提供者报头来封装分组;以及由网络虚拟化器经由网络接口控制器的第三端口,将封装的分组发送至网络。
示例23包含示例21和22中任何一个的主题,还包含:由网络虚拟化器基于分组来确定主机网络虚拟化上下文;并且由网络虚拟化器将主机网络虚拟化上下文应用至分组。
示例24包含示例21-23中任何一个的主题,其中,与网络虚拟化器通信包括:由网络接口控制器经由第二端口或者第三端口从网络虚拟化器接收提供者报头;以及由网络接口控制器用提供者报头来封装分组。
示例25包含示例21-24中任何一个的主题,还包含:由网络接口控制器基于分组来确定主机网络虚拟化上下文;并且由网络接口控制器将主机网络虚拟化上下文应用至分组。
示例26包含示例21-25中任何一个的主题,还包含:由网络接口控制器确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中;以及响应于确定关联于主机的网络虚拟化上下文被存储在本地存储器中:(i)由网络接口控制器从本地存储器取回关联于主机的网络虚拟化上下文;(ii)由网络接口控制器将网络虚拟化上下文应用至分组;(iii)由网络接口控制器从网络虚拟化器接收提供者报头;并且(iv)由网络接口控制器用提供者报头来封装分组。
示例27包含示例21-26中任何一个的主题,还包含:由网络接口控制器确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中;以及响应于确定关联于主机的网络虚拟化上下文未被存储在本地存储器中:(i)从网络接口控制器经由第二端口,将分组发送至提供者分区的网络虚拟化器;(ii)由网络虚拟化器基于分组来确定主机网络虚拟化上下文;(iii)由网络虚拟化器将主机网络虚拟化上下文应用至分组;(iv)由网络虚拟化器用提供者报头来封装分组;(v)由网络接口控制器从网络虚拟化器接收主机网络虚拟化上下文。
示例28包含示例21-27中任何一个的主题,还包含将主机网络虚拟化上下文存储在网络接口控制器的本地存储器中。
示例29包含示例21-28中任何一个的主题,还包含:由网络接口控制器的第一端口接收由租户分区的主机产生的另一个分组;由网络接口控制器取回在本地存储器中存储的主机网络虚拟化上下文;并且由网络接口控制器将主机网络虚拟化上下文应用至分组。
示例30包含示例21-29中任何一个的主题,还包含:由网络接口控制器经由第二端口从网络虚拟化器接收提供者报头;并且由网络接口控制器用提供者报头来封装分组。
示例31包含示例21-30中任何一个的主题,还包含:由网络接口控制器从网络虚拟化器接收关联于主机的主机网络虚拟化上下文;并且由网络接口控制器将主机网络虚拟化上下文应用至分组。
示例32包含示例21-31中任何一个的主题,还包含:由网络虚拟化器经由第三端口从网络接收另一个分组;由网络虚拟化器剥去另一个分组的提供者报头;由网络虚拟化器经由第二端口将经剥去的另一个分组发送至租户分区的主机;以及由网络接口控制器将经剥去的接收的分组从第二端口传递到第三端口。
示例33包含示例21-32中任何一个的主题,还包含:由网络虚拟化器基于另一个分组来确定主机网络虚拟化上下文;并且由网络虚拟化器将主机网络虚拟化上下文应用至另一个分组。
示例34包含示例21-33中任何一个的主题,还包含:由网络接口控制器在继接收另一个分组之后,确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中;以及响应于确定关联于主机的网络虚拟化上下文被存储在本地存储器中:(i)由网络接口控制器从本地存储器取回关联于主机的网络虚拟化上下文;并且(ii)由网络接口控制器将网络虚拟化上下文应用至另一个分组。
示例35包含示例21-34中任何一个的主题,还包含:由网络接口控制器确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中;以及响应于确定关联于主机的网络虚拟化上下文未被存储在本地存储器中:(i)从网络接口控制器经由第三端口将另一个分组发送至提供者分区的网络虚拟化器;(ii)由网络虚拟化器基于另一个分组来确定主机网络虚拟化上下文;(iii)由网络虚拟化器将主机网络虚拟化上下文应用至另一个分组;并且(iv)由网络接口控制器从网络虚拟化器接收主机网络虚拟化上下文。
示例36包含示例21-35中任何一个的主题,还包含将主机网络虚拟化上下文存储在网络接口控制器的本地存储器中。
示例37包含示例21-36中任何一个的主题,还包含:由网络接口控制器经由第三端口从网络接收附加的分组;由网络接口控制器取回在本地存储器中存储的主机网络虚拟化上下文;并且由网络接口控制器将主机网络虚拟化上下文应用至附加的分组。
示例38包含示例21-37中任何一个的主题,还包含:由网络接口控制器剥去附加的分组的提供者报头;并且由网络接口控制器经由第一端口将经剥去的附加的分组发送至租户分区的主机。
示例39包含示例21-38中任何一个的主题,还包含:由网络接口控制器经由第三端口从网络接收另一个分组;由网络接口控制器剥去接收的另一个分组的提供者报头;并且由网络接口控制器经由第一端口将经剥去的另一个分组发送至租户分区的主机。
示例40包含示例21-39中任何一个的主题,还包含:由网络接口控制器基于另一个分组来确定主机网络虚拟化上下文;并且由网络接口控制器将主机网络虚拟化上下文应用至另一个分组。
示例41包含一个或多个机器可读存储介质,其包括存储在其上的多个指令,响应于执行,使计算设备执行示例21-40中的任何一个的方法。
示例42包含一种用于加速的网络虚拟化的计算设备,计算设备包括用于产生从计算设备传输的分组的单元;用于产生对于分组的提供者报头的单元;用于从租户分区的主机接收分组的单元;用于与网络虚拟化器通信来用提供者报头封装分组的单元;以及用于跨计算设备外部的网络,传输用提供者报头封装的分组的单元。
示例43包含示例42的主题,其中,用于与网络虚拟化器通信的单元包括:用于经由第二端口将从租户分区的主机接收的分组发送至提供者分区的网络虚拟化器的单元;用于用提供者报头来封装分组的单元;以及用于经由网络接口控制器的第三端口将封装的分组发送至网络的单元。
示例44包含示例42和43中任何一个的主题,还包含:用于基于分组来确定主机网络虚拟化上下文的单元;以及用于将主机网络虚拟化上下文应用至分组的单元。
示例45包含示例42-44中任何一个的主题,其中,用于与网络虚拟化器通信的单元包括:用于经由第二或者第三端口从网络虚拟化器接收提供者报头的单元;以及用于用提供者报头来封装分组的单元。
示例46包含示例42-45中任何一个的主题,还包含用于基于分组来确定主机网络虚拟化上下文的单元;以及用于将主机网络虚拟化上下文应用至分组的单元。
示例47包含示例42-46中任何一个的主题,还包含:用于确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中的单元;以及用于响应于确定关联于主机的网络虚拟化上下文被存储在本地存储器中(i)从本地存储器取回关联于主机的网络虚拟化上下文;(ii)将网络虚拟化上下文应用至分组;(iii)从网络虚拟化器接收提供者报头;并且(iv)用提供者报头来封装分组的单元。
示例48包含示例42-47中任何一个的主题,还包含:用于确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中的单元;以及用于响应于确定关联于主机的网络虚拟化上下文未被存储在本地存储器中(i)经由第二端口将分组发送至提供者分区的网络虚拟化器;(ii)基于分组来确定主机网络虚拟化上下文;(iii)将主机网络虚拟化上下文应用至分组;(iv)用提供者报头来封装分组;(v)接收主机网络虚拟化上下文的单元。
示例49包含示例42-48中任何一个的主题,还包含用于将主机网络虚拟化上下文存储在网络接口控制器的本地存储器中的单元。
示例50包含示例42-49中任何一个的主题,还包含:用于接收由租户分区的主机产生的另一个分组的单元;用于取回在本地存储器中存储的主机网络虚拟化上下文的单元;以及用于将主机网络虚拟化上下文应用至分组的单元。
示例51包含示例42-50中任何一个的主题,还包含:用于经由第二端口从网络虚拟化器接收提供者报头的单元;以及用于用提供者报头来封装分组的单元。
示例52包含示例42-51中任何一个的主题,还包含:用于接收关联于主机的主机网络虚拟化上下文的单元;用于将主机网络虚拟化上下文应用至分组的单元。
示例53包含示例42-52中任何一个的主题,还包含:用于经由第三端口从网络接收另一个分组的单元;用于剥去另一个分组的提供者报头的单元;用于经由第二端口将经剥去的另一个分组发送至租户分区的主机的单元;用于将经剥去的接收的分组从第二端口传递到第三端口的单元。
示例54包含示例42-53中任何一个的主题,还包含用于基于另一个分组来确定主机网络虚拟化上下文的单元;以及用于将主机网络虚拟化上下文应用至另一个分组的单元。
示例55包含示例42-54中任何一个的主题,还包含:用于继接收另一个分组之后,确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中的单元;以及用于响应于确定关联于主机的网络虚拟化上下文被存储在本地存储器中(i)从本地存储器取回关联于主机的网络虚拟化上下文;并且(ii)将网络虚拟化上下文应用至另一个分组的单元。
示例56包含示例42-55中任何一个的主题,还包含:用于由网络接口控制器确定关联于主机的网络虚拟化上下文是否被存储在网络接口控制器的本地存储器中的单元;以及用于响应于确定关联于主机的网络虚拟化上下文未被存储在本地存储器中(i)经由第三端口将另一个分组发送至提供者分区的网络虚拟化器;(ii)基于另一个分组来确定主机网络虚拟化上下文;(iii)将主机网络虚拟化上下文应用至另一个分组;并且(iv)接收主机网络虚拟化上下文的单元。
示例57包含示例42-56中任何一个的主题,还包含用于将主机网络虚拟化上下文存储在网络接口控制器的本地存储器中的单元。
示例58包含示例42-57中任何一个的主题,还包含:用于经由第三端口从网络接收附加的分组的单元;用于取回在本地存储器中存储的主机网络虚拟化上下文的单元;以及用于将主机网络虚拟化上下文应用至附加的分组的单元。
示例59包含示例42-58中任何一个的主题,还包含:用于剥去附加的分组的提供者报头的单元;以及用于经由第一端口将经剥去的附加的分组发送至租户分区的主机的单元。
示例60包含示例42-59中任何一个的主题,还包含:用于经由第三端口从网络接收另一个分组的单元;用于剥去接收的另一个分组的提供者报头的单元;以及用于经由第一端口将经剥去的另一个分组发送至租户分区的主机的单元。
示例61包含示例42-60中任何一个的主题,还包含用于基于另一个分组来确定主机网络虚拟化上下文的单元;以及用于将主机网络虚拟化上下文应用至另一个分组的单元。
Claims (27)
1.一种用于加速的网络虚拟化的计算设备,所述计算设备包括:
主机,其建立在所述计算设备的租户分区上;
网络虚拟化器,其建立在所述计算设备的不同于所述租户分区的提供者分区中,所述网络虚拟化器产生提供者报头;以及
网络接口控制器,其具有便于与所述租户分区的所述主机通信的第一端口、便于与所述提供者分区的网络虚拟化器通信的第二端口、以及便于与所述计算设备外部的网络通信的第三端口,
其中,所述网络接口控制器包含分组处理器模块,以在所述租户分区与所述提供者分区之间传递分组,并经由所述第三端口跨所述网络传输用所述提供者报头封装的分组,
其中,所述提供者报头包含对应于数据链路层、网络层以及传输层的信息。
2.如权利要求1所述的计算设备,其中:
所述网络接口控制器经由所述第一端口从所述租户分区的所述主机接收分组,并经由所述第二端口将所述分组发送至所述提供者分区 的所述网络虚拟化器,以及
所述网络虚拟化器:(i)使用所述提供者报头来封装所述分组;以及(ii)经由所述网络接口控制器的所述第三端口将封装的分组发送至所述网络。
3.如权利要求1所述的计算设备,其中:
所述网络虚拟化器经由所述第二端口或者所述第三端口将所述提供者报头传递至所述网络接口控制器,以及
所述网络接口控制器:(i)经由所述第一端口从所述租户分区的所述主机接收分组;(ii)经由所述第二端口或者所述第三端口从所述网络虚拟化器接收所述提供者报头;(iii)用所述提供者报头来封装所述分组;以及(iv)跨所述网络经由所述第三端口传输封装的分组。
4.如权利要求3所述的计算设备,其中,所述网络接口控制器还:
基于所述分组来确定主机网络虚拟化上下文;以及
将所述主机网络虚拟化上下文应用至所述分组。
5.如权利要求1所述的计算设备,其中,所述网络接口控制器还:
经由所述第一端口从所述租户分区的所述主机接收分组;
确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中;以及
响应于确定关联于所述主机的所述网络虚拟化上下文被存储在所述本地存储器中:(i)从所述本地存储器取回关联于所述主机的所述网络虚拟化上下文;(ii)将所述网络虚拟化上下文应用至所述分组;(iii)从所述网络虚拟化器接收提供者报头;以及(iv)用所述提供者报头来封装所述分组。
6.如权利要求1所述的计算设备,其中:
所述网络接口控制器:(i)经由所述第一端口从所述租户分区的所述主机接收分组;(ii)确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中;以及(iii)响应于确定关联于所述主机的所述网络虚拟化上下文未被存储在所述本地存储器中,经由所述第二端口将所述分组发送至所述提供者分区的所述网络虚拟化器,
所述网络虚拟化器:(i)基于所述分组来确定主机网络虚拟化上下文;(ii)将所述主机网络虚拟化上下文应用至所述分组;(iii)用所述提供者报头来封装所述分组;(iv)经由所述第二端口或者所述第三端口将所述主机网络虚拟化上下文发送至所述网络接口控制器;以及(v)经由所述网络接口控制器的所述第三端口将封装的分组发送至所述网络。
7.如权利要求1所述的计算设备,其中:
所述网络虚拟化器:经由所述网络接口控制器的所述第三端口从所述网络接收分组;剥去接收的分组的提供者报头,并经由所述第二端口将经剥去的接收的分组发送至所述租户分区的所述主机,
其中,所述网络接口控制器将所述经剥去的接收的分组从所述第二端口传递到所述第一端口。
8.如权利要求7所述的计算设备,其中,继收到所述分组之后,所述网络接口控制器确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中;以及
响应于确定关联于所述主机的所述网络虚拟化上下文被存储在所述本地存储器中:从所述本地存储器取回关联于所述主机的所述网络虚拟化上下文,并将所述网络虚拟化上下文应用至所述分组。
9.如权利要求7所述的计算设备,其中:
所述网络接口控制器确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中,并响应于确定关联于所述主机的所述网络虚拟化上下文未被存储在所述本地存储器中,经由所述第三端口将所述分组发送至所述提供者分区的所述网络虚拟化器,
所述网络虚拟化器:(i)基于所述分组来确定主机网络虚拟化上下文;(ii)将所述主机网络虚拟化上下文应用至所述分组;以及(iii)经由所述第二端口将所述主机网络虚拟化上下文发送至所述网络接口控制器。
10.一种用于加速的网络虚拟化的计算设备,所述计算设备包括:
用于由计算设备的租户分区的主机产生从所述计算设备传输的分组的单元;
用于由建立在所述计算设备的不同于所述租户分区的提供者分区中的网络虚拟化器产生对于所述分组的提供者报头的单元;
用于通过所述计算设备的网络接口控制器的第一端口从所述租户分区的所述主机接收所述分组的单元;
用于通过所述网络接口控制器的第二端口与所述网络虚拟化器通信,来用所述提供者报头封装所述分组的单元;以及
用于通过所述网络接口控制器的第三端口跨所述计算设备外部的网络,传输用所述提供者报头封装的所述分组的单元,其中,所述提供者报头包含对应于数据链路层、网络层以及传输层的信息。
11.如权利要求10所述的计算设备,其中,用于与所述网络虚拟化器通信的单元包括:
用于从所述网络接口控制器经由所述第二端口,将从所述租户分区的所述主机接收的所述分组发送至所述提供者分区的所述网络虚拟化器的单元;
用于由所述网络虚拟化器用所述提供者报头来封装所述分组的单元;以及
用于由所述网络虚拟化器经由所述网络接口控制器的所述第三端口,将封装的分组发送至所述网络的单元。
12.如权利要求11所述的计算设备,还包括:
用于由所述网络虚拟化器基于所述分组来确定主机网络虚拟化上下文的单元;以及
用于由所述网络虚拟化器将所述主机网络虚拟化上下文应用至所述分组的单元。
13.如权利要求10所述的计算设备,其中,用于与所述网络虚拟化器通信的单元包括:
用于由所述网络接口控制器经由所述第二端口或者所述第三端口从所述网络虚拟化器接收所述提供者报头的单元;以及
用于由所述网络接口控制器用所述提供者报头来封装所述分组的单元。
14.如权利要求10所述的计算设备,还包括:
用于由所述网络接口控制器确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中的单元;以及
响应于确定关联于所述主机的所述网络虚拟化上下文被存储在所述本地存储器中:
(i)用于由所述网络接口控制器从所述本地存储器取回关联于所述主机的所述网络虚拟化上下文的单元;
(ii)用于由所述网络接口控制器将所述网络虚拟化上下文应用至所述分组的单元;
(iii)用于由所述网络接口控制器从所述网络虚拟化器接收所述提供者报头的单元;以及
(iv)用于由所述网络接口控制器用所述提供者报头来封装所述分组的单元。
15.如权利要求10所述的计算设备,还包括:
用于由所述网络接口控制器确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中的单元;以及
响应于确定关联于所述主机的所述网络虚拟化上下文未被存储在所述本地存储器中:
(i)用于从所述网络接口控制器经由所述第二端口,将所述分组发送至所述提供者分区的所述网络虚拟化器的单元;
(ii)用于由所述网络虚拟化器基于所述分组来确定主机网络虚拟化上下文的单元;
(iii)用于由所述网络虚拟化器将所述主机网络虚拟化上下文应用至所述分组的单元;
(iv)用于由所述网络虚拟化器用所述提供者报头来封装所述分组的单元;
(v)用于由所述网络接口控制器从所述网络虚拟化器接收所述主机网络虚拟化上下文的单元。
16.如权利要求10所述的计算设备,还包括:
用于由所述网络虚拟化器经由所述第三端口从所述网络接收另一个分组的单元;
用于由所述网络虚拟化器剥去所述另一个分组的提供者报头的单元;
用于由所述网络虚拟化器经由所述第二端口将经剥去的另一个分组发送至所述租户分区的主机的单元;以及
用于由所述网络接口控制器将经剥去的接收的分组从所述第二端口传递到所述第三端口的单元。
17.如权利要求16所述的计算设备,还包括:
用于由所述网络接口控制器并且继接收所述另一个分组之后,确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中的单元;以及
响应于确定关联于所述主机的所述网络虚拟化上下文被存储在所述本地存储器中:
(i)用于由所述网络接口控制器从所述本地存储器取回关联于所述主机的所述网络虚拟化上下文的单元;以及
(ii)用于由所述网络接口控制器将所述网络虚拟化上下文应用至所述另一个分组的单元。
18.一种用于加速的网络虚拟化的方法,所述方法包括:
由计算设备的租户分区的主机产生从所述计算设备传输的分组;
由建立在所述计算设备的不同于所述租户分区的提供者分区中的网络虚拟化器产生对于所述分组的提供者报头;
通过所述计算设备的网络接口控制器的第一端口从所述租户分区的所述主机接收所述分组;
通过所述网络接口控制器的第二端口与所述网络虚拟化器通信,来用所述提供者报头封装所述分组;以及
通过所述网络接口控制器的第三端口跨所述计算设备外部的网络,传输用所述提供者报头封装的所述分组,其中,所述提供者报头包含对应于数据链路层、网络层以及传输层的信息。
19.如权利要求18所述的方法,其中,与所述网络虚拟化器通信包括:
从所述网络接口控制器经由所述第二端口,将从所述租户分区的所述主机接收的所述分组发送至所述提供者分区的所述网络虚拟化器;
由所述网络虚拟化器用所述提供者报头来封装所述分组;以及
由所述网络虚拟化器经由所述网络接口控制器的所述第三端口,将封装的分组发送至所述网络。
20.如权利要求19所述的方法,还包括:
由所述网络虚拟化器基于所述分组来确定主机网络虚拟化上下文;以及
由所述网络虚拟化器将所述主机网络虚拟化上下文应用至所述分组。
21.如权利要求18所述的方法,其中,与所述网络虚拟化器通信包括:
由所述网络接口控制器经由所述第二端口或者所述第三端口从所述网络虚拟化器接收所述提供者报头;以及
由所述网络接口控制器用所述提供者报头来封装所述分组。
22.如权利要求18所述的方法,还包括:
由所述网络接口控制器确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中;以及
响应于确定关联于所述主机的所述网络虚拟化上下文被存储在所述本地存储器中:
(i)由所述网络接口控制器从所述本地存储器取回关联于所述主机的所述网络虚拟化上下文;
(ii)由所述网络接口控制器将所述网络虚拟化上下文应用至所述分组;
(iii)由所述网络接口控制器从所述网络虚拟化器接收所述提供者报头;以及
(iv)由所述网络接口控制器用所述提供者报头来封装所述分组。
23.如权利要求18所述的方法,还包括:
由所述网络接口控制器确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中;以及
响应于确定关联于所述主机的所述网络虚拟化上下文未被存储在所述本地存储器中:
(i)经由所述第二端口从所述网络接口控制器,将所述分组发送至所述提供者分区的所述网络虚拟化器;
(ii)由所述网络虚拟化器基于所述分组来确定主机网络虚拟化上下文;
(iii)由所述网络虚拟化器将所述主机网络虚拟化上下文应用至所述分组;
(iv)由所述网络虚拟化器用所述提供者报头来封装所述分组;
(v)由所述网络接口控制器从所述网络虚拟化器接收所述主机网络虚拟化上下文。
24.如权利要求18所述的方法,还包括:
由所述网络虚拟化器经由所述第三端口从所述网络接收另一个分组;
由所述网络虚拟化器剥去所述另一个分组的提供者报头;
由所述网络虚拟化器经由所述第二端口将经剥去的另一个分组发送至所述租户分区的主机;以及
由所述网络接口控制器将经剥去的接收的分组从所述第二端口传递到所述第三端口。
25.如权利要求24所述的方法,还包括:
由所述网络接口控制器并且继接收所述另一个分组之后,确定关联于所述主机的网络虚拟化上下文是否被存储在所述网络接口控制器的本地存储器中;以及
响应于确定关联于所述主机的所述网络虚拟化上下文被存储在所述本地存储器中:
(i)由所述网络接口控制器从所述本地存储器取回关联于所述主机的所述网络虚拟化上下文;以及
(ii)由所述网络接口控制器将所述网络虚拟化上下文应用至所述另一个分组。
26.一种用于加速的网络虚拟化的设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行如权利要求18-25中的任一项所述的方法。
27.一种具有指令的机器可读存储介质,所述指令在被处理器执行时,使所述处理器执行如权利要求18-25中的任一项所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461986329P | 2014-04-30 | 2014-04-30 | |
US61/986,329 | 2014-04-30 | ||
US14/583,667 US20150319250A1 (en) | 2014-04-30 | 2014-12-27 | Technologies for accelerating network virtualization |
US14/583,667 | 2014-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105049464A CN105049464A (zh) | 2015-11-11 |
CN105049464B true CN105049464B (zh) | 2020-04-24 |
Family
ID=54356106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510140436.5A Active CN105049464B (zh) | 2014-04-30 | 2015-03-27 | 用于加速网络虚拟化的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150319250A1 (zh) |
KR (1) | KR101649819B1 (zh) |
CN (1) | CN105049464B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102160252B1 (ko) * | 2013-12-18 | 2020-09-25 | 삼성전자주식회사 | 가상 스위칭 방법 및 장치 |
US10956189B2 (en) * | 2015-02-13 | 2021-03-23 | Red Hat Israel, Ltd. | Methods for managing virtualized remote direct memory access devices |
US10509729B2 (en) | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
KR101977850B1 (ko) * | 2017-09-15 | 2019-05-13 | 단국대학교 산학협력단 | 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법 |
US10382346B2 (en) * | 2017-10-24 | 2019-08-13 | Cisco Technology, Inc. | Method and device for offloading processing of data flows |
US10785020B2 (en) * | 2018-01-19 | 2020-09-22 | Microsoft Technology Licensing, Llc | Hardware offload for QUIC connections |
JP7412405B2 (ja) * | 2021-12-23 | 2024-01-12 | 株式会社日立製作所 | 情報処理システム、情報処理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102017544A (zh) * | 2008-02-29 | 2011-04-13 | 甲骨文美国公司 | 卸载网络处理的方法和系统 |
CN102055667A (zh) * | 2009-11-04 | 2011-05-11 | 丛林网络公司 | 配置虚拟网络交换机的方法和设备 |
CN103051510A (zh) * | 2011-09-07 | 2013-04-17 | 微软公司 | 网络策略向网络接口卡的安全和高效卸载 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2418326B (en) * | 2004-09-17 | 2007-04-11 | Hewlett Packard Development Co | Network vitrualization |
US8028071B1 (en) * | 2006-02-15 | 2011-09-27 | Vmware, Inc. | TCP/IP offload engine virtualization system and methods |
US9389895B2 (en) * | 2009-12-17 | 2016-07-12 | Microsoft Technology Licensing, Llc | Virtual storage target offload techniques |
US8849941B2 (en) * | 2010-09-30 | 2014-09-30 | Microsoft Corporation | Virtual desktop configuration and operation techniques |
US8856518B2 (en) * | 2011-09-07 | 2014-10-07 | Microsoft Corporation | Secure and efficient offloading of network policies to network interface cards |
US8978031B2 (en) * | 2012-08-21 | 2015-03-10 | International Business Machines Corporation | Processing of overlay networks using an accelerated network interface card |
WO2014145750A1 (en) * | 2013-03-15 | 2014-09-18 | Brocade Communications Systems, Inc. | Scalable gateways for a fabric switch |
US10212022B2 (en) * | 2013-09-13 | 2019-02-19 | Microsoft Technology Licensing, Llc | Enhanced network virtualization using metadata in encapsulation header |
-
2014
- 2014-12-27 US US14/583,667 patent/US20150319250A1/en not_active Abandoned
-
2015
- 2015-03-27 KR KR1020150043330A patent/KR101649819B1/ko active IP Right Grant
- 2015-03-27 CN CN201510140436.5A patent/CN105049464B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102017544A (zh) * | 2008-02-29 | 2011-04-13 | 甲骨文美国公司 | 卸载网络处理的方法和系统 |
CN102055667A (zh) * | 2009-11-04 | 2011-05-11 | 丛林网络公司 | 配置虚拟网络交换机的方法和设备 |
CN103051510A (zh) * | 2011-09-07 | 2013-04-17 | 微软公司 | 网络策略向网络接口卡的安全和高效卸载 |
Also Published As
Publication number | Publication date |
---|---|
KR101649819B1 (ko) | 2016-08-19 |
CN105049464A (zh) | 2015-11-11 |
US20150319250A1 (en) | 2015-11-05 |
KR20150125564A (ko) | 2015-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105049464B (zh) | 用于加速网络虚拟化的技术 | |
JP6605713B2 (ja) | クラウドコンピューティングシステムにおけるパケット処理方法、ホスト及びシステム | |
CN109076029B (zh) | 用于非统一网络输入/输出访问加速的方法和装置 | |
US10182005B2 (en) | Software defined network (SDN) switch clusters having layer-3 distributed router functionality | |
CN107925677B (zh) | 用于卸载数据对象复制以及服务功能链管理的方法及交换机 | |
US9031081B2 (en) | Method and system for switching in a virtualized platform | |
US9854470B2 (en) | Processing of overlay networks using an accelerated network interface card | |
US20230115114A1 (en) | Hardware assisted virtual switch | |
US10721273B2 (en) | Automated security policy | |
US9503313B2 (en) | Network interface card having overlay gateway functionality | |
US9678912B2 (en) | Pass-through converged network adaptor (CNA) using existing ethernet switching device | |
US9571338B2 (en) | Scalable distributed control plane for network switching systems | |
US12038861B2 (en) | System decoder for training accelerators | |
US9086900B2 (en) | Data flow affinity for heterogenous virtual machines | |
CN108228309B (zh) | 基于虚拟机的数据包发送和接收方法及装置 | |
WO2018057165A1 (en) | Technologies for dynamically transitioning network traffic host buffer queues | |
US20200104152A1 (en) | Methods and systems for virtual tor implementation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |