linux下vxlan理论学习及实战配置方法
网络系统管理赛项linux模块中涉及的vxlan技术,本次由灯塔微光带来的linux下vxlan理论学习及实践配置方法希望能给您带来帮助。
灯塔微光带来的-linux下vxlan理论学习及实战配置方法
linux下vxlan理论学习及实战配置方法
本次试验使用的操作系统环境基于Centos7.9版本进行学习。
什么是vxlan
vxlan一个协议,遵循了RFC标准,在RFC7348中有相关介绍,感兴趣的小伙伴可以下载学习。
vxlan 是一个在传统Layer 3 三层网络(网络层)上架设出来的Layer 2 二层网络(数据链路层)overlay网络。
Linux上对vxlan的支持
Linux对VXLAN的支持已经完备,支持单播和组播,IPv4和IPv6。
简单了解vxlan数据包封装概念
点重点:
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 |
单播配置方法
vxlan1 主机
1、添加vxlan0接口
[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 参数目的相同,二选一即可。
2、配置VXLAN接口地址并激活
[root@vxlan1 /]# ip addr add 192.168.1.1/24 dev vxlan0
[root@vxlan1 /]# ip link set vxlan0 up
3、查看路由和FDB表项
[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。
vxlan2 主机
1、添加vxlan0接口
[root@vxlan2 ~]# ip link add vxlan0 type vxlan id 42 dstport 4789 remote 10.30.10.50 local 10.30.10.51 dev ens33
2、配置VXLAN接口地址并激活
[root@vxlan2 ~]# ip addr add 192.168.1.2/24 dev vxlan0
[root@vxlan2 ~]# ip link set vxlan0 up
路由和FDB表项
[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
组播配置方法
vxlan1 主机,这样操作
[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
- 228.1.1.1为组播组,范围为224.0.0.0~239.255.255.255`
Host 02配置和Host 01类似,VNI=65535 group=228.1.1.1 这样操作
[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
- 多播模式下,vxlan的广播包会转发到多播组。
- 一般在事先不知道MAC地址和VTEP IP信息,可以使用多播。
- 但是,多播方式会带来报文浪费,在实际生产中VXLAN的多播模式很少被采用。
实验最终效果
- vxlan1主机
今天是2022年8月24日,2022年国赛已落下帷幕,Linux模块考到的vxlan,赶紧去验证下吧。
如果本文对你有帮助请点赞支持,谢谢。
更多推荐
所有评论(0)