网络虚拟化技术细节

2(共 3)对本文的评价是有帮助 评价此主题

发布时间: 2012年5月

更新时间: 2012年9月

应用到: Windows Server 2012

服务器虚拟化能让多个服务器实例在同一台物理主机上同步运行,但各个服务器实例都是相互独立的。每台虚拟机的运作本质上就像是只有这一台服务器在该物理计算机上运作。网络虚拟化也有类似的功能,即多个虚拟网络基础结构在同一个物理网络上运行(可能有重叠的 IP 地址),而且每个虚拟网络基础结构的运作就好像只有这一个虚拟网络在此共享的网络基础结构上运作。下图显示了这一关系。

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

 

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

  • 客户地址 (CA)   由客户基于其内部网络基础结构所指定的 IP 地址。通过这一地址,客户可与虚拟机交流网络流量,如同未移到一个公有或私有云中一般。CA 对虚拟机是可见的,并且可由客户访问。
     
  • 提供商地址 (PA)   由主机或数据中心管理员基于其物理网络基础结构所指定的 IP 地址。PA 出现在网络上的数据包中,这些数据包可与托管虚拟机的 Hyper-V 服务器进行交换。PA 在物理网络上是可见的,但在虚拟机上不可见。
     

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

图 2:通过物理基础结构实现网络虚拟化

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

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

  • 将每台虚拟机的 CA 映射到物理主机的 PA。
     
  • 根据映射,将虚拟机在 CA 空间中发送的数据包放置在一个含有 PA 源和目标对的“封套”中。
     
  • CA-PA 映射必须允许主机为不同的客户虚拟机区分数据包。
     

因此,网络虚拟化机制旨在将虚拟机使用的网络地址虚拟化。下一部分将描述地址虚拟化的实际机制。

Hyper-V 网络虚拟化支持以下两种机制来实现 IP 地址虚拟化:

Generic Routing Encapsulation   第一种网络虚拟化机制将 Generic Routing Encapsulation (NVGRE) 用作通道报头的一部分。这种地址虚拟化机制的模式是专为大多数部署 Hyper-V 网络虚拟化的数据中心而设计的。在 NVGRE 中,虚拟机的数据包被封装在另一个数据包中。如图 3 所示,新的数据包报头含有合适的源和目标 PA IP 地址,另外还有存储在 GRE 报头密钥字段中的虚拟子网 ID。

图 3:网络虚拟化 – IP 地址重写

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

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

使用 Windows Server 2012,Hyper-V 网络虚拟化完全支持即开即用的 NVGRE;不需要升级或购买新的网络硬件,如 NIC(网络适配器)、交换机或路由器。因为在线 NVGRE 包是 PA 空间中的常规 IP 包,可与当前的网络基础结构相兼容。

Windows Server 2012 优先考虑运作标准。在与主要的产业合作伙伴(Arista、BroadcomArista、Dell、Emulex、Hewlett Packard 和 Intel)的共同努力下,Microsoft 发行了一份介绍 Generic Routing Encapsulation (GRE) 使用情况的 RFC 草案,它是现有的 IETF 标准并且是网络虚拟化封装协议的一部分。有关详细信息,请参阅以下 Internet 草案:使用 Generic Routing Encapsulation 实现网络虚拟化。随着人们意识到 NVGRE 能运用到商业中,NVGRE 将带来更多益处。

IP 重写   第二种由 Hyper-V 网络虚拟化支持的虚拟化机制是 IP 地址重写。在此模式下,当数据包离开终端主机时,将用对应的 PA 地址,对源和目标 CA IP 地址进行重写。同样,当虚拟子网数据包进入终端主机时,先使用适当的 CA 地址对 PA IP地址进行重写,再将 CA 地址传送到虚拟主机。图 4 展示了使用 IP 地址重写的虚拟机数据包。除数据包格式外,IP 重写与 NVGRE 之间的主要区别在于 IP 重写模式需要每台虚拟机拥有独特的 PA,以便将虚拟机与使用重叠 IP 地址的不同客户区分开来。因此,IP 重写需要每台虚拟机 CA IP 地址有一个 PA,而 NVGRE 仅要求每台主机有一个 PA。

图 4:网络虚拟化 – NVGRE 封装

