SDN VMware NSX网络原理与实践-NSX-V 解决方案基本架构【1.9】

第4章 NSX-V 逻辑交换与 VXLAN Overlay

        介绍完 NSX-V 解决方案的基本架构和核心组件后,开始正式介绍 NSX-V 的数据平面。 NSX-V 数据平面主要分交换、路由、安全和 Edge 服务网关, 这些内容会分 4 章分别进行阐述。 首先介绍 NSX 逻辑交换部分。汉语中,“网络” 一词最早用于电学。在计算机网络尚未出 现时,《现代汉语辞典》中就有对“网络” 的解释:“在电的系统中,由若干元件组成的用来使 电信号按一定要求传输的电路或其中的一部分,叫做网络。” 而现在通常说的网络,即计算机 网络,是使不同计算机之间能够相互通信的互连系统。“交换” 技术,即为同一网段中的设备 实现通信的手段。其实在传统的VMware解决方案中,已经存在了交换的概念,我们通过vSphere 标准交换机和分布式交换机实现了虚拟网络。然而,标准交换机和分布式交换机的功能都是有限 的,而且控制平面和数据平面没有分离,因此不能将其视为真正的网络虚拟化解决方案。 NSX-V 中的交换技术使用了分布式的架构并引入了 VXLAN 功能,且可以交给 NSX Controller 管理。为了区分 vSphere 分布式交换机,我们将 NSX-V 环境下的这种分布式交 接机称为分布式逻辑交换机或逻辑交换机。 本章开始讲解 NSX-V 逻辑交换的核心技术。

4.1 vSphere 逻辑交换机详解

        根据前文所述, NSX-V 的逻辑交换架构必须基于 vSphere 分布式交换机(VDS)搭建, 因此本节会从 vSphere 虚拟交换机(尤其是 VDS)入手。 NSX 逻辑交换基于 VDS 之上, 使用 Overlay 技术,实现了 NSX 网络虚拟化环境中的 二层流量转发功能。那么, 它的工作原理究竟是什么样的呢?本节还将介绍 NSX 环境中的 三种 VXLAN 复制模式,以便深入探讨 NSX 交换技术。

4.1.1 vSphere 标准交换机和分布式交换机

        前文提到过的 vSphere 虚拟交换机是运行在 VMware 虚拟化 Hypervisor 之上的,负责连接 虚拟机与物理网络的交换设备。它分为标准交换机和分布式换机两种。其中,标准交换机运行在单一的 ESXi 主机内,而分布式交换机则是横跨在整个 vCenter 中运行。 vSphere 虚拟交换机 的运行方式与物理以太网交换机十分相似,它检测与其虚拟端口逻辑连接的虚拟机,并在虚拟 机之间转发流量。 当两个或多个虚拟机连接到同一标准交换机时,它们之间的网络流量就可以 在本地进行转发。如果将服务器连接上行链路的适配器(即物理以太网适配器,俗称网卡)连 接到物理交换机,则每个虚拟机均可通过虚拟交换机访问该适配器所连接的外部网络。 vSphere 虚拟交换机除了可以使得同一台物理服务器内的虚拟机相互通信、引导虚拟机 的网络流量连接到外部网络,还可以用于合并多个网络适配器的带宽并使得它们之间的流 量负载均衡。此外, vSphere 虚拟交换机还可用于处理物理网卡(NIC)的故障切换。 vSphere 标准交换机内部逻辑连接示意图如图 4.1 所示。

        VMware vSphere 分布式交换机的功能与 ESXi 上的标准交换机并没有本质的区别,只 是把连接虚拟机的范围从单个 ESXi 主机扩展到了整个 vCenter。因此,一个 vSphere 分布 式交换机可以连接的物理服务器、虚拟机与一个 vCenter 能管理的数量级是相同的—最大 支持 1000 台物理服务器和 10000 台虚拟机,但实际生产环境中一般不会部署得这么大, 而 是部署为多个vCenter集群。vSphere分布式交换机支持的服务器网卡包括1GE、10GE和40GE 网卡。在 vSphere 分布式交换机之上,可以配置虚拟机端口组和 VMKernel 端口。 与标准交换机相比, vSphere 分布式交换机有如下优势:

 简化了数据中心的管理;
 在虚拟机迁移时,可以定制更多的网络策略;
 支持私有 VLAN(Private VLAN, PVLAN);
 支持用户化的定制或第三方部署(如 Cisco Nexus 1000v)。
