searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

快速配置VXLAN隧道

2023-05-24 07:43:26
8311
0

 

我们在学习VXLAN(Virtual eXtensible LAN,虚拟可扩展局域网)时了解到,通过使用VXLAN隧道在跨三层的underlay网络上构建二层overlay网络,可以实现二层桥接域(bridge domains,BD)跨越多个网络设备或公网。这使得在地理位置上分离的服务器也可以共同位于同一数据中心,只要它们可以通过底层的三层网络访问即可。

VPP中的VTEP(VXLAN Tunnel End Points,VXLAN隧道端点)设备就是VPP,VTEP是在创建VXLAN隧道时指定的,每个VXLAN隧道的源IP地址和目标IP地址就是本地服务器VTEP地址和目标服务器VTEP地址。

和H3C设备一样,VTEP设备负责对VXLAN流量进行封装和解封装操作,封装和解封装过程如下图所示:

原理大家都已经非常清楚了,我们进来来测试用VPP配置一下VXLAN隧道,组网图如下所示:

我们首先按组网图所示,配置互联接口和路由信息,调通底层网络。

vppctl set int state eth2 up

vppctl set int ip address eth2 12.1.1.1/24

vppctl ip route add 23.1.1.0/24 via 12.1.1.2

在VPP72上创建一个BD ID为11的桥接域,同时配置启用学习、转发、未知单播泛洪和泛洪,禁用ARP代答。

vppctl create bridge-domain 11 learn 1 forward 1 uu-flood 1 flood 1 arp-term 0

创建一个VRF(Virtual Routing and Forwarding)。

**ip table add 11

VPP提供了创建VXLAN隧道接口的能力,该隧道接口可以添加到桥接域中作为桥接端口参与二层转发。然后我们创建一个VXLAN隧道(源地址为VPP72的接口eth2,目的地址为VPP73的接口eth2),将其绑定BD ID为11的桥接域:

vppctl create vxlan tunnel src 12.1.1.1 dst 23.1.1.3 vni 11 decap-next l2

vppctl set interface l2 bridge vxlan_tunnel0 11

注意,VXLAN封装中的UDP目标端口号必须使用IANA为VXLAN分配的4789,不可更改。

VPP中的一个BD只能拥有一个BVI(Bridge Virtual Interface,桥接虚拟接口),BVI接口可能绑定多个VXLAN隧道和以太网桥接接口。BVI、VXLAN和以太网的桥接接口都必须正确配置才能相互转发流量。BVI允许不同BD或VXLAN网段上的虚拟机通过IRB(Integrated Routing and Bridging,集成路由和桥接)相互连接。

BD的BVI是通过创建和设置环回口来设置的,如果VPP分配的环回口MAC地址用于BVI,则在使用VXLAN隧道连接服务器之间的多个BD时,可能会发生MAC地址冲突,所以建议在创建环回口时手工配置MAC地址。然后将环回口添加到BD 11作为其BVI接口,并为其分配IP地址。

vppctl loopback create mac 1a:2b:3c:4d:5e:6f

vppctl set interface l2 bridge loop0 11 bvi

vppctl set interface state loop0 up

vppctl set interface ip address loop0 13.1.1.1/24

然后将接口eth1也加入到BD下。

vppctl set interface state eth1 up

vppctl set interface l2 bridge eth1 11

同样的,我们配置VPP73设备。

vppctl set int state eth2 up

vppctl set int ip address eth2 23.1.1.3/24

vppctl ip route add 12.1.1.0/24 via 23.1.1.2

vppctl create bridge-domain 11 learn 1 forward 1 uu-flood 1 flood 1 arp-term 0

vppctl create vxlan tunnel src 23.1.1.3 dst 12.1.1.1 vni 11 decap-next l2

vppctl set interface l2 bridge vxlan_tunnel0 11

vppctl loopback create mac a1:b2:c3:d4:e5:f6

vppctl set interface l2 bridge loop0 11 bvi

vppctl set interface state loop0 up

vppctl set interface ip address loop0 13.1.1.3/24

vppctl set interface state eth1 up

vppctl set interface l2 bridge eth1 11

查看VXLAN隧道信息。

vppctl show vxlan tunnel

查看桥接域信息。

vppctl show bridge-domain 11

vppctl show bridge-domain 11 int

vppctl show bridge-domain 11 arp

vppctl show bridge-domain 11 detail

查看接口信息。

vppctl show interface

在主机上测试业务情况。

打个流测试一下。

3.91 Gbps,就那么回事吧。

VPP官网还特别强调,在将VXLAN隧道接口、BVI/环回口和以太网口添加到BD时,必须为它们配置相同且非零的水平分割组(Split Horizon Group,SHG)编号。否则,泛洪数据包可能会在具有相同VXLAN标识的服务器之间产生环路。

但是实际情况是,我把SHG都配置为了1,结果两端的主机无法互通。

此外,我们开始配置的BD关闭了ARP代答功能,我们也可以使用以下命令启用 ARP代答功能。

vppctl set bridge-domain arp term 11

开启ARP代答功能之后,我们就可以向BD中添加ARP表项条目。

vppctl set bridge-domain arp entry 11 13.1.1.22 00:50:56:8e:c9:ad

vppctl set bridge-domain arp entry 11 13.1.1.11 00:50:56:8e:4d:bd

此时我们就可以通过命令查看BD的ARP信息了。

0条评论
0 / 1000
肖****梦
2文章数
1粉丝数
肖****梦
2 文章 | 1 粉丝
肖****梦
2文章数
1粉丝数
肖****梦
2 文章 | 1 粉丝
原创

