CN103051510B - 网络策略向网络接口卡的安全和高效卸载的方法和装置 - Google Patents

网络策略向网络接口卡的安全和高效卸载的方法和装置 Download PDF

Info

Publication number
CN103051510B
CN103051510B CN201210328965.4A CN201210328965A CN103051510B CN 103051510 B CN103051510 B CN 103051510B CN 201210328965 A CN201210328965 A CN 201210328965A CN 103051510 B CN103051510 B CN 103051510B
Authority
CN
China
Prior art keywords
grouping
father
subregion
virtual machine
nic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210328965.4A
Other languages
English (en)
Other versions
CN103051510A (zh
Inventor
M.斯里哈兰
N.A.文卡塔拉迈亚
王俞舜
A.G.格林伯格
A.达巴格
P.加格
D.M.费尔斯通
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/565,369 external-priority patent/US8856518B2/en
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN103051510A publication Critical patent/CN103051510A/zh
Application granted granted Critical
Publication of CN103051510B publication Critical patent/CN103051510B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

用于在运行虚拟化计算环境的宿主计算设备中的网络接口控制器(NIC)中的网络策略的高效和安全实现的技术。在某些实施例中,所述NIC可以绕开所述宿主计算设备的父分区而处理分组并直接向分组的目的地转发分组。特别地,在某些实施例中,所述NIC可以存储用于处理分组和直接向虚拟机(VM)转发分组的网络策略信息。如果所述NIC不能处理分组,则所述NIC可以将所述分组转发到所述父分区。在某些实施例中,所述NIC可以使用封装协议来在分组报头中传送地址信息。在某些实施例中,该地址信息可以由所述NIC经由安全信道传输到所述父分区。所述NIC还可以绕开所述父分区从所述VM获取已加密地址并对其进行解密以用于路由分组。

Description

网络策略向网络接口卡的安全和高效卸载的方法和装置
技术领域
本专利申请根据35U.S.C.§119(e)要求对2011年9月7日提交的命名为“ASCALABLEANDFLEXIBLEDATACENTERNETWORKUSINGGENERICROUTINGENCAPSULATION”,序号61/532,002的美国临时专利申请和2012年2月1日提交的命名为“GREOFFLOADFORSR-IOVNICS”,序号61/593,772的美国临时专利申请的优先权,其全部内容通过参考引入于此。
背景技术
虚拟化计算是一种用于在单一物理计算设备上创建多个虚拟机的技术。这通常通过将计算设备的软件和存储器划分为多个逻辑分区来达到,其中,所述逻辑分区的每个可以做虚拟机的操作系统的宿主。分区中的一个通常被指定为父或根分区,其中,该父或根分区将对物理硬件和服务的访问委托给虚拟机。
在一些场景中,可以在驻留于物理网络上的计算设备中的虚拟机之间建立虚拟网络。例如,由多个物理服务器组成的数据中心可以为例如公司和其它组织的企业提供虚拟局域网(VLAN)。所述VLAN通常被设计为提供安全和隔离(关于可达性)的环境,在该环境中用于将企业内的计算机和共享资源互连。
虚拟机可以通过由父分区酌情访问宿主计算机的硬件部件来与其它虚拟机或物理设备通信。网络接口控制器(NIC)是允许计算设备与物理网络接合(interface)和进行通信的部件。NIC包括基础电路,该基础电路用于实现例如以太网或互联网协议的通信协议;并且还包括有限存储器,该有限存储器用于存储与通信协议关联的网络地址,例如媒体访问控制(MAC)或IP地址。
可以为每个虚拟机指派网络地址,该网络地址可以是对应于与该虚拟机关联的虚拟网络的虚拟地址。通过将在虚拟网络上进行通信的虚拟机所识别的虚拟地址转化为在物理网络上进行通信的硬件部件所识别的物理地址,可以实现对数据进行路由。该地址转化可以由父分区执行,其中,父分区负责路由去往和来自宿主计算设备内的合适虚拟机的数据流量。另外,父分区可以负责为宿主设备上的虚拟机实现其它网络策略,例如访问控制和授权。
在虚拟化计算环境中通常关心安全性。宿主计算设备通常将对硬件和连网信息的访问限于仅父分区。该集中权限防止虚拟机潜在地不论偶然还是恶意地相互干扰。同样,可以对拥有由计算设备宿留的虚拟机的租户授予特定安全级别并与使用同一宿主设备的其它租户隔离。
发明内容
在一个实施例中,提供了一种网络接口控制器,该网络接口控制器适于用作运行虚拟化计算环境的计算设备的一部分,所述虚拟化计算环境包括父分区和至少一个虚拟机。所述网络接口控制器包括包含数据结构的存储器和适于转发接收的分组的处理器。所述转发包括:确定与所述分组关联的地址信息,以及至少部分上基于该地址信息确定用于将所述分组转发到目的地的映射信息是否出现在所述数据结构中。如果所述映射信息出现在所述数据结构中,则所述映射信息被用于将所述分组发送到所述目的地。如果所述映射信息未出现在所述数据结构中,则所述分组被发送到所述父分区。
在另一实施例中,提供了一种网络接口控制器,所述网络接口控制器适于用作运行虚拟化计算环境的计算设备的一部分,所述虚拟化计算环境包括父分区和至少一个虚拟机。所述网络接口控制器包括适于转发接收的分组的处理器。所述转发包括接收分组和执行所述分组的虚拟化地址处理的至少一部分。至少部分上基于所述虚拟化地址处理的结果转发所述分组。
在进一步的实施例中,提供了一种网络接口控制器,所述网络接口控制器适于用作运行虚拟化计算环境的计算设备的一部分,所述虚拟化计算环境包括父分区和至少一个虚拟机。所述网络接口控制器包括处理器和至少一个包含指令的计算机存储介质,其中,所述指令当被所述处理器执行时执行一种方法。所述方法包括从所述至少一个虚拟机接收分组和加密的地址信息,以及对所述加密的地址信息进行解密。所述方法进一步包括通过将所述解密的地址信息插入所述分组的报头中来对所述分组进行封装,以及将所述封装的分组发送到外部网络。
在进一步的实施例中,提供了一种将计算设备运转为实现虚拟化计算环境的方法,其中,所述虚拟化计算环境包括父分区和至少一个虚拟机。所述方法包括:所述虚拟机从所述父分区请求地址信息。所述方法还包括:所述父分区对所述请求的地址信息进行加密和将所述加密的地址信息发送到所述虚拟机。此外,所述方法包括:所述虚拟机使用所述加密的地址信息将分组发送到所述计算设备的网络接口控制器。
在进一步的实施例中,提供了一种将计算设备运转为实现虚拟化计算环境的方法,其中,所述虚拟化计算环境包括父分区和至少一个虚拟机。所述方法包括:所述虚拟机确定满足准则的映射信息,并请求所述父分区向网络接口控制器发送满足所述准则的所述映射信息。所述方法进一步包括:所述父分区向所述网络接口控制器发送所述请求的映射信息。
前述是对本发明的非限制性总结,本发明由所附权利要求定义。
附图说明
附图不旨在按比例画出。在附图中,各种图中示出的每个相同或近似相同的部件用相同数字来表示。为清楚起见,并非每个部件都可以在每个图中被标记出。在附图中。
图1是某些实施例可以在其中运转的示例性计算系统的略图。
图2A是使用常规技术来传送数据的运行虚拟化计算环境的宿主计算设备的示意图。
图2B是使用常规技术来接收数据的运行虚拟化计算环境的宿主计算设备的示意图。
图3是在虚拟化计算环境中传送信息的方法的实施例的流程图,其中,网络接口控制器(NIC)适于在所述虚拟化计算环境中实现网络策略。
图4A是运行虚拟化计算环境的宿主计算设备中的传送路径的实施例的示意图,其中,网络接口控制器(NIC)适于在所述虚拟化计算环境中实现网络策略。
图4B是运行虚拟化计算环境的宿主计算设备中的接收路径的实施例的示意图,其中,网络接口控制器(NIC)适于在所述虚拟化计算环境中实现网络策略。
图5是VM请求将信息从父分区卸载到NIC的方法的实施例的流程图。
图6是运行虚拟化计算环境的宿主计算设备的实施例的示意图,其中,在所述虚拟化计算环境中,虚拟机请求将信息卸载到适于实现网络策略的网络接口控制器(NIC)。
图7A是与分组关联的路由和地址信息的实施例的简化图,其中,所述分组在虚拟化计算环境中进行传送,网络接口控制器(NIC)适于在虚拟化计算环境中实现网络策略。
图7B是与NIC中的虚拟端口关联的路由和地址信息的一个实施例的简化图,其中,所述NIC适于在虚拟化计算环境中实现网络策略。
图7C是路由和地址信息的一个实施例的简化图,所述路由和地址信息被存储在运行虚拟化计算环境的宿主计算设备中并被其使用。
图7D是包括报头的已封装分组的实施例的简化图,所述报头适于被运行虚拟化计算环境的宿主计算设备使用。
图8是在运行虚拟化计算环境的宿主计算设备中传送数据的方法的实施例的流程图,其中,在所述虚拟化计算环境中,NIC适于执行封装,并且使用带外数据与父分区通信映射信息。
图9是运行虚拟化计算环境的宿主计算设备中的传送路径的实施例的示意图,其中,在所述虚拟化计算环境中,NIC适于执行封装,并且使用带外数据与父分区通信映射信息。
图10是运行虚拟化计算环境的宿主计算设备中接收数据的方法的实施例的流程图,其中,在所述虚拟化计算环境中,NIC适于执行封装,并且使用带外数据与父分区通信映射信息。
图11是运行虚拟化计算环境的宿主计算设备中的接收路径的实施例的示意图,其中,在所述虚拟化计算环境中,NIC适于执行封装,并且使用带外数据与父分区通信映射信息。
图12是运行虚拟化计算环境的宿主计算设备中传送数据的方法的实施例的流程图,其中,在所述虚拟化计算环境中,NIC适于执行封装,并且使用带外数据与虚拟机通信已加密的映射信息。
图13是运行虚拟化计算环境的宿主计算设备中的传送路径的实施例的示意图,其中,在所述虚拟化计算环境中,NIC适于执行封装,并且使用带外数据与虚拟机通信已加密的映射信息。
图14是本发明的实施例可以在其上运行的代表性计算设备的示意图。
具体实施方式
常规虚拟化计算环境依赖于父分区在宿主机上进行管理和实现网络策略。到来和流出的网络流量可以由父分区的软件栈按逐分组级别来处理。父分区中该网络策略的处理消耗CPU周期,并且通常在数据流中引入延迟。此外,常规形式的虚拟网络可能缺少能力的动态分配和合并(consolidation)的灵活性。例如,在VLAN中,子网的数量通常是有限的,并且重新排列子网可能是个挑战。
发明人已认识到和察知,虚拟化计算的效率的提升可以通过直接在NIC硬件中实现网络策略来达到。在某些实施例中,可以使NIC能够直接与宿主计算机中的虚拟机进行通信,并且可以绕开父分区直接向VM发送分组和从VM和接收分组。使NIC能够执行否则将已由父分区执行的网络策略在本文中将被称为将网络策略“卸载”到NIC,不论信息是否实际被从父分区传输到NIC。
发明人已认识到和察知,多种数据结构和/或处理指令可以被卸载到NIC,包括但不限于用于地址转化的映射表、用于安全授权的访问控制列表以及分组的封装/解封装。不论已被卸载到NIC的特定网络策略或数据结构为何,被卸载的信息和处理可以被NIC用于直接处理和转发网络流量。通常,任意合适的网络策略或网络策略组合可以被卸载到NIC以用于分组的直接处理并将该分组向其合适目的地转发。
发明人已进一步认识到和察知,由于在用作计算设备的一部分的NIC中,存储器和处理能力通常是有限的,所以仅有限数量的网络策略可以被卸载到NIC。在某些实施例中,如果NIC不能基于已使其能够执行的网络策略来处理和转发分组,则它可以将分组转发到父分区,以便进行进一步处理和向合适目的地转发。
发明人已认识到和察知,通过智能地将网络策略卸载到NIC,可以更好地利用NIC的有限资源。在某些实施例中,最重要和频繁使用的网络策略或规则可以被卸载到NIC,而较不频繁出现的策略可以由父分区处理。可替换地或另外,在给定网络策略内,可以使NIC能够处理最频繁的流量模式,而其它流量可以由父分区处理。通常,可以使用任何准则来确定在NIC中处理哪些策略和网络流量。
被卸载的映射信息可以包括这样的地址信息,所述地址信息不仅在本地接口中,而还针对可以与之建立连接的远程主机。向VM暴露映射信息以在网络输入/输出中使用可能公告安全风险。例如,暴露同一租户中其它VM的位置可以帮助恶意VM生成有意非随机和非均衡的的流量。在多租户环境中,这可以导致网络上的中断,例如拒绝服务(DOS)攻击。
发明人已进一步认识到和察知,在向NIC卸载网络策略的同时可以维持虚拟化计算环境中的安全性。在某些实施例中,可以使用安全信道在NIC与父分区之间传送例如地址信息的网络信息。可替换地或另外,已加密的网络信息可以被传送到或存储于虚拟机中,其中,所述虚拟机不可以具有对信息进行解密的权限。
发明人还已认识到和察知,可以将分组封装用作用于租户地址虚拟化的方法。特别地,发明人已认识到和察知,虚拟化计算的效率的进一步提升可以通过使用分组封装协议来支持多租约的基于策略、软件控制的网络虚拟化来达到。在某些实施例中,封装和解封装操作可以直接在NIC中执行。在这些实施例中,可以不要求父分区对去往和来自宿主中的虚拟机传送的分组执行地址查找和封装报头的添加/移除。这可以保存CPU周期和避免数据流中的额外延迟。
在某些实施例中,可以用报头对分组进行封装,该报头包含识别虚拟网络的信息。在某些实施例中,NIC可以执行租户IP地址向提供商地址空间中的IP地址的映射和封装。同样,这可以允许直接从分组报头对租户路由信息的访问,可由NIC直接访问。发明人已认识到和察知,这可以提升地址转化的效率,并且还允许对网络中服务器的灵活和动态的服务分配。
然而发明人已认识到和察知,不论是否使用虚拟网络信息对分组进行了封装,都可以使用用于将网络策略卸载到NIC的技术。通常,可以使NIC能够执行与这样的网络策略相关的处理和存储,其中,所述网络策略使用网络虚拟化的任何其它合适的实现,例如使用地址重写来转发分组。
鉴于前述内容,本文中描述了用于将网络策略卸载到NIC的技术,其中,NIC能够直接与虚拟化连网环境中的虚拟机进行通信。
在某些实施例中,可以使NIC能够实现否则已在父分区的软件栈中被实现的网络策略。例如,NIC可以已在本地存储器中存储了例如映射表或访问控制列表的网络策略信息,其中,NIC使用该网络策略信息来处理和直接向合适的目的地转发网络流量。这样的网络流量可以绕开父分区中的软件处理,并作为代替直接流过NIC中的较快处理路径。在某些实施例中,如果NIC由于不论任何原因而不能处理特定分组,则其可以将该分组转发到父分区以便进行进一步处理和转发。
在某些实施例中,可以使NIC能够在绕开父分区的情况下直接与虚拟机进行通信。例如,已知使用单根输入输出虚拟化(SR-IOV)协议(“Single-RootVirtualizationI/OandSharingSpecification”,修订1.0,PCI-SIG,2007)来将NIC上的硬件资源分区为一个或多个虚拟接口,所述虚拟接口的每个专用于虚拟机。由此,虚拟机具有专用的和虚拟的端口,通过该端口向其它虚拟机或设备传送信息。
在某些实施例中,可以在不危及网络基础设施的安全性和完整性的情况下从父分区卸载网络策略和信息。在某些实施例中,可以经由本领域中已知的单独的和安全的信道,例如使用带外(OOB)数据,在NIC与父分区之间传送网络策略信息。在某些实施例中,VM可以向NIC提供加密的地址,但不可以具有用于对那些地址进行解密的解密密钥。
在某些实施例中,路由信息可以在分组的封装报头中与分组一起被传送。例如,例如租户ID或虚拟子网ID的逻辑网络标识符可以被直接放置在报头的字段中。在某些实施例中,租户ID或虚拟子网ID可以被可以对分组进行封装或解封装的NIC直接访问,NIC不必存储将源-目的地址映射为租户ID或虚拟子网ID的查找表。
例如,已知使用通用路由封装(GRE)来对分组进行封装以便在不同类型的网络上进行传送。如果使用GRE协议对分组进行了封装,则租户ID或虚拟子网ID可以被包含在GRE报头的“关键”字段中。发明人还已认识到和察知,NIC可以绕开父分区而使用GRE直接对分组实施封装和解封装。该封装和解封装操作向NIC的卸载可以允许NIC在不必将流量转发到父分区中的软件代理的情况下从分组报头检索路由信息。
在某些实施例中,NIC可以结合例如地址转化和访问控制授权的其它网络策略处理来执行该封装和解封装。然而发明人已认识到和察知,取决于NIC上可用的存储器和处理能力,可以使用卸载策略的各种组合。
然而应当认识到,本发明不必限于使用封装来实现网络虚拟化。不论是否使用了封装,都可以使NIC能够处理和存储与网络策略相关的信息。通常,网络策略可以在根据任何合适技术实现的虚拟化计算环境中被卸载到NIC,其中,所述技术例如是使用地址重写来将分组转发到合适虚拟机。
图1示出了虚拟化计算环境的实施例可以在其中运行的计算机系统的示例。然而应当认识到,本发明不限于在如图1的示例的环境中运行,并且通常可以在任意合适的虚拟化计算环境中运行。
在图1中,计算机系统100包括可以运行虚拟化计算环境的计算设备102。图1中示出了两个示例性计算设备102a和102b。示例性计算设备可以例如是例如在数据中心或公司网络中的、作为服务和数据的宿主的服务器。然而应当认识到,计算设备102的数量和本质对本发明不是紧要的,并且可以使用虚拟化计算环境的任意合适的宿主。
计算设备102可以作为一个或多个虚拟机(VM)104的宿主。在图1中,计算设备102a被示为具有两个示例性虚拟机104a和104b,而计算设备102b被示为具有三个示例性虚拟机104c、104d和104e。如本领域中众所周知的,虚拟机可以例如是安全地隔离计算设备102上所宿留的租户的软件和服务的逻辑分区。然而应当认识到,可以实现任意合适数量的VM,并且本发明不限于用于在宿主计算设备上实现VM的任意特定技术或用途。
计算设备102可以通过例如网络106的网络互连。网络106可以是使用通信协议来将计算设备102互连的物理网络结构。例如,网络106可以是3层互联网协议(IP)网络或2层以太网网络。然而通信网络106中所使用的准确协议对本发明不是紧要的,并且任意合适的物理网络结构可以被用于在计算设备102a和102b之间传输数据。
在某些实施例中,可以为虚拟机104指派物理网络106上的地址,例如地址PA1-PA5。所述地址可以是提供商地址(PA),该提供商地址可以被网络提供商用于例如对物理网络106上的数据进行路由或交换。在图1中,示例性虚拟机104a-104e被示为分别具有提供商地址PA1-PA5,所述地址可以是网络106中的IP地址。然而,应当认识到,对应于任何合适通信协议的地址可以被用于在物理网络结构106上对数据进行路由。
在某些实施例中,虚拟机104还可以具有第二地址集合,该第二地址集合将其标识为一个或多个虚拟网络的一部分。这些第二地址可以是被租户用于在其自己的虚拟网络内标识虚拟机的客户地址。所述客户地址不同于提供商地址PA1-PA5。在图1中,示例性VM104a和104b在宿主设备102a中分别具有客户地址CA1和CA3,而VM104c、104d和104e在宿主设备102b中分别具有客户地址CA2、CA1和CA3。不论CA指派的确切本质,一个或多个VM可以使用其各自的客户地址在虚拟网络上标识彼此。
在图1的示例中,VM104a和104c共享同一虚拟网络108a,并且可以分别使用客户地址CA1和CA2彼此进行通信。作为另一示例,VM104b和104e可以分别使用客户地址CA3和CA2在虚拟网络108b上彼此进行通信。
然而应当认识到,实施例不限于该特定寻址技术,并且通常可以实现用于为由物理网络互连的计算设备中所宿留的虚拟机指派地址的任意合适机制。例如,同一计算设备上所宿留的VM可以共享公共的提供商地址,并且通过唯一的2层MAC地址来区它们自己。
不论用于虚拟机和宿主计算设备的寻址的特定本质,在某些实施例中,客户地址(CA)向提供商地址(PA)的转化可以由宿主设备102来执行。宿主设备102可以通过其所宿留的虚拟机来控制对底层硬件的访问。在某些实施例中,虚拟机104不可以具有对宿主设备102中的硬件资源的直接访问。作为代替,对物理存储器和硬件的访问可以由宿主设备102中的特定软件委托给VM104。
例如,在某些实施例中,宿主设备102可以控制对将宿主设备102耦接到物理网络106的网络接口卡(NIC)或其它硬件部件的访问。同样,宿主设备中的软件可以具有对通过VM104的通信的特定级别的监管控制。
图2A和2B示出了根据常规技术在虚拟化计算环境中传送和接收数据的示例。图2A示出了运行虚拟计算环境的计算设备200。虚拟计算环境包括一个或多个逻辑分区。每个分区具有其自己隔离的执行环境,运行为例如虚拟机202的虚拟机。
分区中的一个被指定为父或根分区204。父分区204可以具有对虚拟机的管理控制。在某些实施例中,父分区204可以具有例如VM交换机206的虚拟交换机,该虚拟交换机转发去往和来自虚拟机的数据。父分区204还可以对虚拟机202对于底层硬件的访问进行控制和仲裁,所述底层硬件例如是网络接口控制器(NIC)208。
NIC208可以被集成到设备200中,或者其可以是设备200的外围部件。不论NIC208的确切本质,其提供设备200与网络间的通信接口。NIC208可以具有处理器210和一个或多个通信端口,所述通信端口例如是外部端口212和内部端口214。
图2A示出了根据常规技术在虚拟化计算环境中传送分组的一个示例。分组216被VM202经由如本领域中众所周知的例如虚拟总线218的通信介质发送。分组216可以例如是由虚拟机202的软件生成的IP分组或以太网帧。
虚拟总线218可以使用软件来实现,并且可以包括实现父分区204与例如VM202的虚拟机之间的通信的一个或多个逻辑信道。虚拟总线218将分组216传输到父分区204,以及分组216被例如VM交换机206的虚拟交换机进行处理。VM交换机206可以是软件交换机,该软件交换机为例如VM202的虚拟机提供交换和网络连接。VM交换机206可以具有软件,所述软件例如是确定分组的合适目的地的转发模块220。可以通过检查包含在分组或分组报头中的各种信息来确定目的地。
如果分组的目的地是连接到同一VM交换机206的另一VM,则通过虚拟总线218将分组转发到本地VM。否则,分组被转发到NIC208。可以通过例如端口214的通信端口实现父分区204与NIC208之间的通信。分组可以然后被NIC处理器210处理,并被转发到外部端口212以便进行向网络或外部设备的传送。
图2B示出了根据常规技术的、运行虚拟化计算环境的计算设备200中的接收路径的一个示例。通常,数据的流动与图2A中所示的相反,其在于,在NIC208处接收到的数据经过父分区204,并经由虚拟总线218被转发到目的地VM202。
如图2B中所示,当分组226在外部端口212处被NIC208接收时,该分组可以被处理器210处理并经由通信端口214被转发到父分区204。分组在VM交换机206处被接收,以便被转发到合适的目的地VM。转发模块220经由虚拟总线218将分组转发到目的地虚拟机202。
在图2A和2B中所示的示例中,去往和来自VM202的通信经过父分区204。父分区204负责处理和转发由VM202发送和接收的每个单独的分组。如果计算设备200实现了例如地址转化和/或安全策略的网络策略,则父分区204中的软件栈负责为每个分组实现和施行这些策略。
由父分区204进行的该处理通常涉及几个步骤,包括将数据从VM地址空间复制或映射到父分区地址空间(反之亦然)和/或模拟VM202和父分区204中的中断。这些操作会消耗宿主计算设备200中的大量CPU周期,并且引入数据路径中不可忽略的额外延迟。
发明人已认识到和察知,效率和延迟的改进可以通过允许数据流量绕开父分区的软件栈并且作为代替直接在NIC中执行处理来达到。在某些实施例中,NIC可以在不需要依赖父分区的情况下直接与VM进行通信。在某些实施例中,NIC可以直接对分组应用网络策略,这可以缓解父分区中的一些处理压力。
如果NIC的处理和存储器能力有限,则NIC可能不能存储足够的信息来处理和转发每个分组。在这样的情况下,发明人已认识到和察知,NIC可以将分组转发给父分区进行处理。此外,应当认识到,该拆分数据路径以及将处理和信息存储卸载到NIC的技术不限于任何特定的网络策略,并且可以适用于任何合适原因来处理传送去往和来自VM的分组。
图3是根据某些实施例的运行NIC的方法300的一个示例的流程图,其中,使该NIC能够处理和存储与网络策略相关的信息。在动作302中,NIC可以接收分组,该分组可以是从外部网络接收的入站分组,或者可以是由本地VM发送的出站分组。
在动作304中,NIC可以访问本地存储的信息以确定其是否具有用于处理分组的合适规则或策略。该信息可以以任何合适的格式被存储,以及被用于任何合适的用途。例如,该信息可以是用于在虚拟连网环境中执行地址转化的映射表,或者其可以是用于确定VM接收特定分组的授权级别的访问控制列表。不论本地存储的信息的特定本质,NIC中的信息可以被用于处理分组,以及可以不要求NIC将分组转发到父分区。
如果在动作306中确定NIC具有关于分组的可适用信息,则在动作308中,NIC可以使用该信息处理分组。该处理可以包括例如:将客户地址(CA)转化为提供商地址(PA),确定访问控制授权,或可以被应用于分组的任意其它合适网络策略。然而应当认识到,由NIC进行的处理不限于使用本地存储的信息。
在某些实施例中,NIC可以执行这样的处理,所述处理还依赖于除从父分区卸载的信息之外的信息。例如,NIC可以用合适的报头对分组进行封装或解封装。所述封装和解封装可以分别被用于传送和接收地址信息,所述地址信息可以结合已卸载的信息被用于确定分组的目的地。可替换地或另外,封装和解封装可以由NIC出于任意合适的原因而执行。不论该特定原因为何,NIC可以适于对分组进行封装和解封装,以及可以不要求其访问父分区的软件栈。
尽管实施例不限于任意特定的封装和解封装方法,但发明人已认识到和察知,GRE协议可以为虚拟化连网提供益处。在所述实施例中,地址信息可以被存储在GRE报头的字段中,从而管理和维护虚拟化网络可以更可伸缩和高效。然而通常,NIC可以使用任意这样的合适封装协议,在所述封装协议中,地址信息可以在封装报头中被传送。
在动作310中,NIC可以将分组转发到合适的目的地。对于出站分组,目的地可以是外部网络上的设备或另一VM,而对于入站分组,目的地可以是与NIC互操作的宿主计算设备中的本地VM。
如果在动作306中NIC确定其不具有足够的信息来处理和转发分组,则在某些实施例中,NIC在动作312中可以将分组转发到父分区。然而,应当认识到,NIC可以由于任意合适的原因而将分组转发到父分区。
在动作314中,分组可以在父分区中的虚拟交换机处被接收和处理。在某些实施例中,虚拟交换机负责将分组转发到合适的目的地。虚拟交换机中的处理可以包括例如访问存储的信息。在某些实施例中,这可以是未被卸载到NIC的信息。该信息可以例如是包含用于执行地址转化的映射信息的表、或用于安全性授权的访问控制列表。不论该信息的确切本质,虚拟交换机可以根据该信息处理分组,以及在动作316中将分组转发到合适的目的地。例如,出站分组,分组可以被发送回NIC进行传送,而入站分组可以被转发到虚拟总线以便向虚拟机传送。
实现过程300的宿主计算设备的示例在图4A和4B的框图中示出。特别地,图4A和4B分别示出了计算设备中传送路径和接收路径的示例,其中,在所述计算设备中,使NIC能够直接与虚拟机进行通信以及使用已从父分区卸载的信息处理分组。
图4A和4B中的NIC适于分别执行封装和解封装以提供和获取可以在对分组进行处理时使用的信息。例如,该信息可以是在虚拟机之间对分组进行路由时使用的寻址信息,例如租户ID或虚拟子网ID。
宿主计算设备400运行虚拟化计算环境,在该虚拟化计算环境中,物理主机被分区为例如VM402的虚拟机(VM)和父分区404。然而应当认识到,这仅是一个示例性的示例,并且不同实施例可以利用具有任意合适数量VM的不同分区安排。
在图4A和4B中,父分区可以包括例如VM交换机406的虚拟交换机,该虚拟交换机对向VM402传送的分组和从VM402传送的分组进行转发。宿主计算设备400可以具有例如NIC408的硬件,该硬件用于与外部网络进行通信。NIC408可以具有处理器410和用于存储信息的存储器412。NIC408具有例如外部端口414的端口,该端口用于与外部网络进行通信。
在某些实施例中,可以使NIC408能够绕开父分区404而直接与VM402进行通信。例如,可以提供例如虚拟端口416a的虚拟通信接口以允许NIC408直接与VM402进行通信。各种技术可以被用于实现虚拟端口416a,该虚拟端口416a实现NIC408与虚拟机402之间的直接通信。例如,已知使用SR-IOV协议来实现NIC与虚拟机之间的直接通信。SR-IOV协议允许将物理NIC的资源分区为一个或多个虚拟NIC,所述虚拟NIC的每个可以充当用于特定VM的通信接口。
然而应当认识到,本发明不限于使用SR-IOV协议,并且通常可以使用任何合适的硬件虚拟化技术,所述硬件虚拟化技术允许NIC绕开父分区的软件栈而直接与VM进行通信。此外,NIC408与VM402之间的虚拟通信接口不限于例如虚拟端口416a的虚拟端口,并且通常可以通过任意合适的软件接口来实现。
对于虚拟端口416a可替换地或另外,SR-IOV可以使例如虚拟端口416b和416c的其它虚拟端口能够与父分区404进行通信。在某些实施例中,NIC408可以具有例如NIC交换机418的软件交换机,该软件交换机将分组转发到合适的虚拟端口。不论NIC交换机418的确切本质为何,NIC408可以具有处理分组和将分组转发到合适目的地的能力。
在某些实施例中,尽管VM402与NIC408之间的通信可以绕开父分区,但管理VM402与NIC408之间的通信的策略和规则可以仍然受父分区404及其操作系统的控制。例如,在某些实施例中,可以存在机制和保护来防止例如VM402的虚拟机访问父分区404还未明确使所述系统资源对VM402可用的例如存储器和中断资源的系统资源。
应当认识到,图4A和4B中的示例不限于使用NIC408与VM402之间的任意特定协议或通信接口的实施例。通常,可以使用任意使NIC能够以安全方式直接与虚拟机进行通信的合适技术。不论实现NIC与VM之间的直接通信的特定技术为何,发明人已认识到和察知,这样的技术可以作为从父分区卸载网络策略的处理信息存储的解决方案的一部分被使用。
发明人已认识到和察知,所述技术可以允许父分区404维持对流量流动的通用控制的控制,而不必在单个的基础上直接处理分组。在某些实施例中,例如安全和路由的网络策略以及去往和来自VM的通信可以在NIC408处由父分区404远程地施行。
图4A示出了当NIC408被配置为执行已从父分区404卸载的处理时的传送路径的示例。在该示例中,NIC408执行分组的封装和虚拟化连网的地址转化。
将信息从父分区404卸载到NIC408可以以各种方式来实现。在某些实施例中,NIC408可以已在存储器412中存储了例如本地映射表420的信息。该本地映射表420可以例如是存储在父分区404中的完全映射表422的一部分。该映射表422中的信息可以被用于例如执行地址转化,以便将分组转发到合适的目的地。可替换地或另外,表422可以是指示哪些虚拟机被授权接收分组的访问控制列表。
不论存储在表422中的信息的确切本质为何,该信息的一些或全部可以被卸载到NIC408作为本地映射表420。NIC408中的映射表420可以被存储在NIC408的例如非易失性存储器的任意合适存储区域中。
在图4A中,将分组424从VM402经由虚拟端口416a传送到NIC408。分组在处理器410处被接收,该处理器410可以对该分组执行合适的处理。例如,处理器400可以访问本地映射表420以确定针对分组的合适转发信息。
如果在本地映射表420中找到了这样的信息,则处理器410可以使用该信息来处理分组。在某些实施例中,所述处理可以包括确定分组的目的地,以及利用路由信息对分组进行封装以创建已封装的分组426。路由信息可以例如是从关联于传送VM402的虚拟端口获取的租户ID或虚拟子网ID。已封装的分组426可以然后被处理器410转发到外部端口414以用于通过网络进行传送。
然而,如果在本地映射表420中未找到任何信息,则处理器410可以经由端口416b将分组发送到父分区404。在某些实施例中,该端口416b可以例如是虚拟异常端口,该虚拟异常端口专门用于当信息在NIC408中的本地映射表420中缺失时导致的异常。
父分区404中的VM交换机406可以接收分组,并确定该分组的目的地。例如,虚拟交换机406可以使用映射表422来确定针对该分组的地址转化或访问控制策略。当该映射信息被确定时,虚拟交换机406可以然后将分组与该映射信息一起经由虚拟端口416c转发到NIC408。在某些实施例中,映射信息可以使用例如带外(OOB)数据的单独和安全信道来传送。然而通常,可以通过在合适的情况下用软件、硬件或固件实现的任意合适技术将映射信息从父分区404传送到NIC408。
不论与分组一起发送映射信息的技术为何,由父分区404根据表422确定的映射信息可以被发送到NIC408来与分组一起被发送。当NIC处理器410接收到分组和映射信息时,处理器410可以对分组进行处理以用于经由外部端口414通过外部网络进行传送。
由NIC处理器410执行的处理可以包括例如对分组进行封装,创建已封装的分组426。封装可以使用例如GRE的任意合适封装协议来执行。已封装的报头可以适于指示从表420或422获取的例如逻辑网络ID或租户ID或虚拟子网ID的特定信息。
虽然在图4A中未示出,还可以将分组指向宿主计算设备400中的本地VM。在此情况下,NIC408可以直接将分组转发到合适的与目的地VM相关联的虚拟端口,并可以跳过封装分组的过程。
此外,应当认识到,NIC408可以根据任意合适的技术从父分区404获取映射信息。例如,NIC408可以将分组临时存储在本地存储器412中,并且向父分区404发送映射信息请求。不论NIC408如何从父分区404获取映射信息的特定本质为何,当NIC408不能在其本地存储器412中找到用于处理分组的合适信息时,NIC408可以向父分区404发送请求。
图4B示出了计算设备400中的接收路径的示例,其中,在该计算设备400中,使NIC408能够处理已从父分区404卸载的信息。在该示例中,NIC408执行对从外部网络接收的分组的解封装。解封装可以得到用于在虚拟连网环境中对分组执行地址转化的信息。然而通常,NIC408可以使用从父分区404卸载的信息执行任意合适的处理。
在图4B中,父分区404具有映射表422形式的信息,该信息可以用来处理分组和将分组转发到合适的目的地。NIC408还可以具有其自己的映射表420形式的本地信息,该本地信息可以用来在不必访问父分区404的情况下转发分组。
应当认识到,本发明不限于存储和使用表中的信息,信息也不必与地址映射相关。通常,父分区404可以将任意合适的信息卸载到NIC408,以及该信息可以被用于任意合适的分组处理。
在图4B中,NIC408可以经由外部端口414接收已封装的分组430。该已封装的分组430可以已例如通过外部网络从另一宿主计算设备接收到。不论该源为何,已封装的分组430可以包括附带了报头的分组。可以已例如使用诸如GRE的封装协议来执行封装。
不论用于进行封装和解封装的特定技术为何,NIC处理器410可以对已封装的分组430进行解封装,以便获取与确定分组的目的地相关的信息。该信息可以例如是可以用来将提供商地址(PA)转化为虚拟机的客户地址(CA)的、例如租户ID或虚拟子网ID的虚拟网络的标识符。不论从已封装分组430的报头获取的信息的特定本质为何,NIC处理器410可以使用该信息在映射表420中确定合适的规则或策略。
映射表420中的策略或规则可以允许NIC处理器410确定对解封装之后获取的分组的合适处理和转发。例如,NIC处理器410可以使用映射表420连同从分组报头获取的租户ID或虚拟子网ID来确定用于分组的地址转化。如果做出了这样的确定,则NIC处理器410可以经由虚拟端口416a将分组转发到虚拟机402。
另一方面,如果NIC408使用映射表420未做出任何确定,则分组可以经由虚拟端口416b被路由到父分区404。例如如果映射表420不包含可被用于确定分组的合适目的地的信息,则将分组路由到父分区404可以发生。在此情况下,NIC408可以将分组转发到父分区404以用于对分组进行路由。然而通常,NIC408可以由于任意合适的原因而将分组转发到父分区404。
不论将分组转发到父分区404的特定原因为何,分组可以在父分区404中的VM交换机406处被接收。VM交换机406可以使用例如映射表422的已存储的信息转发分组。例如,如果映射表422存储了用于地址转化中的客户地址(CA)与提供商地址(PA)之间的映射,则父分区404可以确定将分组转发到的那个合适的虚拟机。可替换地或另外,父分区中存储的信息可以与任意合适的网络策略有关,所述网络策略例如是用于安全性授权的访问控制列表。
在某些实施例中,虚拟交换机406可以随后将分组经由虚拟总线434转发到虚拟机402。然而通常,本发明不限于父分区404与虚拟机402之间的任意特定类型的传输介质或接口。
图4A和4B中的示例示出了在NIC408和父分区404之间拆分数据路径的某些可能的实施例。应当认识到,该技术可以被用于任意合适的网络策略或网络策略组合。例如,在某些实施例中,父分区404可以将访问控制列表(ACL)的施行卸载到NIC408。所述ACL策略可以指示已授权哪些VM接收分组中特定类型的信息。在该实施例中,如果分组与已被卸载到NIC的“允许规则”匹配,则分组可以被转发到其目的地。否则,分组可以被发送到父分区404进行处理。
此外,应当认识到,本发明不限于使用封装来实现网络虚拟化。通常,网络策略可以以虚拟化计算环境的任意合适实现被卸载到NIC。例如,对于利用虚拟网络标识符对分组进行封装可替换地或另外地,NIC可以执行地址重写以在客户地址和提供商地址之间进行转化。在某些实施例中,这可以起无状态可逆网络地址转化(NAT)的功能,其中,起源端点重写源和目的地址,并且目的地在将分组转发到目的地VM之前执行相反的转化。
不论实现网络虚拟化和地址转化的确切本质,发明人已认识到和察知,被卸载到NIC的网络策略信息可以使用各种技术来确定。例如,父分区404和/或VM402可以确定哪些信息应当被存储在NIC中以用于进行对分组的更快处理。可以使用任意合适的准则来做出该确定。
图5示出了VM请求信息被从父分区卸载到NIC的方法500的一个示例。然而,应当认识到,通常,信息从父分区向NIC的卸载可以由例如父分区的任意合适实体来发起。在某些实施例中,VM可以根据合适的准则和/或约束决定卸载哪些映射。在某些实施例中,可以限制VM请求卸载预定量或配额的信息。决定哪些映射应当被卸载到NIC可以是VM的连网栈的职责和处理权。
在图5中,VM在动作502中首先确定哪个映射应当被卸载到NIC。这可以基于请求分组映射的频率或基于任意其它合适的准则来确定。在动作504中,VM可以向父分区发送将映射卸载到NIC的请求。父分区可以在动作506中验证用于存储该映射的足够资源在NIC上是否可用。
在动作508中,父分区可以从宿主设备的存储器存储检索所请求的映射信息。在某些实施例中,例如,可以从映射表中检索出映射信息。在动作510中,父分区可以然后将该映射信息发送到NIC。可以通过例如使用带外数据的安全信道的任意合适技术来发送该映射信息。NIC可以在动作512中将该已卸载的映射信息存储在其本地存储器中。
图6示出了实现方法500的宿主计算设备600的示例。宿主设备600运行虚拟化计算环境,其中,在该虚拟化计算环境中,VM602请求信息被从父分区604卸载到NIC606。VM602经由虚拟端口616a发送对将映射信息卸载到NIC606的请求。
请求然后被NIC交换机618经由虚拟端口616b转发到父分区604。父分区中的例如VM交换机622的虚拟交换机可以验证NIC606上的资源可用性,并且从例如映射表624的合适源检索所请求的映射。虚拟交换机622可以然后经由虚拟端口616c将映射信息626卸载到NIC606。NIC处理器610可以接收已卸载的信息626并将其存储在NIC存储器612中的映射表620中。
然而应当认识到,任意合适的信息可以被从父分区604卸载为被存储在NIC606中。例如,信息可以涉及访问控制列表或可以由NIC606实现的任意其它合适的网络策略。此外,从VM602向父分区604的卸载请求可以通过任意合适的通信技术来完成,不必限于经由NIC606的虚拟端口的通信。
被卸载到NIC606的信息可以通过许多技术来确定。确定哪些信息被卸载到NIC606的某些示例性技术给出如下。
SFLOW:可以通过采样网络流量来收集统计数据。该统计数据可以被用于卸载用于负责最多的流量的那些连接的映射。
宿主中的流量监控:可以使用对NIC的周期性轮询来识别最活跃的连接。对应于最活跃连接的映射可以被卸载到NIC。当关于连接的活跃级别下降时,可以从硬件移除映射以便为更活跃的连接腾出空间。
在某些实施例中,每个虚拟机可以具有标识机器的唯一地址。可以使用例如媒体访问控制(MAC)协议的任意合适协议来实现这样的寻址系统。可以至少部分上通过使用与每个虚拟机关联的MAC地址来确定分组采取的路由。可以在每个分组中发送源VM和目的地VM的MAC地址。
图7示出了与例如以太网帧的分组相关联的信息的示例,其中,所述分组可以从在宿主计算系统中运行的VM被传送或被其接收。在图7A中所示的示例中,分组可以具有源客户IP地址(srcCA)10.0.0.1、目的客户IP地址(DestCA)10.0.0.2、源客户MAC地址(srcCMAC)00:00:00:00:01和目的客户MAC地址(DestCMAC)00:00:00:00:02。
图7B示出了可以与被分配给VM的虚拟端口相关联的信息的示例。在该示例中,虚拟端口属于具有租户ID或虚拟子网ID1的租户。虚拟端口被配置有客户MAC地址(CMAC)00:00:00:00:01、提供商MAC地址(PMAC)00:01:00:00:01、客户IP地址(CA)10.0.0.1和提供商IP地址(PA)10.1.0.1。
图7C示出了存储可被用于执行地址转化的信息的映射表。映射表可以将每个{租户ID或虚拟子网ID,客户IP地址(CA)}对映射为{提供商IP地址(PA),提供商MAC地址(PMAC)}对。该地址转化可以被用于例如确定分组的源或目的虚拟端口。例如,图7C中的表可以被用于确定图7A中所示的分组源自图7B中所示的虚拟端口。
在某些实施例中,可以通过使用可以例如从用来封装分组的报头中获取的租户ID或虚拟子网ID来执行该转化,如上面结合图4A和4B讨论的那样。在某些实施例中,租户ID或虚拟子网ID可以被存储在报头的字段中,以使得VM可以通过对分组进行解封装以获取报头和存储在报头的字段中的信息来访问租户ID或虚拟子网ID。
图7D示出了根据某些实施例的、可以在报头中存储租户ID或虚拟子网ID的已封装分组700的示例。示出了GRE封装的分组的各种报头和报头内的字段。在某些实施例中,已封装的分组可以具有这样的报头,该报头包括可以被用于传送例如租户ID或虚拟子网ID的信息的空间。例如,GRE报头702可以提供用于承载每个分组的租户ID或虚拟子网ID信息的字段。在某些实施例中,可以在GRE报头702的键扩展704中承载租户ID或虚拟子网ID。
NIC可以发送如图7D中所示的所述使用GRE封装的完全成帧的分组,以便与原始数据分组或数据帧一起传送例如租户ID或虚拟子网ID的映射信息。在该示例中,GRE协议可以对内部帧进行封装,该内部帧可以是由发出流量的VM发送的以太网帧706。以太网帧706可以包括内部以太网MAC报头,其后跟随内部IP地址,其后跟随IP净荷。在某些实施例中,内部MAC报头和内部IP报头可以使用例如源和目的客户MAC地址的客户地址(CA)信息,所述客户地址对应于发出的VM正在其上进行通信的虚拟网络。
在某些实施例中,VM可以不知道GRE封装,并且可以就像其正在发送和接收例如以太网帧706的以太网帧一样地运行。GRE封装可以提供客户和提供商地址空间之间的接口。例如,外部IP报头和外部MAC报头可以对应于在物理网络结构上标识计算设备的提供商地址(PA)。GRE报头的关键字段可以被用于承载为客户与提供商地址之间的转化提供便利的租户ID或虚拟子网ID。
尽管图7D的示例示出了GRE协议的使用,但应当认识到,可以使用任何这样的合适封装和解封装协议,所述封装和解封装协议允许例如租户ID或虚拟子网ID的信息与分组一起被发送,并且允许所述信息可被使得能够执行解封装的计算设备访问。
在某些实施例中,NIC可以在不执行地址转化的情况下对GRE报头执行封装和解封装。例如在其中NIC具有用于存储映射表的有限存储器的情况下,这可以发生。在所述情况下,NIC可以请求父分区执行地址转化。从报头获取的信息可以例如是租户ID或虚拟子网ID,其可以经由例如带外数据的单独和安全的信道被传送到父分区。可替换地或另外,可以通过任意其它合适的通信技术将租户ID或虚拟子网ID发送到父分区。
例如在其中NIC上的存储器有限的情况下,可以在不卸载地址转化情况下使用所述对封装的卸载。在所述情况下,NIC可以被使得能够执行分组的封装和解封装,以及依赖于父分区来存储和检索映射信息和实施地址转化。
然而应当认识到,本发明不限于所述场景,并且通常可以存在任何合适原因来使得NIC执行分组的封装和解封装同时请求由父分区进行地址转化。
图8是从VM通过NIC传送分组的方法800的流程图,其中,该NIC被使得能够执行封装和解封装,并且从父分区接收映射信息来对分组进行封装。在动作802中,VM传送分组,该分组在动作804中被父分区通过虚拟总线或其它合适的通信介质接收。
在动作806中,父分区中的虚拟交换机接收分组,并确定针对该分组的合适转发。在某些实施例中,虚拟交换机可以访问本地映射表以确定映射信息,该映射信息可以指示分组的合适目的地。可替换地或另外,虚拟交换机可以访问适用于分组的任意合适网络策略的信息。
在动作808中,如果分组的目的地是本地VM,则虚拟交换机在动作810中将分组转发回虚拟总线以便向目的地VM传送。另一方面,如果分组的目的地在宿主计算设备外部,则在动作812中,虚拟交换机将分组与从存储的映射表中确定的映射信息一起转发到NIC。可以通过例如使用带外数据的安全信道的任何合适通信技术来发送映射信息。
NIC从父分区接收到伴随映射信息的分组,并且在动作814中使用接收的映射信息对分组进行封装。可以使用例如GRE的任意合适封装协议来执行封装。不论所使用的特定封装协议为何,从父分区获取的映射信息可以在对分组进行封装的报头中被复制。在某些实施例中,映射信息可以是标识虚拟子网的租户ID或虚拟子网ID,其可以被存储在GRE报头的关键扩展字段中。不论封装和伴随分组而被封装的信息的确切本质为何,任意合适的网络策略信息可以与分组一起被封装以便在动作816中通过网络进行传送。
图9示出了实现方法800的宿主计算设备900中的分组传送路径的示例。宿主计算设备900运行虚拟化计算环境,该虚拟化计算环境包括例如虚拟机902的虚拟机和父分区904。父分区904可以具有例如VM交换机906的虚拟交换机,该虚拟交换机转发去往和来自例如VM902的虚拟机的分组。
宿主计算设备900可以具有去往外部网络的例如NIC908的物理接口。NIC908可以具有使得能够对分组进行封装和解封装的处理器910。NIC908还可以具有用于与外部网络进行通信的例如外部端口912的各种通信端口。
NIC处理器910可以利用地址映射信息对分组进行封装,该地址映射信息可以从父分区904中的映射表914获取。可替换地或另外,NIC处理器910可以使用从父分区904获取的任意合适的网络策略信息对分组进行封装。
分组916被从VM902经由虚拟总线918传送到父分区904。然而,虚拟机的准确数量和虚拟机与父分区之间的通信介质的特定本质对于本发明不紧要,并且可以具有任意合适的配置。
父分区904中的VM交换机906接收分组并且确定针对分组的合适转发。如果分组的目的地是宿主计算设备中的VM,则转发模块920将分组经由虚拟总线918转发到合适的目的地VM。如果分组的目的地在宿主计算设备外部,则VM交换机906可以确定与分组相关的映射信息。该映射信息可以从例如映射表914的存储的信息中获取。在某些实施例中,映射表914可以用于在给定目的地的客户地址(CA)和MAC地址的情况下确定目的地的租户ID或虚拟子网ID,该租户ID或虚拟子网ID指示目的地所驻留于的那个虚拟子网。
不论从映射表914获取映射信息的确切本质为何,映射信息可以与分组一起被发送到NIC908。在某些实施例中,父分区可以通过例如带外(OOB)数据的安全信道经由端口926向NIC908提供映射信息。NIC处理器910可以创建并将GRE报头连接到分组。映射信息可以被写入GRE报头的字段中,以及已封装的分组928经由外部端口912被发送到外部网络。
图10是通过NIC接收分组的方法1000的流程图,其中,该NIC被使得能执行封装和解封装并向父分区提供映射信息以用于地址转化。在动作1002中,NIC从外部网络接收已封装的分组。该分组已被使用例如GRE的任意合适协议进行了封装,以及其从例如另一宿主计算设备的任意合适源被传送。
在动作1004中,NIC可以对接收的已封装分组进行解封装,获取已解封装的分组和映射信息。可以例如从用于对分组进行封装的报头中的字段获取映射信息。不论用于在已封装分组中传输该映射信息的准确技术为何,在动作1006中,NIC可以将该映射信息与已解封装的分组一起转发到父分区。在某些实施例中,可以使用例如带外数据的安全侧信道来传送映射信息。
在动作1008中,父分区中的虚拟交换机可以接收分组和映射信息,以及访问存储的信息以确定用于分组的合适动作。例如,虚拟交换机可以使用接收的映射信息访问存储的映射表以确定分组的目的地。虚拟交换机可以然后在动作1010中将分组转发到合适的目的地VM。
图11示出了实现方法1000的宿主计算设备1100中的分组接收路径的示例。宿主计算设备1000运行虚拟化计算环境,该虚拟化计算环境包括例如虚拟机1102的虚拟机和父分区1104。父分区1104可以具有例如VM交换机1106的虚拟交换机,该虚拟交换机转发去往和来自例如VM1102的虚拟机的分组。
宿主计算设备1100可以具有去往外部网络的例如NIC1108的物理接口。NIC1108可以具有被使得能够对分组进行封装和解封装的处理器1110。NIC1108还可以具有用于与外部网络进行通信的例如外部端口1112的各种通信端口。
NIC处理器1110可以经由外部端口1112接收已封装的分组1116。NIC处理器1110可以对接收的已封装分组进行解封装以获取地址映射信息和已解封装的分组1118。在某些实施例中,映射信息可以是标识目的地VM所驻留于的那个虚拟网络的租户ID或虚拟子网ID。可替换地或另外,NIC处理器1110可以对分组进行解封装以获取任意合适的网络策略信息。
分组1118可以经由端口1120被转发到父分区1104。映射信息还可以使用例如带外数据的安全侧信道被传送到父分区1104。父分区1104中的VM交换机1106可以接收分组和映射信息,并确定分组的合适目的地。
在某些实施例中,VM交换机1106可以访问例如映射表1114的存储的信息以使用接收的映射信息来执行地址转化。该地址转化可以用于例如将客户地址(CA)转化为提供商地址(PA)。不论对分组执行的处理的确切本质为何,分组可以被转发模块1122转发到已确定的目的地VM。可以使用例如虚拟总线1124的任意合适的传送介质将分组从父分区1104传送到VM1102。
可以存在把封装和解封装而不把映射数据的操作卸载到NIC的各种原因和动机。在某些情况下,这可以允许NIC消耗其较少的机上存储器用于存储映射表,但仍然允许NIC减轻父分区进行封装和解封装的任务。
在某些实施例中,对于NIC将分组发送到父分区进行地址转化可替换地或另外地,可以以加密的格式将映射信息提供给虚拟机。虚拟机不可以具有对映射信息进行解密的能力。作为代替,虚拟机可以将该加密的映射信息与正被发送的分组一起提供给NIC。NIC可以对加密的映射信息进行解密并将分组路由到合适的目的地。
VM可以仅知道和使用其自己的接口或其它机器和设备的接口的提供商地址(PA)的已加密版本。在第一次将分组传送到远程CA之前,VM可以请求父分区将CA映射为加密的PA。对于父分区来说还有可能预期VM可能需要该映射,并且提供未经请求的已加密PA。
图12是用于向VM提供已加密映射信息以便在不卸载映射信息的情况下进行封装和解封装向NIC的安全卸载的方法1200的流程图。在动作1202中,VM可以从父分区请求加密的地址信息。在某些实施例中,VM可以发送客户地址(CA),其中,将为该客户地址确定关联的提供商地址(PA)。在动作1204中,父分区可以通过使用存储的映射表而使用接收到的CA来确定对应的PA。
在动作1206中,父分区可以使用任意合适的加密算法对该地址转化的结果进行加密。在某些实施例中,加密可以涉及密钥,该密钥可以是私有或共享的密钥。不论加密的确切本质为何,父分区可以将加密的PA发送到VM。
在动作1208中,VM接收到加密的PA,并且将其与分组一起传送到NIC。可以例如使用例如带外数据的安全侧信道发送加密的PA。在某些实施例中,VM可能不能对加密的PA进行解密。这可以允许物理地址空间保持对VM受到保护,并且防止对物理网络可能的不受监管的和/或恶意使用。
在动作1210中,NIC可以接收到加密的PA,并且执行解密以获取用于分组的地址信息。在某些实施例中,NIC可以具有用于对加密的PA进行解密的密钥。不论解密的确切本质为何,NIC可以获取对由父分区确定的PA的访问。不论被解密的地址信息的确切本质为何,在动作1212中,NIC可以使用该地址信息对分组进行封装以便在动作1214中在外部网络上进行传送。例如,NIC可以确定将租户ID或虚拟子网ID存储在用于对分组进行封装的GRE报头中。
图13示出了实现方法1200的宿主计算设备1300中的分组传送路径的一个示例。宿主设备1300运行虚拟化计算环境,该虚拟化计算环境包括例如虚拟机1302的虚拟机和父分区1304。父分区1304可以具有例如VM交换机1306的虚拟交换机,该虚拟交换机确定向VM1302传输的分组和从VM1302传输的分组的地址信息。宿主计算设备1300可以具有NIC1306,其中,使该NIC1306能够直接与VM1302进行通信。
父分区可以通过例如物理功能(PF)驱动器的软件驱动器将NIC的例如虚拟端口1322的虚拟端口编程为具有唯一键(VPort)。该VPort键可以用于对由父分区发送的已加密映射信息进行解密。虚拟端口可以还被编程为具有合适的VM的租户ID或虚拟子网ID。在某些实施例中,VM1302可能不知道且不能访问VPort键或者租户ID或虚拟子网ID。
当VM1302需要从CA到PA的地址映射时,其可以向父分区1304提交请求。可替换地或另外,VM1302可以具有已加密PA的本地查找表,该本地查找表可以通过从父分区1304请求加密的PA来进行填充。加密的PA可以被存储在虚拟机1302的任意合适的存储器位置中。例如,加密的PA可以被存储在虚拟机1302的NetVSC驱动器或地址解析协议(ARP)表中。
不论VM1302如何获取加密的PA,父分区1304可以对PA执行加密运算。父分区1304可以从映射表1314访问PA,以及在某些实施例中,将唯一的(每CA)“混淆(salt)”值连接到PA。该混淆值CA混淆可以例如是用于为甚至具有同一PA的每个VM创建唯一的加密地址的比特串。然而通常,任意合适的技术可以被用于生成唯一的已加密PA。例如,实施例可以例如通过使用一对一地址映射来使用用于生成唯一PA的技术。
不论生成PA和对PA进行加密的确切本质为何,可以将PA加密为使得共同位于同一宿主中的VM具有不同的已加密PA。在某些实施例中,父分区1304中的加密模块1316可以使用PA、CA混淆和VPort值的组合来计算加密的PA(PAEn)。然后可以将该值和CA混淆经由虚拟总线1318返回给VM1302。
当传送分组时,VM1302经由例如带外(OOB)数据的安全信道提供加密的PA(PAEn)和混淆值(CA混淆)。NIC交换机1324经由虚拟端口1322接收这些值,并且使用加密的PA、混淆值和VPort键计算PA。NIC1308然后使用虚拟端口的租户ID或虚拟子网ID对分组进行封装,并且经由外部端口1312传送已封装的分组1326。
当GRE封装的分组被SR-IOVNIC接收到时,租户ID或虚拟子网ID被从GRE报头中提取出。通过分组的内部报头中指定的目的MAC地址确定目的虚拟端口。然后将从GRE报头提取的租户ID或虚拟子网ID与虚拟端口的租户ID或虚拟子网ID进行比较。如果这两个值匹配,则通过虚拟功能将分组递送到VM。如果这些值不匹配,则分组被递送到父分区进行地址映射。
尽管前述附图和说明书中的示例主要聚焦于卸载GRE封装,但所描述的基本原理和方法还可以被应用于卸载访问控制列表(ACL)、网络地址转化(NAT)和任意其它否则将已由父分区执行并且可以作为代替由NIC中的硬件执行的合适操作。应当理解,本发明不限于GRE封装,并且可以使用任意其它封装技术。
图14示出了可以在其上实现各种实施例的合适计算系统环境1400的示例。计算系统1400可以代表例如宿主计算设备。计算系统环境1400是合适的计算环境的仅一个示例,并且不旨在对本发明的使用或功能的范围表明任何限制。也不应当将计算环境1400解释为对示例性运行环境1400中所示的部件中的任一个或组合有任何依赖或需求。
本发明可以与众多其它的通用或专用计算系统环境或配置一起运行。可以适于与本发明一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子、网络PC、迷你计算机、大型机计算机、包括以上系统或设备中任一个的分布式计算环境等。
计算环境可以执行例如程序模块的计算机可执行指令。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明可以还在分布式计算环境中实现,在所述分布式计算环境中,任务由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以被放置在包括存储器存储设备的本地和远程计算机存储介质这两者中。
参考图14,用于实现本发明的示例性系统包括采用计算机1410形式的通用计算设备。计算机1410的部件可以包括但不限于处理单元1420、系统存储器1430和系统总线1421,其中,系统总线1421将包括系统存储器的各种系统部件耦接到处理单元1420。系统总线1421可以是几种类型的总线结构中的任一个类型,所述几种类型的总线结构包括使用多种总线架构中的任一个的存储器总线或存储器控制器、外围总线和局部总线。作为示例而不作为限制,所述架构包括工业标准架构(ISA)总线、微信道架构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)局部总线和也已知夹层总线的外围部件互连(PCI)总线。
计算机1410通常包括多种计算机可读介质。计算机可读介质可以是可被计算机1410访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质这两者。作为示例而不作为限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括用任意方法或技术实现的用于存储例如计算机可读指令、数据结构、程序模块或其它数据的信息的易失性和非易失性、可移动和不可移动介质这两者。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁性存储设备或者任意其它可以被用于存储期望的信息并且可以被计算机1410访问的介质。通信介质通常将计算机可读指令、数据结构、程序模块或其它数据体现在已调制数据信号中,所述数据信号例如是微波或其它传输机制,并且包括任意信息递送介质。术语“已调制数据信号”是指以将信息编码到信号中的方式使其特征中的一个或更多被设置或改变的信号。作为示例而不作为限制,通信介质包括例如有线网络或直接连线连接的有线介质以及例如声音、RF、红外的无线介质或其它无线介质。以上中任意的组合应当也被包括在计算机可读介质的范围内。
系统存储器1430包括例如只读存储器(ROM)1431和随机存取存储器(RAM)1432的采用易失性和/非易失性存储器形式的计算机存储介质。包含例如在启动期间帮助在计算机1410内的单元之间传输信息的基本例程的基本输入/输出系统1433(BIOS)通常被存储在ROM1431中。RAM1432通常包含处理单元1420可立即访问和/或当前被处理单元1420运行的数据和/或程序模块。作为示例而不作为限制,图14示出了操作系统1434、应用程序1435、其它程序模块1436和程序数据1437。
计算机1410还可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图14示出了从不可移动、非易失性磁性介质读取或向其写入的硬盘驱动器1441、从可移动、非易失性磁盘1452读取或向其写入的磁盘驱动器1451以及从例如CDROM或其它光学介质的可移动、非易失性光盘1456读取或向其写入的光盘驱动器1455。在示例性运转环境中可以使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于磁盒、闪存卡、数字多功能光盘、数字视频磁带、固态RAM、固态ROM等。硬盘驱动器1441通常通过例如接口1440的不可移动存储器接口连接到系统总线1421,并且磁盘驱动器1451和光盘驱动器1455通常通过例如接口1450的可移动存储器接口连接到系统总线1421。
以上讨论并且在图14中示出的驱动器及其关联的计算机存储介质为计算机1410提供对计算机可读指令、数据结构、程序模块和其它数据的存储。在图14中,例如,硬盘驱动器1441被示为存储操作系统1444、应用程序1445、其它程序模块1446和程序数据1447。应当指出,这些部件可以与操作系统1434、应用程序1435、其它程序模块1436和程序数据1437相同或不同。此处给予操作系统144、应用程序1445、其它程序模块1446和程序数据1447不同的号码以示出,最低限度上其是不同的副本。用户可以通过例如键盘1462和指点设备1461的输入设备将命令和信息输入计算机1410中,其中,指点设备1461通常被称为鼠标、轨迹球或触摸板。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏板、卫星天线、扫描仪等。这些和其它输入设备通常通过耦接到系统总线的用户输入接口1460而连接到处理单元1420,但可以通过例如并行端口、游戏端口或通用串行总线(USB)的其它接口和总线结构来连接。监视器1491或其它类型的显示设备经由例如视频接口1490的接口也连接到系统总线1421。除监视器之外,计算机还可以包括例如扬声器1497和打印机1496的其它外围输出设备,所述外围输出设备可以通过输出外围设备接口1495来连接。
计算机1410可以使用与例如远程计算机1480的一个或多个远程计算机的逻辑连接在连网环境中运行。远程计算机1480可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,并且通常包括上面关于计算机1410描述的单元中的许多或全部,尽管仅存储器存储设备1481在图14中被示出。图14中所示的逻辑连接包括局域网(LAN)1471和广域网(WAN)1473,但还可以包括其它网络。所述连网环境在办公室、企业范围计算机网络、内部网和互联网中是司空见惯的。
当被用在LAN连网环境中时,计算机1410通过网络接口或适配器1470连接到LAN1471。所述网络接口1470可以代表根据某些实施例的网络接口控制器(NIC)。当被用在WAN连网环境中时,计算机1410通常包括调制解调器1472或其它用于在例如互联网的WAN1473上建立通信的装置。调制解调器1472可以经由用户输入接口1460或其它合适的机制连接到系统总线1421,其中,调制解调器可以是内部的或外部的。在连网环境中,关于计算机1410示出的程序模块或其部分可以被存储在远程存储器设备中。作为示例而不作为限制,图14将远程应用程序1485示为驻留在存储器设备1481上。应当认识到,所示的网络连接是示例性的,并且可以使用其它在计算机之间建立通信链路的装置。
由此已描述了本发明的至少一个实施例的几个方面,应当认识到,各种可替换、修改和改进对于本领域的技术人员将显而易见。
所述可替换、修改和改进旨在是本公开的一部分,并且旨在在本发明的精神和范围内。进一步地,尽管指出了本发明的优点,但应当认识到,并非本发明的每个实施例将包括每个优点。某些实施例可以不实现任何本文中和在某些情况下作为优点被描述的特征。相应地,前述说明书和附图仅是作为示例。
以上描述的本发明的实施例可以以众多方式中的任一个来实现。例如,实施例可以使用硬件、软件或其组合来实现。当使用软件来实现时,软件代码可以在任意合适的处理器或处理器集合上被执行,不论所述处理器集合在单一计算机中被提供还是被分布在多个计算机中。这样的处理器可以被实现为集成电路,其中,集成电路部件中有一个或更多处理器。尽管如此,处理器可以使用任意合适形式的电路来实现。
进一步地,应当认识到,计算机可以用许多形式中的任一个来体现,例如安装于机架上的计算机、桌面计算机、膝上计算机或平板计算机。另外,计算机可以被嵌入通常不被认为是计算机但具有合适的处理能力的设备中,所述设备包括个人数字助理(PDA)、智能电话或任意其它合适的便携式或固定电子设备。
同样,计算机可以具有一个或多个输入和输出设备。这些设备特别可以被用于呈现用户界面。可以被用于提供用户接口的输出设备的示例包括:用于输出的视觉呈现的打印机或显示屏,以及用于输出的听觉呈现的扬声器或其它声音生成设备。可以被用于用户接口的输入设备的示例包括键盘以及例如鼠标、触摸板和数字化板的指点设备。作为另一示例,计算机可以通过语音识别或以其它听觉格式接收输入信息。
所述计算机可以采用任意合适形式通过一个或多个网络互连,包括作为局域网或广域网,例如企业网络或互联网。所述网络可以基于任意合适的技术,并且可以根据任意合适的协议运行,以及可以包括无线网络、有线网络或光纤网络。
同样,本文中概述的各种方法或过程可以被编码为软件,所述软件可在采用多种操作系统或平台中任一个的一个或更多处理器上执行。另外,所述软件可以使用许多合适的编程语言和/或编程或脚本工具中的任一个来书写,以及还可以被编译为可执行机器语言代码或中间代码,所述中间代码在框架或虚拟机上被执行。
在这方面,本发明可以体现为被编码有一个或多个程序的计算机可读存储媒介(或多个计算机可读介质)(例如计算机存储器、一个或多个软盘、光碟(CD)、光盘、数字视频盘(DVD)、磁带、闪存、现场可编程门阵列或其它半导体设备中的电路配置或者其它有形的计算机存储介质),当在一个或更多计算机或其它处理器上被执行时,所述程序执行实现上面讨论的本发明的各种实施例的方法。如从前述示例中显而易见的,计算机可读存储媒介可以将信息保留足够的时间,以便以非瞬态形式提供计算机可执行指令。这样的计算机可读存储媒介可以是可传输的,从而存储于其中的一个或多个程序可以被加载到一个或多个不同计算机或其它处理器中,以便实现如上面讨论的本发明的各方面。当用在本文中时,术语“计算机可读存储媒介”仅包含可以被认为是产品(即制造的物品)或机器的计算机可读媒介。可替换地或另外,本发明可以体现为除计算机可读存储媒介以外的计算机可读媒介,例如传播的信号。
本文中,术语“程序”或“软件”在一般意义上被用于指代任意类型的计算机代码或计算机可执行指令集合,所述计算机代码或计算机可执行指令集合可以用于将计算机或其它处理器编程为实现如上面所讨论的本发明的各方面。另外,应当认识到,根据该实施例的一方面,当被执行时实施本发明的方法的一个或更多计算机程序不需要驻留在单一计算机或处理器上,而是可以以模块化的方式分布在许多不同的计算机或处理器中来实现本发明的各方面。
计算机可执行指令可以采用许多形式,例如被一个或多个计算机或其它设备执行的程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,在各种实施例中,程序模块的功能可以根据期望被合并或分布。
同样,数据结构可以以任意合适的形式存储在计算机可读介质中。为了说明的简化,数据结构可以被示为具有通过在数据结构中的位置而相关的字段。所述关系可以通过为字段指派存储而同样地达到,其中,所述存储具有表达字段之间关系的在计算机可读介质中的位置。然而,可以使用任意合适的机制来在数据结构的字段中的信息之间建立关系,包括通过使用指针、标签或在数据单元之间建立关系的其它机制。
本发明的各种方面可以单独地、组合地或以在前面描述的实施例中未专门讨论的多种安排被使用,并且因此不将其应用限于在前述说明书中阐述或在附图中示出的细节和部件的安排。例如,在一个实施例中描述的方面可以以任意方式与在其它实施例中描述的方面组合。
同样,本发明可以体现为方法,其中,已提供了所述方法的示例。作为方法的一部分被执行的动作可以以任意合适的方式被排序。相应地,可以构造动作以不同于所示的顺序来执行的实施例,其可以包括同时执行某些动作,即使在示例性实施例中被示为顺序动作。
在权利要求中将例如“第一”、“第二”、“第三”等的顺序术语用于修饰权利要求单元的使用,其自身不意味着一个权利要求单元对于另一个的任何优先、在先或顺序或者方法的动作被执行的时间顺序,而仅被用作用于区分一个具有特定名字的权利要求单元与另一个具有相同名字(但使用顺序术语)的单元的标记,以便区分权利要求单元。
同样,本文中使用的措辞和术语是用于描述的,并且不应当被认为是限制性的。“包括(including)”、“包含(comprising)”或“具有”、“含有”、“涉及”及其变形在本文中是指包含其后列出的条目及其等价项以及另外的条目。

