Windows Server 中的 Hyper-V 网络虚拟化技术细节

适用于:Windows Server 2022、Windows Server 2019、Windows Server 2016,Azure Stack HCI 版本 21H2 和 20H2

服务器虚拟化能让多个服务器实例在同一台物理主机上同步运行,但各个服务器实例都是相互独立的。 每台虚拟机的运作本质上就像是只有这一台服务器在该物理计算机上运行。

网络虚拟化也有类似的功能,即多个虚拟网络(可能有重叠的 IP 地址)在同一个物理网络基础结构上运行,而且每个虚拟网络的运作就好像只有这一个虚拟网络在此共享的网络基础结构上运行。 图 1 显示了此关系。

Server virtualization versus network virtualization

图 1:服务器虚拟化与网络虚拟化对比

Hyper-V 网络虚拟化概念

在 Hyper-V 网络虚拟化 (HNV) 中,客户或租户被定义为一组部署在企业或数据中心的 IP 子网的“拥有者”。 客户可以是专用数据中心中具有多个需要网络隔离的部门或业务部门的公司或企业,也可以是服务提供商托管的公共数据中心中的租户。 每个客户可以在该数据中心有一个或多个虚拟网络,而每个虚拟网络由一个或多个虚拟子网组成。

Windows Server 2016 中将提供两种 HNV 实现:HNVv1 和 HNVv2。

  • HNVv1

    HNVv1 与 Windows Server 2012 R2 和 System Center 2012 R2 虚拟机管理器 (VMM) 兼容。 HNVv1 的配置依靠 WMI 管理和 Windows PowerShell cmdlet(通过 System Center VMM 进行优化)来定义隔离设置和客户地址 (CA) - 虚拟网络 - 到物理地址 (PA) 的映射和路由。 Windows Server 2016 中的 HNVv1 没有添加任何其他功能,也没有规划新功能。

    • SET Teaming 和 HNV V1 与平台不兼容。

    o 若要使用 HA NVGRE 网关,用户需要使用 LBFO 团队或 No 团队。 或

    o 将网络控制器部署的网关与 SET 分组式交换机结合使用。

  • HNVv2

    HNVv2 中包含大量新功能,这些功能是使用 Hyper-V 交换机中的 Azure 虚拟筛选平台 (VFP) 转发扩展实现的。 HNVv2 与 Microsoft Azure Stack 完全集成,其中包括软件定义的网络 (SDN) 堆栈中的新网络控制器。 虚拟网络策略是通过使用 RESTful NorthBound (NB) API 的 Microsoft 网络控制器定义的,并通过包括 OVSDB 在内的多个 SouthBound 接口 (SBI) 联结到主机代理。 主机代理在强制实施策略的 Hyper-V 交换机的 VFP 扩展中编制策略。

    重要

    本主题重点介绍 HNVv2。

虚拟网络

  • 每个虚拟网络由一个或多个虚拟子网组成。 一个虚拟网络构成一个独立边界,虚拟网络中的虚拟机只可以相互通信。 按惯例,使用具有隔离 IP 地址范围和 802.1q 标记或 VLAN ID 的 VLAN 来强制实施此隔离。 但在 HNV 中,使用 NVGRE 或 VXLAN 封装强制实施隔离,以创建覆盖网络,并且客户之间或租户之间可能会重叠 IP 子网。

  • 每个虚拟网络在主机上都有一个唯一的路由域 ID (RDID)。 此 RDID 大致对应资源 ID,以标识网络控制器中的虚拟网络 REST 资源。 使用统一资源标识符 (URI) 命名空间和附加的资源 ID 引用虚拟网络 REST 资源。

虚拟子网

  • 虚拟子网为同一个虚拟子网中的虚拟机实行第三层 IP 子网语义。 虚拟子网形成广播域(类似于 VLAN)。使用 NVGRE 租户网络 ID (TNI) 或 VXLAN 网络标识符 (VNI) 字段强制执行隔离。

  • 每个虚拟子网都属于一个虚拟网络 (RDID),并且通过封装的数据包标头中的 TNI 或 VNI 密钥分配到一个唯一的虚拟子网 ID (VSID)。 VSID 在数据中心内部必须是唯一的,可在 4096 到 2^24-2 的范围内。

