数据中心网络架构演进 — 从 Underlay 到 Overlay 网络

目录

文章目录

  • 目录
  • 前文列表
  • Overlay 网络
  • 虚拟可扩展局域网(VxLAN)
    • VxLAN 的实现原理和网络包格式
    • VxLAN Tunnel Endpoint
    • VxLAN 数据报文转发流程
    • 软件实现的 VTEP
  • 基于 VxLAN Overlay 和 Spine-Leaf 构建大二层网络架构
  • BGP EVPN

前文列表

《数据中心网络架构演进 — 从传统的三层网络到大二层网络架构》
《数据中心网络架构演进 — 从物理网络到虚拟化网络》
《数据中心网络架构演进 — CLOS 网络模型的第三次应用》

Overlay 网络

Overlay 网络就是基于物理网络拓扑(Underlay Network)之上,构建出一个虚拟的、不同于物理网络拓扑的逻辑网络。Overlay 网络是一个 L3 in L2 网络。也就是说,只要 L3 网络能覆盖的地方,那么 Overlay 的 L2 网络也能覆盖。Overlay 的典型思想就是隧道(Tunnel)。

隧道技术(Tunneling):使用隧道传递的数据可以是不同协议的数据帧或数据报文,隧道协议将其它协议的数据帧或数据报文重新封装后再发送。新的封装头部提供了路由信息,以便通过互联网传递被封装的真实负载数据。隧道这种方式能够使来自多种信息源的网络业务在同一个基础设施中通过不同的隧道进行点到点传输。隧道技术使用点对点通信协议(传输层)代替了交换连接,通过路由网络(网络层)来连接数据地址。

  • Underlay:就是传统的路由交换网络。
    数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第1张图片
  • Overlay:用来作为计算单位(物理机、虚拟机、容器)之间通讯的网络。
    数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第2张图片

虚拟可扩展局域网(VxLAN)

随着云计算技术的兴起以及虚拟化技术的普及,VLAN 技术的弊端逐渐显现出来,表现为以下 3 个方面:

  1. 在大规模云计算的多租户模式下,802.1Q 标准定义的最多支持 4094 个 VLAN 的能力已经无法满足需求。
  2. 在大规模云计算的多租户模式下,不同租户的网络很有可能会出现 IP/MAC 地址的重叠。VLAN 仅仅解决了数据链路层的广播域隔离的问题,并没有涉及到 IP/MAC 地址重叠的问题。因此需求一种新的技术来保证在多租户网络中存在地址重叠的情况下,依旧能够有效通信的技术。
  3. 虚拟化技术的成熟令传统交换机受到了挑战,因为虚拟机技术让 Host 可以同时运行多台 VM,为了保证集群中所有虚机可以正常通信,交换机必须保存每台虚机的 MAC 地址,这样就导致了交换机中的 MAC 地址表异常庞大,从而影响交换机的转发性能。

2011 年 8 月,IETF 发布了《RFC 7348:Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks》草案,主要由 VMware 与 Cisco 公司草拟。该技术利用 L2 over UDP 机制传输原始报文、利用 VxLAN 头中 24bits 的 VNI 信息将传统 VLAN 标记扩展至 16MB。

紧接着,2011 年 9 月,IETF 发布了《RFC 7637:NVGRE: Network Virtualization Using Generic Routing Encapsulation 》案,主要由 Microsoft 草拟。该技术利用 L2 Over GRE 机制传输原始报文、利用 GRE Key 字段中的高 24bits 将 VLAN 数据扩展至 16MB。

VxLAN(Virtual eXtensible LAN,虚拟可扩展局域网)是一种基于隧道技术的 Overlay 网络虚拟化技术。VxLAN 就是在三层网络(网络层)之上构建的二层虚拟网络(数据链路层),通过 VxLAN 技术可以将处于不同网段的网络设备整合到一个逻辑上的数据链路层网络中。对于网络的终端用户而言,这些网络设备似乎 “真实地” 部署在了同一个数据链路层网络中。

数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第3张图片

与 VLAN 相比,VxLAN 有下面几个优势:

  • 支持更多的二层网段:VxLAN 的 ID (VNI 或 VNID)使用 24-bit 标记,支持 16777216 个二层网段。
  • 能更好地利用已有的网络路径:VLAN 使用 Spanning Tree Protocol 避免环路,这会导致有一半的网络路径被 Block 掉。VxLAN 的数据包是封装到 UDP 通过三层传输和转发的,可以使用所有的路径。
  • 避免物理交换机 MAC 表耗尽:采用隧道机制,所以 TOR(Top on Rack)交换机无需在 MAC 表中记录虚拟机的信息。

VxLAN 的实现原理和网络包格式

数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第4张图片
VxLAN 的本质就是一种隧道技术,通过将虚拟网络中的二层数据帧封装在实际物理网络中的三层数据报文中进行传输。

