Jaa


R2 中的 Hyper-V 网络虚拟化新增功能

本博文是“Windows Server 和 System Center 2012 R2 新增功能”系列博文(共 9 篇)之一,该系列是 Brad Anderson 的云端瞭望博客中的精选内容。今天的博文将介绍 Windows Server 2012 R2 中的 Hyper-V 网络虚拟化中的新功能以及它如何应用于“转型数据中心”这一更大的主题。若要阅读该博文并查看讨论的其他技术,请阅读今天的博文:“2012 R2 新增功能:IaaS 创新功能。”

本博文高度概括了 Hyper-V 网络虚拟化并详细介绍了 Windows Server 2012 R2 和 System Center 2012 R2 Virtual Machine Manager 中的 Hyper-V 网络虚拟化可用的新功能。如果您不熟悉 Hyper-V 网络虚拟化,您应查看技术细节文档

简介

转型数据中心 – 网络这一帖子很好地说明了 Microsoft 的整个软件定义网络 (SDN) 解决方案中哪里适用 Hyper-V 网络虚拟化 (HNV)。从本质上说,HNV 在物理网络的上层提供虚拟网络抽象。该抽象为虚拟机提供在物理网络上运行的效果,而它实际上在虚拟网络上运行。这类似于虚拟机监控程序提供给在虚拟机中运行的操作系统的抽象。Hyper-V 网络虚拟化通过覆盖网络在物理网络的上层为每个虚拟机网络提供此抽象。虽然此抽象十分强大,但实际问题是这为客户提供哪些值。图文块 1 显示了 HNV 为不同目标受众提供的好处。

clip_image002

图文块 1 HNV 对于不同受众的好处。

在 R2 版本中,构成网络虚拟化解决方案的组件包括:

  1. Windows Azure Pack 提供面向创建虚拟网络门户的租户。
  2. System Center Virtual Machine Manager (SCVMM) 提供虚拟网络的集中管理。
  3. Hyper-V 网络虚拟化提供虚拟化网络流量所需的数据平面。
  4. Hyper-V 网络虚拟化网关提供虚拟和物理网络之间的连接。

R2 中的新增 Hyper-V 网络虚拟化功能

虽然本博文的余下部分将深入探讨新的 HNV 平台功能,但我想简要概述一下我们添加的所有功能:

  • 箱内 HNV 网关
    执行点对点 (VPN)、NAT 和转发功能的多租户箱内网关。这包括能够完全管理此 HNV 网关的 SCVMM。
  • 通过 Hyper-V 虚拟交换机扩展改善 HNV 互操作性
    这允许交换机扩展在客户地址 (CA) 和提供程序地址 (PA) 空间中发挥作用。此外,它还允许一种新的混合转发模式,该模式允许第三方网络虚拟化解决方案在相同的 Hyper-V 主机上与 HNV 共存。有关更多详细信息,请查看 Windows Server 2012 R2 中的 Hyper-V 可扩展交换机增强功能博文。
  • 增强的 HNV 虚拟机网络诊断
    R2 包括许多新的诊断工具,它们可增强客户诊断 HNV 网络的能力。在 R2 中,我们增强了 ping.exe 以允许 ping 提供程序地址,并推出了两个新的 PowerShell cmdlet(Test-VMNetworkAdapter 和 Select-NetVirtualizationNextHop),这允许诊断 HNV 策略和客户地址空间。此外,即将添加 Message Analyzer 解码 NVGRE 数据包的功能。有关更多详细信息,请查看 Windows Server R2 中通过 PowerShell 实现的新的网络诊断博文。

HNV 体系结构更新

要讨论的第一个功能是在每个 Hyper-V 主机上运行的 HNV 数据平面的更新体系结构。图文块 2 显示了 Windows Server 2012 和 Windows Server 2012 R2 中的 HNV 之间的体系结构差异。基本更改是 HNV 筛选器从 NDIS 轻型筛选器 (LWF) 移动至 Hyper-V 虚拟交换机的一部分。

在 Windows Server 2012 中,HNV 作为 NDIS LWF 意味着 Hyper-V 交换机扩展仅对客户地址空间起作用。对于捕获和筛选扩展,这意味着它们不了解用于 HNV 数据包的基础物理网络。对于转发交换机扩展,HNV 作为 NDIS LWF 意味着它们不能与 HNV 共存,因此客户必须使用 HNV 或特殊转发扩展选择其中一个。在 R2 中,我们添加了交换机扩展对原始客户地址数据包和封装的提供程序地址数据包都起作用的功能。此外,转发交换机扩展可以与 HNV 共存,从而允许多个网络虚拟化解决方案(一个由 HNV 提供,另一个由转发交换机扩展提供)在相同 Hyper-V 主机上共存。