虚拟网络和路由域的主要优点是能让客户将自己的网络拓扑(例如 IP 子网)带到云中。 在图 2 的示例中,Contoso 公司有两个不同的网络:研发网络和销售网络。 由于这些网络有不同的路由域 ID,因此彼此之间不能进行交互。 也就是说,Contoso 研发网络与 Contoso 销售网络相互独立,尽管它们都属于 Contoso 公司。Contoso 研发网络包含三个虚拟子网。 注意:一个数据中心内的 RDID 和 VSID 都是唯一的。

Customer networks and virtual subnets

图 2:客户网络和虚拟子网

第 2 层转发

图 2 中,VSID 5001 中的虚拟机可以通过 Hyper-V 交换机将其数据包转发到 VSID 5001 中的虚拟机。 来自 VSID 5001 中虚拟机的传入数据包会发送到 Hyper-V 交换机上的特定 VPort。 入口规则(例如 encap)和映射(例如封装标头)由 Hyper-V 交换机应用于这些数据包。 然后,这些数据包会转发到 Hyper-V 交换机上的其他 VPort(如果目标虚拟机连接到同一主机)或转发到其他主机上的其他 Hyper-V 交换机(如果目标虚拟机位于其他主机)。

第 3 层路由

同样,VSID 5001 中的虚拟机可以通过每个 Hyper-V 主机的 VSwitch 中的 HNV 分布式路由器将其数据包路由到 VSID 5002 或 VSID 5003 中的虚拟机。 将数据包送往 Hyper-V 交换机后,HNV 会将传入数据包的 VSID 更新为目标虚拟机的 VSID。 这只有在两个 VSID 都属于一个 RDID 的情况下才能实现。 因此,带有 RDID1 的虚拟网络适配器不能在不经过网关的情况下将数据包发送到带有 RDID2 的虚拟网络适配器。

注意

在上述的数据包流描述中,“虚拟机”实际上指的是虚拟机上的“虚拟网路适配器”。 通常一台虚拟机只有一个虚拟网络适配器。 在这种情况下,“虚拟机”和“虚拟网络适配器”具有相同的含义。

每个虚拟子网定义一个第三层 IP 子网以及一个类似于 VLAN 的第二层 (L2) 广播域边界。 虚拟机广播数据包时,HNV 使用单播复制 (UR) 复制初始数据包,并将目标 IP 和 MAC 替换为同一 VSID 中每个 VM 的地址。

注意

Windows Server 2016 发布时,将使用单播复制实现广播和子网多播。 不支持跨子网多播路由和 IGMP。

除作为一个广播域外,VSID 也能提供隔离。 HNV 中的虚拟网络适配器连接到 Hyper-V 交换机端口,将 ACL 规则直接应用于该端口(虚拟网络接口 REST 资源)或应用于它所属的虚拟子网 (VSID)。

Hyper-V 交换机端口必须应用 ACL 规则。 此 ACL 可以是 ALLOW ALL、DENY ALL,更具体地说,还可以是仅允许基于 5 元组(源 IP、目标 IP、源端口、目标端口、协议)匹配的某些类型的流量。

注意

在新的软件定义的网络 (SDN) 堆栈的 HNVv2 中,Hyper-V 交换机扩展将不适用。 HNVv2 是使用 Azure 虚拟筛选平台 (VFP) 交换机扩展实现的,该扩展无法与任何其他第 3 方交换机扩展结合使用。

Hyper-V 网络虚拟化中的交换和路由

HNVv2 实现正确的第 2 层 (L2) 交换和第 3 层 (L3) 路由语义,以像物理交换机或路由器一样运行。 连接到 HNV 虚拟网络的虚拟机尝试与同一虚拟子网 (VSID) 中的另一台虚拟机建立连接时,它首先需要得知远程虚拟机的 CA MAC 地址。 如果源虚拟机的 ARP 表中存在目标虚拟机 IP 地址的 ARP 条目,则使用该条目中的 MAC 地址。 如果条目不存在,则源虚拟机将发送 ARP 广播,并请求返回与目标虚拟机 IP 地址对应的 MAC 地址。 Hyper-V 交换机将拦截此请求并将其发送到主机代理。 主机代理将在其本地数据库中查找与请求的目标虚拟机 IP 地址对应的 MAC 地址。

