跳过正文

VXLAN为什么需要EVPN

VXLAN EVPN
目录

随着云计算和虚拟化技术的迅猛发展,传统网络架构逐渐暴露出难以满足大规模、高灵活性云数据中心需求的短板。为了应对这一挑战,Overlay网络的概念应运而生,其核心理念在于通过网络虚拟化技术构建一层逻辑网络,以更灵活、高效地管理网络资源。在众多Overlay网络技术中,VXLAN因其出色的扩展性和隔离能力脱颖而出。与此同时,EVPN也开始在数据中心和企业园区网络中展现出非凡的潜力。

传统企业园区设计
#

传统上,许多企业园区网络都是采用三层架构设计的,包括接入层、汇聚层和核心层。规模较小的地点会采用扁平化核心模型,即两层架构,将核心层和汇聚层合并为一层。对于大型地点来说,典型的网络设计如下所示:

Why VXLAN need EVPN
图 1 - 传统三层网络

请注意,有些链接是 L2(红色),而其他的则是 L3(绿色)。在这种设计中,我们通常会遇到哪些问题?

  • 并非所有链路都在转发。
  • 缺少等价多路径 (ECMP) 路径。
  • 接入层到汇聚层易受桥接环路影响。
  • 使用生成树协议(STP)及其保护特性(如BPDU Guard、Root Guard、PortFast等)设计复杂。
  • 收敛速度可能较慢。
  • 与 VLAN 数量和 STP 实例相关的可扩展性问题。
  • 需要第一跳路由协议 (FHRP),如热备份路由协议(HSRP)来提供汇聚层的冗余。
  • 故障排除困难。

如果设计得当,这种类型的网络架构可以很好地工作,但也存在许多潜在的陷阱。相信大家在职业生涯中的某个时刻,都尝试过查找桥接环路的来源。正如前文所提到的,接入层缺乏 ECMP,因为并非所有链路都可以利用。下图移除了通常会因 STP 而被阻塞的链路:

Why VXLAN need EVPN
图 2 – 具有阻塞链路的传统三层网络

在这个拓扑结构中,DS01 是根桥,这就是通向 DS02 的链路被阻塞的原因。这不仅意味着没有 ECMP,还意味着如果通向 DS01 的链路出现问题,只能依赖 STP 进行收敛。使用 802.1D STP 构建网络的话,可能需要 30-50 秒,而使用 802.1w STP,可以实现亚秒级的收敛。

VXLAN 和 EVPN 可以帮助解决其中一些问题。接下来,我们一步一步来分析。

VXLAN 的兴起
#

我们经常将 VXLAN 和 EVPN 放在一起讨论,就好像它们是同一种技术一样。然而,EVPN 最初主要用于服务提供商网络,以向客户提供更好的 L2 服务,而 VXLAN 主要用于数据中心。VXLAN是根据2014年发布的RFC 7348定义的,它原本是一项独立的技术,并没有与EVPN配对。它是一种数据平面封装技术,旨在克服传统L2网络的挑战:

  • 可扩展性问题:IEEE 802.1Q中定义的VLAN ID只有12个比特,这意味着最多有 4096 个 VLAN。此外,通常还会预留一些VLAN,使得实际可用的数量更少。这对于大规模网络(如数据中心和一些大型园区环境)来说是不够的。
  • 缺乏 ECMP:前文提到 STP 会阻塞链路,这意味着网络中昂贵的链路没有得到有效地使用。有些工作负载需要大量带宽。在数据中心使用三层架构可能会造成hotspot,导致某些链路/节点过载。
  • 缺乏多租户:使用传统设计很难构建多租户网络,主要与无法扩展有关。

那么 VXLAN 是如何解决这些问题的?

VXLAN 在报头中有一个 24 位字段,称为虚拟网络标识符 (VNI),提供了 16777216 个潜在虚拟网络。与 4096这个数字相比,是一个相当大的进步!

VXLAN 能够同时执行桥接和路由。它是一种在物理网络之上运行的协议,我们通常称之为Overlay。可以把它想象成一个隧道,其中隧道的两端点被称为VXLAN隧道端点(VTEP)。由于 VXLAN 是一种隧道形式,尽管它是无状态的,但只要有 L3 连接,它就可以在任何拓扑和底层协议之上运行。这意味着可以构建所谓Underlay网络,它是一个完全路由的设计。这就消除了与 L2 相关的几乎所有挑战,并提供了 ECMP、快速收敛等功能。

由于 VXLAN 的扩展性更好,这也提供了多租户支持的能力。

下面是一个叶脊拓扑的示例:

