软件定义的网络 – 使用 Hyper-V 网络虚拟化的混合云(第 1 部分)

原文地址:https://blogs.technet.com/b/privatecloud/archive/2013/11/20/hyper-v-network-virtualization-architecture-and-key-concepts.aspx

大家好!

到目前为止,大家很可能已经阅读过 Brad Anderson 撰写的博客文章(无限制网络: SDN),其中介绍了软件定义的网络,以及如何将其应用于更大的主题数据中心转型

大家会问,究竟什么是 SDN?Brad 曾在他的博客中提到过,SDN 的核心是运用软件使您的网络成为可无缝跨云边界扩展的自动化共用资源。SDN 首先通过网络虚拟化从您的底层物理网络提取应用程序和工作负载。接着,提供一致平台以便跨越各种云环境传递和实施策略 – 内置服务,如网关会跨越这些云无缝扩展您的数据中心。最后,SDN 会提供基于标准的机制,从而自动部署两个网络。

在这种情况下,本系列博客文章将详细介绍 Windows Server 2012 R2 和 System Center 2012 R2 如何交付启用混合云的内置 SDN 解决方案,通过 Hyper-V 网络虚拟化和 System Center 2012 R2 Virtual Machine Manager 实现多租户隔离和网络策略部署,同时通过多租户软件网关启用新的混合云场景,支持站点到站点 VPN、转发和 NAT 功能。下面是整个系列的文章目录:

目录

  • 第 1 部分:Hyper-V 网络虚拟化:体系结构和主要概念。
  • 第 2 部分:实施 Hyper-V 网络虚拟化:概念性“简便”设置。
  • 第 3 部分:综合运用:使用 Windows Server 2012 R2 实现基于云的灾难恢复 (DR)。

Hyper-V 网络虚拟化:体系结构和主要概念

Hyper-V 网络虚拟化提供完善的 SDN 端到端网络虚拟化解决方案,成对使用网络覆盖技术和控制面板与网关来完成解决方案。这三部分已体现到以下部分:

  • Hyper-V 虚拟交换机(已将虚拟网络适配器连接至虚拟网络)
  • System Center Virtual Machine Manager (SCVMM),作为控制面板
  • 内部      Windows HNV 网关

HNV 的核心为网络覆盖技术,该技术允许分离虚拟网络与底层物理网络。网路覆盖是一项广为人知的技术,在现有网络的基础上建立了一个新的网络。这往往通过网络隧道来完成。通常,该隧道通过分封包装提供,实际上是将虚拟网络包置于物理基础结构可以路由到的虚拟网络包中。

IMG01 

如今,网络覆盖已被广泛应用于大量场景,包括通过广域网 (WAN) 连接执行的 VPN 连接,或者通过各种电信网络执行的 MPLS 连接。覆盖网络的一个重要组成部分在于,覆盖网络端点具备通过封装或解除封装包启动或终止隧道所需的智能。如上所述,覆盖网络实施作为通过 HNV 筛选器执行Hyper-V 虚拟交换机的一部分来完成,并在数据包进入及退出虚拟机时封装或解除封装。

在覆盖网络上,HNV 还提供了控制面板,采用独立于物理网络的方法管理覆盖网络。其中包含两种主要类型的控制面板:集中式控制面板和分布式控制面板。两者分别具有各自的优点。在 HNV 中,集中式控制面板用于分发妥善封装和解除封装包所需的端点策略。这样,既允许集中式策略包含全局虚拟网络视图,同时又能基于各终端主机的相关策略切实进行封装和解除封装。这样可以使解决方案具有极高的可扩展性,较少需要执行策略更新,同时实际封装和解除封装则非常频繁(按数据包执行)。Windows 提供了 PowerShell API,用于为 Hyper-V 虚拟交换机编制策略,这意味着任何用户都可以构建中央策略存储。System Center Virtual Machine Manager 已实施创建中央策略存储所需的必要功能,并演变成为建议解决方案。

最后,由于部署无法与外部世界开展通信的虚拟网络基本没有价值,因而提供网关用于在虚拟网络与物理网络或其他虚拟网络之间架设桥梁。Windows Server 2012 R2 提供内部网关,一些第三方(包括 F5、Iron Networks 和 Huawei)也具有网关,可以提供虚拟网络所需的桥接功能。

