计算方法、计算装置和计算机可读存储介质

文档序号:156070 发布日期:2021-10-26 浏览:36次 >En<

阅读说明:本技术 计算方法、计算装置和计算机可读存储介质 (Calculation method, calculation apparatus, and computer-readable storage medium ) 是由 蒂拉卡·拉杰·苏伦德拉·巴布 胡晓 苏中友 于 2017-12-28 设计创作,主要内容包括:本发明涉及一种计算方法、计算装置和计算机可读存储介质。在一些示例中,一种计算装置,包括:虚拟网络端点;包括第一硬件组件和第二硬件组件的网络接口卡(NIC),其中,第一硬件组件和第二硬件组件提供至NIC的物理网络接口的单独的分组输入/输出访问,其中,NIC被配置为接收从物理网络接口入站的分组;以及虚拟路由器,从NIC接收分组并且响应于确定分组的目的地端点是虚拟网络端点,而使用第一硬件组件将分组输出回至NIC,其中,NIC进一步被配置为响应于从虚拟路由器接收分组而将分组切换至虚拟网络端点并且使用第二硬件组件将分组输出至虚拟网络端点。(The invention relates to a computing method, a computing device and a computer readable storage medium. In some examples, a computing device, comprising: a virtual network endpoint; a Network Interface Card (NIC) comprising a first hardware component and a second hardware component, wherein the first hardware component and the second hardware component provide separate packet input/output access to a physical network interface of the NIC, wherein the NIC is configured to receive packets inbound from the physical network interface; and a virtual router to receive the packet from the NIC and, in response to determining that a destination endpoint of the packet is a virtual network endpoint, output the packet back to the NIC using the first hardware component, wherein the NIC is further configured to switch the packet to the virtual network endpoint and output the packet to the virtual network endpoint using the second hardware component in response to receiving the packet from the virtual router.)

计算方法、计算装置和计算机可读存储介质

本申请是申请号为201711471518.3、申请日为2017年12月28日、发明名称为“计算方法、计算装置和计算机可读存储介质”的发明专利申请的分案申请。

技术领域

本发明涉及计算机网络,并且更具体而言,涉及在物理网络上实现虚拟网络。

背景技术

在典型的云数据中心环境中,存在大量的互连服务器,该服务器提供计算和/或存储容量以运行各种应用。例如,数据中心可以包括托管用于订户(即,数据中心的客户)的应用和服务的设施。例如,数据中心可托管所有的基础设施装置,诸如联网和存储系统、冗余电源以及环境控制。在典型的数据中心中,存储系统和应用服务器的集群经由一个或多个层级的物理网络交换机和路由器提供的高速交换机结构互连。更复杂的数据中心利用位于各种物理主机设施中的订户支持装置提供遍布全球的基础设施。

发明内容

总体上,技术被描述成使用计算装置的基于网络接口卡的交换机在用于虚拟网络的隧道端点与计算装置所托管的虚拟网络端点之间切换用于虚拟网络的分组。例如,计算装置可使用虚拟化技术来托管多个虚拟机或容器,例如,是用于一个或多个虚拟网络的对应端点的虚拟机或容器。计算装置还可以执行基于软件的虚拟路由器,该虚拟路由器基于分组的隧道封装报头和层3分组报头确定经由隧道接收的用于分组的虚拟网络端点,该隧道覆盖数据中心物理交换机结构并且终止于计算装置。虚拟路由器可用具有层2目的地地址的层2报头来封装所接收的分组,该层2目的地地址与用于分组的目的地端点相关联;并且虚拟路由器可将分组输出至计算装置的网络接口卡。网络接口卡的内部层2交换机(其可以是单根输入/输出虚拟化(SR-IOV)网络接口卡交换机)基于层2报头将分组切换至目的地端点。

就由虚拟网络端点输出以用于经由虚拟网络传递的分组而言,虚拟网络端点被配置为将具有去往虚拟路由器的层2报头的分组输出至网络接口卡的内部层2交换机。针对每个这种出站分组,内部层2交换机都将分组切换至虚拟路由器,虚拟路由器确定用于分组的虚拟网络并且将经指示虚拟网络的隧道封装报头所封装的分组输出至物理目的地计算装置。

该技术可以提供一个或多个优点。例如,由于基于软件的虚拟路由器与虚拟网络端点(二者均由计算装置托管)之间的分组的路径是经由网络接口卡交换机的,因此,所应用的技术可利用(leverage)现有的底层网络接口卡硬件队列和交换能力,以在虚拟路由器和端点之间执行高速层2转发。此外,网络接口卡可利用直接存储器存取来复制虚拟路由器存储地址空间与虚拟网络端点之间的分组,从而减少计算装置中央处理器(CPU)参与进程间内存复制。该技术还可以使虚拟路由器能够利用网络接口卡速率限制和速率整形以及硬件卸载能力,诸如通用接收卸载(GRO)、传输控制协议(TCP)、分段分载(TSO)和大接收卸载(LRO)。此外,通过组合使用基于软件的虚拟路由器与在虚拟路由器和虚拟网络端点之间的基于网络接口卡的传输,该技术可克服在一些基于网络接口卡的虚拟路由器中的固有缺点,诸如协议支持受限,利用隧道端点和虚拟路由能力的网络接口卡的成本增加、以及更具挑战性的开发环境。

在一个示例中,一种包括指令的非暂时性计算机可读存储介质,该指令使计算装置执行下列步骤:由计算装置的网络接口卡经由网络接口卡的物理网络接口接收从物理网络接口入站的分组,其中,网络接口卡包括第一硬件组件和第二硬件组件,其中,第一硬件组件和第二硬件组件提供对网络接口卡的物理网络接口的单独的分组输入/输出访问;由计算装置的虚拟路由器从网络接口卡接收分组;由虚拟路由器响应于确定分组的目的地端点是计算装置的虚拟网络端点而使用第一硬件组件将分组输出回至网络接口卡;以及由网络接口卡响应于从虚拟路由器接收分组而将分组切换至虚拟网络端点并且使用第二硬件组件将分组输出至虚拟网络端点。

在另一示例中,一种方法,包括:由计算装置的网络接口卡经由网络接口卡的物理网络接口接收从物理网络接口入站的分组,其中,网络接口卡包括第一硬件组件和第二硬件组件,并且其中,第一硬件组件和第二硬件组件提供对网络接口卡的物理网络接口的单独的分组输入/输出访问;由计算装置的虚拟路由器从网络接口卡接收分组;由虚拟路由器响应于确定分组的目的地端点是计算装置的虚拟网络端点而使用第一硬件组件将分组输出回至网络接口卡;以及由网络接口卡响应于从虚拟路由器接收分组,而将分组切换至虚拟网络端点并且使用第二硬件组件将分组输出至虚拟网络端点。

在另一示例中,一种计算装置,包括:耦接至存储装置的一个或多个基于硬件的处理器;被配置用于由一个或多个处理器执行的虚拟网络端点;包括第一硬件组件和第二硬件组件的网络接口卡,其中,第一硬件组件和第二硬件组件提供对网络接口卡的物理网络接口的单独的分组输入/输出访问,其中,网络接口卡被配置为接收从物理网络接口入站的分组;以及虚拟路由器,被配置用于由一个或多个处理器执行以从网络接口卡接收分组并且响应于确定分组的目的地端点是虚拟网络端点而使用第一硬件组件将分组输出回至网络接口卡,其中,网络接口卡进一步被配置为响应于从虚拟路由器接收分组,而将分组切换至虚拟网络端点并且使用第二硬件组件将分组输出至虚拟网络端点。

将在下面的附图和描述中阐明本公开的一个或多个实施方式的细节。本公开的其他特征、目的和优点将从描述和附图以及从权利要求中变得显而易见。

