VXLAN (Virtual eXtensible Local Area Network)是为了解决 IEEE 802.1Q 中 VLAN id(4096)有 限的问题而设计的一种隧道协议,在 IETF RFC 7348 中做了详细的描述。使用 VXLAN,该标识符的大小扩 展到 24-bit(16777216)。它在第三层网络上创建了一个第二层传输的解决方案,VXLAN 协议运行在 UDP 协议上。
与大多数隧道不同,VXLAN 是 1 到 N 的网络,而不是点对点的网络。VXLAN 设备可以像网桥一样动态 地学习另一个端点的 IP 地址。组播或单播用于泛洪广播、未知单播和组播流量。
只有在同一 VXLAN 网段内的设备才能相互通信,每个 VXLAN 网段用一个 24-bit 的网段标识,称为 VNI (VXLAN Network Identifier)。
VXLAN 隧道的终端节点称为 VTEP(VXLAN tunnel endpoint),是 VXLAN 网络的边缘设备,是 VXLAN 隧道的起点和终点,源服务器发出的原始数据帧,在 VTEP 上被封装成 VXLAN 格式的报文,并在 IP 网络中 传递到另外一个 VTEP 上,并经过解封转还原出原始的数据帧,最后转发给目的服务器。
配置包括 VXLAN 接口和 VTEP 两个参数项,Winbox 只开放了 VXLAN 项配置,而 VTEP 配置仅提供了 命令行。
该配置是两个静态的 VTEP 端点之间创建单个 VXLAN 隧道,连接 192.168.188.0/24 的网络
![](https://pic1.zhimg.com/80/v2-75941717474f2e4a6251089fc198b4ab_720w.png?source=d16d100b)
在两台路由器同时创建 VXLAN 接口,使用默认 UDP 端口,设置 vni=10,下面是 R1 路由器 IP 地址配
置
[admin@R1] /ip/address> print
Columns: ADDRESS, NETWORK, INTERFACE
# ADDRESS NETWORK INTERFACE
0 118.1.2.1/24 118.1.2.0 ether1
R2 路由器的 IP 地址配置
[admin@R2] /ip/address> print
Columns: ADDRESS, NETWORK, INTERFACE
# ADDRESS NETWORK INTERFACE
0 118.1.2.2/24 118.1.2.0 ether1
R1 路由器和 R2 路由器同时配置 vxlan 接口,设置默认端口和 vni=10
[admin@R1] >/interface vxlan
[admin@R1] /interface/vxlan> add name=vxlan1 port=8472 vni=10
#R2
[admin@R2] /interface/vxlan> add name=vxlan1 port=8472 vni=10
注意,如果按照上面的配置,在 Winbox 创建时会报错,要求设置组播地址和接口,因此可以做以下配
置
[admin@R2] /interface/vxlan>add group=239.0.0.1 interface=ether1 name=vxlan1 port=8472 vni= 10
接下来,配置两台路由器的 VTEP,在 Winbox 还未添加 VTEP 的配置界面,暂时只能在命令行操作,
路由器 1 配置
[admin@R1] /interface/vxlan> vteps
[admin@R1] /interface/vxlan/vteps>add interface=vxlan1 remote-ip=118.1.2.2
隧道配置完成,之后可以将 VXLAN 接口和 ether2 以太网口加入到 Bridge 中,R2 路由器配置
[admin@R1] >/interface bridge
[admin@R1] /interface/bridge>add name=bridge1
[admin@R1] /interface/bridge> port
[admin@R1] /interface/bridge/port>add interface=vxlan1 bridge=bridge1
[admin@R1] /interface/bridge/port>add interface=ether2 bridge=bridge1
R2 路由器做相同的配置
[admin@R2] >/interface bridge [admin@R2] /interface/bridge>add name=bridge1 [admin@R2] /interface/bridge> port [admin@R2] /interface/bridge/port>add interface=vxlan1 bridge=bridge1 [admin@R2] /interface/bridge/port>add interface=ether2 bridge=bridge1