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是否相同
大二层概念
用户的VLAN一旦进入VXLAN里面,就没有VLAN的概念了,BD负责的就是进来之后把VLAN剥离掉,数据帧进入BD之后直接剥掉VLAN,没有VLAN的概念,送到对面的BD时再重新封装上VLAN
VAP
虚拟接入点,连接用户的接口
可以使用二层子接口也可以绑定VLAN,VAP要给BD绑定,BD要给VNI绑定
Border Edge
Edge,VXLAN网络的边缘接入设备,传统网络的流量由此进入VXLAN网络。
Border,VXLAN网络和外部网络通信的节点,用于外部流量进入VXLAN或VXLAN内部流量访问外部,一般连接具有三层转发能力的设备。
如果是Edge,那么对端连接的是主机或者服务器主机,终端
如果是Border,那么对端接的是其他网络
VXLAN隧道的建立方式
VXLAN隧道由一对VTEP确定,报文在VTEP设备进行封装之后再VXLAN隧道中依靠路由进行传输。只要VXLAN隧道的两端VTEP是三层路由可达的,VXLAN隧道就可以建立成功。
创建方式有两种,分别是静态隧道和动态隧道
- 静态隧道:通过用户手工配置本端和远端的VNI,VTEP IP地址和头端复制列表来完成
- 动态隧道:通过BGP EVPN方式动态建立VXLAN隧道。在VTEP之间建立BGP EVPN对等体,然后对等体之间利用BGP EVPN路由来互相传递VNI和VTEP IP地址信息,从而实现动态的建立VXLAN隧道。
VXLAN 二层网关,三层网关
二层网关:如果查了MAC地址表,发现MAC地址出口在本地就不需要二层网关,相反如果发现MAC地址的出口是VXLAN隧道那么就需要二层网关。
实现流量进入VXLAN网络,也可以用于同一VXLAN网络内终端的同子网通信
三层网关:VBDIF
进入二层网关剥离VID 打上VNI,进入三层网关剥离VNI,查路由表,打上别的VNI转发,再次进入二层网关剥离VNI,打上VID。
- PC1属于VLAN 10,首先从PC1发出的流量打上VLAN 10的标记
- 当VID进入了二层网关之后要查表转发,要进入VXLAN隧道,此时剥离VLAN ID 换成VNI编号1000
- 由于3层网关的VNI 编号也是1000那么流量也会进入SW3的BD 10,进入BD10 之后 VNI剥离,查询路由表发现VNI是2000,于是封装VNI2000继续转发流量
- 此时SW2的VNI编号也是2000 进入BD20 于是接收PC1来到流量查询MAC地址表发往PC2,并且打上VLAN TAG
划分一个VLAN 小二层 = 划分一个BD 大二层
VLAN 的名字 vlan name = BD的名字 bd 10
VLAN 的ID vlan 10 = BD的ID vni 10
实验
用CE12800设备,如果做实验做了一般,实验保存了,晚上再接着做实验,那么再开关机底层的配置就不生效了
相同BD互访
还是传统的MAC地址学习到方式,对源地址的学习而学习到的MAC地址。
打通R1 C2 C3的underlay
CE2
bridge-domain 1030 //创建BD 绑定1030
vxlan vni 1030 //VNI 1030
#
interface G1/0/9
undo shutdown
#
interface GE1/0/9.10 mode l2
encapsulation dot1q vid 10
bridge-domain 1030 //绑定到BD 1030里面
#
interface Nve1 //创建一个隧道接口,逻辑接口
sourec 2.2.2.2
vni 1030 head-end peer-list 3.3.3.3
关联VNI,head-end如果是BUM流量就分发给邻居,根据peer-list进行泛洪
两边的VNI要一样,才可以是一条隧道,一个BD只能绑定一个VNI,一对一的关系。
CE3
配置流程
1. 创建一个BD,给BD域关联一个VNI编号
bridge-domain 1030
vxlan vni 1030
2.下联PC接口的物理接口undo shutdonw
interface G1/0/9
undo shutdown
3. 把下联PC接口和BD做关联
interface G1/0/9.10 mode l2
encapsulation dot1q vid 30
bridge-domain 1030
4. 创建一个逻辑的NVE接口,指定源地址
interface Nve1
source 3.3.3.3
vni 1030 head-end peer -list 2.2.2.2
不同BD互访
CE1
bridge-domain 1030
vxlan vni 1030
#
bridge-domain 2040
vxlan vni 2040
#
interface vbdif 1030
ip add 192.168.1.1 24
interface vbdif 2040
ip add 192.168.2.1 24
#
interface Nve1
source 1.1.1.1
vni 1030 head-end peer-list 2.2.2.2
vni 2040 head-end peer-list 3.3.3.3
CE2
bridge-domain 1030
vxlan vni 1030
#
interface G1/0/1
undo shutdown
#
interface G1/0/1.10 mode l2
encapsulation dot1q vid 10
bridge-domain 1030
#
interface Nve1
source 2.2.2.2
vni 1030 head-end peer-list 1.1.1.1
CE3
bridge-domain 2040
vxlan vni 2040
#
interface G1/0/1
undo shutdown
#
interface G1/0/1.10 mode l2
encapsulation dot1q vid 40
bridge-domain 2040
#
interface Nve1
source 3.3.3.3
vni 2040 head-end peer-list 1.1.1.1
集中式网关,CE1创建两个BD与VBDIF,分别做两个BD的网关,并且分别与CE3 CE2建立隧道。