VXLAN技术背景

在当前数据中心网络的前提下,传统网络存在下面的问题:
数据中心部署可以参考尚文网络楠哥的文章
二层网络边界限制
随着虚拟化技术的应用,每个实体服务器上可能会运行大量虚拟机,因此二层网络中虚拟机MAC地址数量面临数量级的增长。为了正常转发数据报文,接入交换机需要学习每一个二层网络中虚拟机的MAC地址。受限于硬件水平,接入交换机的MAC地址表容量一般较小,难以满足需求。
网络隔离能力有限
在传统数据中心网络中,虚拟机通过VLAN进行流量隔离,不同租户虚拟机被划分到不同的VLAN中。VLAN技术通过VLAN ID对不同的VLAN进行区分,实际可分配的VLAN ID数量为4094,这个数量在某些大规模数据中心内是不足的。另外,传统VLAN无法满足网络动态调整的需求,网络的扩容和调整都非常困难。
虚拟机迁移限制
由于服务器硬件资源问题(如CPU过高、磁盘不够和内存不足等)或机房的搬迁转移,虚拟机需迁移到其他服务器上。为保证虚拟机迁移过程中业务不中断,要求虚拟机MAC地址和IP地址在迁移前后不发生改变,因此虚拟机只能在当前所在二层网络中进行迁移。
解决方法:
利用在传统网络层次(underlay)的基础上,虚拟出一个overlay层次,使得能跨越3层进行2层互通。即使用VXLAN技术实现,同时,VXLAN解决了VLAN数量不足和多租户的问题;

VXLAN基本概念

Vxlan(Virtual eXtensible LAN)虚拟可扩展局域网,是一种overlay的网络技术,建立在物理IP网络之上的虚拟以太网,使用MAC in UDP的方法进行封装。也就是,在原有报文的基础上,在外层再封装一层报文头

vxlan大二层 vxlan二层网关_IP

VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点):

VTEP是VXLAN隧道端点,位于NVE中,用于VXLAN报文的封装和解封装。

VXLAN报文(其外层IP头部)中源IP地址为源端VTEP的IP地址,目的IP地址为目的端VTEP的IP地址。

vxlan大二层 vxlan二层网关_运维_02

VNI(VXLAN Network Identifier,VXLAN网络标识):

类似VLAN ID,用于区分VXLAN段。不同VXLAN段的虚拟机不能直接二层相互通信。

一个租户可以有一个或多个VNI,VNI长度为24 bit,支持多达16 M的租户。

VXLAN 定义了一个 VTEP( VXLAN Tunnel End Point,虚拟扩展本地网络隧道终结结点)的实体, VTEP 将虚拟机产生的数据封装到 UDP 包头内再发送出去,虚拟机本身的 MAC 地址和 VLAN 信息在经过封装后已经不再作为数据转发的依据。VTEP 可以是软件、硬件服务器或网络设备,其实现形式非常灵活。如果将 VTEP 的功能直接集成到虚拟机 Hypervisor(虚拟化软件平台)内,则所有的虚拟机流量在进入交换机之前已经被打上了新的 VXLAN 标签和 UDP 包头,相当于建立了任意两点的隧道。由于虚拟机本身的 VLAN 信息对外已不可见, VXLAN 添加了一个新的标签 VNI( VXLAN Network Identifier,虚拟扩展本地网络标识符)。 VNI 取代 VLAN 用来表示不同的 VXLAN 网段( VXLAN Segment)。同 VLAN 的转发行为相同,只有具有相同 VNI,处于同一 VXLAN 网段内的虚拟机才能够相互通信。新的 UDP 包头和 VNI 标签意味着新的帧结构。 VTEP 在收到虚拟机发送的数据帧时会封装四个部分以形成新的帧头(内层的数据帧携带的原始的目/源 MAC、内层 VLAN tag 和以太网类型保持不变)。这四个部分由内而外分别是“VXLAN 头部”、“外层 UDP 头部”、“外层 IPv4 首部”、“外层以太帧首部”。

VXLAN通信模型

VXLAN 桥接原理(同VNI)

VXLAN 实现通过以太网报文封装在 UDP 中在 IP 网络传输, 在接收方,对 VXLAN 报文进行解封装成以太网报文再进行转发。

vxlan大二层 vxlan二层网关_vxlan大二层_03

VMA查询信息后发出普通以太网报文,源MAC/IP均为本身,目的MAC/IP都为VMB(二层通讯);

报文达到TOR1后,此时转发时就进行了Vxlan封装,主要有3个关键内容:

1)源MAC置为本端VTEP本身MAC,目的MAC置为即underlay下一跳设备的MAC;

2)源IP置为本端VTEP本身IP,目的IP置为对端VTEP的IP;

3)因为VMA所在的VLAN对应的是VNI-10,所以在外层报文需要添加上VNI 10;

3、经过VTEP之间的三层underlay网络转发后,最终E将收到该封装成VXLAN的报文,在传递过程中唯一有变化的就是外层报文头的源目的MAC地址;(同普通二三层通信原理一样)

4、TOR2将外层VXLAN报文头全部解封装,最终将内层报文通过二层转发给VMB;(VMB收到的即是普通的以太网报文,接收)VXLAN 报文隧道头端复制方式泛洪

VXLAN 采用隧道头端复制方式对广播、 组播及未知名单播进行报文泛洪。 (ARP为例)

vxlan大二层 vxlan二层网关_vxlan大二层_04

VM A 发送 ARP 请求, 交换机 TOR1 收到报文 ARP 请求的广播报文,由于报文是广播报文, 所以需要通过隧道头端复制的方式进行泛洪, 封装成 2 份单播报文分别通过隧道发送到 TOR2、 TOR4(TOR1 广播会向所有的隧道泛洪, TOR1 和 TOR2、 TOR4 都建立了隧道)。

D单播VXLAN 报文进行转发

TOR2 收到 VXLAN 报文, 将该报文解封装成以太网报文并进行 VXLAN 地址学习 ( VXLAN:10 MAC: A IP: TOR1,解封装后的报文广播泛洪至 VM B, VM B 收到 ARP 请求并应答。

TOR 2 收到 VM B 发送的 ARP 应答报文,查找地址表,得到出口目的为 IP 地址TOR1 。交换机将报文封装成发往交换机 TOR1 的单播 VXLAN 报文(外层源 IP 为 TOR2)。

IP 核心网对 VXLAN 报文进行转发

TOR 1 收到 VM B 的 ARP 应答 VXLAN 封装报文,将报文解封装成以太网报文,进行地址学习(VXLAN: 10 MAC:B IP: TOR2 )和转发, VM A 收到 ARP 应答。

有问题大家可以留言讨论,关注系统相关知识以及云计算相关内容的可以参考尚文网络楠哥文章,认准尚文网络成为一名优秀的IT人。
----尚文网络奎哥