IP 重写主要用于特定的情况,即虚拟机在当前现有的硬件上的工作负荷会需要或消耗极高的宽带吞吐量(约为 10Gbps)。现有网络硬件减荷技术,比如大量传送减荷 (LSO) 以及虚拟机列队 (VMQ) 能如期在现有网络适配器上运作。这些减荷方法能为网络负荷高的情况提供极大的好处,尤其是在 10GbE 的环境下。同时,交换机上的多路径路由(如等价多路径 ECMP)可继续如期运作。

NVGRE 还是 IP 重写?

对于大多数 Hyper-V 网络虚拟化部署,推荐使用 NVGRE 虚拟化机制。NVGRE 与当前的数据中心网络硬盘设施兼容,并且随着人们意识到 NVGRE 可用于商业中,它将带来更多的益处。IP 重写主要用于特定的情况,即当前虚拟机需要 10Gbps 宽带,无法等到 NVGRE 感知硬件的出现。以下表格概括了这两种机制。

 

NVGRE 封装IP 重写

 

  • 出于可扩展性的优点,建议在大多数情况下使用。
     
  • 与当前的网络基础设施硬件兼容
     
  • 每个主机只需一个 IP 地址,从而减少交换机的压力
     
  • 基于标准 — RFC2784 和 2890 以及产业支持

    • NVGRE 草案 RFC 的合著者:Arista、Broadcom、Dell、Emulex、HP、Intel
       
  • 完整的 MAC 报头和清晰的虚拟子网 ID 标志,支持多租户流量分析、计量和控制
     
  • NVGRE 感知硬件的性能与 IP 重写相似
     

 

  • 适用于当前高性能的情况,比如需要 10Gbps 的虚拟机
     

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

图 5

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

  • 蓝方公司运行的是一台 SQL Server(名为 SQL)IP 地址为 10.1.1.1 以及一台网络服务器(名为 Web)IP 地址为 10.1.1.2,并用其 SQL Server 处理数据库事务。
     
  • 红方公司运行的是一台 SQL Server,名同为 SQL 分配的 IP 地址是 10.1.1.1 以及一台网络服务器,也称为 Web,IP 地址也是 10.1.1.2,并用其 SQL Server 处理数据库事务。
     

蓝方公司和红方公司将其各自的 SQL 和 Web 服务器移至同一托管提供商的共享 IaaS 服务,巧合的是,这些服务器在 Hyper-V 主机 1 中运行 SQL 虚拟机,在 Hyper-V 主机 2 中运行 Web (IIS7) 虚拟机。所有虚拟机都保持其原有的内部网 IP 地址(其 CA)。

配置虚拟机时,托管提供商为两家公司都指定了以下虚拟子网 ID (VSID) 以及 PA:

  • 蓝方公司虚拟机的 PA:VSID 为 5001,SQL 为 192.168.1.10,WEB 为 192.168.2.20
     
  • 红方公司虚拟机的 PA:VSID 为 6001,SQL 为 192.168.1.10,Web 为 192.168.2.20
     

托管提供商创建策略设置,这些设置由 红方公司的客户虚拟子网(红方公司虚拟机的客 CA 映射到其分配的 PA 和 VSID 上)和另一蓝方公司的虚拟子网(蓝方公司虚拟机的 CA 映射到其分配的 PA 上)构成。提供商将这些策略设置应用于 Hyper-V 主机 1 和 Hyper-V 主机 2。

当 Hyper-V 主机 2 上的蓝方公司 Web 虚拟机查询位于 10.1.1.11 的 SQL Server 时,会发生以下情况:

Hyper-V 主机 2,基于其策略设置,将转化以下位置数据包中的地址:

  • 源:10.1.1.12(蓝方公司Web 的 CA)
     
  • 目标:10.1.1.11(蓝方公司SQL 的 CA) 
     

封装的数据包含有:

  • GRE 报头中的 VSID 为: 5001
     
  • 外部源:192.168.2.20(蓝方公司 Web 的 PA)
     
  • 外部目标:192.168.1.10(蓝方公司 SQL 的 PA)
     

当在 Hyper-V 主机 1 上接收数据包时,基于其策略设置,它会解封以下 NVGRE 数据包:

  • 外部源:192.168.2.20(蓝方公司 Web 的 PA)
     
  • 外部目标:192.168.1.10(蓝方公司 SQL 的 PA)
     
  • GRE 报头中的VSID为:5001
     