Claims (8)

1.一种适于用作运行虚拟化计算环境的计算设备(400)的一部分的网络接口控制器(408),所述虚拟化计算环境包括父分区(404)和至少一个虚拟机(402),所述网络接口控制器包括:
包含数据结构(420)的存储器(412);以及
适于转发接收的分组的处理器(410),所述转发包括:
使用键解密(304)与所述分组关联的地址信息,其中所述地址信息由所述父分区加密;
至少部分上基于所述地址信息,确定(306)用于将所述分组转发到目的地的映射信息是否出现在所述数据结构(420)中;以及
执行以下至少一个动作:
如果所述映射信息出现在所述数据结构(420)中,则使用所述映射信息将所述分组发送(310)到所述目的地;或者
如果所述映射信息未出现在所述数据结构中,则将所述分组发送(312)到所述父分区。
2.根据权利要求1的网络接口控制器,其中,所述数据结构包含映射表,所述映射表将所述地址信息与所述目的地的地址相关联。
3.根据权利要求1的网络接口控制器,其中,所述数据结构包含安全策略,所述安全策略指示指派给所述分组的授权级别。
4.一种适于用作运行虚拟化计算环境的计算设备(1300)的一部分的网络接口控制器(1308),所述虚拟化计算环境包括父分区(1304)和至少一个虚拟机(1302),所述网络接口控制器包括:
处理器(1310);以及
至少一个包含指令的计算机存储介质,所述指令当被所述处理器执行时导致所述网络接口控制器:
从所述至少一个虚拟机接收(1208)分组和加密的地址信息,其中所述地址信息由所述父分区加密;
使用键对所述加密的地址信息进行解密(1210);
通过将所述已解密的地址信息插入所述分组的报头中而对所述分组进行封装(1212);以及
将所述已封装的分组发送(1214)到外部网络。
5.一种运行计算设备(1300)以实现虚拟化计算环境的方法,所述虚拟化计算环境包括父分区(1304)和至少一个虚拟机(1302),所述方法包括:
所述虚拟机从所述父分区请求(1202)地址信息;
所述父分区对所述请求的地址信息进行加密(1206);
所述父分区将所述已加密的地址信息发送(1206)到所述虚拟机;
所述虚拟机使用所述已加密的地址信息将分组发送(1208)到所述计算设备的网络接口控制器;
所述网络接口控制器从所述至少一个虚拟机接收(1208)分组和加密的地址信息;
所述网络接口控制器使用键解密(1210)所述加密的地址信息;
所述网络接口控制器通过将解密的地址信息插入到分组的报头中来封装(1212)所述分组;以及
所述网络接口控制器将所述封装的分组发送(1214)到外部网络。
6.一种运行计算设备(600)以实现虚拟化计算环境的方法,所述虚拟化计算环境包括父分区(604)和至少一个虚拟机(602),所述方法包括:
所述虚拟机确定(502)满足与由网络接口控制器建立的多个连接相关的准则的映射信息,其中所述连接与所述映射信息相关联;
所述虚拟机请求(504)所述父分区向所述网络接口控制器发送所述满足所述准则的映射信息;以及
所述父分区检索所述请求的映射信息且将所述请求的映射信息发送(510)到所述网络接口控制器。
7.一种被配置为实现虚拟化计算环境的计算设备(1300),所述虚拟化计算环境包括父分区(1304)、至少一个虚拟机(1302)和网络接口控制器,其中:
所述虚拟机适于从所述父分区请求地址信息;
所述父分区适于对所述请求的地址信息进行加密;
所述父分区适于将所述已加密的地址信息发送到所述虚拟机;
所述虚拟机适于使用所述已加密的地址信息将分组发送到所述计算设备的网络接口控制器;
所述网络接口控制器适于从所述至少一个虚拟机接收分组和加密的地址信息;
所述网络接口控制器适于使用键解密所述加密的地址信息;
所述网络接口控制器适于通过将解密的地址信息插入到分组的报头中来封装所述分组;以及
所述网络接口控制器适于将所述封装的分组发送到外部网络。
8.一种被配置为实现虚拟化计算环境的计算设备(600),所述虚拟化计算环境包括父分区(604)和至少一个虚拟机(602),其中:
所述虚拟机适于确定满足与由网络接口控制器建立的多个连接相关的准则的映射信息,其中所述连接与所述映射信息相关联;
所述虚拟机适于请求所述父分区向所述网络接口控制器发送所述满足所述准则的映射信息;以及
所述父分区适于检索所述请求的映射信息且将所述请求的映射信息发送到所述网络接口控制器。
CN201210328965.4A 2011-09-07 2012-09-07 网络策略向网络接口卡的安全和高效卸载的方法和装置 Active CN103051510B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201161532002P 2011-09-07 2011-09-07
US61/532,002 2011-09-07
US61/532002 2011-09-07
US13/565,369 US8856518B2 (en) 2011-09-07 2012-08-02 Secure and efficient offloading of network policies to network interface cards
US13/565369 2012-08-02
US13/565,369 2012-08-02