两台 ESXi 主机环境下的 vSphere 标准交换机的基本架构如图 4.2 所示。

有了 vCenter,就可以将这种架构进行扩展,使得 vSphere 标准交换机跨越不同 ESXi主机,成为分布式交换机(VDS), 其逻辑架构如图 4.3 所示。

        分布式交换机分为管理平面和数据平面两个层面。管理平面为 vCenter 上的 VDS 配置 部分,其职责是为 vSphere 分布式交换机进行各种配置,而数据平面则在 ESXi 主机的 Hypervisor 之上负责数据交换。在传统的 VMware 虚拟化平台中,每个 ESXi 主机都有各个 MAC 地址所属的端口组的相关信息,同时 ESXi 主机本身会作为控制平面。换句话说, vSphere 分布式交换机和传统物理交换机一样,控制平面与转发平面并没有分离。 vCenter 只负责管理平面,就算 vCenter 出现故障,原先配置好的分布式交换机策略还会照常工作, 因为 vCenter 并不负责数据平面,只有 vMotion 这样的需要借助 vCenter 才能工作的功能才 会无法正常运行。

         VMware NSX 平台中的虚拟交换机(逻辑交换机) 基于 vSphere 分布式交换机,在 ESXi 主机中安装了 VMware NSX 的内核模块后,就可以开始进行配置了。 配置完成后, NSX 分 布式逻辑交换机就可以正常工作。当配置了 VXLAN 端口组后, ESXi 主机将只负责数据平 面的工作,控制平面的工作会转交给 NSX Controller,管理平面的相关工作则由 NSX Manager 来负责。这样,就实现了控制平面和数据平面的分离。

4.1.2 NSX 逻辑交换机

        第 1 章已经讨论过了一个典型的三层 Web 应用架构(见图 4.4)。在 NSX 网络虚拟化 环境中,可以通过逻辑交换机创建不同的二层子网,映射到 Web 应用架构的不同层面,并 与其所属的虚拟机进行连接。这里的 NSX 逻辑交换机,就是在 ESXi 主机中安装了 VMware NSX 的内核模块后,能被 NSX Controller 控制的 vSphere 分布式交换机。

        值得注意的是,在这个模型中,由于很多数据库服务在部署时可能会使用物理服务器,而不安装在虚拟化环境中,因此逻辑交换机可能需要同时开启“虚拟到虚拟”和“虚拟到物理” 的连接。这种连接可能是二层桥接,也可能是三层路由。 在 NSX 网络虚拟化平台中,逻辑交换机将孤立的二层网络进行了彻底的整合,对用户 而言,极大提升了灵活性和敏捷性。无论虚拟还是物理的终端,都能便捷地连接到自己在 数据中心中的逻辑子网,并建立一个与物理拓扑无关的独立的逻辑连接。这一切的优势, 都源于物理网络(Underlay)和逻辑网络(Overlay)的解耦而实现了 NSX 网络虚拟化。 图 4.5 所示为物理网络和逻辑网络分离后的架构示意图。逻辑网络通过使用 VXLAN Overlay,允许二层网络在不同的服务器机柜中横向扩展(甚至可以跨越不同的数据中心), 这种扩展与底层的物理架构是完全独立的。

        前文讲到, VXLAN 基于 VLAN,可以对 802.1Q 协议的 VLAN 数量限制进行指数级的 扩展(达到 16777216 个网段)。这里对 VXLAN 进行一个简单的回顾,并说明 NSX 环境中 是如何处理 VTEP 的。 VXLAN 是将以太网报文封装在 UDP 传输层上的一种隧道转发模式。它定义了一个名为 VTEP(VXLAN 隧道终结点)的实体,用于 VXLAN 隧道两端的流量封装和解封装。 在 VMware NSX 平台中,使用 Hypervisor 上的 VMKernel 接口来处理 VTEP。它添加了一个新的标签 VNI (VXLAN 标识符),用来取代 VLAN 来标识 VXLAN 的网段。 在 VMware NSX 平台中, VNI 的号码是 5000 开始的。此外,在 VMware NSX 平台中,使用 VETP 代理工作机制,负责将VXLAN 流量从本地子网传输到另一个子网。而传输区域(Transport Zone)则是 VNI 的可配 置的边界。相同传输区域中的 vSphere 集群使用了相同的 VNI,一个传输区域可以包含不同 vSphere 集群中的 ESXi 主机,当然,一个 vSphere 集群也可以是不同传输区域的一部分。 在 VXLAN Overlay 中, 属于不同 ESXi 主机的虚拟机之间建立二层连接的过程如下。

