VXLAN,是一种IP VPN,每台设备几乎都支持IP,而MPLS会有很多设备不会支持,所以VXLAN是使用的较多。
采用MAC in UDP封装方式,MAC指的是原始数据的以太头部被封装到新的UDP头部里面。是基于三层的一个虚拟网络。
技术背景
虚拟化被企业广泛部署,一台物理服务器可能会有很多虚拟机,每个虚拟机有一个MAC地址,或者给很多用户取用,每个业务都需要使用一个VLAN号。
二层扩展
虚拟化云计算集群内允许虚拟机任意迁移,导致相同业务(相同网段)虚拟机可能运行在不同的服务器,或同一个虚拟机(IP)先后运行在不同的服务器(物理位置),物理服务器可能分布在地理位置跨度非常大的机房,因此需要使用三层进行互联
多租户之间进行隔离
云化场景一般支持多租户,即不同用户共享物理资源。这对网络提出两个需求,租户间隔离和租户内互访
VXLAN简介
VXLAN在本质上是一个种VPN技术,能够在任意路由可达的物理网络(Underlay网络)上叠加二层虚拟网络(Overlay网络),通过VXLAN网关之间的VXLAN隧道实现VXLAN网络内部的互通,同时,也可以实现与传统的非VXLAN网络的互通
对于underlay网络的视图
对于overlay网络的视图
只看到A和B连接起来,只能看到有一条隧道
VXLAN在数据中心的应用
在数据中心采用Spine Leaf两层物理架构,结合VXLAN应用
在园区网络中使用VXLAN实现“一网多用”
不同的业务修建不同的隧道,实现逻辑的隔离
设备两端支持VXLAN即可,中间的设备不需要支持VXLAN,因为中间的设备都是支持IP的,而VXLAN是基于IP的。
VXLAN的报文格式
为什么要封装在UDP里面?
以太协议是不可靠的,把他封装在UDP中还是不可靠的,原始数据就是不可靠的数据。现在很多设备都有AI纠错功能,当数据丢包之后,芯片可以进行纠错把丢的数据给找回来。
设备时基于流转发的,因为源目都一样,所以可能无法流量实现负载均衡,因此使用端口(利用UDP)用来实现负载均衡,五元组除了端口之外其他四元组是不变的,只有源端口会变化
NVE
网络虚拟边缘,是一个设备(对应到以前的设备就是PE),NVE设备可以是软件实现(例如云计算里面的虚拟交换机)也可以是硬件实现。
作用就是将原有的数据变为VXLAN数据传送出去
VTEP
VXLAN的隧道端点(对应到以前就是Loopback地址),位于NVE中,用于VXLAN报文的封装和解封装
VXLAN报文(其外层IP头部)中源IP地址为源端VTEP的IP地址,目的IP地址为目的端VETP的IP地址
VNI,内层标签
VNI是手动分配的(类似于内层标签),例如A租户配了个VNI100,另一个租户B也配了VNI100,中间修建一条VXLAN隧道对应的VNI也是100,那么从A用户进来的VNI数据进入到隧道再从另一个B组合出来。
用于标识不同的大二层网络,支持16M的租户,BD的ID号
BD,桥域
类似传统网络中采用VLAN划分广播域,在VXLAN网络中一个BD就标识一个大二层广播域。
VNI以1:1方式映射到广播域BD,同一个BD内的终端可以进行二层互通
BD的编号在本地有效,两个BD编号相同不一定是一个广播域,但是两个BD绑定的VNI号一样那么就在一个广播域(可以进行二层通信),是否在同一个BD,就看VNI是否相同