解封的数据包(原始数据包来自于蓝方公司 Web 虚拟机)被传送到蓝方公司 SQL 虚拟机:

  • 源:10.1.1.12(蓝方公司 Web 的 CA)
     
  • 目标:10.1.1.11(蓝方公司 SQL 的 CA)
     

当 Hyper-V 主机 1 上的蓝方公司 SQL 虚拟机响应查询时,会发生以下情况:

Hyper-V 主机 1,基于其策略设置,转化以下位置数据包中的地址:

  • 源:10.1.1.11(蓝方公司 SQL 的 CA)
     
  • 目标:10.1.1.12(蓝方公司 Web 的 CA)
     

数据包封装地址:

  • GRE 报头中的 VSID:5001
     
  • 外部源:192.168.1.10(蓝方公司 SQL 的 PA)
     
  • 外部目标:192.168.2.20(蓝方公司 Web 的 PA)
     

当在 Hyper-V 主机 2 处收到数据包时,它将基于策略设置,解封以下数据包:

  • 源:192.168.1.10(蓝方公司 SQL 的 PA)
     
  • 目标:192.168.2.20(蓝方公司 Web 的 PA)
     
  • GRE 报头中的VSID:5001
     

将解封的数据包发送到以下蓝方公司 Web 虚拟机:

  • 源:10.1.1.11(蓝方公司 SQL 的 CA)
     
  • 目标:10.1.1.12(蓝方公司 Web 的 CA)
     

相似的红方公司Web 与 SQL 虚拟机之间的流量过程中,红方公司使用的也是Hyper-V网络虚拟化策略设定,因此,红方公司和蓝方公司虚拟机的交互犹如在其原有的内网中进行。尽管两家公司虚拟机使用的是相同的 IP 地址,也不会互相影响。

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

在 Hyper-V 网络虚拟化中,客户被定义为一组部署在数据中心的虚拟机的“拥有者”。客户可以是多租户公共数据中心中的一家公司或私有数据中心中的一个部门或业务单位。每位客户可以在该数据中心有一个或者多个客户网络,每个客户网络由多个带有虚拟子网的网络组成。

客户网络

  • 每个客户网络包包含一个或多个虚拟子网。一个客户网络组成一个独立边界,在一个客户网络中的虚拟机可相互交流。因此,在同一个客户网络中的虚拟子网必须不能使用重叠的 IP 地址前缀。
     
  • 每个客户网络有一个识别客户网络的路由域。识别客户网络的路由域 ID (RDID),由数据中心管理员或者数据中心管理软件(如系统中心 Virtual Machine Manager (VMM))分配。RDID 具有 GUID 格式 — 如“{11111111-2222-3333-4444-000000000000}”。
     

虚拟子网

  • 虚拟子网为同一个虚拟子网中的虚拟机实行第三层 IP 子网语义。虚拟子网是一个广播域(与 VLAN 相类似)。尽管一个虚拟子网能同时兼容一个 IPv4 和一个 IPv6 前缀,在同一个虚拟子网中的虚拟机必须使用相同的 IP 前缀。
     
  • 每个虚拟子网都属于一个客户网络 (RDID),并分配有唯一的虚拟子网 ID (VSID)。VSID 是通用唯一的,可能在 4096 到 2^24-2)范围之内。
     

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

图 6:Hyper-V 网络虚拟化堆栈图

在图 6 中,VSID 为 5001 的虚拟机能通过 Hyper-V 网络虚拟化将其数据包路由或转发到 VSID 为5002 或 5003 的虚拟机中。在将数据包送往 Hyper-V 交换机之前,Hyper-V 网络虚拟化将把进入的数据包的 VSID 更新为目标虚拟机的 VSID。这只有在两个 VSID 都属于一个 RDID 的情况下才能实现。如果数据包上的 VSID 与目标虚拟机的 VSID 不匹配,数据包会被丢弃。因此,带有 RDID1 的虚拟网络适配器不能将数据包发送到带有 RDID2 的虚拟网络适配器。