VxLAN 的传输协议是 IP+UDP,它定义了一个 MAC-in-UDP 的封装格式。在原始的 Layer 2 数据帧前加上 VxLAN Header,然后再放到 UDP 数据报和 IP 数据包中。通过 MAC-in-UDP 封装,VxLAN 能够在 Layer 3 网络上建立起了一条 Layer 2 的隧道。VxLAN 引入了 8-byte VXLAN Header,其中 VNI(VXLAN Network Identifier)占 24-bit。VxLAN Header 和原始的 L2 Frame 被封装到 UDP 数据报中。这 24-bit 的 VNI 用于标示不同的二层网段,能够支持 16777216 个 LAN。

  • 在最原始的数据帧(由计算机发出的真实数据)外加上 VxLAN Header,里面主要就是 VNI ID。
  • 在 VxLAN Header 外加上 UDP Header,里面的目标端口和源端口都是 VTEP 的端口。
  • 在 UDP Header 外面加上外层 IP Header,里面的目的 IP 地址和源 IP 地址都是 VTEP 的 IP 地址。
  • 在 IP Header 外面加上外层 MAC Header,里面的目的 MAC 地址和源 MAC 地址视乎具体的网络拓扑。如果两个 VTEP 处于同一网段,MAC 直达(目的 MAC 地址和 源 MAC 地址都是 VTEP 的 MAC 地址);如果不是,就需要通过 Gateway 转发,所以目的 MAC 地址应该是 Gateway 的 MAC 地址。

VxLAN Tunnel Endpoint

数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第5张图片

VTEP(VxLAN tunnel endpoint,隧道端点),是 VxLAN 隧道的终结点,用于处理 VxLAN 数据报文的封装和解封装。每个 VTEP 都有两个接口,一个接口用于本地 LAN 的桥接转发;另一个接口作为 IP interface 配置上一个 IP 地址,用于连接 Transit 网络。同时,VTEP 使用该 IP 作为目的 IP 或源 IP 来封装 Layer 2 frame,并通过该 IP interface 传输和接收封装后的 VxLAN 数据包。

VxLAN 数据报文转发流程

数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第6张图片
NOTE:VxLAN 环境需要支持多播(IPv6)和组播(IPv4),因为 VxLAN 需要这两个协议来发现目标 MAC 地址,所以首先两个 VTEP 启动的时候需要加入到同一个组播组,通过 IGMP 协议。

上图 Host-A 和 Host-B 位于 VNI 10 的 VxLAN Network,通过 VTEP-1 和 VTEP-2 之间建立的 VxLAN 隧道通信。数据传输过程如下:

  1. Host-A 向 Host-B 发送数据时,Host-B 的 MAC/IP 作为数据报文的目标 MAC/IP,Host-A 的 MAC/IP 作为数据报文的源 MAC/IP,然后通过 VTEP-1 将数据发送出去。

  2. VTEP-1 从自己维护的 MAC/IP 映射表中找到 MAC-B 对应的 VTEP-2,然后执行 VxLAN 封装,依次加上 VxLAN Header、UDP Header、IP Header(外层 IP)、Frame Header(外层 MAC)。此时 IP Header 的目标地址为 VTEP-2 的 IP,源地址为 VTEP-1 的 IP。同时由于下一跳是 Router-1,所以 Frame Header 的目标地址为 Router-1 的 MAC。

  3. 数据报文从 VTEP-1 发送出后,外部网络的路由器会依据 IP Header 进行路由,依据修改 Frame Header 的 MAC 地址进行传输,最后到达与 VTEP-2 连接的路由器 Router-2。

  4. Router-2 将数据报文发送给 VTEP-2。VTEP-2 负责解封数据包,依次解析 Frame Header、IP Header、UDP Header 和 VxLAN 头,最终得到被封装到最里层的 “数据” —— 以 Host-A 的 MAC/IP 作为源 MAC/IP 以 Host-B 的 MAC/IP 作为目标 MAC/IP 的内存数据报文。VTEP-2 最后再依据内层数据报文的目标 MAC 地址将数据报文发送给 Host-B。

整个过程中,VTEP-1 和 VTEP-2 都学习到了一条知识(记录),Host-A 的 MAC 归 VTEP-1 管,Host-B 的 MAC 归 VTEP-2 管,以后两个 Host 通信的时候,不需要再通过 Flood and Learn(洪泛和自适应)来询问某个 Host 归谁管了,直接发送即可。

软件实现的 VTEP

VTEP 可以由专有硬件来实现,也可以通过纯软件实现。目前比较成熟的 VTEP 软件实现有:

  • 加载了 VxLAN 内核模块的 Linux 操作系统
  • OpenvSwitch

在 Linux 上实现的 VTEP 的工作流程:

  1. Linux VxLAN 创建一个 UDP Socket,默认监听 8472 端口。
  2. Linux VxLAN 在 UDP Socket 上接收到 VxLAN 包后,解包,然后根据其中的 VxLAN ID 将它转给某个 VxLAN Interface,然后再通过它所连接的 Linux Bridge 转给虚机。
  3. Linux VxLAN 在收到虚机发来的数据包后,将其封装为多播 UDP 包,从网卡发出。