注意

作为 OVSDB 服务器的主机代理使用 VTEP 架构的变体来存储 CA-PA 映射、MAC 表等。

如果 MAC 地址可用,主机代理会注入 ARP 响应并将其发送回虚拟机。 虚拟机的网络堆栈获得所有必需的 L2 标头信息后,该帧将发送到 V-Switch 上的相应 Hyper-V 端口。 在内部,Hyper-V 交换机根据分配给 V-Port 的 N 元组匹配规则测试此帧,并根据这些规则对帧应用某些转换。 最重要的是,根据网络控制器定义的策略,使用 NVGRE 或 VXLAN 应用一组封装转换来构造封装标头。 根据主机代理编制的策略,使用 CA-PA 映射来确定目标虚拟机所在的 Hyper-V 主机的 IP 地址。 Hyper-V 交换机确保将正确的路由规则和 VLAN 标记应用于外部数据包,以将其发送到远程 PA 地址。

如果连接到 HNV 虚拟网络的虚拟机想要与不同虚拟子网 (VSID) 中的虚拟机建立连接,则需要相应地路由数据包。 HNV 采用星形拓扑,其中 CA 空间中只有一个 IP 地址用作到达所有 IP 前缀的下一跃点(意味着一个默认路由/网关)。 目前,这会对单个默认路由强制实施限制,并且非默认路由不受支持。

虚拟子网之间的路由

在物理网络中,IP 子网是第 2 层 (L2) 域,其中的计算机(虚拟计算机和物理计算机)可以直接相互通信。 L2 域是一个广播域,其中 ARP 条目(IP:MAC 地址映射)是通过在所有接口上广播的 ARP 请求得知的,并且 ARP 响应会发送回请求主机。 计算机使用从 ARP 响应中得知的 MAC 信息来完整地构造包含以太网标头的 L2 帧。 但如果 IP 地址位于不同的 L3 子网中,则 ARP 请求不会跨越此 L3 边界。 相反,在源子网中具有 IP 地址的 L3 路由器接口(下一跃点或默认网关)必须使用自己的 MAC 地址响应这些 ARP 请求。

在标准 Windows 网络中,管理员可以创建静态路由并将其分配给网络接口。 此外,在发送将发往默认路由 (0.0.0.0/0) 的数据包的接口上,“默认网关”通常配置为下一跃点 IP 地址。 如果不存在特定路由,数据包将发送到此默认网关。 通常,此网关就是物理网络的路由器。 HNV 使用每个主机的内置路由器,并在每个 VSID 中使用一个接口来为虚拟网络创建分布式路由器。

由于 HNV 采用星形拓扑,因此 HNV 分布式路由器用作单个默认网关,用于同一 VSID 网络的虚拟子网之间传输的所有流量。 用作默认网关的地址默认为 VSID 中最低的 IP 地址,并分配给 HNV 分布式路由器。 借助此分布式路由器,你可以通过极其有效的方式适当地路由 VSID 网络中的所有流量,因为每台主机无需中介,就能将流量直接路由到相应的主机。 当 VM 网络相同但虚拟子网不同的两台虚拟机位于同一台物理主机上时,尤其能够看到这种优势。 本节稍后你将会看到,数据包永远不用离开物理主机。

PA 子网之间的路由

