vxlan基础配置-静态隧道、集中式网关
vxlan基础配置-静态隧道、集中式网关
此配置使用设备如下:
设备型号:H3C S6520X-54QC-EI
版本:H3C Comware Software, Version 7.1.070, Release 6652P02
设备型号:Huawei AR6140-16G4XG
版本:VRP (R) software, Version 5.170 (AR6140 V300R022C00SPC100)
设备型号:VyOS 1.5-rolling-202401161743
Architecture: x86_64
Boot via: installed image
System type: VMware guest
测试用终端:WIN11 以及使用交换机/路由器模拟了多个终端(具体说明见此链接)
vxlan简要说明
vxlan(Virtual eXtensible Local Area Network)从网络协议上来说本质上是一个二层隧道,二层隧道对于网络设备来说本身没什么意义,此种隧道是给终端设备使用的;
vlan环境下终端设备接入一般使用vlan access或者dotq trunk,vxlan接入情况可以将vlan和vxlan映射,也可以在接口上直接封装。
传统的以太网没有基于网络设备的独立的控制协议,或着说以太网交换机是不被感知的(对比IB网,IB交换机、甚至交换机的每个端口都会被控制器感知);从交换机角度来看一切都是业务数据交换机本身并不参与通信,终端通信中使用的arp/nd等协议不承载业务数据,但却是数据通信必要的,通常将其归为一种控制协议。但这种控制协议的流量和数据流量(比如tcp流量)在交换机中转发时并不会区别对待。因为这种简单,以太网交换机的设计和实现也非常简单,基本上可以描述为“学习”“转发”“广播/泛洪”,单播流量基于FIB转发,BUM流量泛洪,这极大的推进了以太网的普及。
VXLAN作为一种网络虚拟化的实现方式就是在模仿传统以太网交换机的行为,同时引入一些优化方法以获得更好的性能。
静态vxlan隧道情况下默认没有优化,基本就可以看成是一个经典以太网,转发行为和普通交换机一致。
配置逻辑
不同厂商不同型号设备配置逻辑是不一样,相关术语也不尽相同;
VETP:(Virtual Tunnel Endpoints)VXLAN隧道端点,即能处理vxlan的网络节点,也可以说是终结vxlan隧道的节点。
VNI/VNID:vxlan ID,类比vlan id
VSI:虚拟交换实例,H3C的术语,就是一个广播域。
BD:bridge-domain 直接译为桥接域,也是广播域的意思,Huawei使用此术语。
vsi-if:H3C类比vlanif的用法,vsi内的虚拟三层接口
vbdif:Huawei类比vlanif的用法,bd内的虚拟三层接口
Huawei/Cisco的vxlan隧道叫做Nve接口(Network Virtualization Edge)
H3C的vxlan隧道接口沿用tunnel,模式为vxlan
Linux/Vyos的隧道口就叫vxlan
下面以H3C S6520X、Huawei AR路由器、VYOS软路由为例展示一下最基本的静态vxlan隧道互联方法。
基础拓扑
基础拓扑如下,底层互联网络未展示,3.3.3.3、5.5.5.5、7.7.7.7路由互通;
H3C(新华三)
#底层路由设置略
#H3C S6520X 需要切换模式才支持vxlan,重启后生效
switch-mode 1
l2vpn enable
undo vxlan ip-forwarding
#建立vsi,关联vxlan
vsi aaa
vxlan 101
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.0
#vxlan 隧道,逻辑上是一个p2p隧道
interface Tunnel1 mode vxlan
source LoopBack0
destination 7.7.7.7
#vxlan 隧道,逻辑上是一个p2p隧道
interface Tunnel3 mode vxlan
source LoopBack0
destination 5.5.5.5
#vsi与隧道关联
vsi aaa
vxlan 101
tunnel 1
tunnel 3
#vxlan接入,在接口使用service-ins 封装
interface Ten-GigabitEthernet1/0/13
port link-mode bridge
service-instance 1000
encapsulation untagged
xconnect vsi aaa
HUAWEI(华为)
#底层路由设置略
bridge-domain 101
vxlan vni 101
#
interface LoopBack0
ip address 5.5.5.5 255.255.255.255
#vxlan隧道,逻辑上是一个NBMA的p2mp隧道
interface Nve1
source 5.5.5.5
vni 101 head-end peer-list 3.3.3.3
#vxlan接入
interface GigabitEthernet0/0/1
port link-type trunk
#不支持主接口直接封装,子接口方式封装
interface GigabitEthernet0/0/1.101 mode l2
encapsulation untag
bridge-domain 101
VYOS
#底层路由设置略
config
set interfaces loopback lo address '7.7.7.7/32'
#vxlan隧道,逻辑上是一个NBMA的p2mp隧道
set interfaces vxlan vxlan101 mtu '1400'
set interfaces vxlan vxlan101 port '4789'
set interfaces vxlan vxlan101 remote '3.3.3.3'
set interfaces vxlan vxlan101 source-address '7.7.7.7'
set interfaces vxlan vxlan101 vni '101'
#使用桥接方式将vxlan隧道与接入口关联
set interfaces bridge br1 member interface eth2
set interfaces bridge br1 member interface vxlan101
commit
连通性测试
如上图三台设备中间建立了两条vxlan隧道,看下面通信状况:
发现只有终端所接入的VETP之间有隧道的情况下才能正常通信,否则即使逻辑上在同一个广播域也无法通信,这里涉及到vxlan的一个防环机制--
隧道收到的数据包不能向隧道转发
。
101发起的数据包:
111发起的数据包:
121发起的数据包:
V:正常通信 X:无法通信
终端 | 101 | 111 | 121 |
---|---|---|---|
101 | - | V | V |
111 | V | - | X |
121 | V | X | - |
解决方式就是在AR和VYOS之间建立一条隧道
#VYOS
config
set interfaces vxlan vxlan101 remote '5.5.5.5'
commit
#HUAWEI
interface Nve1
vni 101 head-end peer-list 7.7.7.7
此时AR和VYOS的接入终端通信正常:
综上,VETP需要使用vxlan隧道全互联(full mesh)
当然如果人为的打破这种防环机制,也可以正常通信,但是一般不建议这么做也不是所有的设备都支持;因为静态隧道只有在VETP节点较少情况下才会这么配置,更常见的是使用evpn动态配置vxlan隧道。
#H3C-S6520x不支持如如下配置,此配置在VSR1000正常工作
vsi aaa
vxlan 101
#关闭水平分割,即隧道来的数据包也可以向另外一个隧道转发;此时终端111和121也能正常通信。
tunnel 1 no-split-horizon
tunnel 3 no-split-horizon
网关
网关的设置方式和vlan中一样,使用类比vlanif的方式设置ip网关:
#HUAWEI
interface Vbdif101
ip address 192.168.10.250 255.255.255.0
#VYOS
config
set interfaces bridge br1 address '192.168.10.254/24'
commit
#H3C,由于S6520x的限制,接入和IP网关只能选一个,充当网关就不能作为vxlan接入(分布式网关除外)
#配置中的undo vxlan ip-forwarding即关闭vxlan路由转发,以下配置供命令展示,强行配置可能会有问题。
interface vsi-interface 101
ip address 192.168.10.251 24
vsi aaa
gateway vsi-interface 101