数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第7张图片

基于 VxLAN Overlay 和 Spine-Leaf 构建大二层网络架构

基于 VxLAN 的 Overlay 网络在 L3 IP Underlay 网络之上构建了一层 L2 Overlay 网络,通过 VTEP 隧道机制传输 L2 包。例如下图中,原有的交换机网络不变,服务器之间通过 Overlay 网络实现了跨 Leaf 交换机的 L2 网络。这样,在 Overlay 网络中,服务器可以任意部署,而不用考虑现有网络的架构。

  • 单纯的 Spine-Leaf
    数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第8张图片
  • 基于 VxLAN Overlay 的 Spine-Leaf
    数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第9张图片

一个完整的, 基于 VxLAN Overlay 的 Spine-Leaf 网络架构如下图所示。这种网络架构称为 VxLAN Fabric,通常有两种实现方式:一种是基于原始的 Flood & Learn 模式,与传统 L2 网络类似;另一种是基于 MP-BGP EVPN 作为控制层。在该架构中的 VM 并不知道 VxLAN Overlay 的存在,VM 只是把 Ethernet Frame 发出来。待 Leaf 交换机上的 VTEP(VxLAN Overlay,需要在 Leaf 交换机上集成 VTEP)接收到 VM 的 Ethernet Frame 后,就会自动的将其封装成 VxLAN 数据包(本质是一个 UDP 包),然后在原有的 Spine-Leaf 的 Underlay 网络上进行 L3 传输。

数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第10张图片

基于 VxLAN Overlay 的 Spine-Leaf 网络架构就是通过这种方式来打破了大二层网络的限制,即将 L2 广播域限制在了 Leaf 节点上,又将 POD 的范围扩展到了整个 Overlay

BGP EVPN

VxLAN 是用于实现大型云计算和数据中心的网络二层互通技术,其本身没有控制平面,所以单存的 VxLAN 组网是通过 Flood and Learn(洪泛和自适应)来完成转发数据之前的表项学习的。因此 VxLAN 数据转发前表项学习的泛洪流量成为了一个重要难题,好在后来制定 VxLAN 的控制面(CP)标准 BGP EVPN(RFC7432)。从此,VxLAN 基于 BGP EVPN 控制层学习 L2 和 L3 的可达信息,通过 EVPN 完成在 VxLAN 转发数据报文前 ARP 表项学习,主机路由学习和 VTEP 自动发现,VXLAN+EVPN 成为云数据中心环境下网络的首选技术,为实现数据中心虚拟化、集群和云部署大二层网络奠定夯实了网络基础。

数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第11张图片

Flood and Learn 与 BGP EVPN 的对比:

数据中心网络架构演进 — 从 Underlay 到 Overlay 网络_第12张图片

可见,BGP EVPN 主要提供以下几个功能:

  • 通过 MP-BGP 宣告主机的 MAC/IP:把两个 VTEP 节点看成是两个 PE 设备,两个 PE 设备建立 MP-BGP 从而实现路由传递。通过 EVPN Type-2 路由(MAC/IP 路由)将主机 MAC/IP 信息传递至远端 VTEP。

  • 通过 MP-BGP 实现 VTEP Peer 自动发现和认证:通过 EVPN Type 3 路由(Inclusive Multicast 路由)在 VxLAN 控制平面中自动发现 VTEP 和动态建立 VxLAN 隧道。在 VTEP 之间互相传递二层 VNI 和 VTEP IP 地址信息。如果对端 VTEP IP 是三层路由可达,则建立一条 VxLAN 隧道。

  • 分布式网关: 完成 VLAN 与 VNI 的映射,然后将所有的 VTEP 上针对 SVI(主机或者虚拟主机的网关)都配置相同的 Anycast Gateway vIP/vMAC。无论主机或虚拟机连接到哪一个 VTEP(Leaf 节点),主机或者虚拟机的网关信息都不变。

  • ARP 抑制:Host-1 想跟 Host-2 通信,Host-1 就必须知道 Host-2 的 ARP。通常,VTEP-1 收到了 Host-1 发来的 ARP Request,VTEP-1 不会着急忙慌的将这个 ARP Request 发出去。它会先查自己本地的缓存表,如果本地有 Host-2 的信息,则 VTEP-1 将这个 ARP Request 拦截并给 Host-1 回复一个 Host-2 的 ARP 信息。这就是 ARP 抑制,避免了广播流量在 Transit 网络中大量传播,消耗资源。

  • 头端自动发现的入站复制:在 Flood and Learn 机制下,BUM(broadcast, unknown unicast and multicast)流量会通过 Underlay 组播的形式发送。有了 BGP EVPN 就不再需要了。

你可能感兴趣的:(计算机网络)