与为每个虚拟子网 (VSID) 分配一个 PA IP 地址的 HNVv1 相比,HNVv2 现在为每个 Switch-Embedded Teaming (SET) NIC 团队成员使用一个 PA IP 地址。 默认部署采用两个 NIC 组并为每个主机分配两个 PA IP 地址。 单个主机具有从同一 VLAN 上的同一提供程序 (PA) 逻辑子网分配的 PA IP。 同一虚拟子网中的两个租户 VM 可能确实位于连接到两个不同提供程序逻辑子网的两个不同主机。 HNV 将根据 CA-PA 映射为封装的数据包构造外部 IP 标头。 但它依靠默认 PA 网关的 ARP 主机 TCP/IP 堆栈,然后根据 ARP 响应生成外部以太网标头。 通常,此 ARP 响应来自主机所连接的物理交换机或 L3 路由器上的 SVI 接口。 因此,HNV 依靠 L3 路由器在提供程序逻辑子网/VLAN 之间路由已封装的数据包。

虚拟网络外部的路由

大多数客户部署将需要 HNV 环境与不属于 HNV 环境的资源进行通信。 这就需要网络虚拟化网关来实现两种环境之间的通信。 需要 HNV 网关的基础结构包括私有云和混合云。 基本上,内部和外部(物理)网络(包括 NAT)之间或使用 IPSec VPN 或 GRE 隧道的不同站点和/或云(私有或公共)之间的第 3 层路由需要 HNV 网关。

网关可以有不同的实体构成元素。 这些网关可基于 Windows Server 2016 而生成,可整合至用作 VXLAN 网关的顶架 (TOR) 交换机,通过负载均衡器公布的虚拟 IP (VIP) 进行访问,或放入其他现有的网络设备中,或构成一个新的独立网络设备。

有关 Windows RAS 网关选项的详细信息,请参阅 RAS 网关

数据包封装

在 HNV 中的每个虚拟网络适配器都与两个 IP 地址相关:

  • 客户地址 (CA) 由客户基于其内部网络基础结构所指定的 IP 地址。 该地址允许客户与虚拟机交换网络流量,如同该虚拟机尚未移至私有云或公有云一样。 CA 对虚拟机是可见的,并且可由客户访问。

  • 提供程序地址 (PA) 由托管提供程序或数据中心管理员基于其物理网络基础结构所指定的 IP 地址。 PA 出现在网络上的数据包中,这些数据包可与托管虚拟机的、运行 Hyper-V 的服务器进行交换。 PA 在物理网络上是可见的,但在虚拟机上不可见。

CA 维护着客户的网络拓扑,该网络拓扑经过虚拟化,可采用 PA 的实施方式,从实际的基础物理网络拓扑中脱离出来。 下图展示了因网络虚拟化而在虚拟机 CA 与网络基础设施 PA 之间所建立的概念关系。

Conceptual diagram of network virtualization over physical infrastructure

图 6:物理基础结构的网络虚拟化概念图

在该图中,客户虚拟机在 CA 空间中发送数据包,并通过自身的虚拟网络或“隧道”遍布物理网络基础结构。 在以上示例中,通道被想象成带有绿色发货标签(PA 地址)的 Contoso 和 Fabrikam 数据包的“封套”,从左边的源主机发送到右边的目标主机。 关键在于主机如何确定与 Contoso 和 Fabrikam CA 相对应的“发货地址”(PA 地址)、“封套”如何套在数据包上、目标主机如何打开数据包并将数据包正确发送到 Contoso 和 Fabrikam 目标虚拟机上。

这一简单的类比突显出网络虚拟化的重要方面:

  • 将每台虚拟机的 CA 映射到物理主机的 PA。 同一个 PA 可能有多个关联的 CA。

  • 根据映射,将虚拟机在 CA 空间中发送的数据包放置在一个含有 PA 源和目标对的“封套”中。

  • CA-PA 映射必须允许主机为不同的客户虚拟机区分数据包。

因此,网络虚拟化机制旨在将虚拟机使用的网络地址虚拟化。 网络控制器负责地址映射,主机代理使用 MS_VTEP 架构维护映射数据库。 下一部分将描述地址虚拟化的实际机制。

通过地址虚拟化实现网络虚拟化

HNV 使用网络虚拟化通用路由封装 (NVGRE) 或虚拟可扩展局域网 (VXLAN) 实现覆盖租户网络。 默认为 VXLAN。

虚拟可扩展局域网 (VXLAN)