下图显示三者 SCVMM Windows 网关和 Hyper-V 虚拟机) 如何共同提供完善的 SDN 解决方案。在本示例中,内部 Windows HNV 网关将提供 VPN 功能,用于通过 Internet 将客户连接至将要在服务提供程序中托管的数据中心资源。

IMG02

由于已经综合使用覆盖网络技术、控制面板和网关介绍过有关 HNV 工作原理的一般概念,下面我们来看一下 HNV 中涉及的一些具体概念。

 

虚拟机网络

虚拟机网络是网络虚拟化的核心概念。与虚拟服务器非常相似,是一种物理服务器(包括物理资源和操作系统服务)表示,虚拟网络是物理网络(包括 IP、路由策略等)的表示。与物理网络类似,它会形成一个隔离边界,需要执行显式访问才能离开物理网络,VM 网络还会为虚拟网络构建隔离边界。

除作为隔离边界以外,VM 网络还具备物理网络的大部分特征,但一些特征为VM 网络独有。

首先,单一物理网络中可包含多个 VM 网络。这是虚拟网络的一大主要优势,在包含多个租户(如服务提供商或云提供商可能存在这种现象)的数据中心体现尤为明显。这些 VM 网络彼此隔离,即便其流量流经同一物理网络乃至位于同一主机也是如此。具体而言,Hyper-V 虚拟交换机负责实现这种隔离。

其次,了解 IP 和 MAC 地址在 VM 中的运作原理很有帮助。目前有两个重要案例。在单一 VM 网络中,不能包含任何类似于物理网络的重叠 IP 或 MAC 地址。另一方面,在跨越多个 VM 网络的情况下,每个 VM 网络可包含相同的 IP 和 MAC 地址,即便这些 VM 网络位于相同的物理网络也是一样。探讨 IP 地址时,需要指出的是,HNV 同时支持 IPv4 和 IPv6 地址。目前,HNV 还不支持在一个特定的 VM 网络中混用 IPv4 和 IPv6 客户地址。每个 VM 网络都需要为客户地址配置使用 IPv4 和 IPv6。单一主机上可以混合使用 IPv4 和 IPv6 客户地址,如果是不同的 VM 网络的话。

第三,只有虚拟才能加入虚拟网络。Windows 允许通过 Hyper-V 虚拟交换机运行主机操作系统,并可连接至 VM 网络,但在 System Center 2012 R2 中,SCVMM 不能配置将主机操作系统连接至虚拟网络。

第四,目前单一 SCVMM 实例可管理一个特定的 VM 网络。这将 VM 网络的规模限定于单一 SCVMM 实例支持的虚拟机数量。

在 SCVMM 中,虚拟机网络称为 “VM Network” ,并且包含允许创建和删除 VM 网络及管理与 VM 网络关联的属性的工作流。在 HNV Windows PowerShell API 中,VM 网络通过路由域ID (RDID)  属性进行标识。此 RDID 属性必须在物理网络中保持唯一,并由 SCVMM 自动设置。

虚拟子网

在 VM 网络中,必须至少包含一个虚拟子网。虚拟子网的概念与物理网络中的子网概念相同,用于提供广播域并且是单一 LAN 网段。在 HNV 中,虚拟子网被编码到虚拟子网 ID (VISD) 属性中的各虚拟包中,是一个可在有线网络上发现的 24 位字段。由于与 VLAN 十分接近,有效 VSID 的范围为 4096 至 16,777,214,自有效 VLAN 范围后开始,并保留 24 位范围的最后一个 VSID (16,777,214) 用作专用用途。虚拟子网 ID 还必须在特定的物理网络内保持唯一,通常定义为由 SCVMM 管理的网络。

IMG03

为理解 VM 网络与虚拟子网彼此之间的关联模式,上图中显示了一个多租户数据中心示例,其中启用了网络虚拟化。在此示例中,共包含两个租户,表示不同的公司,很可能是竞争对手。两者希望安全隔离彼此之间的流量,因此构建了两个 VM 网络。在每个 VM 网络中,自由创建一个或多个虚拟子网,并通过创建适合自身需求的特定网络拓扑将虚拟机连接到特定的子网。