附图说明

图1是示出了具有其中可以实现本文描述的技术示例的数据中心的示例网络系统的框图。

图2A至图2B是分别示出根据本文描述的技术的利用网络接口卡内部装置交换机以在虚拟网络端点与隧道端点的虚拟路由器之间转发分组的示例性计算装置的框图。

图3A是详细示出了可以由根据本公开描述的技术的计算装置处理的示例性隧道分组的框图。

图3B是详细示出了具有由虚拟路由器生成的新的层2报头的以用于由基于网络接口卡的交换机切换至目的地虚拟网络端点的示例性分组的框图。

图4是示出了用于根据本公开描述的技术的计算装置的示例性操作模式的流程图。

图5是示出了用于根据本公开描述的技术的计算装置的示例性操作模式的流程图。

贯穿整个描述和附图中,相同的参考符号指代相同的元件。

具体实施方式

图1是示出了具有其中可以实现本文描述的技术示例的数据中心10的示例网络系统8的框图。通常,数据中心10为具有一个或多个客户网络的客户站点11(示出为“客户11”)提供用于应用和服务的操作环境,该一个或多个客户网络通过服务提供商网络7耦接至数据中心。例如,数据中心10可托管基础设施设备,诸如联网和存储系统、冗余电源、以及环境控制。服务提供商网络7耦接至可以表示由其他提供商管理的一个或多个网络的公共网络15,并且从而可以形成例如互联网的大规模公共网络基础结构的一部分。例如,公共网络15可表示局域网(LAN)、广域网(WAN)、互联网、虚拟LAN(VLAN)、企业LAN、层3虚拟专用网络(VPN)、由运行服务提供商网络7的服务提供商运行的互联网协议(IP)内联网、企业IP网或其中的一些组合。

虽然客户站点11和公共网络15主要被示出和描述成服务提供商网络7的边缘网络,但在一些示例中,客户站点11和公共网络15中的一个或多个可以是在数据中心10或另一数据中心内的租户网络。例如,数据中心10可以托管多个租户(客户),每个租户分别与一个或多个虚拟专用网络(VPN)相关联,每个虚拟专用网络可以实现客户站点11中的一个。

服务提供商网络7提供了至附加的客户站点11、数据中心10和公共网络15的基于分组的连接。服务提供商网络7可以表示由服务提供商拥有并运行的以使多个网络互连的网络。服务提供商网络7可以实现多协议标记交换(MPLS)转发,并且在这种情况下服务提供商网络可称为MPLS网络或MPLS骨干。在一些情况下,服务提供商网络7表示多个互联的自动化系统,诸如从一个或多个服务提供商提供服务的互联网。

在一些示例中,数据中心10可以表示许多在地理上分布的网络数据中心之一。如图1的示例所示,数据中心10可以是向客户提供网络服务的设施。服务提供商的客户可以是诸如企业和政府的集合实体或个体。例如,网络数据中心可以托管用于几个企业和最终用户的网络服务。其他示例性服务可以包括数据存储、虚拟专用网络、流量工程、文件服务、数据挖掘、科学或超级计算等。虽然数据中心10的元件(诸如一个或多个物理网络功能部(PNF)或虚拟网络功能部(VNF))被描述成服务提供商网络7的单独的边缘网络,但是其可以包括在服务提供商网络7核心内。

在本示例中,数据中心10包括经由一层或多层物理网络交换机和路由器提供的交换机结构14互连的存储和/或计算服务器,其中服务器12A-12X(本文中为“服务器12”)被描述成耦接至架顶交换机16A-16N。本文中,服务器12还可以称为“主机”或“主机装置”。虽然在图1中仅详细示出了耦接至TOR交换机16A的服务器,但是数据中心10也可以包括耦接至数据中心10的其他TOR交换机16的许多额外的服务器。

所示示例中的交换机结构14包括耦接至底架(或“脊柱”或“核心”)交换机18A-18M(统称为“底架交换机18”)的互连架顶(TOR)(或其他“叶片”)交换机16A-16N(统称为“TOR交换机16”)。虽然没有示出,但数据中心10还可以包括例如一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙、入侵检测和/或入侵防御装置的安全装置、服务器、计算机终端、膝上型电脑、打印机、数据库、诸如移动电话或个人数字助理的无线移动装置、无线接入点、桥接器、线缆调制解调器、应用加速器或其他网络装置。数据中心10还可以包括一个或多个物理网络功能部(PNF),诸如物理防火墙、负载均衡器、路由器、路由反射器、宽带网络网关(BNG)、演进分组核心或其他蜂窝网络元件以及其他PNF。

在本示例中,TOR交换机16和底架交换机18向服务器12提供至IP结构20和服务提供商网络7的冗余(多宿主)连接。底架交换机18聚集流量流并且提供TOR交换机16之间的连接。TOR交换机16可以是提供层2(MAC)和/或层3(例如,IP)路由和/或交换功能的网络装置。TOR交换机16和底架交换机18可以各自包括一个或多个处理器以及存储器,并且可执行一个或多个软件进程。底架交换机18耦接至IP结构20,IP结构20可执行层3路由,以通过服务提供商网络7在数据中心10与客户站点11之间路由网络流量。数据中心10的交换架构仅是示例。其他交换结构例如可具有更多或更少的交换层。

术语“分组流”、“流量流”或简单的“流”指来自特定源装置或端点且发送至特定目的地装置或端点的一组分组。单个分组的流可通过五元组来识别,例如:<源网络地址、目的地网络地址、源端口、目的地端口、协议>。该五元组通常识别与收到的分组相对应的分组流。n元组指从五元组提取的n个项目。例如,分组的二元组可以指分组的<源网络地址、目的地网络地址>或<源网络地址、源端口>的组合。

服务器12可以各自表示计算服务器、交换机或存储服务器。例如,每个服务器12都可以表示诸如基于x86处理器的服务器的计算装置,该计算装置被配置为根据本文描述的技术来运行。服务器12可以为NFV架构提供网络功能虚拟化基础设施(NFVI)。

服务器12托管在物理网络上运行的一个或多个虚拟网络的端点23(图1中示为“EP”23),物理网络在此处由IP结构20和交换机结构14来表示。尽管主要相对于基于数据中心的交换网络进行描述,但是诸如服务提供商网络7的其他物理网络可以支撑一个或多个虚拟网络。

根据本公开中描述的技术的各个方面,一个或多个服务器12可以各自包括虚拟路由器,该虚拟路由器在数据中心10内为对应的虚拟网络执行一个或多个路由实例。每一个路由实例都可能与网络转发表相关联。每一个路由实例可以表示用于互联网协议-虚拟专用网络(IP-VPN)的虚拟路由和转发实例(VRF)。例如,由服务器12A的虚拟路由从底层物理网络结构接收的分组可包括外部报头以允许物理网络结构将有效载荷或“内部分组”用隧道传送至执行虚拟路由的服务器12A的网络接口的物理网络地址。外部报头不仅可包括服务器的网络接口的物理网络地址,而且还包括识别虚拟网络中的一个以及对应的由虚拟路由执行的路由实例的虚拟网络标识符,诸如VxLAN标记或多协议标签交换(MPLS)标签。内部分组包括具有符合由虚拟网络标识符识别的虚拟网络的虚拟网络地址空间的目的地网络地址的内部报头。