虚拟可扩展局域网 (VXLAN) (RFC 7348) 协议已在市场上广泛采用,得到了 Cisco、Brocade、Arista、Dell、HP 等供应商的支持。 VXLAN 协议使用 UDP 作为传输协议。 IANA 为 VXLAN 分配的 UDP 目标端口是 4789,UDP 源端口应该是来自内部数据包的信息哈希,用于 ECMP 传播。 在 UDP 标头之后,将 VXLAN 标头附加到数据包,其中包括一个保留的 4 字节字段,后跟一个用于 VXLAN 网络标识符 (VNI) 的 3 字节字段 VSID,然后是另一个保留的 1 字节字段。 在 VXLAN 标头之后,附加初始 CA L2 帧(没有 CA 以太网帧 FCS)。

VXLAN packet header

通用路由封装 (NVGRE)

此网络虚拟化机制将通用路由封装 (NVGRE) 用作隧道报头的一部分。 在 NVGRE 中,虚拟机的数据包封装在另一个数据包中。 如图 7 所示,新的数据包报头含有合适的源和目标 PA IP 地址,另外还有存储在 GRE 报头密钥字段中的虚拟子网 ID。

NVGRE encapsulation

图 7:网络虚拟化 - NVGRE 封装

虚拟子网 ID 可让主机为任何指定的数据包确定客户虚拟机,尽管数据包上的 PA 和 CA 可能出现重叠。 这可让同一台主机上的所有虚拟机分享一个 PA(如图 7 所示)。

共享 PA 对网络可扩展性产生很大的影响。 网络基础设施必须知悉的 IP 和 MAC 地址数量得以大幅减少。 例如,如果每台终端主机平均有 30 台虚拟机,网络基础设施需要知悉的 IP 和 MAC 地址数量将减少到三十分之一,数据包中嵌入式虚拟子网 ID 还能轻易地将数据包与实际客户联系起来。

Windows Server 2012 R2 的 PA 共享方案是每个主机每个 VSID 一个 PA。 对于 Windows Server 2016,方案是每个 NIC 团队成员一个 PA。

借助 Windows Server 2016 及更高版本,HNV 完全支持即开即用的 NVGRE 和 VXLAN;不需要升级或购买新的网络硬件,如 NIC(网络适配器)、交换机或路由器。 这是因为,线路上的这些包是 PA 空间中的常规 IP 包,可与当前的网络基础结构相兼容。 但若要获得最佳性能,请将受支持的 NIC 与支持任务卸载的最新驱动程序结合使用。

多租户部署示例

下图展示了一个两名客户在云数据中心交互的部署案例,其中 CA-PA 关系由网络策略所定义。

Multi-tenant deployment example

图8:多租户部署案例

思考图 8 中的示例。 在转到托管提供商的共享 IaaS 服务之前:

  • Contoso 公司运行的是一台 SQL Server(名为 SQL),IP 地址为 10.1.1.11,以及一台 Web 服务器(名为 Web)IP 地址为 10.1.1.12,并用其 SQL Server 处理数据库事务。

  • Fabrikam 公司运行的是一台 SQL Server(也名为 SQL),IP 地址为 10.1.1.11,以及一台 Web 服务器(也名为 Web),IP 地址为 10.1.1.12,并用其 SQL Server 处理数据库事务。

我们将假设托管服务提供商之前已通过网络控制器创建了提供程序 (PA) 逻辑网络,以对应其物理网络拓扑。 网络控制器从连接主机的逻辑子网的 IP 前缀分配两个 PA IP 地址。 网络控制器还指示适当的 VLAN 标记,以应用 IP 地址。

然后,使用网络控制器、Contoso Corp 和 Fabrikam Corp 创建其虚拟网络和子网,这些虚拟网络和子网由托管服务提供商指定的提供程序 (PA) 逻辑网络提供支持。 Contoso 公司和 Fabrikam 公司将其各自的 SQL Server 和 Web 服务器移至同一托管提供商的共享 IaaS 服务,而巧合的是,这些服务器在 Hyper-V 主机 1 中运行 SQL 虚拟机,在 Hyper-V 主机 2 中运行 Web (IIS7) 虚拟机。 所有虚拟机都保持其原有的内部网 IP 地址(其 CA)。

