《重识云原生系列》专题索引:
- 第一章——不谋全局不足以谋一域
- 第二章计算第1节——计算虚拟化技术总述
- 第三章云存储第1节——分布式云存储总述
- 第四章云网络第一节——云网络技术发展简述
- 第四章云网络4.2节——相关基础知识准备
- 第四章云网络4.3节——重要网络协议
- 第四章云网络4.3.1节——路由技术简述
- 第四章云网络4.3.2节——VLAN技术
- 第四章云网络4.3.3节——RIP协议
- 第四章云网络4.3.4节——OSPF协议
- 第四章云网络4.3.5节——EIGRP协议
- 第四章云网络4.3.6节——IS-IS协议
- 第四章云网络4.3.7节——BGP协议
- 第四章云网络4.3.7.2节——BGP协议概述
- 第四章云网络4.3.7.3节——BGP协议实现原理
- 第四章云网络4.3.7.4节——高级特性
- 第四章云网络4.3.7.5节——实操
- 第四章云网络4.3.7.6节——MP-BGP协议
- 第四章云网络4.3.8节——策略路由
- 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术
- 第四章云网络4.3.10节——VXLAN技术
- 第四章云网络4.3.10.2节——VXLAN Overlay网络方案设计
- 第四章云网络4.3.10.3节——VXLAN隧道机制
- 第四章云网络4.3.10.4节——VXLAN报文转发过程
- 第四章云网络4.3.10.5节——VXlan组网架构
- 第四章云网络4.3.10.6节——VXLAN应用部署方案
2 VXLAN Overlay网络设计
2.1 Overlay网络方案
VXLAN 本质上是一种重叠封装技术,它创建了一个覆盖在现有物理网络基础架构之上的虚拟网络。使用underlay IP网络,并在其上构建灵活的二层overlay逻辑网络。通过覆盖,任何第 2 层连接都可以跨越第 3 层网络。
使用覆盖网络有很多优点。
- 最明显的是它的分割。
- 覆盖和底层网络是完全独立的,因此如果底层网络拓扑发生变化,覆盖网络不会受到影响(设计方面)。
- 无需添加、移除或更新网络设备,即可重新设计覆盖网络。
当然,影响底层性能或正常运行时间的物理问题将反映在覆盖层上。例如,如果没有足够的设备来提供足够的带宽,覆盖也会受到影响。
2.2 叶脊(Underlay) VxLAN(Overlay)
Overlay VxLAN如何避免受到underlay变化的影响?答案是:使用交换结构,称为 Spine-and-Leaf。
在允许底层更改的同时保证 VxLAN 覆盖的性能、可扩展性、可靠性和灵活性的最佳方法是充分利用交换结构拓扑。交换结构拓扑的最佳示例是 Spine-and-Leaf,它通常用作底层网络。Spine-and-Leaf 是一个独立的架构,它不是 VxLAN 独有的,但通常与 VxLAN 相关联。通常叶脊是 VxLAN 的底层,VxLAN 是覆盖。
Spine-and-Leaf 两层:
- Spine:Spine层交换机仅用于通过 Leaf 交换机传递流量,他们不知道 VxLAN。
- Leaf:交换机的叶层互连主干和端点,叶层交换机创建 VxLAN 隧道、封装并将 VLAN 映射到 VNI,执行 VxLAN 功能的叶子交换机称为 VTPE(VxLAN 隧道端点);
所有的叶子交换机都有一个链接到每个骨干交换机,枝叶和交换机之间的每条链路都通过 IGP 路由协议(例如 BGP 或 OSPF)通过 IP 地址进行路由。这种拓扑使每个目的地只有两跳的距离。Leaf-and-switch 也可以使用 ECMP(等价多路径)在主干交换机或链路发生故障时恢复或平衡流量负载。叶脊结构拓扑与 VxLAN 高度相关,因为随着覆盖网络的扩展,支持底层可以物理增长或减小大小,而不会影响覆盖的设计。在叶脊底层之上添加 VxLAN 可实现东西向流量模式的 IP 移动性、完全可扩展性和容错性。
随着您的网络扩展,您的设计不需要改变。您只需要向底层添加更多交换机、IP 地址和链接即可。
2.3 VXLAN协议封装
2.3.1 VXLAN协议格式简述
到目前为止,我们知道 VxLAN 将第 2 层子网延伸到第 3 层网络限制,它在像 Spine-and-Leaf 这样的交换结构之上构建了一个逻辑覆盖网络。
为了实现这一点,VxLAN 将第 2 层以太网帧封装在 VxLAN 数据包中,该数据包也封装在 IP UDP 标头中。下图显示了 VxLAN 数据包格式。
VXLAN 将以下字段添加到原始第 2 层帧:
- 部 MAC 报头:这是包含下一跳传输信息的报头,它包括 VxLAN 端点的目标和源 MAC 地址、VLAN ID(16 位)和类型,外层 MAC 头的大小为 14 字节。
- P 标头:此标头允许跨 IP 网络传输,它包括 VxLAN 端点的目标和源 IP 地址,外层 IP 报头的大小为 20 字节。
- UDP 标头:此标头将数据包标识为 VxLAN,它包含 UDP 源端口、VxLAN 端口和 UDP 长度,UDP 报头的大小为 8 个字节。
- LAN 标头,此标头也称为 VxLAN 网络标识符 (VNI)。VNID 用于标识 VxLAN 网段,它类似于 MAC 报头上的 VLAN ID 标记(16 位),但大小为 24 位,最多允许 1600 万个不同的段。
2.3.2 VXLAN报文格式详述
- VXLAN是IETF定义的NVO3(Network Virtualization over Layer3)标准技术之一。
- 采用Mac in UDP封装方式将二层报文用三层协议进行封装。
- 支持24bits的VNI ID,满足数据中心大二层VM迁移和多租户需求。
VXLAN header(VXLAN头封装):
- VXLAN Flags:标记位,8比特,取值为00001000。
- VNI:VXLAN网络标识,用于区分VXLAN段,由24比特组成,支持多达16M的租户。一个租户可以有一个或多个VNI,不同VNI的租户之间不能直接进行二层相互通信。
- Reserved:保留未用,分别由24比特和8比特组成,设置为0。
Outer UDP header(外层UDP头封装):
- DestPort:目的UDP端口号,设置为4789。
- Source Port:源UDP端口号,根据内层以太报文头通过哈希算法计算后的值。
Outer IP header(外层IP头封装):
- IP SA:源IP地址,VXLAN隧道源端VTEP的IP地址。
- IP DA:目的IP地址,VXLAN隧道目的端VTEP的IP地址。
Outer Ethernet header(外层Ethernet头封装,Outer MAC Header):
- MAC DA:目的MAC地址,为到达目的VTEP的路径上,下一跳设备的MAC地址。
- MAC SA:源MAC地址,发送报文的源端VTEP的MAC地址。
- 802.1Q Tag:可选字段,该字段为报文中携带的VLAN Tag。
- Ethernet Type:以太报文类型,IP协议报文中该字段取值为0x0800。
2.3.3 VXLAN报文封装过程
VXLAN首部由8个字节组成,第1个字节为标志位,其中标志位I设为1表示是一个合法的VXLAN首部,其余标志则保留,在传输过程中必须置为0;第2-4字节为保留部分,第5-7字节为VXLAN标识符,用来表示唯一的一个逻辑网络;第8个字节同样为保留字段,暂未使用。
VXLAN传输过程中,将逻辑链路网络的数据帧添加VXLAN首部后,依次添加UDP首部,IP首部,以太网帧首部后,在物理网络中传输,数据帧的封装格式可以用下图来描述:
图:VXLAN数据封装过程
参考链接
解读VXLAN_佳的技术博客_51CTO博客
什么是 VxLAN ?它的优点有哪些? - 知乎
深度:什么是VxLAN?
关于VLAN和VXLAN的理解_octopusflying的博客-CSDN博客_vlan vxlan
VXlan 技术实现原理_轻飘风扬的博客-CSDN博客_vxlan原理
最好的vxlan介绍
VXLAN:云时代的虚拟化数据中心网络