VPP配置指南:配置VXLAN隧道

前面我们在学习VXLAN(Virtual eXtensible LAN,虚拟可扩展局域网)时了解到VXLAN小实验:VXLAN头端复制配置,通过使用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 upvppctl set int ip address eth2 12.1.1.1/24vppctl 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

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 l2vppctl 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:6fvppctl set interface l2 bridge loop0 11 bvivppctl set interface state loop0 upvppctl set interface ip address loop0 13.1.1.1/24

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

vppctl set interface state eth1 upvppctl set interface l2 bridge eth1 11

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

vppctl set int state eth2 upvppctl set int ip address eth2 23.1.1.3/24vppctl ip route add 12.1.1.0/24 via 23.1.1.2vppctl create bridge-domain 11 learn 1 forward 1 uu-flood 1 flood 1 arp-term 0vppctl create vxlan tunnel src 23.1.1.3 dst 12.1.1.1 vni 11 decap-next l2vppctl set interface l2 bridge vxlan_tunnel0 11vppctl loopback create mac a1:b2:c3:d4:e5:f6vppctl set interface l2 bridge loop0 11 bvivppctl set interface state loop0 upvppctl set interface ip address loop0 13.1.1.3/24vppctl set interface state eth1 upvppctl set interface l2 bridge eth1 11

查看VXLAN隧道信息。

vppctl show vxlan tunnel

查看桥接域信息。

vppctl show bridge-domain 11vppctl show bridge-domain 11 intvppctl show bridge-domain 11 arpvppctl show bridge-domain 11 detail

查看接口信息。

vppctl show interface

在主机上测试业务情况。

打个流测试一下。

3.91 Gbps,就那么回事吧。

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

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

此外,我们开始配置的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:advppctl set bridge-domain arp entry 11 13.1.1.11 00:50:56:8e:4d:bd

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

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