如下所示,网络控制器为两家公司分配以下虚拟子网 ID (VSID)。 每个 Hyper-V 主机上的主机代理从网络控制器接收分配的 PA IP 地址,并在非默认网络隔离区中创建两个 PA 主机 vNIC。 每个主机 vNIC 都分配了一个网络接口,其中分配了 PA IP 地址,如下所示:

  • Contoso Corp 的虚拟机 VSID 和 PA:VSID 是 5001,SQL PA 是 192.168.1.10,Web PA 是 192.168.2.20

  • Fabrikam Corp 的虚拟机 VSID 和 PA:VSID 是 6001,SQL PA 是 192.168.1.10,Web PA 是 192.168.2.20

网络控制器将所有网络策略(包括 CA-PA 映射)联结到 SDN 主机代理,SDN 主机代理会将策略保存在永久性存储(OVSDB 数据库表)中。

Hyper-V 主机 2 上的 Contoso Corp Web 虚拟机 (10.1.1.12) 建立与 SQL Server (10.1.1.11) 的 TCP 连接时,会发生以下情况:

  • 目标 MAC 地址为 10.1.1.11 的 VM ARP

  • vSwitch 中的 VFP 扩展拦截此数据包并将其发送到 SDN 主机代理

  • SDN 主机代理在其策略存储中查找 MAC 地址 10.1.1.11

  • 如果找到 MAC,主机代理会将 ARP 响应注入回 VM

  • 如果未找到 MAC,则不会发送任何响应,并且虚拟机中 10.1.1.11 的 ARP 条目将标记为不可访问。

  • VM 现在使用正确的 CA 以太网和 IP 标头构造 TCP 数据包并将其发送到 vSwitch

  • vSwitch 中的 VFP 转发扩展通过分配给接收数据包的源 vSwitch 端口的 VFP 层(如下所述)处理此数据包,并在 VFP 统一流表中创建新的流条目

  • VFP 引擎根据 IP 和以太网标头为每一层(例如虚拟网络层)执行规则匹配或流表查找。

  • 虚拟网络层中的匹配规则引用 CA-PA 映射空间并执行封装。

  • VNet 层中指定封装类型(VXLAN 或 NVGRE)与 VSID。

  • 对于 VXLAN 封装,在 VXLAN 标头中使用 VSID 5001 构造外部 UDP 标头。 根据 SDN 主机代理的策略存储,使用分别分配给 Hyper-V 主机 2 (192.168.2.20) 和 Hyper-V 主机 1 (192.168.1.10) 的源 PA 地址和目标 PA 地址构造外部 IP 标头。

  • 然后,此数据包会流向 VFP 中的 PA 路由层。

  • VFP 中的 PA 路由层将引用用于 PA 空间流量的网络隔离区和 VLAN ID,并使用主机的 TCP/IP 堆栈将 PA 数据包正确转发到 Hyper-V 主机 1。

  • 收到封装的数据包后,Hyper-V 主机 1 在 PA 网络隔离区中接收数据包并将其转发到 vSwitch。

  • VFP 通过其 VFP 层处理数据包,并在 VFP 统一流表中创建新的流条目。

  • VFP 引擎匹配虚拟网络层中的入口规则,并删除外部封装数据包的以太网、IP 和 VXLAN 标头。

  • 然后,VFP 引擎将数据包转发到目标 VM 连接到的 vSwitch 端口。

Fabrikam 公司 WebSQL 虚拟机之间用于通信的类似进程针对 Fabrikam 公司使用 HNV 策略设置。因此,在使用 HNV 时,Fabrikam 公司和 Contoso 公司虚拟机的交互就像在其原有的 Intranet 中进行一样。 尽管两家公司虚拟机使用的是相同的 IP 地址,也不会互相影响。