1.虚拟机 1 发起一个去往同一逻辑子网的虚拟机 2 的以太网报文请求。

2.虚拟机 1 所在的 ESXi 主机定义了一个 VTEP,在流量被发送到传输网络之前,对 流量进行封装。

3.传输网络只需要知道源目的 ESXi 主机的 IP 地址,就可以在两个地址之间建立 VXLAN 隧道。 4.目的 ESXi 主机收到了 VXLAN 报文,对其进行解封装,并确认它所在的二层子网 (利用 VNI 标识)。

5.最终,这个报文被传递到虚拟机 2。 以上是当不同 ESXi 主机的两个虚拟机需要直接通信时, VXLAN 流量被源目 ESXi 主 机的 Hypervisor 封装、解封装并最终相互通信的基本情况; 这种情形还是比较简单和易于 理解的。但是在以下三种情况下,从一个虚拟机发起的 VXLAN 流量需要发送到同一个 NSX 逻辑交换机下挂的所有虚拟机:

 广播(Broadcast);
 不知道目的的单播(Unknown Unicast);
 组播(Multicast)。
这些多目的的流量通常称为 BUM(Broadcast, Unknown Unicast, Multicast)流量。在以上三种情形中,源虚拟机发起的流量都会被复制到同一逻辑网络中的远端的多个主机。 NSX通过三种不同的复制方法,以支持其基于逻辑交换机的 VXLAN 流量的多目的通信:
 组播(Multicast);
 单播(Unicast);
 混合(Hybrid)。
        默认情况下,逻辑交换机会从传输区域继承复制模式,但是也可以在一个给定的逻辑 交换机上进行重新配置,而不再继承传输区域上的复制模式。 在具体讨论着三种复制模式之前,先介绍一下 VTEP Segment 的概念。 VTEP Segment 就是 VXLAN 中 VTEP 所在的 IP 子网。如图 4.6 所示,该环境中有 4 个 ESXi 主机,分属 于两个 VTEP Segment,其中 ESXi-1 和 ESXi-2 的 VTEP 接口属于相同的 VTEP Subnet A (10.1.1.0/24),而 ESXi-3 和 ESXi-4 的 VTEP 接口属于相同的 VTEP Subnet B(10.1.2.0/24)。 VTEP Segment 的定义对于之后讨论 VXLAN 流量复制模式非常重要。