Why VXLAN need EVPN
图 3 - 采用 VXLAN 的叶脊拓扑

此拓扑中的所有链路都是 L3,并且它们将执行转发操作。通常,Underlay会使用如OSPF或IS-IS这样的内部网关协议(IGP)来提供VTEP之间的L3连接。

当然,提供这些强大功能是需要付出代价的。这里说的代价不是金钱成本,而是封装和开销。VXLAN 是一种 MAC-over-IP/UDP 协议,它会将以太网帧进行封装,并添加一个VXLAN头部、UDP头部以及外部IP和MAC头部。这会增加50字节或54字节的开销,具体取决于是否保留完整的802.1Q头部。如下所示:

Why VXLAN need EVPN
图 4 - VXLAN 封装

  • VXLAN头部主要提供VNI,以便在数据平面中将数据包转发到正确的虚拟网络。
  • 当帧被 VTEP 封装时,最常见的做法是移除802.1Q头部。
  • 当原始帧被修改时,会计算一个新的 CRC(循环冗余校验),并丢弃旧的 CRC。由于旧的 CRC 被丢弃,所以新的 CRC 不会增加任何额外的开销。
  • 添加一个 UDP 报头,其中目标端口通常为 4789,而源端口则根据内部报头中的字段生成。UDP 报头增加了熵,以便底层可以更好地利用 ECMP 路径。
  • 外部 IP 报头包含源和目标 VTEP 的源 IP 和目标 IP。
  • 外部以太网报头用于通过以太网链路逐跳转发帧。

需要注意的是,没有 EVPN 支持的 VXLAN 会利用泛洪和学习行为,这与传统交换机的行为类似。如果它不知道目标 MAC,它会泛洪该帧,并在收到响应时学习 MAC,这被称为未知单播。没有 EVPN 的 VTEP 行为类似。如果它尚未学习 MAC,它将使用底层网络的多播或入口复制将其泛洪到所有其他相关 VTEP。

泛洪和学习机制显然不是最优选择,那么如何解决这一问题呢?这就需要用到EVPN了。

EVPN的引入
#

EVPN是一种用于二层网络互联的VPN技术,采用类似于BGP/MPLS IP VPN的机制,在BGP协议的基础上定义了一种新的NLRI(网络层可达信息)即EVPN NLRI,EVPN NLRI定义了几种新的BGP EVPN路由类型,用于处在二层网络的不同站点之间的MAC地址学习和发布。

前文提到,原有的VXLAN实现方案没有控制平面,是通过数据平面的流量泛洪进行VTEP发现和主机信息(包括IP地址、MAC地址、VNI、网关VTEP IP地址)学习的,这种方式导致数据中心网络存在很多泛洪流量。为了解决这一问题,VXLAN引入了EVPN作为控制平面,通过在VTEP之间交换BGP EVPN路由实现VTEP的自动发现、主机信息相互通告等特性,从而避免了不必要的数据流量泛洪。

与独立 VXLAN 相比,EVPN 提供了以下优势:

  • 通过 BGP 消息发现 VTEP,而不是基于接收 VXLAN 封装的帧。这比盲目接受所有 VXLAN 封装的帧更安全。
  • 广播 MAC 和 MAC/主机 IP 路由、入口复制 VTEP、IP 前缀和以太网段。
  • 减少泛洪量。
  • 像ARP抑制这样的特性依赖于通过EVPN学习到的路由。

EVPN 具备很多优势,那么如何启用它呢?需要配置BGP并启用EVPN。通常情况下,叶子节点(Leaf)被配置为路由反射器客户端,而骨干节点(Spine)充当路由反射器。如下所示:

Why VXLAN need EVPN
图 5 - BGP EVPN 拓扑

对于了解MPLS 的人来说,EVPN路由中有很多熟悉的部分,例如路由目标 (RT)、路由区分符 (RD)、MPLS 标签等。下面列出了一些最常见的 EVPN 路由类型及其提供的内容:

Why VXLAN need EVPN
图 6 - EVPN 路由类型

通过EVPN通告VTEP所知的MAC和IP地址,就无需依赖泛洪和学习行为。

总而言之,在构建能够扩展且快速收敛的健壮网络方面,传统的三层网络设计面临诸多挑战。通过利用VXLAN和EVPN构建叶脊拓扑,不仅可以显著提高网络的灵活性和可靠性,还能有效解决扩展性、多租户支持等问题,同时实现快速收敛和等价多路径传输。

相关文章

VXLAN 简介
VLAN VXLAN
谷歌ARM服务器芯片表现如何
Google Cloud ARM Server
谷歌正在开发的两颗芯片
Google Pixel Watch Tensor