根据本公开的一个或多个实施方式,控制器24提供逻辑上并且在一些情况下物理上的中央控制器,以促进一个或多个虚拟网络在数据中心10内的操作。在一些示例中,控制器24可以响应于从网络管理员24接收到的配置输入而进行操作。在2013年6月5日提交的题为“PHYSICAL PATH DETERMINATION FOR VIRTUAL NETWORK PACKET FLOWS”的国际申请号PCT/US2013/044378中以及在2014年3月26日提交的题为“Tunneled Packet Aggregationfor Virtual Networks”的美国专利申请第14/226,509号中找到了有关控制器24结合数据中心10的其他装置或其他软件定义的网络而进行操作的附加信息,上述申请通过引用结合于此,就如同在本文中完全阐述一样。

每个服务器12托管虚拟网络的一个或多个虚拟网络端点23。每个端点23可以表示虚拟机、容器或作为虚拟网络的端点(诸如虚拟网络的层3端点)的其他虚拟化执行环境。服务器12A执行两个虚拟网络端点23A并且服务器12X执行一个虚拟网络端点23X。然而,服务器12可以执行如实际给出的服务器12的硬件资源限制一样多的端点。每个端点23可以使用一个或多个虚拟硬件组件21来执行分组I/O或以其他方式处理分组。例如,端点23A可以使用由NIC 13A使能的一个虚拟硬件组件(例如,SR-IOV虚拟功能部)以执行分组I/O并且利用TOR交换机16A在一个或多个通信链路上接收/发送分组。

通常,虚拟机提供虚拟化/客户操作系统以用于在隔离的虚拟环境中执行应用。由于虚拟机从主机服务器的物理硬件虚拟化,因此,执行应用与主机的硬件和其他虚拟机隔离。

虚拟机的一种替代方式是虚拟化容器,诸如由开源DOCKER容器应用提供的虚拟化容器。与虚拟机一样,每个容器被虚拟化并且可以与主机和其他容器保持隔离。然而,与虚拟机不同的是,每个容器可以省略单独的操作系统并且仅提供应用套件和专用应用库。容器作为隔离的用户空间实例由主机执行并且可以与主机上执行的其他容器共享操作系统和共用库。因此,容器可能需要比虚拟机更少的处理能力、存储和网络资源。如本文所使用的,容器还可以被称为虚拟化引擎、虚拟专用服务器、筒仓(silo)或拘留所(jail)。在一些实例中,本文描述的技术是相对于容器和虚拟机或其他虚拟化组件。

服务器12各自包括至少一个网络接口卡(NIC)13,每个网络接口卡13包括至少一个接口以在通信链路上与TOR交换机16交换分组。例如,服务器12A包括NIC 13A。每个NIC13提供用于虚拟化输入/输出(I/O)的一个或多个虚拟硬件组件21。用于I/O的虚拟硬件组件可以是物理NIC 13的虚拟化(“物理功能部”)。例如,在外围组件接口专用兴趣组SR-IOV说明书中描述的单根I/O虚拟化(SR-IOV)中,网络接口卡(或“网络适配器”)的PCIe物理功能被虚拟化以将一个或多个虚拟化网络接口卡呈现为“虚拟功能部”,以由在服务器12上执行的各个端点使用。以这种方式,虚拟网络端点可以共享相同的PCIe物理硬件资源,并且虚拟功能部是虚拟硬件组件21的示例。作为另一示例,一个或多个服务器12可以实现Virtio(例如对于Linux操作系统可用的准虚拟化框架),Virtio将仿真NIC功能提供为虚拟化硬件组件的类型。作为另一示例,一个或多个服务器12可以实现Open vSwitch,以在托管的虚拟机的一个或多个虚拟NIC(vNIC)之间执行分布式虚拟多层切换,其中,这种vNIC还可以表示虚拟硬件组件的类型。在一些实例中,虚拟硬件组件是虚拟I/O(例如,NIC)组件。在一些实例中,虚拟硬件组件是SR-IOV虚拟功能部。

NIC 13各自包括内部装置交换机25,以在与NIC相关的虚拟硬件组件21之间切换数据。例如,对于能够执行SR-IOV的NIC,内部装置交换机可以是虚拟以太网网桥(VEB),以在SR-IOV虚拟功能部之间以及对应地在被配置为使用SR-IOV虚拟功能部的端点之间切换,其中,每个端点可以包括客户操作系统。可替换地,内部装置交换机25可称为NIC交换机或用于SR-IOV实现的SR-IOV NIC交换机。与NIC 13A相关联的每个虚拟硬件组件21A可以与层2目的地地址相关联,该层2目的地地址可以由NIC 13A或负责配置NIC 13A的软件进程来分配。物理硬件组件(或用于SR-IOV实现的“物理功能部”)也与层2目的地地址相关联。

为了在与NIC 13A相关联的虚拟硬件组件之间切换数据,内部装置交换机25可以执行层2转发,以在虚拟硬件组件21A与NIC 13A的物理硬件组件之间切换或桥接层2分组。每个虚拟硬件组件21可以位于对于端点23的虚拟网络的虚拟局域网(VLAN)上,端点23使用了用于I/O的虚拟硬件组件21。在NIC内的SR-IOV实现的进一步示例细节在“PCI-SIG SR-IOV Primer:An Introduction to SR-IOV Technology”(第2.5版,英特尔公司,2011年1月)中进行了描述,其全部内容通过引用结合于此。

服务器12A-12X包括各自的隧道端点26A-26X。对于隧道端点26A,例如,对于由服务器12A接收的分组,隧道端点26A终止虚拟网络覆盖隧道。如本文所述,每个隧道端点26包括、服务或以其他方式与虚拟路由器相关联,该虚拟路由器基于分组的隧道封装报头确定用于所接收到的分组的虚拟网络,并且将分组转发至用于分组的适当的目的地端点23。对于从端点23出站的每个分组,隧道端点26A的虚拟路由器附上指示分组的虚拟网络的隧道封装报头以生成封装或“隧道”报头,并且隧道端点26A经由虚拟网络的覆盖隧道将封装的分组输出至物理目的地计算装置,诸如另一台服务器12。如本文所使用的,虚拟路由器可以执行隧道端点的操作,以将源自虚拟网络端点23的内部分组封装以生成隧道分组并且将隧道分组解封装以获得用于路由至虚拟网络端点23的内部分组。

根据本文描述的技术,服务器12采用混合模型进行内部转发,从而隧道端点26经由虚拟网络覆盖将从交换机结构14接收的分组转发至内部装置交换机25,以用于转发至目的地端点23。在本文描述的混合模型中,通过服务器12A进行的分组的隧道封装/解封装以及虚拟路由例如由通过服务器12A的一个或多个处理器(非NIC 13A的处理器)执行的隧道端点26A来执行,而隧道端点26A和虚拟网络端点23之间的分组的切换由NIC 13A的交换机25A来执行。因此,虚拟路由模型是混合模型:其中一个或多个处理器(非NIC 13A的处理器)执行的NIC 13A和隧道端点26A均未执行(1)封装/解封装和虚拟路由以及(2)对于来自或去往虚拟网络端点23的分组的切换功能。

例如,就服务器12A而言,内部装置交换机25A在隧道端点26A虚拟网络端点23A之间切换用于虚拟网络的分组。隧道端点26A可从物理硬件组件接收分组27。隧道端点26A的虚拟路由器可基于隧道封装报头和分组27的层3分组报头确定分组27的虚拟网络端点23。虚拟路由器可用具有层2目的地地址的新的层2报头对所接收到的分组进行封装,该层2目的地地址与分组27的目的地端点23相关;并且虚拟路由器可将分组27输出至NIC 13A。内部装置交换机25A基于新的层2报头将分组27切换至目的地端点23。在一些情况下,新的层2报头包括用于目的地端点23的VLAN的VLAN标记。