4.1.3 NSX 中 VXLAN 的组播复制模式

        当 NSX 逻辑交换机选择组播复制模式时, NSX 更多地依赖于数据中心物理网络的组 播能力,将 VXLAN 的封装流量发送到所有的 VTEP。组播模式是处理 BUM 流量的一种方 式,由物理网络定义,与 NSX Controller 集群没有直接关系, 因此在组播复制模式下控制 平面并不参与流量的控制。其结果就是这种复制模式没有完全实现物理网络与逻辑网络的 解耦,因为在逻辑网络中的通信非常依赖于物理网络中的组播配置。

        在这种模式下,使用二层的组播能力将流量复制到本地子网的所有 VTEP。这时,必 须在物理交换机上开启 IGMP Snooping 功能,并推荐在每一个 VLAN 上进行 IGMP 查询。 为了保证组播流量能从源 VTEP 传递到属于不同子网的 VTEP,还需要配置 PIM,并开启 三层组播路由功能。此外,一个组播 IP 地址必须与每一个在逻辑交换机上定义的 VXLAN 二层网段关联。

         如图 4.7 所示, VXLAN 子网 5001 与组播组 239.1.1.1 进行了关联。 因此,一旦第一个 虚拟机连接到了这个逻辑交换机,这个虚拟机所在的 ESXi 主机的 Hypervisor 就会生成一 个 IGMP Join Message(IGMP 的加组信息)去通知物理网络,让物理网络知道它可以接收 组播流量并发送到特定的 IGMP 组。 一旦 IGMP Join Message 生成,物理网络中就会生成组播环境,以将组播报文传递到组 播组 239.1.1.1。 ESXi-4 没有发送 IGMP Join Message,是因为在它之上没有连接到 VXLAN 5001 的虚拟机。 在图 4.8 所示的组播模式下,传递一个 BUM 流量的过程如下。

1.虚拟机 1 生成一个原始的 BUM 报文。
2. ESXi-1 将这个原始报文进行 VXLAN 封装。外部 IP 头部中的目的 IP 地址被发送到
239.1.1.1,同时,组播包被发送到物理网络。换句话说, ESXi-1 成为了组播源。
3.二层交换机接收到了组播报文,对其开始复制:假设 IGMP Smooping 是配置在这台交换机上,它就只会将报文复制到 ESXi-2 的相关端口和三层物理设备上。如果在这台二层交换机上没有开启 IGMP,或根本就不支持 IGMP,那么这台交换机会将这个报文作为一个二层广播包进行处理,将其复制到同一个 VLAN 下的所有接口。
4.三层网络设备将三层组播流量进行复制,并将包发送到另一个 VTEP Segment 所在的传输区域。

5.二层交换机对三层设备发送过来的报文进行复制, 其过程与第 3 步相同。

6. ESXi-2 和 ESXi-3 将接收到的 VXLAN 包进行解封装,并将原始以太网报文传递给 虚拟机 2 和虚拟机 3。 在配置组播模式时,重点是如何将 VXLAN 的网段与组播组进行映射。映射方法有以 下几种。

         进行 1:1 的映射, 这是一种非常精细的组播流量交付方式—一个 ESXi 主机只有 在至少一个其下挂的本地虚拟机连接到了相应的组播组之后,才会接收该组播流 量。但这种方法也会显著增加需要在物理网络设备中建立的组播表项的状态数量, 这就需要事先确认物理设备中最多支持的组播表项状态数量上限。

         让所有 VXLAN 网段都属于一个组播组。这样一来,就大幅减少了物理网络中的 组播表项数量,但是可能会引起不需要的流量被 ESXi 主机接收。例如,参考图 4.7, 一旦 ESXi-4 下挂的虚拟机连接到逻辑交换机,它就可能会接收到属于 VXLAN 5001 的流量,尽管 ESXi-4 中没有任何一台虚拟机属于 VXLAN 5001。 因此,在需要将 VXLAN 的网段与组播组进行映射时,大部分情况下建议进行 M:N 的 映射作为一个折中方案。

         需要注意的是,由于纯组播复制模式非常依赖于底层物理网络,没有做到物理网络与 虚拟网络的解耦,因此在实际生产环境中会很少用到—它不符合 NSX 网络虚拟化的设计 初衷。 这里之所以仍然讨论组播复制模式,是为了提出并让读者更好地理解另外两种复制 模式,即单播模式和混合模式。

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值