关于网络:带你了解VXLAN网络中报文的转发机制

16次阅读

共计 4197 个字符,预计需要花费 11 分钟才能阅读完成。

摘要: 本节以集中式 VXLAN 网络(手工形式建设 VXLAN 隧道)为例,别离介绍雷同子网内、不同子网间是如何进行通信的。在理解转发机制的前提下,咱们先来看下 VXLAN 网关有哪些品种。

VXLAN 二层网关与三层网关

和 VLAN 相似,不同 VNI 之间的主机,以及 VXLAN 网络和非 VXLAN 网络中的主机不能间接互相通信。为了满足这些通信需要,VXLAN 引入了 VXLAN 网关的概念。VXLAN 网关分为二层网关和三层网关:

  • VXLAN 二层网关: 用于终端接入 VXLAN 网络,也可用于同一 VXLAN 网络的子网通信。
  • VXLAN 三层网关: 用于 VXLAN 网络中跨子网通信以及拜访内部网络。

VXLAN 集中式网关与分布式网关

依据三层网关部署形式的不同,VXLAN 三层网关又能够分为集中式网关和分布式网关。

VXLAN 集中式网关

集中式网关是指将三层网关集中部署在一台设施上,如下图所示,所有跨子网的流量都通过这个三层网关转发,实现流量的集中管理。

图 1 -10 VXLAN 集中式网关组网图

部署集中式网关的长处和毛病如下:

  • 长处: 对跨子网流量进行集中管理,网关的部署和治理比较简单。
  • 毛病:
  • 转发门路不是最优:同一二层网关下跨子网的数据中心三层流量都须要通过集中三层网关绕行转发(如图中蓝色虚线所示)。
  • ARP 表项规格瓶颈:因为采纳集中三层网关,通过三层网关转发的终端的 ARP 表项都须要在三层网关上生成,而三层网关上的 ARP 表项规格无限,这不利于数据中心网络的扩大。

VXLAN 分布式网关

通过部署分布式网关能够解决集中式网关部署的毛病。VXLAN 分布式网关是指在典型的“Spine-Leaf”组网构造下,将 Leaf 节点作为 VXLAN 隧道端点 VTEP,每个 Leaf 节点都可作为 VXLAN 三层网关(同时也是 VXLAN 二层网关),Spine 节点不感知 VXLAN 隧道,只作为 VXLAN 报文的转发节点。如下图所示,Server1 和 Server2 不在同一个网段,然而都连贯到同一个 Leaf 节点。Server1 和 Server2 通信时,流量只须要在该 Leaf 节点上转发,不再须要通过 Spine 节点。

部署分布式网关时:

  • Spine 节点: 关注于高速 IP 转发,强调的是设施的高速转发能力。
  • Leaf 节点:
  • 作为 VXLAN 网络中的二层网关设施,与物理服务器或 VM 对接,用于解决终端租户接入 VXLAN 虚构网络的问题。
  • 作为 VXLAN 网络中的三层网关设施,进行 VXLAN 报文封装 / 解封装,实现跨子网的终端租户通信,以及内部网络的拜访。

图 1 -11 VXLAN 分布式网关示意图

VXLAN 分布式网关具备如下特点:

  • 同一个 Leaf 节点既能够做 VXLAN 二层网关,也能够做 VXLAN 三层网关,部署灵便。
  • Leaf 节点只须要学习本身连贯服务器的 ARP 表项,而不用像集中三层网关一样,须要学习所有服务器的 ARP 表项,解决了集中式三层网关带来的 ARP 表项瓶颈问题,网络规模扩大能力强。

VXLAN 网络中报文转发机制

集中式 VXLAN 中同子网互通流程

如图 1 -12 所示,VM_A、VM_B 和 VM_C 同属于 10.1.1.0/24 网段,且同属于 VNI 5000。此时,VM_A 想与 VM_C 进行通信。

因为是首次进行通信,VM_A 上没有 VM_C 的 MAC 地址,所以会发送 ARP 播送报文申请 VM_C 的 MAC 地址。

图 1 -12 同子网 VM 互通组网图

上面就让咱们依据 ARP 申请报文及 ARP 应答报文的转发流程,来看下 MAC 地址是如何进行学习的。