快速配置VXLAN隧道

2023-05-24 07:43:26
8311
0

 

我们在学习VXLAN(Virtual eXtensible LAN,虚拟可扩展局域网)时了解到,通过使用VXLAN隧道在跨三层的underlay网络上构建二层overlay网络,可以实现二层桥接域(bridge domains,BD)跨越多个网络设备或公网。这使得在地理位置上分离的服务器也可以共同位于同一数据中心,只要它们可以通过底层的三层网络访问即可。

VPP中的VTEP(VXLAN Tunnel End Points,VXLAN隧道端点)设备就是VPP,VTEP是在创建VXLAN隧道时指定的,每个VXLAN隧道的源IP地址和目标IP地址就是本地服务器VTEP地址和目标服务器VTEP地址。

和H3C设备一样,VTEP设备负责对VXLAN流量进行封装和解封装操作,封装和解封装过程如下图所示:

原理大家都已经非常清楚了,我们进来来测试用VPP配置一下VXLAN隧道,组网图如下所示:

我们首先按组网图所示,配置互联接口和路由信息,调通底层网络。

vppctl set int state eth2 up

vppctl set int ip address eth2 12.1.1.1/24

vppctl ip route add 23.1.1.0/24 via 12.1.1.2

在VPP72上创建一个BD ID为11的桥接域,同时配置启用学习、转发、未知单播泛洪和泛洪,禁用ARP代答。

vppctl create bridge-domain 11 learn 1 forward 1 uu-flood 1 flood 1 arp-term 0

创建一个VRF(Virtual Routing and Forwarding)。

**ip table add 11

VPP提供了创建VXLAN隧道接口的能力,该隧道接口可以添加到桥接域中作为桥接端口参与二层转发。然后我们创建一个VXLAN隧道(源地址为VPP72的接口eth2,目的地址为VPP73的接口eth2),将其绑定BD ID为11的桥接域:

vppctl create vxlan tunnel src 12.1.1.1 dst 23.1.1.3 vni 11 decap-next l2

vppctl set interface l2 bridge vxlan_tunnel0 11

注意,VXLAN封装中的UDP目标端口号必须使用IANA为VXLAN分配的4789,不可更改。

VPP中的一个BD只能拥有一个BVI(Bridge Virtual Interface,桥接虚拟接口),BVI接口可能绑定多个VXLAN隧道和以太网桥接接口。BVI、VXLAN和以太网的桥接接口都必须正确配置才能相互转发流量。BVI允许不同BD或VXLAN网段上的虚拟机通过IRB(Integrated Routing and Bridging,集成路由和桥接)相互连接。

BD的BVI是通过创建和设置环回口来设置的,如果VPP分配的环回口MAC地址用于BVI,则在使用VXLAN隧道连接服务器之间的多个BD时,可能会发生MAC地址冲突,所以建议在创建环回口时手工配置MAC地址。然后将环回口添加到BD 11作为其BVI接口,并为其分配IP地址。

vppctl loopback create mac 1a:2b:3c:4d:5e:6f

vppctl set interface l2 bridge loop0 11 bvi

vppctl set interface state loop0 up

vppctl set interface ip address loop0 13.1.1.1/24

然后将接口eth1也加入到BD下。

vppctl set interface state eth1 up

vppctl set interface l2 bridge eth1 11

同样的,我们配置VPP73设备。

vppctl set int state eth2 up

vppctl set int ip address eth2 23.1.1.3/24

vppctl ip route add 12.1.1.0/24 via 23.1.1.2

vppctl create bridge-domain 11 learn 1 forward 1 uu-flood 1 flood 1 arp-term 0

vppctl create vxlan tunnel src 23.1.1.3 dst 12.1.1.1 vni 11 decap-next l2

vppctl set interface l2 bridge vxlan_tunnel0 11

vppctl loopback create mac a1:b2:c3:d4:e5:f6

vppctl set interface l2 bridge loop0 11 bvi

vppctl set interface state loop0 up

vppctl set interface ip address loop0 13.1.1.3/24

vppctl set interface state eth1 up

vppctl set interface l2 bridge eth1 11

查看VXLAN隧道信息。

vppctl show vxlan tunnel

查看桥接域信息。

vppctl show bridge-domain 11

vppctl show bridge-domain 11 int

vppctl show bridge-domain 11 arp

vppctl show bridge-domain 11 detail

查看接口信息。

vppctl show interface

在主机上测试业务情况。

打个流测试一下。

3.91 Gbps,就那么回事吧。

VPP官网还特别强调,在将VXLAN隧道接口、BVI/环回口和以太网口添加到BD时,必须为它们配置相同且非零的水平分割组(Split Horizon Group,SHG)编号。否则,泛洪数据包可能会在具有相同VXLAN标识的服务器之间产生环路。

但是实际情况是,我把SHG都配置为了1,结果两端的主机无法互通。

此外,我们开始配置的BD关闭了ARP代答功能,我们也可以使用以下命令启用 ARP代答功能。

vppctl set bridge-domain arp term 11

开启ARP代答功能之后,我们就可以向BD中添加ARP表项条目。

vppctl set bridge-domain arp entry 11 13.1.1.22 00:50:56:8e:c9:ad

vppctl set bridge-domain arp entry 11 13.1.1.11 00:50:56:8e:4d:bd

此时我们就可以通过命令查看BD的ARP信息了。

文章来自个人专栏
正义者联盟
2 文章 | 2 订阅
0条评论
0 / 1000
请输入你的评论
3
3