VxLAN简介

1.VxLAN的定义

VxLAN 全称是 Visual eXtensible Local Area Network(虚拟扩展本地局域网),它是一个 VLAN 的扩展协议。

VxLAN 本质上是一种隧道封装技术。它使用 TCP/IP 协议栈的惯用手法–封装/解封装技术,将 L2 的以太网帧(Ethernet frames)封装成 L4 的 UDP 数据报(datagrams),然后在 L3 的网络中传输,效果就像 L2 的以太网帧在一个广播域中传输一样,实际上是跨越了 L3 网络,但却感知不到 L3 网络的存在。

如下图所示,左右两边是 L2 广播域,中间跨越一个 L3 网络,VTEP 是 VxLAN 隧道端点(VxLAN Tunnel Point),当 L2 以太网帧到达 VTEP 的时候,通过 VxLAN 的封装,跨越 L3 层网络完成通信,由于 VxLAN 的封装"屏蔽"了 L3 网络的存在,所以整个过程就像在同一个 L2 广播域中传输一样。
在这里插入图片描述

2.VxLAN的产生背景

  1. VLAN ID 数量的限制
    虚拟化技术发展起来后,一台物理主机可能虚拟出上百上千台虚拟设备,整个云数据中心可能要划分超过成千上万个的广播域,而 VLAN 的数量最多 4094 个。
    在这里插入图片描述
    从图中可以得到VLAN ID使用12 bit来表示,所以最多为4096个。

  2. 网络规模与MAC地址表耗尽
    交换机的原理是根据 MAC 地址表完成数据包的二层转发。在虚拟化技术没出现之前,数据中心的 TOR(Top of Rack) 交换机的一个端口连接一台物理主机,并对应一个 MAC 地址,当虚拟化技术出现之后,一台物理主机虚拟出几十甚至上百台虚拟机,TOR 交换机的一个端口虽然还是连接一台物理主机,但却对应多个 MAC 地址(这还在不算 VLAN 划分的情况下),如下图所示:
    在这里插入图片描述
    这无疑会造成 TOR MAC 地址表的膨胀,交换机本身 MAC 表的空间是有限的,如果溢出,就会造成交换机的不断泛洪,增加了处理负担。

    如果使用 VxLAN 则不然,VxLAN 使用 VTEP 封装虚拟机的二层帧,在三层网络上传输,通常,一台物理机对应一个 VTEP,一个 VTEP 可以被该台物理机上的所有虚拟机共有,所以,对于 TOR 交换机的 MAC 地址表来说,一台物理机只用记录一条 VTEP 信息即可。这样就避免了 MAC 地址表暴增的问题。

  3. 虚拟机迁移范围受网络架构限制
    虚拟机启动后,可能由于服务器资源等问题(如CPU过高,内存不够等),需要将虚拟机迁移到新的服务器上。为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址、MAC地址等参数保持不变。

    在采用 VLAN 的虚拟网络环境下,虚拟机的 VLAN 数据包直接在物理网络上传输,和物理网络上的 VLAN 数据包融合在一起,这样的好处是虚拟机能直接访问到物理网络的设备,但坏处也很明显,虚拟网络无法打破物理网络的界限,具体表现在虚拟机的部署和迁移不太灵活。
    在这里插入图片描述
    如图所示,网络1中的负载较重时,采用VLAN隔离的网络不能将虚拟机迁移到网络2中。

    使用 VxLAN 则完全不全在这些问题,通过 VxLAN 的封装,在一个 L3 网络上构建了 L2 网络,或者说基于 underlay 网络的 overlay 网络,虚拟机的数据可以打破 L2 网络的限制,在 L3 网络上传输,虚拟机的部署和迁移也不受物理网络的限制,可以灵活部署和迁移,使得整个数据中心保持一个平均的利用率。

3.VxLAN报文格式

在这里插入图片描述
其中VxLAN头由8Bytes组成,分别是:

  • Flags: 占 8bits,具体是 RRRRIRRR,其中 I 必须设置为 1,表示是是一个合法的 VxLAN ID,其它 7bits 的 R 作为保留字段并且设置为 0。
  • VNI: 占 24bits,VxLAN 的 ID 标识。最多可以支持2^24 = 16777216,约等于16M个虚拟网络。远远超过VLAN 4096个限制。
  • Reserved: 保留字段。

对于 UDP 头部,需要注意的是,目的端口(dst port) 默认设置为 4789,这是 IANA 分配的 VxLAN 协议使用端口号。

4.VxLAN数据传输过程

在这里插入图片描述

图中,VTEP 叫做 VxLAN 隧道端点(VxLAN Tunnel Endpoint),是 VxLAN 协议中将对原始数据包进行封装和解封装的设备,它可以由硬件设备实现,也可以由软件实现。

假如图中 VM1 ping VM2,会是怎样一个通信过程:

  1. VM1 不知道 VM2 的 MAC 地址,会发出 ARP 请求。
  2. VM1 所在主机的 VTEP 封装 ARP 请求包,并向网络中其余 VTEP 广播。同时在 MAC 地址表中记录 VM1 的表项。
  3. VM2 所在主机的 VTEP 接收 ARP 请求包,解封装之后将原始包发到 VM2,同时记录 VM1 的 MAC 地址表项。
  4. VM2 发出 ARP 响应,经过 VTEP,再次封装之后,由于之前学习到 VM1 的地址,所以直接单播发给 VM1 所在主机的 VTEP,同时记录 VM2 的 MAC 地址表项。
  5. VM1 所在主机 VTEP 接收 ARP 响应包,解封装之后发给 VM1,同时记录 VM2 的 MAC 地址表项。
  6. VM1 拿到 VM2 的 MAC 地址之后,发出 ICMP 包,这个时候 VTEP 的 MAC 地址表中已经学习到 VM2 的地址,所以直接封装之后,单播发给 VM2 所在主机 VTEP。
  7. VM2 所在主机 VTEP 解封装之后,直接发给 VM2。
  8. VM2 构造 ICMP 的响应包,同样的过程发给 VM1,至此完成整个 ping 的过程。

5.VxLAN存在的问题

VxLAN具有很多优势,但是同时也要注意到隧道技术本身有封装与解封装的开销,因此VxLAN的性能势必会有一定的下降。在实际使用时需要结合网络规模综合考虑。

6.参考

https://www.cnblogs.com/bakari/p/11131268.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值