ARP 申请报文转发流程

联合图 1 -13,咱们来一起理解一下 ARP 申请报文的转发流程。

图 1 -13 ARP 申请报文转发流程示意

  1. VM_A 发送源 MAC 为 MAC_A、目标 MAC 为全 F、源 IP 为 IP_A、目标 IP 为 IP_C 的 ARP 播送报文,申请 VM_C 的 MAC 地址。
  2. VTEP_1 收到 ARP 申请后,依据二层子接口上的配置判断报文须要进入 VXLAN 隧道。确定了报文所属 BD 后,也就确定了报文所属的 VNI。同时,VTEP_1 学习 MAC_A、VNI 和报文入接口(Port_1,即二层子接口对应的物理接口)的对应关系,并记录在本地 MAC 表中。之后,VTEP_1 会依据头端复制列表对报文进行复制,并别离进行封装。

能够看到,这里封装的外层源 IP 地址为本地 VTEP(VTEP_1)的 IP 地址,外层目标 IP 地址为对端 VTEP(VTEP_2 和 VTEP_3)的 IP 地址;外层源 MAC 地址为本地 VTEP 的 MAC 地址,而外层目标 MAC 地址为去往目标 IP 的网络中下一跳设施的 MAC 地址。封装后的报文,依据外层 MAC 和 IP 信息,在 IP 网络中进行传输,直至达到对端 VTEP。

  1. 报文达到 VTEP_2 和 VTEP_3 后,VTEP 对报文进行解封装,失去 VM_A 发送的原始报文。同时,VTEP_2 和 VTEP_3 学习 VM_A 的 MAC 地址、VNI 和远端 VTEP 的 IP 地址(IP_1)的对应关系,并记录在本地 MAC 表中。之后,VTEP_2 和 VTEP_3 依据二层子接口上的配置对报文进行相应的解决并在对应的二层域内播送。

VM_B 和 VM_C 接管到 ARP 申请后,比拟报文中的目标 IP 地址是否为本机的 IP 地址。VM_B 发现目标 IP 不是本机 IP,故将报文抛弃;VM_C 发现目标 IP 是本机 IP,则对 ARP 申请做出应答。上面,让咱们看下 ARP 应答报文是如何进行转发的。

ARP 应答报文转发流程

联合图 1 -14,咱们来一起理解一下 ARP 应答报文的转发流程。

图 1 -14 ARP 应答报文转发流程示意

  1. 因为此时 VM_C 上曾经学习到了 VM_A 的 MAC 地址,所以 ARP 应答报文为单播报文。报文源 MAC 为 MAC_C,目标 MAC 为 MAC_A,源 IP 为 IP_C、目标 IP 为 IP_A。
  2. VTEP_3 接管到 VM_C 发送的 ARP 应答报文后,辨认报文所属的 VNI(辨认过程与步骤②相似)。同时,VTEP_3 学习 MAC_C、VNI 和报文入接口(Port_3)的对应关系,并记录在本地 MAC 表中。之后,VTEP_3 对报文进行封装。

能够看到,这里封装的外层源 IP 地址为本地 VTEP(VTEP_3)的 IP 地址,外层目标 IP 地址为对端 VTEP(VTEP_1)的 IP 地址;外层源 MAC 地址为本地 VTEP 的 MAC 地址,而外层目标 MAC 地址为去往目标 IP 的网络中下一跳设施的 MAC 地址。

封装后的报文,依据外层 MAC 和 IP 信息,在 IP 网络中进行传输,直至达到对端 VTEP。

  1. 报文达到 VTEP_1 后,VTEP_1 对报文进行解封装,失去 VM_C 发送的原始报文。同时,VTEP_1 学习 VM_C 的 MAC 地址、VNI 和远端 VTEP 的 IP 地址(IP_3)的对应关系,并记录在本地 MAC 表中。之后,VTEP_1 将解封装后的报文发送给 VM_A。

至此,VM_A 和 VM_C 均已学习到了对方的 MAC 地址。之后,VM_A 和 VM_C 将采纳单播形式进行通信。单播报文的封装与解封装过程,与图 1 -14 中所展现的相似,本文就不再赘述啦!

