VxLAN详解

一、什么是VxLAN?

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

二、为什么需要VxLAN技术:

一台服务器可虚拟多台虚拟机,而一台虚拟机相当于一台主机。主机的数量发生了数量级的变化,这也为虚拟网络带来了如下问题:

1. 虚拟机规模受网络规格限制

在传统二层网络环境下,数据报文是通过查询MAC地址表进行二层转发,而MAC地址表的容量限制了虚拟机的数量。

2. 网络隔离能力限制

当前主流的网络隔离技术是VLAN,在大规模的虚拟化网络中部署存在如下限制:

① 由于IEEE 802.1Q中定义的VLAN Tag域只有12比特,仅能表示4096个VLAN,无法满足大二层网络中标识大量租户或租户群的需求。

② 传统二层网络中的VLAN无法满足网络动态调整的需求。

3. 虚拟机迁移范围受网络架构限制

虚拟机启动后,可能由于服务器资源等问题(如CPU过高,内存不够等),需要将虚拟机迁移到新的服务器上。为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址保持不变,这就要求业务网络是一个二层网络,且要求网络本身具备多路径的冗余备份和可靠性。

三、VxLAN是如何解决的:

1. 针对虚拟机规模受网络规格限制

VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP、MAC地址作为外层头进行封装,对网络只表现为封装后的参数。因此,极大降低了大二层网络对MAC地址规格的需求。

2. 针对网络隔离能力限制

VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的VXLAN段,从而满足了大量的用户标识。

3. 针对虚拟机迁移范围受网络架构限制

VXLAN通过采用MAC in UDP封装来延伸二层网络,将以太报文封装在IP报文之上,通过路由在网络中传输,无需关注虚拟机的MAC地址。且路由网络无网络结构限制,具备大规模扩展能力、故障自愈能力、负载均衡能力。通过路由网络,虚拟机迁移不受网络架构限制。

四、VxLAN隧道的建立:

VXLAN在两台交换机之间建立了一条隧道,将服务器发出的原始数据帧加以“包装”,好让原始报文可以在承载网络(比如IP网络)上传输。当到达目的服务器所连接的交换机后,离开VXLAN隧道,并将原始数据帧恢复出来,继续转发给目的服务器。

VxLAN VTEP

VTEP是VXLAN网络的边缘设备,是VXLAN隧道的起点和终点,VXLAN对用户原始数据帧的封装和解封装均在VTEP上进行。VTEP是VXLAN网络中绝对的主角,VTEP既可以是一台独立的网络设备,也可以是在服务器中的虚拟交换机也可以是路由器。源服务器发出的原始数据帧,在VTEP上被封装成VXLAN格式的报文,并在IP网络中传递到另外一个VTEP上,并经过解封转还原出原始的数据帧,最后转发给目的服务器。

VxLAN VNI

以太网数据帧中VLAN只占了12比特的空间,这使得VLAN的隔离能力在数据中心网络中力不从心。而VNI的出现,就是专门解决这个问题的。VNI(VXLAN 网络标识符),VNI是一种类似于VLAN ID的用户标识,一个VNI代表了一个租户,属于不同VNI的虚拟机之间不能直接进行二层通信。VXLAN报文封装时,给VNI分配了24比特的长度空间,使其可以支持海量租户的隔离。

在分布式网关部署场景下,VNI还可分为二层VNI和三层VNI,它们的作用不同:

① 二层VNI是普通的VNI,以1:1方式映射到广播域BD,实现VXLAN报文同子网的转发。

② 三层VNI和VPN实例进行关联,用于VXLAN报文跨子网的转发。

五、不同网段的两台主机之间的通信过程:

  1. 虚拟机A(10.0.0.2)想要与虚拟机B(20.0.0.2)进行通信。
  2. 虚拟机A生成一个数据包,并将目标IP设置为虚拟机B的IP地址(20.0.0.2)。
  3. VTEP设备A捕获到虚拟机A发出的数据包,并将其封装成VXLAN数据报文。
    • VTEP设备A会在数据包外部添加一个新的UDP头,源端口为动态分配的值,目的端口为4789(VXLAN的默认端口)。
    • 在VXLAN头中,VTEP设备A会填写虚拟网络标识符(VNI)以及源VTEP的IP地址和MAC地址。
  4. VTEP设备A将封装好的VXLAN数据报文发送到物理网络中。
  5. VTEP设备B接收到VXLAN数据报文,并进行解析。
    • VTEP设备B会从UDP头中提取出VXLAN数据报文。
    • 根据VXLAN头中的VNI,VTEP设备B知道这个数据包属于网段B。
  6. VTEP设备B根据VXLAN头中的目的VTEP IP地址,将数据包转发给虚拟机B所在的主机。
  7. 虚拟机B接收到数据包,并进行解封装,获取原始数据。
  8. 虚拟机B生成响应数据包,并将源IP设置为自身的IP地址(20.0.0.2),目标IP设置为虚拟机A的IP地址(10.0.0.2)。
  9. 类似地,VTEP设备B将响应数据包封装成VXLAN数据报文,并通过物理网络发送到VTEP设备A。
  10. VTEP设备A接收到VXLAN数据报文后解析,并将数据包转发给虚拟机A。
  11. 虚拟机A接收到响应数据包,完成通信过程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值