介绍


虚拟可扩展局域网(VXLAN)是一个隧道协议,用来解决IEEE 802.1Q中有限的VLAN ID(4096)的问题,它由IETF RFC 7348描述。通过VXLAN,标识符的大小被扩展到24位(16777216)。它在第三层网络上创建了一个第二层覆盖方案,该协议通过UDP运行。RouterOS VXLAN接口支持IPv4或IPv6(从7.6版开始),但不支持双堆栈。

VXLAN为IPv4创建一个50字节的开销,为IPv6创建一个70字节的开销。在配置VXLAN时,建议通过相应配置MTU或限制以太网帧的大小,确保封装的以太网帧的大小不超过基础网络的MTU。

只有同一VXLAN网段内的设备才能相互通信。 每个VXLAN网段通过一个24位的网段ID来识别,称为VXLAN网络标识符(VNI)。与大多数隧道不同,VXLAN是一个1到N的网络,而不仅仅是点到点。一个VXLAN设备可以以类似于学习网桥的方式动态地学习另一个端点的IP地址。多播或单播是用来泛滥广播、未知单播和多播流量。终止VXLAN隧道的VXLAN端点被称为VXLAN隧道端点(VTEPs)。

配置选项


本节介绍VXLAN接口和VTEP配置选项。

Sub-menu: /interface vxlan

属性 说明
arp (disabled | enabled | local-proxy-arp | proxy-arp | reply-only; Default: enabled) 地址解析协议设置
- disabled- 接口不使用ARP
- enabled - 该接口使用ARP
- local-proxy-arp- 路由器在接口上执行代理ARP,并向同一接口发送回复。
- proxy-arp- 路由器在该接口上执行代理ARP,并向其他接口发送回复。
- reply-only- 接口将只回复来自匹配的IP地址/MAC地址组合的请求,这些组合在IP/ARP表中被输入为静态项。动态项不会自动存储在IP/ARP表中。因此,要使通信成功,必须已经存在一个有效的静态项。
arp-timeout (auto | integer; Default: auto) 如果没有收到IP的数据包,ARP记录会在ARP表中保留多长时间。值auto等于IP/Settings中arp-timeout的值,默认为30s。
comment (string; Default: ) 界面的简短说明。
disabled (yes | no; Default: no) 接口是否被禁用。
dont-fragment (disabled | enabled | inherit; Default: disabled) Don't Fragment (DF)标志控制一个数据包在通过网络发送之前是否可以被分解成更小的数据包,称为片段。当配置VXLAN时,这个设置决定了IPv4外部头的DF标志的存在,如果封装的数据包超过了出站接口MTU,可以控制数据包的碎片化。这个设置有三个选项。
- disabled- DF标志不在外层IPv4头上设置,这意味着如果数据包太大,无法通过出站接口发送,可以进行分片。当VXLAN使用IPv6底层时,这也允许数据包碎片化。
- enabled- DF标志总是在外层IPv4头上设置,这意味着数据包不会被分割,如果超过出站接口的MTU就会被放弃。这也避免了VXLAN使用IPv6底层时的数据包分片。
- inherit- 外层IPv4头的DF标志是基于内部IPv4的DF标志。如果内部IPv4头设置了DF标志,外部IPv4头也会设置。如果数据包超过了出站接口的MTU,并且DF被设置,它将被丢弃。如果内部数据包是非IP的,外部IPv4头将没有DF标志设置,数据包可以被分片。如果内部数据包是IPv6,外部IPv4头将始终设置DF标志,数据包不能被分片。注意,当VXLAN使用IPv6底层时,这个设置没有任何作用,与disabled的处理方式相同。
该设置从RouterOS 7.8版本开始可用。
group (IPv4 | IPv6; Default: ) 当指定时,多播组地址可用于在VTEP之间转发广播、未知单播和多播流量。这个属性需要指定interface设置。该接口将使用IGMP或MLD来加入指定的组播组,请确保添加必要的PIM和IGMP/MDL配置。当这个属性被设置时,vteps-ip-version会自动更新为使用的组播IP版本。
interface (name; Default: ) 用于多播转发的接口名称。这个属性需要指定 "group "设置。
local-address (IPv4 | IPv6; Default: ) 指定VXLAN接口的本地源地址。如果不设置,出站接口的一个IP地址将被选作VXLAN数据包的源地址。当设置了属性后,vteps-ip-version会自动更新为使用的本地IP版本。该设置从RouterOS 7.7版本开始可用。
mac-address (read-only, Default: ) 自动分配接口MAC地址。此设置不能改变。
mtu (integer; Default: 1500) 对于最大传输单元,VXLAN接口将默认设置MTU为1500。l2mtu将根据相关的接口自动设置(减去对应于VXLAN头的50字节)。如果没有指定接口,则使用l2mtu值65535。不能改变 "l2mtu"。
name (text; Default: vxlan1) 接口名称
port (integer: 1..65535__; Default: 8472) 使用的UDP端口号。
vni (integer: 1..16777216; Default: ) VXLAN网络标识符(VNI)。
vrf (name; Default: main) 为VTEP监听和进行连接的VXLAN接口设置VRF。当使用 "接口 "和多播 "组 "设置时,不支持VRF。该设置从RouterOS 7.7版本开始可用。
vteps-ip-version (ipv4 | ipv6; Default: ipv4) 用于静态配置的VTEPs的IP协议版本。RouterOS VXLAN接口不支持双栈,任何配置了相反IP版本的远程VTEP将被忽略。当组播本地地址属性被设置时,vteps-ip-version自动更新为使用的IP版本。该设置从RouterOS 7.6版本开始可用。

Sub-menu: /interface vxlan vteps

属性 说明
interface (name; Default: ) VXLAN接口名称
port (integer: 1..65535__; Default: 8472) 使用的UDP端口号。
remote-ip (IPv4 | IPv6; Default: ) 远程VTEP的IPv4或IPv6目标地址。

配置示例


这个配置示例在两个静态配置的VTEP端点之间创建了一个单一的VXLAN隧道。

首先,在两个路由器上创建VXLAN接口。

/interface vxlan
add name=vxlan1 port=8472 vni=10

然后在两台路由器上配置VTEP,分别配置IPv4目标地址。两台设备都应该有一条通往目的地址的有效路由。

# Router1
/interface vxlan vteps
add interface=vxlan1 remote-ip=192.168.10.10

# Router2
/interface vxlan vteps
add interface=vxlan1 remote-ip=192.168.20.20

配置完成。可以将VXLAN接口纳入与其他以太网接口组成的网桥。