集中式 VXLAN 中不同子网互通流程

如图 1 -16 所示,VM_A 和 VM_B 别离属于 10.1.10.0/24 网段和 10.1.20.0/24 网段,且别离属于 VNI 5000 和 VNI 6000。VM_A 和 VM_B 对应的三层网关别离是 VTEP_3 上 BDIF 10 和 BDIF 20 的 IP 地址。VTEP_3 上存在到 10.1.10.0/24 网段和 10.1.20.0/24 网段的路由。此时,VM_A 想与 VM_B 进行通信。

图 1 -15 不同子网 VM 互通流程示意

因为是首次进行通信,且 VM_A 和 VM_B 处于不同网段,VM_A 须要先发送 ARP 播送报文申请网关(BDIF 10)的 MAC。取得网关的 MAC 后,VM_A 先将数据报文发送给网关;之后网关也将发送 ARP 播送报文申请 VM_B 的 MAC,取得 VM_B 的 MAC 后,网关再将数据报文发送给 VM_B。以上 MAC 地址学习的过程与集中式 VXLAN 中同子网互通流程中 MAC 地址学习的流程统一,不再赘述。当初假如 VM_A 和 VM_B 均已学到网关的 MAC、网关也曾经学到 VM_A 和 VM_B 的 MAC,上面就让咱们看下数据报文是如何从 VM_A 发送到 VM_B 的。

图 1 -16 不同子网 VM 互通报文转发流程

如上图所示,数据报文从 VM_A 发送到 VM_B 的流程如下:

  1. VM_A 先将数据报文发送给网关。报文的源 MAC 为 MAC_A,目标 MAC 为网关 BDIF 10 的 MAC_10,源 IP 地址为 IP_A,目标 IP 为 IP_B。
  2. VTEP_1 收到数据报文后,辨认此报文所属的 VNI(VNI 5000),并依据 MAC 表项对报文进行封装。能够看到,这里封装的外层源 IP 地址为本地 VTEP 的 IP 地址(IP_1),外层目标 IP 地址为对端 VTEP 的 IP 地址(IP_3);外层源 MAC 地址为本地 VTEP 的 MAC 地址(MAC_1),而外层目标 MAC 地址为去往目标 IP 的网络中下一跳设施的 MAC 地址。

封装后的报文,依据外层 MAC 和 IP 信息,在 IP 网络中进行传输,直至达到对端 VTEP。

  1. 报文进入 VTEP_3,VTEP_3 对报文进行解封装,失去 VM_A 发送的原始报文。而后,VTEP_3 会对报文做如下解决:

封装后的报文,依据外层 MAC 和 IP 信息,在 IP 网络中进行传输,直至达到对端 VTEP。

  • VTEP_3 发现该报文的目标 MAC 为本机 BDIF 10 接口的 MAC,而目标 IP 地址为 IP_B(10.1.20.1),所以会依据路由表查找到 IP_B 的下一跳。
  • 发现下一跳为 10.1.20.10,出接口为 BDIF 20。此时 VTEP_3 查问 ARP 表项,并将原始报文的源 MAC 批改为 BDIF 20 接口的 MAC(MAC_20),将目标 MAC 批改为 VM_B 的 MAC(MAC_B)。
  • 报文到 BDIF 20 接口时,辨认到须要进入 VXLAN 隧道(VNI 6000),所以依据 MAC 表对报文进行封装。这里封装的外层源 IP 地址为本地 VTEP 的 IP 地址(IP_3),外层目标 IP 地址为对端 VTEP 的 IP 地址(IP_2);外层源 MAC 地址为本地 VTEP 的 MAC 地址(MAC_3),而外层目标 MAC 地址为去往目标 IP 的网络中下一跳设施的 MAC 地址。

 报文达到 VTEP_2 后,VTEP_2 对报文进行解封装,失去内层的数据报文,并将其发送给 VM_B。

VM_B 回应 VM_A 的流程与上述过程相似,本文就不再赘述啦!

本文分享自华为云社区《为 VXLAN 技术介绍:什么是 VXLAN-002》,原文作者:The one。

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0