note备注
在上述的数据包流描述中,“虚拟机”实际上指的是虚拟机上的“虚拟网路适配器”。通常一台虚拟机只有一个虚拟网络适配器。在这种情况下,虚拟机和虚拟网络适配器具有相同的含义。由于一台虚拟机可以有多台虚拟网络适配器,这些虚拟网络适配器可以有不同的虚拟子网 ID (VSID) 和唯一的路由域 ID (RDID),Hyper-V 网络虚拟特别侧重虚拟网络适配器之间发送和接收的数据包。

 

 

每个虚拟子网定义一个第三层 IP 子网以及一个类似于 VLAN 的第二层 (L2) 广播域边界。当虚拟机广播数据包时,广播只限于与 VSID 相同的交换机端口相连接的虚拟机。每个 VSID 可与 PA 的多播地址相关联。VSID 的所有广播流量均通过此多播地址进行发送。

note备注
Hyper-V 网络虚拟化不依赖广播或多播。这些是选择×××,需要 Hyper-V 网络虚拟策略中的数据中心管理员进行明确配置。默认情况下,不允许虚拟机多播和广播。本地主机自动支持 ARP 这个广播协议,并且 ARP 不会广播到其他物理主机上。

 

 

除作为一个广播域外,VSID 也能提供隔离。Hyper-V 网络虚拟化的一个虚拟网络适配器与具有一个 VSID ACL 的 Hyper-V 交换机端口相连接。如果数据包到达这个具有不同 VSID 的 Hyper-V 交换机端口,该数据包会被丢弃。只有数据包的 VSID 与交换机端口的 VSID 相匹配,数据包才能被送到 Hyper-V 交换机端口。正因为如此,在上述图 6 的示例中,该数据包从 VSID5001 向 VSID5003 虚拟机传送时,在送达目标虚拟机之前,必须更改数据包的 VSID。

如果 Hyper-V 交换机端口没有 VSID ACL,那么附加在该交换机的虚拟网络适配器就不在 Hyper-V 网络虚拟化虚拟子网之内。从虚拟网络适配器发出的数据包如果没有 VSID ACL,就会通过 Hyper-V 网络虚拟化而不会发生更改。

虚拟机发送数据包时,Hyper-V 交换机端口的 VSID 与这个在带外 (OOB) 数据中的数据包相关联。若 IP 虚拟机制采用的是 Generic Routing Encapsulation (GRE),封装数据包的 GRE 密钥路径包含 VSID。在接收端,Hyper-V 网络虚拟化将 OOB 中的 VSID 以及解封的数据包发送到 Hyper-V交换机。如果 IP 重写是一种 IP 虚拟机制,并且数据包的目的地是另一台物理主机,IP 地址会从 CA 地址更改为 PA 地址,OOB 中的 VSID 也会被丢弃。在接收端,Hyper-V 网络虚拟化执行策略寻找,并在数据包送达 Hyper-V 交换机之前,将 VSID 添加到 OOB 数据中。

note备注
Hyper-V 交换机扩展在客户地址 (CA) 空间中运作。但是,VSID 适用于交换机扩展。这可使交换机扩展能感知多租户。例如,防火墙交换机扩展可将带有 VSID 为 5001的 OOB 的 CA IP 地址 10.1.1.5 和 VSID 为 6001 的相同 CA IP 地址区分开来。

 

 

Hyper-V 网络虚拟化策略实施以及 IP 虚拟化都由名为 Windows 网络虚拟化 (WNV) 的网络驱动程序接口规格 (NDIS) 轻型筛选器 (LWF) 执行。在图 6 中,WNV 筛选器位于 Hyper-V 交换机之下。

图 7:Datacenter orchestrator (VMM) 管理

 

每台虚拟机网络适配器都配有一个 IPv4 和/或一个 IPv6 地址。这些是虚拟机用来相互交流的 CA,并置于虚拟机的 IP 包中。基于网络虚拟化策略,Hyper-V 网络虚拟化将 CA 虚拟化成 PA。

虚拟机发出一个源地址为 CA1 的数据包,该数据包已基于 Hyper-V 交换机下面的 WNV筛选器策略予以虚拟化。对 Hyper-V 交换机以及任何 Hyper-V 交换机可见的 IP 地址是 CA 地址,而不是 PA 地址。基于 VSID 的特殊网络虚拟化访问控制列表能将虚拟机从其他不属于同一虚拟子网或同一路由域的虚拟机独立出来。