针对虚拟网络端点23A输出以通过虚拟网络传递的分组,虚拟网络端点23A被配置为向内部层2交换机25A输出含有具有目的地层2地址的层2报头的分组;目的地层2地址是由物理硬件组件或I/O隧道端点26A使用的虚拟硬件组件21A之一的层2地址。就每个这种向外发送的分组,内部层2交换机25A将分组切换至具有虚拟路由实例的隧道端点26A,从而确定分组的虚拟网络并且向物理目的地计算装置输出经隧道封装报头封装的分组,该隧道封装报头指示了源端点23A的虚拟网络和分组的目的地端点。

图2A至图2B分别示出了根据本文描述的技术利用网络接口卡内部装置交换机在虚拟网络端点和与隧道端点相关的虚拟路由器实例之间转发分组的示例性计算装置的框图。图2A的计算装置200可以表示真实或虚拟服务器且可以表示图1任何服务器12的示例实例。在本示例中,计算装置200包括耦接至计算装置200的硬件环境的硬件组件的总线242。总线242耦接能执行SR-IOV的网络接口卡(NIC)230、存储盘246以及微处理器210。前侧总线在一些情况下可以耦接微处理器210和存储装置244。在一些示例中,总线242可以耦接存储装置244、微处理器210和NIC 230。总线242可以表示外围组件接口(PCI)互连(PCIe)总线。在一些示例中,直接存储器存取(DMA)控制器可以控制耦接至总线242的组件之间的DMA传输。在一些示例中,耦接至总线242的组件控制耦接至总线242的组件之间的DMA传输。

微处理器210可包括一个或多个处理器;该一个或多个处理器分别包括独立执行单元以执行与指令集结构相符的指令。执行单元可以作为独立集成电路(IC)来实现或在一个或多个多核处理器(或“众核”处理器)中组合分别利用单一IC(即,芯片多处理器)来实现。