改善与交换机扩展的互操作性是更改的主要原因,但有一个好的副作用是 HNV NDIS LWF 不必再绑定到网络适配器。在您将一个网络适配器连接到虚拟交换机后,只需通过为特定虚拟网络适配器分配虚拟子网 ID 即可启用 HNV。对于使用 SCVMM 管理您的虚拟机网络,这是透明的,但对于使用 PowerShell 的任何人,这将保存常常错过的步骤。

clip_image008

图文块 2 Windows Server 2012 R2 中的 HNV 体系结构更新

动态 IP 地址获取

要了解的下一个功能是客户地址空间中的动态 IP 地址获取。我们从客户那里了解到使高度可用的服务能够在虚拟机网络中运行十分重要。为了支持在虚拟网络中的高度可用性,我们需要启用在虚拟机网络中运行的虚拟机群集和 HNV 网关群集。除高度可用性外,动态 IP 地址获取允许客户在虚拟机网络中运行 DHCP、DNS 和 AD。

我们对 HNV 中启用的新应用场景感到十分兴奋,但令我们感到骄傲的,则是构建该功能的过程。HNV 的一个关键设计原则是构建高度可扩展的控制平面。我们通过在网络上拥有集中策略存储 (SCVMM) 和少量控制流量来实现这一目标。这仍是 HNV 的关键设计原则,因此要支持动态 IP 地址获取,我们不想使用低效的淹没和获取方法,因此我们构建了有效的实施。

首先,对于虚拟机网络中的广播或多播数据包,我们将使用 PA 多播 IP 地址(若配置)。但是,典型数据中心操作员不在其环境中启用多播。因此,当 PA 多播地址不可用时,我们使用智能 PA 单播复制。这意味着我们只能将数据包单播传送至为数据包所在的特定虚拟子网配置的 PA 地址。此外,我们仅为每个主机发送一个单播数据包,而无论主机上有多少相关虚拟机。最后,一旦主机了解新的 IP 地址后,它即会通知 SCVMM。此时,获得的 IP 地址成为 SCVMM 推送的集中策略的一部分。这允许快速散播 HNV 路由策略,并限制用于散播此 HNV 路由策略的网络开销。

除了这一有效的单播复制外,我们还添加了对合规地址解析语义的支持。这包括支持 CA 地址空间中针对 IPv4 和 IPv6 的重复地址检测 (DAD)、网络不可达检测 (NUD) 和地址解析协议 (ARP) 数据包。HNV 筛选器还会为任何已知路由策略再次提供可靠的 ARP 代理,从而降低了物理网络上发送的控制流量。

在 PowerShell 以及 SCVMM 中都完全支持此功能,因此让我们简单地看一下这是如何使用 PowerShell 进行配置的。图文块 3 显示了为特定虚拟机网络适配器配置动态 IP 地址获取所需的 PowerShell 命令。在启用 IP 地址获取所需的 New-NetVirtualizationLookupRecord 命令中有两个新事项要指出:

  • 要将 CustomerAddress 参数设置为 0.0.0.0
  • 要将 Type 参数设置为“L2only”选项

通过这两项设置,HNV 将开始为这一特定虚拟机网络适配器获取 IP 地址。要注意的是,对于要打开动态 IP 地址获取的主机中的每个虚拟机网络适配器,都将需要为其特定 MAC 地址创建此 0.0.0.0 L2 Only LR。

PS C:\> New-NetVirtualizationLookupRecord –CustomerAddress 0.0.0.0 –VirtualSubnetID 5000
-MACAddress 020304050607 –ProviderAddress 1.2.3.4 –Type L2Only
–Rule TranslationMethodEncap

图文块 3 为特定 MAC 地址启用动态 IP 获取所需的 PowerShell cmdlet

在为该特定虚拟机获取 IP 地址后,通过它借助 DHCP 获取地址或用户在虚拟机本身中设置静态 IP 地址,您将看到该虚拟机的两个(或多个)策略项目。您将使这一新的 L2only 查找记录具有 0.0.0.0 客户地址,且您将具有显示分配给虚拟机的实际客户地址的新动态记录。如果获取的 IP 地址随时间更改,您将看到多条动态记录,获取的每个 IP 地址一条记录。图文块 4 显示了 L2only 记录和动态记录。

PS C:\WINDOWS\system32> Get-NetVirtualizationLookupRecord -VirtualSubnetID 5000
CustomerAddress : 0.0.0.0
VirtualSubnetID : 5000
MACAddress : 020304050607
ProviderAddress : 1.2.3.4
CustomerID : {00000000-0000-0000-0000-000000000000}
Context :
Rule : TranslationMethodEncap
VMName :
UseVmMACAddress : False
Type : L2Only

CustomerAddress : 10.20.20.100
VirtualSubnetID : 5000
MACAddress : 020304050607
ProviderAddress : 1.2.3.4
CustomerID : {00000000-0000-0000-0000-000000000000}
Context :
Rule : TranslationMethodEncap
VMName :
UseVmMACAddress : False
Type : Dynamic