VM 网络路由

继 VM 网络和虚拟子网之后,下一个要了解的概念是如何在 VM 网络中处理路由。特别准备了两个主要案例,用于展示虚拟子网间路由和 VM 网络外路由。

  • 虚拟子网间路由

在物理网络中,子网是 L2 域,在这里无需建立路由,计算机(虚拟和物理计算机)彼此之间就可以直接进行通信。在 Windows 中,如果静态配置网络适配器,必须设置“默认网关”,即从特定子网向外发送所有流量使用的 IP 地址,以便适当地进行路由。这通常是物理网络路由。HNV 使用每个主机的内置路由器作为虚拟网络的分布式路由器。这意味着,每个主机(尤其是 Hyper-V 虚拟交换机)均将作为在虚拟子网(位于同一 VM 网络中)间传输的所有流量的默认网关。在 Windows Server 2012 和 Windows Server 2012 R2 中,用作默认网关的地址为子网的 “.1” 地址。每个虚拟子网中都将保留这类 .1 地址作为默认网关,虚拟子网中的虚拟机不能使用该地址。

  • VM 网络外路由

第二项主要路由功能,当数据包需要离开 VM 网络时使用。如上所述,VM 网络是一个隔离边界,但这并不意味着任何流量都不能离开 VM 网络。事实上,您可以简单表述为,如果无法在 VM 网络外开展通信,那么网络虚拟化将没有多大意义。就像物理网络使用网络边缘控制进出物理网络的流量一样,虚拟网络也具有 HNV 网关形式的网络边缘。HNV 网关的作用是在特定 VM 网络与物理网络或其他 VM 网络之间架设桥梁。以下是 HNV 网关可提供的若干不同功能,其中包括:

    • 转发: 网关的最基本功能是封装或解除封装转发网关桥接的 VM 网络与物理网络的包。这种类型的网关通常用于连接 VM 网络中的虚拟机与共享资源(如物理网络上的存储或备份服务)。此外,还可用于连接 VM 网络与物理网络边缘,以便 VM 网络能够使用物理网络提供的相同的边缘服务(防火墙、入侵检测)。
    • VPN
    •   
    • 站点到站点
             网关的站点到站点功能允许直接桥接 VM 网络与位于不同数据中心的某个网络(物理网络或另一 VM 网络)。这通常用于混合场景,其中部分租户数据中心网络位于内部,部分租户网络几乎全部在云中托管。使用站点到站点功能的要求是可在另一站点的网络中路由 VM 网络。另外,还需要在连接的另一侧设置站点到站点网关(即一个网关位于企业内部,一个网关位于服务提供商处)。
  •   

  • 远程访问(点到站点) 
           网关的远程访问功能允许单一计算机上的用户在虚拟网络中进行桥接。它与站点到站点功能类似,但不需要在每一侧都设置网关,只需要设置一侧。管理员从笔记本电脑连接至企业网络虚拟网络(而不是内部部署数据中心网络)就是这方面的一个典型示例。

  • NAT/ 负载平衡 
          该网关可以提供的最后一项功能是 NAT,或者称为负载平衡。正如所料,NAT 和负载平衡允许连接至外部网络(如 Internet),并且无需具备内部虚拟子网和 VM 网络外部的可路由 VM 网络 IP 地址。NAT 功能允许对 VM 网络外部的所有连接使用单一外部可路由 IP 地址,也可以提供一对一虚拟机映射,这需要从外部进行访问,此时虚拟网络内部的地址将被映射至可从物理网络访问的某个地址。负载平衡器用于提供标准负载平衡功能,主要区别在于虚拟 IP (VIP) 位于物理网络,而专用 IP       (DIP) 位于 VM 网络。