Publications (2)

Publication Number Publication Date
CN103051510A CN103051510A (zh) 2013-04-17
CN103051510B true CN103051510B (zh) 2016-04-13

Family

ID=48064015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210328965.4A Active CN103051510B (zh) 2011-09-07 2012-09-07 网络策略向网络接口卡的安全和高效卸载的方法和装置

Country Status (1)

Country Link
CN (1) CN103051510B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9930066B2 (en) 2013-02-12 2018-03-27 Nicira, Inc. Infrastructure level LAN security
CN103560934A (zh) * 2013-11-11 2014-02-05 深圳市共进电子股份有限公司 一种电力猫生产测试方法及装置
US20150319250A1 (en) * 2014-04-30 2015-11-05 Anil Vasudevan Technologies for accelerating network virtualization
WO2015175426A1 (en) * 2014-05-12 2015-11-19 Google Inc. Managing nic-encrypted flows for migrating guests or tasks
US10445509B2 (en) 2014-06-30 2019-10-15 Nicira, Inc. Encryption architecture
US10237354B2 (en) * 2014-09-25 2019-03-19 Intel Corporation Technologies for offloading a virtual service endpoint to a network interface card
JP2019527509A (ja) 2016-07-18 2019-09-26 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 暗号化のセキュリティおよび完全性保護
US10798073B2 (en) 2016-08-26 2020-10-06 Nicira, Inc. Secure key management protocol for distributed network encryption
US10708240B2 (en) * 2017-12-14 2020-07-07 Mellanox Technologies, Ltd. Offloading communication security operations to a network interface controller
US11150963B2 (en) * 2019-02-28 2021-10-19 Cisco Technology, Inc. Remote smart NIC-based service acceleration
US11470007B2 (en) * 2021-01-19 2022-10-11 Mellanox Technologies, Ltd. Bandwidth-control policers in a network adapter
US11588740B2 (en) 2021-04-09 2023-02-21 Microsoft Technology Licensing, Llc Scaling host policy via distribution
US11799785B2 (en) 2021-04-09 2023-10-24 Microsoft Technology Licensing, Llc Hardware-based packet flow processing
US11757782B2 (en) 2021-04-09 2023-09-12 Microsoft Technology Licensing, Llc Architectures for disaggregating SDN from the host
CN115550225A (zh) * 2021-06-30 2022-12-30 瞻博网络公司 使用具有处理单元的网络接口卡来确定延迟

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102017544A (zh) * 2008-02-29 2011-04-13 甲骨文美国公司 卸载网络处理的方法和系统
CN102055667A (zh) * 2009-11-04 2011-05-11 丛林网络公司 配置虚拟网络交换机的方法和设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2418326B (en) * 2004-09-17 2007-04-11 Hewlett Packard Development Co Network vitrualization
US8005022B2 (en) * 2006-07-20 2011-08-23 Oracle America, Inc. Host operating system bypass for packets destined for a virtual machine
US8006297B2 (en) * 2007-04-25 2011-08-23 Oracle America, Inc. Method and system for combined security protocol and packet filter offload and onload
CN102075521A (zh) * 2010-12-21 2011-05-25 云浮长佳数字科技有限公司 一种面向多网态互动服务进行业务流形成和分发的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102017544A (zh) * 2008-02-29 2011-04-13 甲骨文美国公司 卸载网络处理的方法和系统
CN102055667A (zh) * 2009-11-04 2011-05-11 丛林网络公司 配置虚拟网络交换机的方法和设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
sNICh: Efficient last hop networking in the data center;Kaushik Kumar Ram, Jayaram Mudigonda, Alan L. Cox, et.al;《2010 ACM/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS)》;IEEE Conference Publications;20101026;第3-8页,以及附图4,5 *

