什么是 VXLAN?
VXLAN (Virtual eXtensible LAN,可扩展虚拟局域网络) 是一种Internet 标准重叠网络虚拟化技术,它提供了一种在 IP(第 3 层)网络上封装以太网(第 2 层)帧的方法,这一概念通常被称为“隧道”。
VXLAN技术将已有的三层网络作为Underlay网络,在其上构建出虚拟的二层网络,即Overlay网络。Overlay网络通过封装技术、利用Underlay网络提供的三层转发路径,实现租户二层报文跨越三层网络在不同站点间传递。对于租户来说,Underlay网络是透明的,同一租户的不同站点就像工作在一个局域网中。
虽然 VXLAN 只是众多虚拟网络或隧道技术中的一种,但它比其他技术更好地解决了数据中心网络中的几个扩展挑战。由于这些优势,用于云计算的现代数据中心网络架构通常将基于稳健路由协议(例如BGP)的“scale-out”IP (L3) leaf-spine Underlay与基于 VXLAN 的Overlay相结合,如图1所示。
图 1:L3 Underlay和VXLAN Overlay的可扩展数据中心架构
VXLAN 帧格式
下面是 VXLAN 帧格式的简化视图。
图 2:简化的 VXLAN 帧格式
VXLAN 协议将以太网帧封装在 VXLAN报头中,该报头包含一个VNI (VXLAN 网络标识符),该值用于区分每个 VXLAN 隧道。由于 VNI 由 24 位组成,因此网络中可能的 VNI 数量超过 1600 万,与VLAN(虚拟局域网) 技术相比,提供了重要的可扩展性优势。VXLAN 帧随后被封装在IP网络上的UDP中,以便它们可以通过第 3 层网络进行路由。
VXLAN 隧道端点 (VTEP)
封装和解封装帧的隧道端点称为 VTEP(VXLAN Tunnel End Point,VXLAN隧道端点)。这种封装可以在托管虚拟机 (VM) 或容器化应用程序的服务器上完成,也可以在以太网交换机的网络处理器中实现。图 2 显示了基于服务器和基于交换机的 VTEP。在该图中,VXLAN Overlay Fabric连接了基于服务器和交换机的 VTEP,并跨越两个地理位置分离的数据中心,通过第3层路由广域网(WAN)或其他数据中心互连(DCI)传输连接。
图 3:多站点数据中心网络架构中的 VXLAN 隧道和 VTEP
基于服务器的 VTEP 可以支持更多分布式Overlay网络服务,例如用于安全的细粒度微分段。但是,在软件中运行的基于服务器的 VTEP 会使用本应由应用程序使用的服务器 CPU 周期。在交换机中实现的 VTEP 通常是硬件加速的,因此它们消除了性能瓶颈。
现在有一个新兴的选择,它将硬件加速的优点与高度分布式服务相结合:DPU(数据处理单元)。DPU是安装在服务器中的一种网卡,它集成了强大的数据处理芯片来加速网络功能,包括 VXLAN 覆盖。预计将来会有更多的高性能数据中心网络架构将在交换机和 DPU 中混合使用硬件加速的 VTEP,如图 3 所示。
VXLAN vs. 其他方案
VXLAN 不是第一个或唯一的网络虚拟化技术,但与其他数据中心网络虚拟化替代方案相比,它提供了巨大的优势。概括来说,VXLAN 最重要的目标是:
- 可以使用具有高弹性、高可用性和可预测性能的可扩展三层架构来构建Underlay网络。
- 虚拟连接可以在软件中定义,实现SDN自动化,以提高网络运营的灵活性和效率,并减少人为错误。
- 虚拟化可以扩展到数百万个隧道和端点,从而在应用程序和租户之间实现细粒度、安全的分段。
当与适当的控制平面技术和网络自动化框架相结合时,VXLAN 比许多其他虚拟化技术能更有效地实现这些目标。
VXLAN vs. VLAN
传统数据中心网络是使用以太网交换机构建的,没有任何用于虚拟化的Overlay协议。在这种架构中,每台交换机都充当以太网 MAC 桥接器,并实现生成树协议,以避免网络中的环路。在最简单的实现中,所有设备和虚拟机都连接到相同的第二层广播域。如果需要对这些网络中的应用程序或租户进行分段或隔离,则由VLAN提供,由添加到以太网帧报头的 12 位 VLAN ID 表示(类似于 VXLAN 虚拟网络标识符)。这个额外的报头有时被称为“.1Q 标签”,意为IEEE 802.1Q标准。
这种类型的网络对于小规模的单租户数据中心来说已经足够,但对于更大规模的数据中心,尤其是多租户数据中心来说,它有很多缺点。由于只有 4000 个唯一的 VLAN ID 可用,分段选项是有限的。更重要的是,生成树协议不太适合横向扩展的数据中心网络架构,因为它对冗余链路的使用效率低下,而且其弹性远低于第三层路由技术。大型二层网络很容易受到广播风暴的影响,这可能会导致整个网络瘫痪。
VXLAN 标准更详细地讨论了这些限制,并详细说明了如何使用VXLAN overlay和三层Underlay来解决这些问题。
VLAN 标签堆叠、Q-in-Q
避免只有 4000 个 VLAN 标识符限制的一种方法是添加第二个 VLAN 标记,这种方法称为标记堆叠或“Q-in-Q”(由于使用两个“.1Q 标签”),并在IEEE Provider Bridges标准中。其允许服务提供商使用外部标签 (S-tag) 在其客户或租户之间提供分段或隔离,而内部标签 (C-tag) 由客户使用,因此每个客户都可以使用约 4000 个 VLAN,而无需担心其他客户正在使用什么。
图 4:简化的 QinQ 帧格式
使用两个标签可以实现多达 1600 万个不同的组合(比VXLAN的24 位 VNI灵活性稍差),从而解决了 VLAN 可扩展性问题。然而,它并没有解决二层网络固有的低效率和低弹性的问题。
TRILL 和SPB
被称为“TRILL”和“SPB”的后续标准试图通过借鉴三层链路状态路由来解决生成树的效率和弹性问题,特别是广泛使用的IS-IS路由协议,它不需要IP网络。这些方法有时被称为“MAC-in-MAC”,因为第二个以太网 MAC 地址被添加到帧中,用于在启用 TRILL 或启用 SPB 的网桥之间进行转发。
这两个标准都受到了关注,并经常进行比较,但都没有达成共识。它们也有一个明显的缺点,那就是需要专门的硬件。
基于 MPLS 的数据中心网络架构
MPLS 二层 VPN (L2VPN) 提供了跨三层网络的二层连接,但不是任何三层网络都可以,网络中的路由器必须都是 IP/MPLS 路由器。虚拟网络使用 MPLS 伪线封装进行隔离,并且可以堆叠 MPLS 标签,类似于 VLAN 标签堆叠,以支持大量虚拟网络。
IP/MPLS 常用于电信服务提供商网络,因此许多服务提供商的 L2VPN 服务都是使用 MPLS 实现的。其中包括点对点 L2VPN,以及根据虚拟专用 LAN 服务(VPLS) 标准实施的多点 L2VPN。这些服务通常分别符合E-Line(点对点)和 E-LAN(多点)的MEF运营商以太网服务定义。
由于 MPLS 及其相关控制平面协议专为高度可扩展的三层服务提供商网络而设计,一些数据中心运营商已在其数据中心网络中使用 MPLS L2VPN 来克服二层交换网络的扩展性和弹性限制,如图 4 所示。
图 5:基于 MPLS 的数据中心网络架构
由于以下几个原因,这种方法没有得到普及:
- 支持 MPLS 的路由器往往比不支持MPLS 的路由器更昂贵,并且比数据中心级第三层交换机的成本更高。而VXLAN 支持,包括硬件加速的 VTEP 功能,现已广泛用于 Broadcom 和其他公司的交换芯片,以及基于服务器的新型 DPU。
- 基于 MPLS 的 VPN 解决方案需要边缘设备和核心设备紧密耦合,因此数据中心网络中的每个节点都必须支持 MPLS。相比之下,VXLAN 仅需要边缘节点(例如leaf交换机或 DPU)中的 VTEP,并且可以使用任何支持 IP 的设备或 IP 传输网络来实现数据中心spine和数据中心互连 (DCI)。
- 在大型服务提供商之外,MPLS 技术学习难度较大,相对较少的网络工程师能够轻松构建和运营基于 MPLS 的网络。而VXLAN相对简单,正在成为数据中心网络工程师广泛掌握的基础技术。
鉴于以上种种,在数据中心网络中,VXLAN比MPLS具有压倒性的优势。(事实上,VXLAN 甚至被证明是 MPLS 的可行替代方案,可在某些服务提供商网络中提供运营商以太网服务。)
VXLAN vs. 其他Overlay 协议
VXLAN 并不是第一次尝试定义能够跨纯三层Underlay网络扩展二层服务的Overlay协议。
- VXLAN vs. OTV:OTV是 Cisco 专有的方法,与 VXLAN 有许多相似之处。OTV 采用控制平面协议来扩展 MAC 地址学习、减少流量泛洪并隔离二层故障域。与具有 SDN 或 BGP EVPN 控制平面的 VXLAN 相比,OTV 在负载均衡和收敛方面还存在一些缺点。
- VXLAN vs. NVGRE:NVGRE建立在 GRE 之上,GRE 是路由器广泛支持的长期封装标准。GRE是一种长期存在的封装标准,在路由器中得到广泛支持。与 VXLAN 一样,它包含一个 24 位网络标识符,可用于多达 1600 万个子网。VXLAN 和 NVGRE 大约在同一时间推出,但随着 VXLAN 因其简单性而起飞,NVGRE 在很大程度上被甩在了后面。
- VXLAN vs. GENEVE:GENEVE是一种相对较新的协议,旨在成为一种“统一”的方法,其结合了 NVGRE 的灵活性,同时解决了 VXLAN 的一些感知限制,包括缺少协议标识符,对操作、管理和维护 (OAM) 数据包的支持有限,并且没有标准化扩展机制。对于大多数 VXLAN 用例,尤其是在数据中心Fabric 中,这些并不是重要的限制,因此 GENEVE 似乎不太可能在短期内超过VXLAN,但它在一些供应商解决方案中获得了支持,例如 VMware 的 NSX-T。
从技术上讲,VXLAN、NVGRE 和 GENEVE 都提供了非常相似的功能,它们都可以使用相同的控制平面,例如 SDN 或 BGP EVPN,但到目前为止,VXLAN 的实施要广泛得多。
虚拟化技术总结
下表总结了上述VXLAN 与其他虚拟化技术比较的一些关键点。
VXLAN 控制平面和自动化
原则上,VXLAN Overlay可以手工配置静态MAC到VTEP的IP地址映射,但在实践中,需要某种类型的控制平面或自动化框架来实现有意义的网络可伸缩性和灵活性。VXLAN 标准描述了一种数据平面学习方法,并强调其他可能的控制平面选项。
使用 IP 组播的 VXLAN 数据平面学习
VXLAN 标准中描述的方法扩展了标准 MAC 地址学习,以创建 MAC 到 VTEP IP 地址的映射,而不会从根本上改变学习的工作方式。Underlay中的 IP组播用于传输二层广播/未知/多播 (BUM) 流量。与下面描述的其他方法相比,这种方法有一些缺点。首先,它扩展了二层广播和故障域,而不是隔离它们。其次,与典型的 IP(单播)网络相比,IP 组播的使用将Underlay网络与Overlay网络紧密耦合,增加了管理的复杂性。
用于VXLAN 的 BGP EVPN 控制平面
BGP EVPN提供了一种日益流行的、基于标准的方法来创建 VXLAN Overlay网络,以满足以下几个目标:
- 从数据平面移除MAC地址学习,包含二层广播域和故障域。
- 通过选择性转发减少广播和组播流量负载。
- 支持跨Underlay IP网络的最佳转发、负载均衡和收敛。
BGP EVPN 使用运行在每台交换机中的 BGP 协议在网络节点之间传递 MAC 地址和其他信息,因此我们将其称为“protocol-based”的控制平面。
在网络中的每台交换机上配置 BGP EVPN 业务可能比较复杂、耗时且容易出错,因此一些网络运营商将目光投向网络自动化工具,其中可能包括SDN自动化,以降低复杂性并提高配置速度。
VXLAN 的 SDN 控制平面和自动化
SDN 不仅可用于自动化 BGP EVPN,还可以为BGP EVPN提供一种无协议的替代方案。SDN 控制平面可以实现 BGP EVPN 上述的所有目标,而无需在每个交换机上配置 BGP EVPN。在支持 SDN 的 VXLAN Overlay中,SDN 控制平面负责 MAC 地址学习和高效转发,同时还提供全面的端到端网络自动化,这可以使网络的配置和操作简单几个数量级.。
图 6 比较了跨 128 节点 VXLAN Overlay Fabric上配置单个服务的操作复杂性(在本例中三层虚拟路由和转发,或 VRF 实例)。将 SDN 自动化应用于 BGP EVPN 配置可以比手动配置简化一个数量级,而采用完整的 SDN 自动化方法可以简化大约三个数量级的任务。
图 6:VXLAN Overlay配置的 SDN 自动化优势
总结
VXLAN 已成为数据中心网络架构中最流行的Overlay网络虚拟化协议,因为它优于众多替代方案。基于硬件的VTEP在交换机和DPU中实施,并与BGP EVPN或SDN控制平面和网络自动化相结合时,基于VXLAN的Overlay网络在可预见的未来可以提供分布式云网络所需的可伸缩性、敏捷性、高性能和弹性。