在 Windows Server 2012 R2 中,内部网关提供转发、站点到站点和NAT 功能。该网关设计用于在虚拟机中运行,充分利用 Windows 和 Hyper-V 中的主机和来宾群集功能实现高可用性。该网关的另一项主要功能在于,单一网关虚拟机可作为多个 VM 网络的网关。此功能由多租户感知型 Windows 网络堆栈启用,并且能够使多个路由域彼此隔离。这允许在同一网关中终止多个 VM 网络,即便有多个重叠的 IP 地址也是如此。

除内部 Windows 网关外,还运用数量越来越多的第三方网关提供其中一项或多项功能。这些网关与 SCVMM 集成,采用与 Windows 网关一样的做法,并作为 VM 网络与物理网络之间的网桥。

另外一些应当注意的 SCVMM 网关支持功能包括:

    • 每个 VM 网络只能包含一个网关 IP 地址。
    • 网关必须置于其自身的虚拟子网。
    • 同一主机上可以包含多个网关虚拟机,但同一网关虚拟机主机的 VM 网络上不能包含其他虚拟机。

有关路由工作原理及与 VM 网络内部路由有关的数据包流的详细信息,请查看此链接获取 PowerPoint 幻灯片,其中对 Hyper-V 网络虚拟化数据包流进行了描述。

 

数据包封装

下一个主要网络虚拟化概念是数据包封装概念。对于许多用户而言,数据包封装是网络虚拟化的核心。这一点在 HNV 等覆盖网络技术中表现尤为明显,数据包封装是区分虚拟网络与物理网络的一种方式。数据包封装运行的基本模式在于,虚拟网络数据包置于(封装)物理网络理解的数据包中。在将数据包传输至虚拟网络之前,物理网络理解的数据包将被剥离(解除封装),仅剩下虚拟网络的数据包。如上面的 HNV 部分中所述,虚拟机交换机提供数据包封装功能。

目前有很多不同的封装格式,包括近期推出的虚拟可扩展局域网 (VXLAN)、面向网络虚拟化的无状态传输隧道协议 (STT) 和基本路由封装 (GRE) 等。HNV 使用特定的 GRE 格式(如使用基本路由封装的网络虚拟化 (NVGRE) )作为封装协议。

我们已选择 GRE 作为 HNV 的封装协议,因为这是一种行业标准数据包封装协议机制。NVGRE 是一种特定的 GRE 格式,由 Microsoft、Arista、Intel、Dell、HP、Broadcom、Emulex 和 Mellanox 联合提供,作为 IETF 的 Internet 草案。大家可以在以下位置找到完整版规范:https://tools.ietf.org/html/draft-sridharan-virtualization-nvgre-03

NVGRE 有线格式包含外部标头(具有来源和目标 MAC 和 IP 地址)和内部标头(具有来源和目标 MAC 和 IP 地址)。此外,外部标头与内部标头之间还包含标准 GRE 标头 。在 GRE 标头中,Key 字段是一个 24 位字段,其中虚拟子网 ID (VSID) 位于数据包中。如上所述,它允许在跨越虚拟网络的各个数据包中显式设置 VSID。

  • 客户地址 (CA)

当查看 NVGRE 格式时,重要的是了解内部数据包地址空间的来源。我们将它称之为客户地址 (CA)。CA 是网络连接 VM 网络的网络适配器的 IP 地址。此地址仅可在 VM 网络中路由,不一定要在其他任何位置路由。在 VMM 中,此 CA 来自分配给 VM 网络的特定虚拟子网的 IP 池。

  • 提供程序地址 (PA)

该 IP 地址中的类似外部数据包称为提供程序地址 (PA)。PA 必须可在物理网络中路由,但不得为物理网络适配器或网络团队的 IP 地址。在 VMM 中,PA 来自逻辑网络的 IP 池。

以下显示 NVGRE、CA 和 PA 如何彼此关联,另外还显示了 VM 网络上的虚拟机。

IMG05 

 

本文到此结束。敬请关注后续内容!

在本博客文章中,我们介绍了与 Hyper-V 网络虚拟化有关的各种重要概念。由此开始,我们要介绍的下一个领域是 Windows Server 2012 R2 和 System Center 2012 R2 如何通过简单概念设置提供基于混合云的内置端到端 SDN 解决方案。

下次再见,祝大家在网络技术道路中一帆风顺!