磁盘246表示计算机可读存储介质;计算机可读存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除的介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EPROM、闪存、CD-ROM、数字多功能盘(DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储装置、或能用于存储所需信息且可以由微处理器210访问的任何其他介质。

主存储器244包括一个或多个计算机可读存储介质;该计算机可读存储介质可包括诸如各种形式的动态RAM(DRAM)或静态RAM(SRAM)的随机存取存储器(RAM)(例如,DDR2/DDR3 SDRAM)、闪存、或任何其他形式的可以用于携带或存储以指令或数据结构的形式的期望的程序代码和程序数据并且可以由计算机访问的固定的或可移除的存储介质。主存储器144提供由可寻址存储器位置组成的物理地址空间。

网络接口卡(NIC)230包括一个或多个接口232,被配置为利用底层物理网络的链路来交换分组。接口232可包括具有一个或多个网络端口的端口接口卡。NIC 230还包括卡上存储器277,以例如存储分组数据。在NIC 230与耦接至总线242的其他装置之间的直接存储器存取传输可以从存储器227读取或写入到存储器227。

存储器244、NIC 230、存储盘246和微处理器210提供执行管理程序214和一个或多个虚拟机224A-228B(统称为“虚拟机224”)和由管理程序214管理的一个或多个虚拟机228的软件堆栈的操作环境。计算装置200可执行更多或更少的虚拟机216。

当图2A至图2B中的虚拟网络端点针对虚拟机进行说明和描述的同时,诸如容器(例如,DOCKER容器)的其他操作环境可实现虚拟网络端点。操作系统内核(图2A至图2B未示出)可在内核空间中执行并且可包括例如可从微软公司获得的Linux、伯克利软件套件(BSD)、另一Unix变体内核或Windows服务器操作系统内核。

计算装置200执行管理程序214来管理虚拟机228。示例性管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、可从VMware获得的ESXi、可从微软获得的WindowsHyper-V、以及其他开源及专有的管理程序。管理程序214可表示虚拟机管理器(VMM)。

虚拟机224、228可托管一个或多个应用,诸如虚拟网络功能实例。在一些实例中,虚拟机224、228可托管一个或多个VNF实例,其中,每个VNF实例都被配置为将网络功能应用于分组。

管理程序214包括物理驱动器225以利用网络接口卡230提供的物理功能部221。网络接口卡230还可以实现SR-IOV以使能在虚拟机224之间共享物理网络功能(I/O)。共享的虚拟装置、虚拟功能部217A–217B提供专用资源使得每个虚拟机224(及对应的客户操作系统)都可访问NIC230的专用资源,因此NIC 230对于每个虚拟机224都作为专用NIC。虚拟功能部217可以表示与物理功能部221和其他虚拟功能部216共享物理资源的轻量级PCIe功能部。根据SR-IOV标准,NIC 230可以具有成千上万可用的虚拟功能,但就I/O密集型应用而言,所配置的虚拟功能的数量通常要少得多。虚拟功能部217可以表示图1的虚拟硬件组件21的示例性实例。

虚拟功能部217A–217B可以提供有对队列资源219A–219B的访问并且控制所分配的队列资源的结构。针对全局资源访问,虚拟功能部217可向物理功能部221发送请求并且物理功能部221响应于该请求运行以访问全局资源。每个虚拟功能部217都具有不同的相关联的层2地址(例如,MAC地址)。物理功能部221具有相关联的层2地址,该地址不同于与虚拟功能部217相关联的任何层2地址。物理功能部221层2地址可以视为NIC 230的层2地址。

虚拟机224A-224B分别包括直接出现在虚拟机224客户操作系统中的虚拟驱动器226A-226N,从而利用为虚拟机分配的虚拟功能部217经由总线242在NIC 230和虚拟机224之间提供直接通信。这可以降低管理程序214参与基于软件的、VIRTIO和/或vSwitch实现方式的支出,在该实现方式中,存储器244的管理程序214存储器地址空间存储分组数据,并且从NIC 230复制到管理程序214存储器地址空间和从管理程序214存储器地址空间复制到虚拟机217存储器地址空间的分组数据耗用微处理器210的周期。

NIC 230进一步包括基于硬件的以太网桥234以在虚拟功能部217之间以及虚拟功能部217与物理功能部221之间执行层2转发。因此,桥234经由总线242提供内部虚拟机224分组转发的硬件加速以及经由物理驱动器225访问物理功能部221的管理程序214与任何虚拟机224之间的分组转发的硬件加速。

包括虚拟路由器220的计算装置200可耦接至包括覆盖网络的物理网络交换机结构,覆盖网络将交换机结构从物理交换机延伸至耦接到交换机结构的物理服务器的软件或“虚拟”路由器。虚拟路由器可以是动态地创建并管理可用于虚拟网络端点之间的通信的一个或多个虚拟网络的由物理服务器(例如图1的服务器12)执行的处理或线程或其组件。在一个示例中,虚拟路由器利用覆盖网络来实现每个虚拟网络,覆盖网络提供将端点的虚拟地址与端点在其上执行的服务器的物理地址(例如,IP地址)进行解耦接的能力。每个虚拟网络都可使用其自身的寻址和安全方案,并且可以视为与物理网络及其寻址方案正交。可以使用多种技术在物理网络之上的虚拟网络内并且跨该虚拟网络来传送分组。

在图2A的示例性计算装置200中,虚拟路由器220在使用物理功能部221用于I/O的管理程序214内执行,但是虚拟路由器220可在管理程序、主机操作系统、主机应用、或包括使用虚拟功能部217用于虚拟I/O的虚拟功能驱动器226的一个虚拟机224内执行。

图2B的示例性计算装置250与计算装置200相似。然而,计算装置250包括主机进程258而不是对于计算装置200的管理程序214,以执行虚拟路由器260。主机进程258可以表示由计算装置250的主机操作系统(同样在图2A至图2B中未示出)可执行的软件进程、应用或服务。主机进程258的物理驱动器225利用NIC 230使用物理功能部221以用于I/O。在计算装置250的一些实例中,虚拟机224A可执行虚拟路由器260。在这类实例中,VF驱动器226A利用NIC 230使用虚拟功能部217A以用于I/O。

通常,每个虚拟机224、228可以被分配虚拟地址以在对应的虚拟网络内使用,其中每个虚拟网络可以与由虚拟路由器220提供的不同虚拟子网相关。虚拟机224、228可以被分配其自身的虚拟层三(L3)IP地址(例如,以用于发送和接收通信)但是可以不知道虚拟机在其上执行的计算装置200的IP地址。以这种方式,“虚拟地址”是不同于针对底层物理计算机系统(例如计算装置200)的逻辑地址的针对应用的地址。

在一个实现方式中,计算装置200包括虚拟网络(VN)代理(未示出),该VN代理控制用于计算装置200的虚拟网络34的覆盖并且协调数据分组在计算装置200内的路由。通常,VN代理与用于多个虚拟网络的虚拟网络控制器通信,虚拟网络控制器生成命令以控制分组的路由。VN代理可操作为针对虚拟机224、228与虚拟网络控制器之间的控制平面消息的代理。例如,虚拟机可请求使用其虚拟地址经由VN代理发送消息,并且VN代理可以转而发送该消息并且请求发起第一消息的VM 36的虚拟地址接收对消息的响应。在一些情况下,虚拟机224、228可以调用由VN代理的应用编程接口呈现的程序或函数调用,并且VN代理也可以处理消息的封装(包括寻址)。

在一个示例中,网络分组(例如,由虚拟机224、228在虚拟网络域内执行的应用实例生成或耗用的层三(L3)IP分组或层二(L2)以太网分组)可以被封装在由物理网络传送的另一分组(例如,另一IP或以太网分组)中。在虚拟网络中传送的分组可以在本文中被称为“内部分组”,而物理网络分组可以在本文中被称为“外部分组”或“隧道分组”。虚拟网络分组在物理网络分组内的封装和/或解封装可以由虚拟路由器220来执行。这一功能在本文中被称为隧道,并且可以用该功能创建一个或多个覆盖网络。除IPinIP外,可以使用的其它示例性隧道协议包括通用路由封装(GRE)之上的IP、VxLAN、GRE之上的多协议标签交换、用户数据报协议之上的MPLS等。

如上所述,虚拟网络控制器可以提供逻辑上的中央控制器,以促进一个或多个虚拟网络的操作。例如,虚拟网络控制器可以维护路由信息库,例如,存储针物理网络以及一个或多个覆盖网络的路由信息的一个或多个路由表。管理程序214的虚拟路由器220实现用于N个虚拟网络的网络转发表(NFT)222A–222N,虚拟路由器220对于虚拟网络作为隧道端点运行。通常,每个NFT 222存储用于对应的虚拟网络的转发信息,并且识别数据分组将被转发的地方以及分组是否将以隧道协议被封装(诸如利用可以包括针对虚拟网络协议栈的不同层的一个或多个报头的隧道报头)。每个NFT 222可以是针对由虚拟路由器220实现的不同路由实例(未示出)的NFT。

根据本发明描述的技术,图2A的虚拟路由器220为来自/去往虚拟机224中的任一个的分组执行隧道封装/解封装,并且虚拟路由器220经由NIC 230的以太网桥234和总线242与虚拟机224交换分组。

NIC 230可接收具有层2报头的隧道分组,该层2报头具有作为分配给管理程序214的物理功能部221的层2地址的目的地层2地址。针对每个接收到的隧道分组,虚拟路由器220经由物理驱动器225接收隧道分组数据并且将隧道分组数据存储至管理程序214存储器地址空间。虚拟路由器220对隧道分组进行处理,以从隧道封装报头确定用于内部分组的源端点和目的地端点的虚拟网络。虚拟路由器220可剥离层2报头和隧道封装报头,从而在内部仅转发内部分组。隧道封装报头包括诸如VxLAN标记或MPLS标签的虚拟网络标识符,该虚拟网络标识符指示虚拟网络,例如,NFT 222A对于其是网络转发表的虚拟网络。NFT 222A可包括内部分组的转发信息。例如,NFT 222A可以将内部分组的目的地层3地址映射至虚拟功能部217B,例如,至与虚拟功能部217B和虚拟机224B相关联的层2地址。内部分组的目的地层3地址至与虚拟功能部217B相关联的层2地址的映射可包括地址解析协议(ARP)条目。

不同于使用VIRTIO接口或其他技术将内部分组发送至目的地虚拟机224A以用于将内部分组数据从管理程序214存储器地址空间复制至虚拟机224A客户操作系统的存储器地址空间,虚拟路由器220用具有目的地层2地址的新的层2报头封装内部分组,目的地层2地址是与虚拟功能部217B相关联的层2地址。新的层2报头还可包括VLAN标识符,VLAN标识符在计算装置200中与内部分组的源端点和目的地端点的虚拟网络相对应。然后,虚拟路由器220将具有新的目的地层2地址的内部分组经由物理功能部221输出至NIC 230。这可能使计算装置200的物理驱动器225或其他组件发起直接存储器存取传输,以使用总线242将具有新的层2报头的内部分组复制至NIC 240存储器。因此,微处理器210可以避免将分组数据从一个存储器地址空间复制至另一个。

以太网桥234检查内部分组的新的层2报头,确定目的地层2地址与虚拟功能部217B相关联并且切换具有新的层2报头的内部分组,以将具有新的层2报头的内部分组添加至对于虚拟功能部217B的队列219B的输入队列中。将此数据放置在队列可能使计算装置200的VF驱动器226B或其他组件发起DMA传输,以使用总线242将具有新的层2报头的内部分组复制至虚拟机224B存储器地址空间。因此,微处理器210可以避免将分组数据从一个存储器地址空间复制至另一个。在其存储器地址空间中已接收到分组数据的情况下,虚拟机224B可以对内部分组进行处理。在下文中,由以太网桥234进行的切换操作可包括将分组数据添加至切换到的虚拟功能部217或物理功能部221的对应的输入队列219、223中,并且由虚拟功能驱动器226中的任一个和物理驱动器225进行的输出操作类似地可包括将分组添加至对应的输出队列219、223。

虚拟机224还可以将内部分组视为源虚拟网络端点。例如,虚拟机224B可生成去往目的地虚拟网络端点的层3内部分组,目的地虚拟网络端点由另一计算装置(即,非计算装置200)来执行。虚拟机224B用具有作为物理功能部221的层2地址的层2目的地地址的层2报头封装内部分组,从而使以太网桥234将分组切换至虚拟路由器220。计算装置200的VF驱动器226B或另一组件可发起DMA传输,以使用总线242将具有层2报头的内部分组从虚拟机224B的存储器地址空间复制至NIC 230。响应于以太网桥234的切换操作,计算装置200的物理驱动器225或其他组件可发起DMA传输,以使用总线242将具有层2报头的内部分组从NIC230复制至管理程序214的存储器地址空间。层2报头可包括VLAN标识符,VLAN标识符在计算装置200中与内部分组的源端点和目的地端点的虚拟网络相对应。

虚拟路由器220接收内部分组和层2报头并确定用于内部分组的虚拟网络。虚拟路由器220可从层2报头的VLAN标识符确定虚拟网络。虚拟路由器220使用与内部分组相对应的NFT 222生成内部分组的外部报头,该外部报头包括用于覆盖隧道的外部IP报头和识别虚拟网络的隧道封装报头。虚拟路由器220用外部报头封装内部分组。虚拟路由器220可用具有目的地层2地址的新的层2报头封装隧道分组,目的地层2地址与计算装置200外部的装置(例如TOR交换机16或一个服务器12)相关联。虚拟路由器220使用物理功能部221将具有新的层2报头的隧道分组输出至NIC 230。这可以使物理驱动器225发起从管理程序214存储器地址空间至NIC 230的DMA传输,以使用总线242将隧道分组和新的层2报头复制至NIC230存储器。NIC 230在出站接口上输出分组。

由虚拟机224中的任一个输出的分组由虚拟路由器220接收,以用于虚拟路由。在一些示例中,虚拟路由器220作为默认网关或作为地址解析协议(ARP)代理来运行。虚拟机224B例如可以广播接收的并且经桥234切换至虚拟路由器的对于默认网关的ARP请求。虚拟路由器220可回复ARP响应,ARP响应指定用于物理功能部221的层2地址作为默认网关的层2地址。

在一些示例中,用于计算装置200的控制器(例如,图1的控制器24)在虚拟机224的每一个中配置默认路径,从而使虚拟机224将虚拟路由器220用作对于出站分组的初始下一跳。在一些示例中,NIC 230配置有一种或多种转发规则,以使从虚拟机224接收的所有分组通过以太网桥234经由物理功能部221切换至管理程序214。

根据本公开描述的技术,图2B的虚拟路由器260为来自/去往虚拟机224中的任一个的分组执行隧道封装/解封装,并且虚拟路由器260经由NIC 230的以太网桥234和总线242与虚拟机224交换分组。

NIC 230可接收具有含目的地层2地址的层2报头的隧道分组,目的地层2地址是至少部分分配给主机进程258的物理功能部221的层2地址。针对每个接收到的隧道分组,虚拟路由器260经由物理驱动器225接收隧道分组数据并且将隧道分组数据存储至主机进程258存储器地址空间。虚拟路由器260对隧道分组进行处理,以从隧道封装报头确定用于内部分组的源端点和目的地端点的虚拟网络。虚拟路由器260可剥离层2报头和隧道封装报头,从而在内部仅转发内部分组。隧道封装报头包括诸如VxLAN标记或MPLS标签的虚拟网络标识符,该虚拟网络标识符指示虚拟网络,例如,NFT 222A对于其是网络转发表的虚拟网络。NFT222A可包括用于内部分组的转发信息。例如,NFT 222A可以将用于内部分组的目的地层3地址映射至虚拟功能部217B,例如,至与虚拟功能部217B和虚拟机224B相关联的层2地址。内部分组的目的地层3地址至与虚拟功能部217B相关联的层2地址的映射可包括地址解析协议(ARP)条目。

不同于使用VIRTIO接口或其他技术将内部分组发送至目的地虚拟机224B以用于将内部分组数据从主机进程258存储器地址空间复制至虚拟机224B客户操作系统的存储器地址空间,虚拟路由器260用新的层2报头封装内部分组,该层2报头具有作为与虚拟功能部217B相关联的层2地址的目的地层2地址。新的层2报头还可包括VLAN标识符,VLAN标识符在计算装置250中与内部分组的源端点和目的地端点的虚拟网络相对应。然后,虚拟路由器260将具有新目的地层2地址的内部分组经由物理功能部221输出至NIC 230。这可能使计算装置250的物理驱动器225或其他组件发起DMA传输,以使用总线242将具有新的层2报头的内部分组复制至NIC 240存储器。因此,微处理器210可以避免将分组数据从一个存储器地址空间复制至另一个。

以太网桥234检查内部分组的新的层2报头,确定目的地层2地址与虚拟功能部217B相关联并且将具有新的层2报头的内部分组切换,以将具有新的层2报头的内部分组添加至对于虚拟功能部217B的队列219B的输入队列。将此数据放置到队列可能使计算装置250的VF驱动器226B或其他组件发起DMA传输,以使用总线242将具有新的层2报头的内部分组从NIC 230复制至虚拟机224B存储器地址空间。因此,微处理器210可以避免将分组数据从一个存储器地址空间复制至另一个。在存储器地址空间中已接收到分组数据的情况下,虚拟机224B可以对内部分组进行处理。

虚拟机224还可以将内部分组视为虚拟网络源端点。例如,虚拟机224B可生成去往由另一计算装置(即,非计算装置250)执行的目的地虚拟网络端点的层3内部分组。虚拟机224B用层2报头封装内部分组,该层2报头具有作为物理功能部221的层2地址的层2目的地地址,从而使以太网桥234将分组切换至虚拟路由器220。计算装置250的VF驱动器226B或另一组件可发起DMA传输,以使用总线242将具有层2报头的内部分组从虚拟机224B的存储器地址空间复制至NIC 230。响应于由以太网桥234进行的切换操作,计算装置250的物理驱动器225或另一组件可发起DMA传输,以使用总线242将具有层2报头的内部分组从NIC 230复制至主机进程258的存储器地址空间。层2报头可包括VLAN标识符,VLAN标识符在计算装置250中与内部分组的源端点和目的地端点的虚拟网络相对应。

虚拟路由器260接收内部分组和层2报头并确定用于内部分组的虚拟网络。虚拟路由器260可从层2报头的VLAN标识符确定虚拟网络。虚拟路由器260使用与用于内部分组的虚拟网络相对应的NFT 222生成内部分组的外部报头,该外部报头包括用于覆盖隧道的外部IP报头和识别虚拟网络的隧道封装报头。虚拟路由器260用外部报头封装内部分组。虚拟路由器260可利用具有目的地层2地址的新的层2报头封装隧道分组,该目的地层2地址与计算装置250外部的装置(例如,TOR交换机16或一个服务器12)相关联。虚拟路由器260使用物理功能部221将具有新的层2报头的隧道分组输出至NIC 230。这可以使物理驱动器225发起从主机进程258存储器地址空间至NIC 230的DMA传输,以使用总线242将隧道分组和新的层2报头复制至NIC 230存储器。NIC 230在出站接口上输出分组。

由虚拟机224中的任一个输出的分组由虚拟路由器260接收,以用于虚拟路由。在一些示例中,虚拟路由器220作为默认网关或作为地址解析协议(ARP)代理运行。虚拟机224B例如可以广播接收的并且经桥234切换至虚拟路由器的对于默认网关的ARP请求。虚拟路由器260可回复ARP响应,ARP响应指定物理功能部221的层2地址作为默认网关的层2地址。

在一些示例中,计算装置250的控制器(例如,图1的控制器24)在虚拟机224的每一个中配置默认路由,从而使虚拟机224将虚拟路由器260用作对于出站分组的初始下一跳。在一些示例中,NIC 230配置有一种或多种转发规则,以使从虚拟机224接收的所有分组通过以太网桥234经由物理功能部221切换至主机进程258。

在一些情况下,虚拟路由器260可以由虚拟机224中的一个来执行。根据本公开描述的技术,例如,虚拟机224A可执行虚拟路由器260以作为隧道端点应用来操作并且执行虚拟路由。在一些情况下,以上与队列223、物理功能部221和物理驱动器225相关的描述将反过来分别适用于队列219A、虚拟功能部217A和虚拟功能驱动器226A。

图3A是详细示出了可由根据本公开描述的技术的计算装置处理的示例性隧道分组的框图。为了简化和易于说明,隧道分组150并未图示典型隧道分组的每一个字段,而是被提供以突出在此描述的技术。此外,各种实现方式可包括以各种排序的隧道分组字段。“外部”或“隧道”分组150包括外部报头152和内部或“封装”分组156。外部报头152可以包括协议或服务类型(TOS)字段162以及以源IP地址字段164和目的地IP地址字段166形式的公共(即,通过与内部分组156相关联的虚拟网络的底层物理网络可切换的)IP地址信息。本示例中的协议字段162指示隧道分组150使用了GRE隧道封装,而在其他情况下可使用其他形式的隧道封装,例如,包括IPinIP、NVGRE、VxLAN和MPLS之上的MPLS。

外部报头152还包括隧道封装报头154,该隧道封装报头154在本示例中包括指定GRE协议(此处为MPLS)的GRE协议字段170和指定MPLS标签值(此处为214)的MPLS标签字段172。MPLS标签字段为虚拟网络标识符的示例并且可以在虚拟路由器(例如,图2A的计算装置200的虚拟路由器220或图2B的计算装置250的虚拟路由器260)中与用于虚拟网络的路由实例和/或NFT相关联。

内部分组156包括内部报头158和有效载荷184。内部报头158可包括协议或服务类型(TOS)字段174以及以源IP地址字段176和目的地IP地址字段178形式的私有(即,用于特定虚拟路由和转发实例)IP地址信息,和源端口字段180和目的地端口字段182形式的传输层信息。有效载荷184可包括:应用层(层7(L7))并且在一些情况下由用于虚拟网络的虚拟机产生或用于由该虚拟机耗用的其他L4-L7信息。有效载荷184可包括并且因此可替换地被称为“L4分组”、“UDP分组”或“TCP分组”。

图3B是详细示出了由虚拟路由器生成的用于输出至网络接口卡以用于由基于网络接口卡的交换机切换至目的地虚拟网络端点的具有新的层2报头的示例性分组的框图。分组192包括图3A的内部分组156,内部分组156在两个虚拟网络端点之间通信。虚拟路由器220、260用具有源层2(MAC)地址188和目的地层2(MAC)地址190的新的层2报头186封装内部分组156。目的地层2地址的值为M1,M1是与由虚拟机224使用的虚拟功能部217相关联的层2地址,虚拟机224是用于内部分组158的目的地虚拟网络端点。该虚拟机224可具有作为目的地IP地址字段178的值的层3地址。在一些情况下,层2报头186可包括用于与虚拟网络相关联的VLAN的VLAN标识符,该虚拟网络包括用于内部分组156的目的地虚拟网络端点。

图4是示出了用于根据本公开描述的技术的计算装置的示例性操作模式的流程图。操作400可以由计算装置200、服务器12中的任一个、或另一计算装置来执行。网络接口卡230可以是能够执行SR-IOV的并且因此具有用于分组I/O物理功能部221的一个或多个虚拟功能部217。网络接口卡230可以被配置为从物理接口232接收隧道分组并且例如应用一个或多个规则以使用虚拟功能部217或物理功能部221将所接收的隧道分组引导至例如由计算装置、主机进程托管的虚拟机执行的或作为管理程序214的一部分的虚拟路由器进程220、260(402)。虚拟路由器220、260终止隧道并且基于包括在隧道分组中的参数确定用于隧道分组的内部分组的虚拟网络和用于隧道分组的目的地虚拟网络端点(404)。对于所接收的隧道分组(例如可经由DMA接收),通过从存储器装置读取隧道分组和/或通过将隧道分组作为总线上的一组信号来检测,虚拟路由器220、260可以剥离包括隧道封装报头的外部报头以获得所接收到的隧道分组的内部分组。虚拟路由器220、260可以用具有目的地层2地址的新的层2报头来封装内部分组,目的地层2地址是针对用于通过内部分组的目的地虚拟网络端点的分组I/O的虚拟功能部217而配置的层2地址(406)。虚拟路由器220、260可将具有新的层2报头的内部分组输出至NIC 230(408),从而基于目的地层2地址将具有新的层2报头的内部分组切换至虚拟功能部(410)。虚拟路由器220、260可经由DMA通过将隧道分组存储至存储器装置和/或通过将分组作为总线上的一组信号输出,来将具有新的层2报头的内部分组输出至NIC 230。

图5是示出了用于根据本公开描述的技术的计算装置的示例性操作模式的流程图。操作500可以由计算装置200、服务器12中的任一个、或另一计算装置来执行。网络接口卡230可以是能够执行SR-IOV的并且因此具有用于分组I/O物理功能部221的一个或多个虚拟功能部217。虚拟机224A作为源虚拟网络端点可以使用虚拟功能部217A将具有层2报头的内部分组输出至NIC 230(502)。层2报头可具有目的地层2地址,目的地层2地址是配置用于由用于分组I/O的虚拟路由器进程220、260使用的虚拟或物理功能部的层2地址。结果,NIC230将内部分组和层2报头切换至虚拟或物理功能部,从而由虚拟路由器进程220、260接收内部分组和层2报头(504)。虚拟路由器进程220、260基于用于包括虚拟机224A的虚拟网络的网络转发表来对内部分组执行虚拟路由(506),并且将外部报头添加至包括指示虚拟网络的隧道封装报头的内部分组,以生成隧道分组(508)。虚拟路由器进程220、260将隧道分组输出至NIC 230以用于经由物理接口232输出(510)。隧道分组由物理网络切换至托管用于隧道分组的目的地虚拟网络端点的物理计算装置。

本文中描述的技术可以以硬件、软件、固件或其任何组合实现。描述为模块、单元或组件的各种特征可一起实现在集成逻辑装置中或者单独实现为分立但可互操作的逻辑装置或其它硬件装置。在一些情况下,电子电路装置的各种特征可以被实现为一个或多个集成电路装置,诸如集成电路芯片或芯片组。

如果以硬件实现,本公开可以指向诸如处理器或集成电路装置的装置,诸如集成电路芯片或芯片组。可替换地或另外,如果以软件或固件实现,则技术可以至少部分通过包括指令的计算机可读数据存储介质来实现,该指令在执行时使处理器执行上面描述的一个或多个方法。例如,计算机可读数据存储介质可以存储这样的指令以用于由处理器执行。

计算机可读介质可以形成可以包括包装材料的计算机程序产品的一部分。计算机可读介质可以包括计算机数据存储介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、磁性或光学数据存储介质等。在一些示例中,一件制造品可以包括一个或多个计算机可读存储介质。

在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语“非暂时性”可以指示存储介质不是在载波或传播信号中体现的。在一些示例中,非暂时性存储介质可以存储可以随着时间改变的数据(例如,在RAM或缓存中)。

代码或指令可以是由处理电路装置执行的软件和/或固件,处理电路装置包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它等效的集成或分立逻辑电路。据此,如本文中使用的术语“处理器”可以指任何前述结构或者适合于实现本文中描述的技术的任何其它结构。另外,在一些方面中,本公开中描述的功能可以在软件模块或硬件模块内提供。

此外或作为上述的替换选择,描述了以下示例。在下面示例中的任一个内描述的特征都可利用本文中描述的任何其他示例。

示例1一种计算装置,包括:耦接至存储装置的一个或多个基于硬件的处理器;被配置用于由一个或多个处理器执行的虚拟网络端点;包括第一硬件组件和第二硬件组件的网络接口卡,其中,第一硬件组件和第二硬件组件提供对网络接口卡的物理网络接口的单独的分组输入/输出访问,其中,网络接口卡被配置为接收从物理网络接口入站的分组;以及虚拟路由器,虚拟路由器被配置用于由一个或多个处理器执行以从网络接口卡接收分组并且响应于确定分组的目的地端点是虚拟网络端点而使用第一硬件组件将分组输出回至网络接口卡,其中,网络接口卡进一步被配置为响应于从虚拟路由器接收分组,而将分组切换至虚拟网络端点并且使用第二硬件组件将分组输出至虚拟网络端点。

示例2根据示例1所述的计算装置,其中,网络接口卡包括单根输入/输出虚拟化(SR-IOV)装置;其中,第一硬件组件包括SR-IOV装置的物理功能部;其中,第二硬件组件包括SR-IOV装置的虚拟功能部。

示例3根据示例1所述的计算装置,其中,网络接口卡包括单根输入/输出虚拟化(SR-IOV)装置;其中,第一硬件组件包括SR-IOV装置的第一虚拟功能部;其中,第二硬件组件包括SR-IOV装置的第二虚拟功能部。

示例4根据示例1所述的计算装置,其中,第二硬件组件配置有层2地址;其中,虚拟路由器被配置为将具有层2报头的分组输出回至网络接口卡,该层2报头具有作为层2地址的目的地层2地址。

示例5根据示例1所述的计算装置,其中,虚拟路由器被配置为通过引起分组从虚拟路由器的存储器地址空间到网络接口卡的存储器的直接存储器存取传输,而将分组输出至网络接口卡。

示例6根据示例1所述的计算装置,其中,网络接口卡被配置为通过引起分组从网络接口卡的存储器到虚拟网络端点的存储器地址空间的直接存储器存取传输,而将分组输出至虚拟网络端点。

示例7根据示例1所述的计算装置,其中,虚拟网络端点包括虚拟机和容器中的至少一个。

示例8根据示例1所述的计算装置,其中,分组包括内部分组和指示多个虚拟网络中的一个虚拟网络的隧道封装报头,虚拟网络包括虚拟网络端点,其中,虚拟路由器被配置为至少基于隧道封装报头来确定网络转发表,网络转发表指示针对第二硬件组件配置的层2地址是虚拟网络端点的层2地址;其中,为了将分组输出回至网络接口卡,虚拟路由器被配置为将具有层2报头的内部分组输出回至网络接口卡,该层2报头具有作为虚拟网络端点的层2地址的目的地层2地址。

示例9根据示例1所述的计算装置,其中,分组包括第一分组;其中,虚拟网络端点被配置为使用第二硬件组件将第二分组输出至网络接口卡;其中,网络接口卡被配置为将第二分组切换至虚拟路由器并且使用第一硬件组件将第二分组输出至虚拟路由器;并且其中,虚拟路由器被配置为用外部报头封装第二分组并且将第二分组输出回至网络接口卡以用于在物理网络接口上输出,从而将第二分组用隧道传送至托管用于第二分组的目的地虚拟网络端点的另一物理计算装置。

示例10根据示例1所述的计算装置,其中,虚拟网络端点配置有默认路由,以使虚拟网络端点输出具有层2报头的出站分组,该层2报头各自具有作为针对第一硬件组件配置的层2地址的层2目的地地址,并且其中,网络接口卡被配置为至少基于层2报头将出站分组切换至虚拟路由器并且使用第一硬件组件将出站分组输出至虚拟路由器。

示例11根据示例1所述的计算装置,其中,虚拟路由器被配置为响应于接收请求对于默认网关的层2地址的地址解析协议请求而输出对于地址解析协议请求的地址解析协议回复,该回复指定针对第一硬件组件配置的层2地址用于默认网关的层2地址。

示例12一种方法,包括:由计算装置的网络接口卡经由网络接口卡的物理网络接口接收从物理网络接口入站的分组,其中,网络接口卡包括第一硬件组件和第二硬件组件,并且其中,第一硬件组件和第二硬件组件提供对网络接口卡的物理网络接口的单独的分组输入/输出访问;计算装置的虚拟路由器从网络接口卡接收分组;由虚拟路由器响应于确定分组的目的地端点是计算装置的虚拟网络端点而使用第一硬件组件将分组输出回至网络接口卡;以及由网络接口卡响应于从虚拟路由器接收分组而将分组切换至虚拟网络端点并且使用第二硬件组件将分组输出至虚拟网络端点。

示例13根据示例12所述的方法,其中,网络接口卡包括单根输入/输出虚拟化(SR-IOV)装置,其中,第一硬件组件包括SR-IOV装置的物理功能部,其中,第二硬件组件包括SR-IOV装置的虚拟功能部。

示例14根据示例12所述的方法,其中,网络接口卡包括单根输入/输出虚拟化(SR-IOV)装置,其中,第一硬件组件包括SR-IOV装置的第一虚拟功能部,其中,第二硬件组件包括SR-IOV装置的第二虚拟功能部。

示例15根据示例12所述的方法,其中,第二硬件组件配置有层2地址,该方法进一步包括:由虚拟路由器将具有层2报头的分组输出回至网络接口卡,该层2报头具有作为层2地址的目的地层2地址。

示例16根据示例12所述的方法,其中,将分组输出至网络接口卡包括引起分组从虚拟路由器的存储器地址空间到网络接口卡的存储器的直接存储器存取传输。

示例17根据示例12所述的方法,其中,将分组输出至虚拟网络端点包括引起分组从网络接口卡的存储器到虚拟网络端点的存储器地址空间的直接存储器存取传输。

示例18根据示例12所述的方法,其中,虚拟网络端点包括虚拟机和容器中的至少一个。

示例19根据示例12所述的方法,其中,分组包括内部分组和指示多个虚拟网络中的一个虚拟网络的隧道封装报头,虚拟网络包括虚拟网络端点,该方法进一步包括:由虚拟路由器至少基于隧道封装报头来确定网络转发表,网络转发表指示针对第二硬件组件配置的层2地址是虚拟网络端点的层2地址;其中,将分组输出回至网络接口卡包括由虚拟路由器将具有层2报头的内部分组输出回至网络接口卡,该层2报头具有作为虚拟网络端点的层2地址的目的地层2地址。

示例20根据示例12所述的方法,其中,分组包括第一分组,该方法进一步包括:由虚拟网络端点使用第二硬件组件将第二分组输出至网络接口卡;由网络接口卡将第二分组切换至虚拟路由器并且使用第一硬件组件将第二分组输出至虚拟路由器;由虚拟路由器用外部报头封装第二分组并且将第二分组输出回至网络接口卡以在物理网络接口上输出,从而将第二分组用隧道传送至托管用于第二分组的目的地虚拟网络端点的另一物理计算装置。

示例21根据示例12所述的方法,进一步包括:由虚拟网络端点接收默认路由,以使虚拟网络端点输出具有层2报头的出站分组,层2报头各自具有作为针对第一硬件组件配置的层2地址的层2目的地地址;由网络接口卡至少基于层2报头将出站分组切换至虚拟路由器并且使用第一硬件组件将出站分组输出至虚拟路由器。

示例22根据示例12所述的方法,虚拟路由器响应于接收请求对于默认网关的层2地址的地址解析协议请求而输出对于地址解析协议请求的地址解析协议回复,该回复指定针对第一硬件组件配置的层2地址用于默认网关的层2地址。

示例23一种包括指令的非暂时性的计算机可读存储介质,该指令使计算装置执行下列步骤:由计算装置的网络接口卡经由网络接口卡的物理网络接口接收从物理网络接口入站的分组,其中,网络接口卡包括第一硬件组件和第二硬件组件,其中,第一硬件组件和第二硬件组件提供对网络接口卡的物理网络接口的单独的分组输入/输出访问;由计算装置的虚拟路由器从网络接口卡接收分组;由虚拟路由器响应于确定分组的目的地端点是计算装置的虚拟网络端点而使用第一硬件组件将分组输出回至网络接口卡;以及由网络接口卡响应于从虚拟路由器接收分组,而将分组切换至虚拟网络端点并且使用第二硬件组件将分组输出至虚拟网络端点。

此外,在上述示例的任一个中阐述的任何具体特征都可结合到所述技术的有益示例中。即,任何具体特征通常都可适用于本发明的所有示例。已经描述了本发明的各种示例。

28页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种发送邮件的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!