共用虚拟VTEP地址
作为MLAG设备的两台VTEP具有相同的虚拟VTEP地址,对外表现为一台虚拟VTEP设备。其他VTEP使用该地址与这台虚拟设备自动建立VXLAN隧道。
使用一样的loopback地址作为对外宣告的虚拟VTEP地址
使用不同的BGP对等体地址
两台VTEP使用不同的地址作为BGP对等体地址,分别与其他VTEP建立BGP EVPN邻居。利用Underlay网络的等价路由机制,其他VTEP可以将发往虚拟VTEP地址的流量同时发送到两台VTEP,从而实现负载分担和冗余备份。
备份用户侧链路
采用直连模式peer-link链路时的用户侧链路备份机制
在peer-link链路上自动创建AC作为MLAG设备的VTEP可以通过如下方式在peer-link链路上自动创建AC
-
根据用户侧AC自动创建:用户侧接口上创建以太网服务实例、配置报文匹配规则并关联VSI后,VTEP会在peer-link链路上注定创建具有相同报文匹配规则、关联相同VSI的AC
-
通过VXLAN ID映射方式自动创建:在VTEP上创建VXLAN后,peer-link链路上会自动创建以太网服务器实例,根据VXLAN ID生成报文匹配规则,并将以太网服务实例与该VXLAN对应的VSI关联。通过自动创建的AC实现用户侧链路备份的过程为:当一台VTEP上的AC故障时,从VXLAN隧道上接收到的、发送给该AC的报文将通过peer-link链路转发到另一台VTEP,该VTEP根据peer-link链路上配置的AC判断报文所属VSI,从而保证转发不中断
采用隧道模式peer-link链路时的用户侧链路备份机制
采用隧道模式peer-link链路时,用户侧链路备份机制为:如果一台VTEP上的AC故障,则该VTEP从VXLAN隧道上接收到的发送给故障AC的报文后,为报文添加VXLAN封装,封装VXLAN ID为故障AC所属VSI对应的VXLAN ID,并通过作为peer-link链路的VXLAN隧道将其转发到另一台VTEP。该VTEP根据VXLAN ID判断报文所属VSI,并转发该报文
配置限制与指导
EVPN分布式聚合组网不支持802.1x、mac地址认证、ND detection功能
采用VXLAN隧道作为IPL时,为确保三层单播流量转发正常,建议在IPL链路两端端口上关闭报文入接口与静态MAC地址表项匹配检查功能,即,作为IPL的VXLAN隧道的出接口上配置undo mac-address static source-check enable
EVPN支持MLAG配置注意事项
- 分布式聚合两台VTEP上EVPN配置必须一致且只能采用手工方式创建AC
- 分布式聚合的虚拟VTEP地址不能指定为接口的从IP地址
- 分布式聚合的虚拟VTEP地址必须相同
- AC接入模式必须为VLAN模式 且不支持defult
配置命令
# 开启EVPN支持MLAG功能,并配置虚拟VTEP地址
evpn m-lag group <virtual-vtep-ipv4>
配置举例
网络拓扑
- S1-S11建立MLAG组,使用L1虚拟地址1.2.3.4与S2建立VXLAN隧道
- S1-S3 S11-S3 S2-S3建立依托BGP+OSPF建立EVPN邻居 链路物理可达,全局互通 S3作为反射器 传递路由信息
- VXLAN隧道需要流量触发 前几个流量丢包属于正常现象
- 在配置实验之前 请先将MLAG/OSPF链路打通 本次不涉及VXLAN无关命令
配置前提
查看OSPF建立情况
查看MLAG建立情况
S1-S11关键配置
# 建立EVPN邻居
bgp 100
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
#
address-family l2vpn evpn
peer 3.3.3.3 enable
# 使能l2vpn
l2vpn enable
vxlan tunnel mac-learning disable
vxlan tunnel arp-learning disable
# 创建vsi域
vsi vpna
// 创建vxlan实例 相同编号属于同一VXLAN
vxlan 10
// 创建EVPN实例 用于自动建立VXLAN隧道
evpn encapsulation vxlan
route-distinguisher 10:10
vpn-target 10:10 export-extcommunity
vpn-target 10:10 import-extcommunity
#
vsi vpnb
vxlan 20
evpn encapsulation vxlan
route-distinguisher 20:20
vpn-target 20:20 export-extcommunity
vpn-target 20:20 import-extcommunity
#
interface Bridge-Aggregation1
port link-type trunk
port trunk permit vlan all
link-aggregation mode dynamic
port m-lag group 2
vtep access port
#
service-instance 10
// 用于抓取vlan10流量
encapsulation s-vid 10
// 匹配vsi区域
xconnect vsi vpna
#
service-instance 20
encapsulation s-vid 20
xconnect vsi vpnb
S2关键配置
#
bgp 100
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
#
address-family l2vpn evpn
peer 3.3.3.3 enable
#
l2vpn enable
vxlan tunnel mac-learning disable
vxlan tunnel arp-learning disable
#
vsi vpna
vxlan 10
evpn encapsulation vxlan
// RD 仅本地有效 无实际意义
route-distinguisher 10:10
// RT 用于控制路由学习
vpn-target 10:10 export-extcommunity
vpn-target 10:10 import-extcommunity
#
vsi vpnb
vxlan 20
evpn encapsulation vxlan
route-distinguisher 20:20
vpn-target 20:20 export-extcommunity
vpn-target 20:20 import-extcommunity
#
interface GigabitEthernet1/0/3
port link-type trunk
port trunk permit vlan all
vtep access port
#
service-instance 10
encapsulation s-vid 10
xconnect vsi vpna
#
service-instance 20
encapsulation s-vid 20
xconnect vsi vpnb
S3相关配置
#
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
peer 11.11.11.11 as-number 100
peer 11.11.11.11 connect-interface LoopBack0
#
address-family l2vpn evpn
undo policy vpn-target
peer 1.1.1.1 enable
peer 1.1.1.1 reflect-client
peer 2.2.2.2 enable
peer 2.2.2.2 reflect-client
peer 11.11.11.11 enable
peer 11.11.11.11 reflect-client