《重识云原生系列》专题索引:
- 第一章——不谋全局不足以谋一域
- 第二章计算第1节——计算虚拟化技术总述
- 第二章计算第2节——主流虚拟化技术之VMare ESXi
- 第二章计算第3节——主流虚拟化技术之Xen
- 第二章计算第4节——主流虚拟化技术之KVM
- 第二章计算第5节——商用云主机方案
- 第二章计算第6节——裸金属方案
- 第三章云存储第1节——分布式云存储总述
- 第三章云存储第2节——SPDK方案综述
- 第三章云存储第3节——Ceph统一存储方案
- 第三章云存储第4节——OpenStack Swift 对象存储方案
- 第三章云存储第5节——商用分布式云存储方案
- 第四章云网络第一节——云网络技术发展简述
- 第四章云网络4.2节——相关基础知识准备
- 第四章云网络4.3节——重要网络协议
- 第四章云网络4.3.1节——路由技术简述
- 第四章云网络4.3.2节——VLAN技术
- 第四章云网络4.3.3节——RIP协议
- 第四章云网络4.3.4节——OSPF协议
- 第四章云网络4.3.4.3节——OSPF协议工作原理
- 第四章云网络4.3.4.4节——[转载]OSPF域内路由
- 第四章云网络4.3.4.5节——[转载]OSPF外部路由
- 第四章云网络4.3.4.6节——[转载]OSPF特殊区域之Stub和Totally Stub区域详解及配置
- 第四章云网络4.3.4.7节——[转载]OSPF特殊区域之NSSA和Totally NSSA详解及配置
- 第四章云网络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应用部署方案
- 第四章云网络4.4节——Spine-Leaf网络架构
- 第四章云网络4.5节——大二层网络
- 第四章云网络4.6节——Underlay 和 Overlay概念
- 第四章云网络4.7.1节——网络虚拟化与卸载加速技术的演进简述
- 第四章云网络4.7.2节——virtio网络半虚拟化简介
- 第四章云网络4.7.3节——Vhost-net方案
- 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
- 第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
- 第四章云网络4.7.6节——virtio-blk存储虚拟化方案
- 第四章云网络4.7.8节——SR-IOV方案
- 第四章云网络4.7.9节——NFV
- 第四章云网络4.8.1节——SDN总述
- 第四章云网络4.8.2.1节——OpenFlow概述
- 第四章云网络4.8.2.2节——OpenFlow协议详解
- 第四章云网络4.8.2.3节——OpenFlow运行机制
- 第四章云网络4.8.3.1节——Open vSwitch简介
- 第四章云网络4.8.3.2节——Open vSwitch工作原理详解
- 第四章云网络4.8.4节——OpenStack与SDN的集成
- 第四章云网络4.8.5节——OpenDayLight
- 第四章云网络4.8.6节——Dragonflow
-
第四章云网络4.9.1节——网络卸载加速技术综述
-
第四章云网络4.9.2节——传统网络卸载技术
-
第四章云网络4.9.3.1节——DPDK技术综述
-
第四章云网络4.9.3.2节——DPDK原理详解
-
第四章云网络4.9.4.1节——智能网卡SmartNIC方案综述
-
第四章云网络4.9.4.2节——智能网卡实现
-
《云原生进阶之容器》专题第六章容器6.1.1节——容器综述
-
【云原生进阶之PaaS中间件】第一章Redis-1.1简介
-
【云原生进阶之PaaS中间件】第二章Zookeeper-1-综述
-
【云原生进阶之PaaS中间件】第三章Kafka-1-综述
-
【云原生进阶之PaaS中间件】第四章RabbitMQ-1-简介及工作模式
-
【云原生进阶之数据库技术】第一章MySQL-1-基础概述
-
【云原生进阶之数据库技术】第二章-Oracle-1-简介
-
【云原生进阶之数据库技术】第三章-PostgreSQL-1-综述
《云原生进阶之容器》专题索引:
-
第一章Docker核心技术1.1节——Docker综述
-
第一章Docker核心技术1.2节——Linux容器LXC
-
第一章Docker核心技术1.3节——命名空间Namespace
-
第一章Docker核心技术1.4节——chroot技术
-
第一章Docker核心技术1.5.1节——cgroup综述
-
第一章Docker核心技术1.5.2节——cgroups原理剖析
-
第一章Docker核心技术1.5.3节——cgroups数据结构剖析
-
第一章Docker核心技术1.5.4节——cgroups使用
-
第一章Docker核心技术1.6节——UnionFS
-
第一章Docker核心技术1.7节——Docker镜像技术剖析
-
第一章Docker核心技术1.8节——DockerFile解析
-
第一章Docker核心技术1.9节——docker-compose容器编排
-
第一章Docker核心技术1.10节——Docker网络模型设计
-
第二章——Kubernetes概述
-
第二章Controller Manager原理剖析--2.1节Controller Manager综述
-
第二章Controller Manager原理2.2节--client-go剖析
-
第二章Controller Manager原理2.3节--Reflector分析
-
第二章Controller Manager原理2.4节--Informer机制剖析
-
第二章Controller Manager原理2.5节--DeltaFIFO剖析
-
第二章Controller Manager原理2.6节--Informer controller
-
第二章Controller Manager原理2.7节--Indexer剖析
-
第二章Controller Manager原理2.8节--Resync机制
-
第三章List-Watch机制3.1节-- List-Watch机制剖析
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的博客-****博客_vlan vxlan
VXlan 技术实现原理_轻飘风扬的博客-****博客_vxlan原理
最好的vxlan介绍
VXLAN:云时代的虚拟化数据中心网络