Windows 平台可为数据中心管理软件提供公共的 API 来管理 Hyper-V 网络虚拟化。Microsoft 系统中心 Virtual Machine Manager (VMM) 正是这么一种数据中心管理产品。管理软件包含所有 Hyper-V 网络虚拟化策略。由于 virtual machine manager 必须能感知虚拟机,最重要的是,它能在数据中心中配置虚拟机以及整个客户虚拟网络,并且能感知多租户,因此,管理 Hyper-V 网络虚拟化策略是基于策略网络的自然延伸。

大多数客户部署将需要 Hyper-V 网络虚拟化环境与不属于 Hyper-V 网络虚拟化环境的资源进行交流。这就需要网络虚拟化网关来实现两种环境之间的交流。需要 Hyper-V 网络虚拟化网关的方案包括私有云以及混合云。一般而言,××× 和路由都需要 Hyper-V 网络虚拟化网关。

网关可以有不同的实体构成元素。网关可基于 Windows Server 2012 而建,可整合至顶架 (TOR) 交换机、负载平衡器中,或放入到另一个现有的网络设备中,或构成一个新的独立网络设备。

大型公司可能不愿意,或者出于合规原因不能将其一些服务和数据转移到一个公有云主机中。但是,公司仍然想要通过将数据中心资源整合到一个私有云中,来享受由 Hyper-V 网络虚拟化提供的云所带来的好处。在私有云部署中,可能不需要重叠的 IP 地址,因为公司一般有足够的不可路由的内部地址(如 10.x.x.x 或 192.x.x.x)空间。 思考图 8 中的示例。

私有云部署

注意,在此示例中,虚拟子网的客户地址为 157.x 地址,而网络中非网络虚拟部分 (Corp Net) 的 IP 地址也为 157.x 地址。在此示例中,数据中心中的虚拟子网的 PA 地址为 10.x IP 地址。这一部署能让公司利用 Hyper-V 网络虚拟化的一项功能,使数据中心结构中的虚拟机位置和跨子网动态迁移有一定的灵活性。这就提高了数据中心的效率,从而减少了操作支出 (OpEx) 和资本支出 (CapEx)。在这种情况下,Hyper-V 网络虚拟化网关提供 10.x 和 157.1 IP 之间的路由。

Hyper-V 网络虚拟化的主要优点是,能将本地数据中心无缝地延伸到基于 Windows Server 2012 的云数据中心。这就是混合云模式,如图 9 所示。

混合云部署

在这种情况下,内部子网(如含有 web 服务器的子网),将从公司网络转移到云主机的数据中心。利用由主机提供的“带上自己的 IP 地址”,公司无需改变 Web 服务器虚拟机或者任何其他引用该 Web 服务器的网络端点的网络配置。主机通过 Hyper-V 网络虚拟化网关设备提供一个安全的链接。公司管理员只需配置带有合适 IP 地址的本地 ×××。Web 服务器虚拟机不会察觉其已经被移至云中。它仍然保持域与活动目录 (AD) 相结合的状态,并且使用公司的 DNS 服务器。 Web 服务器虚拟机还继续与公司其他的服务器(如 SQL Server)进行交互。在此示例中,这三种服务(AD、DNS、SQL)仍然在本地。网络诊断工具(如计算网络跃点数目的路径跟踪程序),表明 Web 服务器虚拟机与 SQL 之间的网络流量不再是在本地而是在整个 Internet 上进行路由。

Hyper-V 网络虚拟化网关可支持多个站对站 (S2S) ××× 隧道,如图 10 所示。注意,VMM 虽没有显示在图中,但却是 Hyper-V 网络虚拟化部署所必需的。

Hyper-V 网络虚拟化网关

基于云的数据中心能带来许多好处,如改善可扩展性和资源使用情况。为了实现这些潜在的好处,需要能基本解决动态环境中多租户可扩展性问题的技术。Hyper-V 网络虚拟化旨在解决这些问题以及提高数据中心的操作效率,不仅能改善资源使用情况,而且能通过将实体网络拓扑与虚拟网络拓扑脱耦,来提高操作效率。基于一个现有的标准,Hyper-V 网络虚拟化能在当前的数据中心运行,同时,由于 NVGRE 感知硬件已经可用,益处将会继续增加。通过 Hyper-V 网络虚拟化,客户现可将其数据中心整合到私有云中,或者将其数据中心无缝延伸到拥有混合云的主机环境中。