本次试验使用的操作系统环境基于Centos7.9版本进行学习。
vxlan一个协议,遵循了RFC标准,在RFC7348中有相关介绍,感兴趣的小伙伴可以下载学习。
vxlan 是一个在传统Layer 3 三层网络(网络层)上架设出来的Layer 2 二层网络(数据链路层)overlay网络。
Linux对VXLAN的支持已经完备,支持单播和组播,IPv4和IPv6。
点重点:
1、VXLAN创建在原来的IP网络(三层)上,只要是三层可达的网络就能部署VXLAN。
2、在VXLAN网络的每个端点都有一个VTEP设备,负责VXLAN协议报文的封包和解包,也就是在虚拟报文上封装VTEP通信的报文头部。
3、VTEP(VXLAN Tunnel Endpoints):VXLAN网络的边缘设备,用来进行VXLAN报文的处理(封包和解包)
4、VNI(VXLAN Network Identifier):VNI是每个VXLAN的标识,占24 bits,所以是个24位整数,因此最大值是224=16777216
5、Underlay交换机(物理或虚拟)MTU 问题,传统网络 MTU 一般为 1500,这里加上 VXLAN 的封装多出的50 或 54 字节,需要调整 MTU 为 1550 或 1554,防止频繁分包。一般设置为1600+。
6、VXLAN通信双方(一般为虚拟机或容器)都认为在直接通信,并不知道底层网络的存在。从整体看,通过Vtep对包进行封装,每个VXLAN网络像是为通信的终端搭建了一个单独的通信通道,也就是隧道。
宿主机主机名 | IP地址 | vxlan |
---|---|---|
vxlan-1 | 10.30.10.50/24 | vxlan0:192.168.1.1 |
vxlan-2 | 10.30.10.51/24 | vxlan0:192.168.1.2 |
宿主机主机名 | IP地址 | vxlan |
---|---|---|
vxlan-1 | 10.30.10.50/24 | vxlan1:192.168.2.1 |
vxlan-2 | 10.30.10.51/24 | vxlan1:192.168.2.2 |
[root@vxlan1 /]#ip link add vxlan0 type vxlan id 42 dstport 4789 remote 10.30.10.51 local 10.30.10.50 dev ens33
重要参数解释: id 42 : 指定 VNI 的值,有效值在 1 到 (2^{24}) 之间。 dstport : VTEP 通信的端口,IANA 分配的端口是 4789。如果不指定,Linux 默认使用 8472。 remote : 对端 VTEP 的地址。 local : 当前节点 VTEP 要使用的 IP 地址,即当前节点隧道口的 IP 地址。 dev eth0 : 当前节点用于 VTEP 通信的设备,用来获取 VTEP IP 地址。这个参数与 local 参数目的相同,二选一即可。
[root@vxlan1 /]# ip addr add 192.168.1.1/24 dev vxlan0
[root@vxlan1 /]# ip link set vxlan0 up
[root@vxlan1 /]# ip route default via 10.30.10.254 dev ens33 proto static metric 100 10.30.10.0/24 dev ens33 proto kernel scope link src 10.30.10.50 metric 100 192.168.1.0/24 dev vxlan0 proto kernel scope link src 192.168.1.1
[root@vxlan1 /]# bridge fdb 01:00:5e:00:00:01 dev ens33 self permanent 33:33:00:00:00:01 dev ens33 self permanent 33:33:ff:c5:a1:25 dev ens33 self permanent 00:00:00:00:00:00 dev vxlan0 dst 10.30.10.51 via ens33 self permanent c2:cc:6f:5e:e8:16 dev vxlan0 dst 10.30.10.51 self
这个表项的意思是,默认的 VTEP 对端地址为 10.30.10.51。换句话说,原始报文经过 vxlan0 后会被内核添加上 VXLAN 头部,而外部 UDP 头的目的 IP 地址会被冠上 10.30.10.51。
[root@vxlan2 ~]# ip link add vxlan0 type vxlan id 42 dstport 4789 remote 10.30.10.50 local 10.30.10.51 dev ens33
[root@vxlan2 ~]# ip addr add 192.168.1.2/24 dev vxlan0
[root@vxlan2 ~]# ip link set vxlan0 up
[root@vxlan2 ~]# ip route default via 10.30.10.254 dev ens33 proto static metric 100 10.30.10.0/24 dev ens33 proto kernel scope link src 10.30.10.51 metric 100 192.168.1.0/24 dev vxlan0 proto kernel scope link src 192.168.1.2
[root@vxlan2 ~]# bridge fdb 01:00:5e:00:00:01 dev ens33 self permanent 33:33:00:00:00:01 dev ens33 self permanent 33:33:ff:bb:45:a4 dev ens33 self permanent 00:00:00:00:00:00 dev vxlan0 dst 10.30.10.50 via ens33 self permanent 0a:f1:ef:f5:e7:36 dev vxlan0 dst 10.30.10.50 self
ip link del vxlan1 删除vxlan
ip addr s vxlan1 查看vxlan
[root@vxlan1 /]# ip link add vxlan1 type vxlan id 65535 dstport 4789 local 10.30.10.50 group 228.1.1.1 dev ens33
[root@vxlan1 /]# ip addr add 192.168.2.1/24 dev vxlan1
[root@vxlan1 /]# ip link set vxlan1 up
[root@vxlan2 ~]# ip link add vxlan1 type vxlan id 65535 dstport 4789 local 10.30.10.51 group 228.1.1.1 dev ens33
[root@vxlan2 ~]# ip addr add 192.168.2.2/24 dev vxlan1
[root@vxlan2 ~]# ip link set vxlan1 up
如果本文对你有帮助请点赞支持,谢谢。