VXLAN+MLAG二层双归接入转发

634 阅读5分钟

共用虚拟VTEP地址

作为MLAG设备的两台VTEP具有相同的虚拟VTEP地址,对外表现为一台虚拟VTEP设备。其他VTEP使用该地址与这台虚拟设备自动建立VXLAN隧道。

使用一样的loopback地址作为对外宣告的虚拟VTEP地址

使用不同的BGP对等体地址

两台VTEP使用不同的地址作为BGP对等体地址,分别与其他VTEP建立BGP EVPN邻居。利用Underlay网络的等价路由机制,其他VTEP可以将发往虚拟VTEP地址的流量同时发送到两台VTEP,从而实现负载分担和冗余备份。

备份用户侧链路

图片.png

采用直连模式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>

配置举例

网络拓扑

图片.png

  • 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建立情况

图片.png

查看MLAG建立情况

图片.png

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

配置验证

联通性测试

图片.png

图片.png

查看EVPN邻居建立情况

图片.png

查看VXLAN隧道建立情况

图片.png

查看mac学习情况

图片.png