不同地址(CA 和 PA)、Hyper-V 主机的策略设置以及用于入站和出站虚拟机通讯的 CA 与 PA 之间的地址转换,使用 NVGRE 密钥或 VLXAN VNID 将两组服务器互相隔离。 同时,虚拟化映射以及转化将虚拟网络构架从物理网络基础结构中脱离出来。 尽管 Contoso SQLWeb 以及 Fabrikam SQLWeb 位于其自己的 CA IP 子网 (10.1.1/24),两者的物理部署在两台有着不同的 PA 子网(分别为 192.168.1/24 和 192.168.2/24)的主机上进行。 这意味着通过 HNV,可以进行跨子网虚拟机配置和实时迁移。

Hyper-V 网络虚拟化架构

在 Windows Server 2016 中,HNVv2 是使用 Azure 虚拟筛选平台 (VFP) 实现的,后者是 Hyper-V 交换机中的 NDIS 筛选扩展。 VFP 的关键概念是 Match-Action 流引擎的概念,内部 API 公开给 SDN 主机代理以编制网络策略。 SDN 主机代理本身通过 OVSDB 和 WCF SouthBound 通信通道从网络控制器接收网络策略。 虚拟网络策略(例如 CA-PA 映射)是使用 VFP 编制的,ACL、QoS 等其他策略也是。

vSwitch 和 VFP 转发扩展的对象层次结构如下:

  • vSwitch

    • 外部 NIC 管理

    • NIC 硬件卸载

    • 全局转发规则

    • 端口

      • 用于固定的出口转发层

      • 映射和 NAT 池的空间列表

      • 统一流表

      • VFP 层

        • 流表

        • Group

        • 规则

          • 规则可以引用空间

在 VFP 中,层是根据策略类型(例如虚拟网络)创建的,是一组通用的规则/流表。 在将特定规则分配给层以实现任何内部功能之前,层不具有此类功能。 每个层都分配了一个优先级,并且层按优先级升序分配给端口。 规则主要根据方向和 IP 地址系列分为多个组。 组也分配了优先级,并且组中最多一个规则可以匹配给定的流。

具有 VFP 扩展的 vSwitch 的转发逻辑如下:

  • 入口处理(进入端口的数据包视角下的入口)

  • 转发

  • 出口处理(退出端口的数据包视角下的出口)

VFP 支持 NVGRE 和 VXLAN 封装类型的内部 MAC 转发,以及基于外部 MAC VLAN 的转发。

VFP 扩展具有用于数据包遍历的慢路径和快路径。 流中的第一个数据包必须遍历每一层中的所有规则组并执行规则查找,该操作成本高昂。 但通过一系列操作(基于匹配的规则)在统一流表中注册流后,将根据统一流表条目处理所有后续数据包。

HNV 策略由主机代理编制。 每台虚拟机网络适配器都配有一个 IPv4 地址。 这些是虚拟机用来相互交流的 CA,并置于虚拟机的 IP 包中。 HNV 根据主机代理数据库中存储的网络虚拟化策略将 CA 帧封装在 PA 帧中。

HNV Architecture

图 9:HNV 体系结构

总结

基于云的数据中心能带来许多好处,如改善可扩展性和资源使用情况。 为了实现这些潜在的好处,需要能基本解决动态环境中多租户可扩展性问题的技术。 HNV 旨在通过分离物理网络拓扑的虚拟网络拓拟来解决这些问题,并提高数据中心的运营效率。 HNV 基于现有标准在目前的数据中心运行,并使用现有的 VXLAN 基础结构。 借助 HNV,客户现在可将其数据中心整合到私有云中,或者将其数据中心无缝延伸到拥有混合云的托管服务器提供商的环境中。

若要了解有关 HNVv2 的详细信息,请访问以下链接:

内容类型 参考
社区资源 - 私有云体系结构博客
- 提问:cloudnetfb@microsoft.com
RFC - NVGRE 的 RFC 草案
- VXLAN - RFC 7348
相关技术 - 有关 Windows Server 2012 R2 中的 Hyper-V 网络虚拟化技术详细信息,请参阅 Hyper-V 网络虚拟化技术详细信息
- 网络控制器