图文块 4 与动态获取的 IP 地址关联的查找记录

HNV + Windows NIC 组合

要讨论的第三个功能是 HNV 与 Windows NIC 组合之间的集成。在 Windows Server 2012 中,虽然 NIC 组合能够向虚拟机网络提供故障转移,但它无法提供负载平衡和流量分配。例如,NIC 组合通常允许客户获得两个 NIC 的双重性能,这样它们将看到何时使用一个(但在带虚拟机网络的 2012 中),它们只能获取一个网络适配器的最大吞吐量。对于 R2,我们对 NIC 组合启用了虚拟化流量的入站或出站分配。这意味着离开主机或进入主机的流量都能利用 NIC 组合中的所有网络适配器。

要启用出站分配,无需进行其他配置。要启用入站分配,您必须在提供程序地址上设置一个 MAC 地址。这允许交换机为 NIC 组合适当分配流量。要获得最佳入站分配,您将需要使组合中的每个 NIC 具有一个(或多个)PA。例如,两个 NIC 的 NIC 组合应在它们之间分配两个或多个 PA 和 CA。

在图文块 5 中,您可以看到使用 New- 或 Set-NetVirtualizationProviderAddress cmdlet 在提供程序地址上设置的 MAC 地址。

PS C:\> New-NetVirtualizationProviderAddress –ProviderAddress 1.2.3.4
–MACAddress 223344556677 –InterfaceIndex 1 –PrefixLength 24 –VlanId 100

图文块 5 配置 HNV + NIC 组合

NVGRE 封装的任务卸载

最后一项本身并非新功能,因为 Windows Server 2012 已支持 NVGRE 任务卸载,但我们使我们的首批网络适配器合作伙伴宣布在其产品中支持 NVGRE 任务卸载。首先,让我们退一步看一下为什么需要此功能。高速网络适配器会实施许多卸载(例如,大量发送卸载 (LSO)、接收方缩放 (RSS) 和虚拟机队列 (VMQ)),这允许充分利用网络适配器的吞吐量。例如,具有允许 10 gbps 吞吐量的网络适配器的计算机只能在不启用特定卸载的情况下以 4 或 5 gbps 吞吐量执行。此外,即使其允许完整的吞吐量,以最高吞吐量执行的 CPU 利用率将比卸载启用时要高。

对于非虚拟化流量,卸载正常工作。另一方面,NVGRE 是一种封装协议,表示网络适配器必须访问 CA 数据包才能执行卸载。在 R2 中,NVGRE 是虚拟化流量的唯一方式(在 Windows Server 2012 中,也支持 IP 改写,但不推荐使用;IP 改写已从 Windows Server 2012 R2 中删除),因此 NVGRE 任务卸载变得更加重要。

我们与我们的网络适配器合作伙伴协作开发了一种针对此性能问题的解决方案,称为“NVGRE 封装的任务卸载”。当某个网络适配器支持 NVGRE 封装的任务卸载时,它会确保所有相关卸载均使用 HNV。

在 TechEd 2013 大会上,两家合作伙伴宣布了其下一代网络适配器将支持 NVGRE 封装的任务卸载。有关更多详细信息,您可以阅读来自 MellanoxEmulex 的新闻稿。

我们将继续与其他 NIC 供应商合作以启用 NVGRE 任务卸载。敬请期待更多新品发布…

结论

Hyper-V 网络虚拟化是 Microsoft 的软件定义的网络解决方案的关键所在,为客户提供诸多好处,如,将您的网络拓扑引入到云环境的功能以及跨物理网络实时迁移虚拟机的功能。在 R2 中,我们通过新功能进一步增强了 HNV,如动态 IP 地址获取、通过 HNV 启用 NIC 组合负载平衡以及合作伙伴宣布启用 NVGRE 任务卸载的网络适配器。

其他链接

有关 Hyper-V 网络虚拟化以及 R2 中的新增功能的更多详细信息,您可以通过以下链接查看 TechEd 2013 大会讨论:

详细解析 Windows Server 2012 R2 中的 Hyper-V 网络虚拟化

有关 SCVMM 如何管理 HNV 的更多详细信息,您可以通过以下链接查看 TechEd 大会讨论:

如何在 Microsoft System Center 中设计和配置网络 - Virtual Machine Manager 和 Hyper-V(第 1 部分,共 2 部分)

如何在 Microsoft System Center 中设计和配置网络 - Virtual Machine Manager 和 Hyper-V(第 2 部分,共 2 部分)

有关 Microsoft 的整体 SDN 解决方案以及 HNV 适用程度的更多详细信息,您可以通过以下链接查看 TechEd 大会讨论:

关于 Microsoft 软件定义的网络解决方案您需要了解的各项知识

如希望阅读本系列中的所有博文,请查看Windows Server 和 System Center 2012 R2 新增功能存档。

 

CJ Williams,Windows 核心网络团队首席项目经理