Also Published As

Publication number Publication date
CN103051510A (zh) 2013-04-17

Similar Documents

Publication Publication Date Title
CN103051510B (zh) 网络策略向网络接口卡的安全和高效卸载的方法和装置
US8856518B2 (en) Secure and efficient offloading of network policies to network interface cards
CN109845218B (zh) 用于与客户机-服务器数据信道一起使用的信道数据封装系统和方法
US11336629B2 (en) Deterministic load balancing of IPSec packet processing
CN109964451B (zh) 用以提供虚拟网络验证服务的方法、系统
JP5809696B2 (ja) 分散型仮想ネットワーク・ゲートウェイ
US10855655B2 (en) System and method for providing secure and redundant communications and processing for a collection of internet of things (IOT) devices
WO2017143611A1 (zh) 用于处理vxlan报文的方法、设备及系统
US9374241B2 (en) Tagging virtual overlay packets in a virtual networking system
CN107770026B (zh) 租户网络数据传输方法、租户网络系统和相关设备
CN104038401A (zh) 用于分布式覆盖虚拟环境的互操作性
US9654394B2 (en) Multi-tenant system, switch, controller and packet transferring method
CN101677295A (zh) 信息处理设备、信息处理系统和包管理方法
WO2016177145A1 (zh) 报文发送方法及装置
US10659440B2 (en) Optimizing utilization of security parameter index (SPI) space
CN112583618A (zh) 为业务提供网络服务的方法、装置和计算设备
CN102447626A (zh) 具有策略驱动路由的主干网
CN110430478B (zh) 组网通信方法、装置、终端设备及存储介质
CN113765801A (zh) 应用于数据中心的报文处理方法和装置、电子设备和介质
CN109150793B (zh) 一种隐私保护方法及设备
CN115152181A (zh) 用于物理攻击抵抗的加密覆盖网络
CN215990843U (zh) 基于IPSec协议的VPN终端通信系统
CN115913818A (zh) Vpn终端通信方法、vpn中心端及存储介质
WO2024001549A1 (zh) 地址配置方法和电子设备
CN115865314A (zh) Vpn终端通信系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150703

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150703

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant