![Multi-homing](/wp-content/themes/yootheme/cache/8f/A-Lab%E5%B0%81%E9%9D%A2-2-8fb9571d.png)
Multi-homing验证方案 —基于EVPN的高可靠方案
1 目标概述
本文主要描述在CX-N的云区组网中,通过EVPN Multi-homing的方案实现一台Server同时在多台交换机上挂载,提供all-active 冗余机制,实现负载均衡、故障收敛等功能。
2 方案拓扑
![图片1:网络拓扑](https://asterfusion.com/wp-content/uploads/2024/11/图片1:网络拓扑-1024x495.png)
3 设备角色及地址规划
3.1 设备角色、ASN、管理IP地址规划
设备角色、BGP AS号、设备带外管理地址、环回口地址信息如下表:
![表1:管理IP规划表](https://asterfusion.com/wp-content/uploads/2024/11/表1:管理IP规划表.png)
3.2 带内管理网络业务IP地址表
带内管理网络互联地址信息入下表:
![表2:互联IP规划表](https://asterfusion.com/wp-content/uploads/2024/11/表2:互联IP规划表.png)
4 硬件与软件环境
4.1 硬件环境
![表3:硬件环境](https://asterfusion.com/wp-content/uploads/2024/11/表3:硬件环境.png)
4.2 软件环境
![表4:软件环境](https://asterfusion.com/wp-content/uploads/2024/11/表4:软件环境.png)
5 配置过程
5.1 Spine01交换机配置
sonic# configure terminal
#配置互联口
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# ip address 172.62.0.1/30
sonic(config-if-0/0)# interface ethernet 0/4
sonic(config-if-0/4)# ip address 172.62.0.5/30
sonic(config-if-0/4)# interface ethernet 0/8
sonic(config-if-0/8)# ip address 172.62.0.9/30
sonic(config-if-0/8)# interface ethernet 0/12
sonic(config-if-0/12)# ip address 172.62.0.13/30
sonic(config-if-0/12)# q
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 172.61.0.9/32
sonic(config-loif-0)#exit
#配置BGP
sonic(config)# route-map FROM_BGP_PEER_V4 permit 65535
sonic(config-route-map)# q
sonic(config)# route-map DEFAULT_EVPN_ROUTE_MAP permit 15
sonic(config-route-map)# q
sonic(config)# router bgp 65209
sonic(config-router)# bgp router-id 172.61.0.9
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.62.0.2 remote-as 65205
sonic(config-router)# neighbor 172.62.0.2 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.6 remote-as 65206
sonic(config-router)# neighbor 172.62.0.6 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.10 remote-as 65207
sonic(config-router)# neighbor 172.62.0.10 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.14 remote-as 65208
sonic(config-router)# neighbor 172.62.0.14 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 172.61.0.9/32
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 out
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# redistribute connected
sonic(config-router-af)#q
#配置EVPN
sonic(config-router)# address-family l2vpn evpn
sonic(config-router-af)# advertise-all-vni
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP out
sonic(config-router-af)#write
5.2 Spine02交换机配置
sonic# configure terminal
#配置互联口
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# ip address 172.62.0.17/30
sonic(config-if-0/0)# interface ethernet 0/4
sonic(config-if-0/4)# ip address 172.62.0.21/30
sonic(config-if-0/4)# interface ethernet 0/8
sonic(config-if-0/8)# ip address 172.62.0.25/30
sonic(config-if-0/8)# interface ethernet 0/12
sonic(config-if-0/12)# ip address 172.62.0.29/30
sonic(config-if-0/12)# q
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 172.61.0.10/32
sonic(config-if-0/12)# exit
#配置BGP
sonic(config)# route-map FROM_BGP_PEER_V4 permit 65535
sonic(config-route-map)# q
sonic(config)# route-map DEFAULT_EVPN_ROUTE_MAP permit 15
sonic(config-route-map)# q
sonic(config)# router bgp 65210
sonic(config-router)# bgp router-id 172.61.0.10
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.62.0.18 remote-as 65205
sonic(config-router)# neighbor 172.62.0.18 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.22 remote-as 65206
sonic(config-router)# neighbor 172.62.0.22 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.26 remote-as 65207
sonic(config-router)# neighbor 172.62.0.26 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.30 remote-as 65208
sonic(config-router)# neighbor 172.62.0.30 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 172.61.0.10/32
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 out
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# redistribute connected
sonic(config-router-af)#q
#配置EVPN
sonic(config-router)# address-family l2vpn evpn
sonic(config-router-af)# advertise-all-vni
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP out
sonic(config-router-af)#write
5.3 Leaf01交换机配置
sonic# configure terminal
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 172.61.0.5/32
#配置互联口
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# ip address 172.62.0.2/30
sonic(config-if-0/48)# interface ethernet 0/52
sonic(config-if-0/52)# ip address 172.62.0.18/30
sonic(config-if-0/52)# exit
#配置聚合口
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# exit
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# link-aggregation-group 5
sonic(config-if-0/0)# exit
sonic(config)# interface link-aggregation 6
sonic(config-lagif-6)# exit
sonic(config)# interface ethernet 0/1
sonic(config-if-0/1)# link-aggregation-group 6
sonic(config-if-0/1)# exit
sonic(config)# vlan 100
sonic(config-vlan-100)# vlan 200
sonic(config-vlan-200)# exit
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# switchport trunk vlan 100
sonic(config-lagif-5)# switchport trunk vlan 200
sonic(config-lagif-5)# lacp system-id 00:00:01:00:00:01
sonic(config-lagif-5)# exit
sonic(config)# interface link-aggregation 6
sonic(config-lagif-6)# switchport trunk vlan 100
sonic(config-lagif-6)# switchport trunk vlan 200
sonic(config-lagif-6)# lacp system-id 00:00:01:00:00:02
sonic(config-lagif-6)# exit
sonic(config)# vrf 123
sonic(config-vrf)# exit
sonic(config)# interface vlan 100
sonic(config-vlanif-100)# ip address 100.0.0.1/16
sonic(config-vlanif-100)# mac-address 00:11:22:33:44:55
sonic(config-vlanif-100)# vrf 123
sonic(config-vlanif-100)# interface vlan 200
sonic(config-vlanif-200)# ip address 200.0.0.1/16
sonic(config-vlanif-200)# mac-address 00:11:22:33:44:66
sonic(config-vlanif-200)# vrf 123
sonic(config-vlanif-200)# exit
#配置BGP
sonic(config)# route-map FROM_BGP_PEER_V4 permit 65535
sonic(config-route-map)# exit
sonic(config)# route-map DEFAULT_EVPN_ROUTE_MAP permit 15
sonic(config-route-map)# exit
sonic(config)# router bgp 65205
sonic(config-router)# bgp router-id 172.61.0.5
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.62.0.1 remote-as 65209
sonic(config-router)# neighbor 172.62.0.1 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.17 remote-as 65210
sonic(config-router)# neighbor 172.62.0.17 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 172.61.0.5/32
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 out
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# redistribute connected
sonic(config-router-af)# exit
sonic(config-router)# address-family l2vpn evpn
sonic(config-router-af)# advertise-all-vni
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP out
sonic(config-router-af)#exit
sonic(config-router)#exit
#配置EVPN
sonic(config)# interface vxlan 0
sonic(config-vxlanif-0)# source 172.61.0.5
sonic(config-vxlanif-0)# exit
sonic(config)# vlan 100
sonic (config-vlan-100)# vni 100
sonic (config-vlan-100)# exit
sonic(config)# vlan 200
sonic (config-vlan-200)# vni 200
sonic (config-vlan-200)# exit
sonic(config)# vrf 123
sonic(config-vrf)# vni 1000
sonic(config-vrf)# exit
sonic(config)# evpn mh redirect-off
sonic(config)# evpn mh mac-holdtime 0
sonic(config)# evpn mh neigh-holdtime 0
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# evpn mh uplink
sonic(config-if-0/48)# exit
sonic(config)# interface ethernet 0/52
sonic(config-if-0/52)# evpn mh uplink
sonic(config-if-0/52)# exit
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# evpn mh es-id 100
sonic(config-lagif-5)# evpn mh es-sys-mac 00:00:01:00:00:01
sonic(config-lagif-5)# interface link-aggregation 6
sonic(config-lagif-6)# evpn mh es-id 200
sonic(config-lagif-6)# evpn mh es-sys-mac 00:00:01:00:00:02
sonic(config-vrf)# write
sonic(config-vrf)# reload
5.4 Leaf02交换机配置
sonic# configure terminal
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 172.61.0.6/32
#配置互联口
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# ip address 172.62.0.6/30
sonic(config-if-0/48)# interface ethernet 0/52
sonic(config-if-0/52)# ip address 172.62.0.22/30
sonic(config-if-0/52)# exit
#配置聚合口
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# exit
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# link-aggregation-group 5
sonic(config-if-0/0)# exit
sonic(config)# interface link-aggregation 6
sonic(config-lagif-6)# exit
sonic(config)# interface ethernet 0/1
sonic(config-if-0/1)# link-aggregation-group 6
sonic(config-if-0/1)# exit
sonic(config)# vlan 100
sonic(config-vlan-100)# vlan 200
sonic(config-vlan-200)# exit
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# switchport trunk vlan 100
sonic(config-lagif-5)# switchport trunk vlan 200
sonic(config-lagif-5)# lacp system-id 00:00:01:00:00:01
sonic(config-lagif-5)# exit
sonic(config)# interface link-aggregation 6
sonic(config-lagif-6)# switchport trunk vlan 100
sonic(config-lagif-6)# switchport trunk vlan 200
sonic(config-lagif-6)# lacp system-id 00:00:01:00:00:02
sonic(config-lagif-6)# exit
sonic(config)# vrf 123
sonic(config-vrf)# exit
sonic(config)# interface vlan 100
sonic(config-vlanif-100)# ip address 100.0.0.1/16
sonic(config-vlanif-100)# mac-address 00:11:22:33:44:55
sonic(config-vlanif-100)# vrf 123
sonic(config-vlanif-100)# interface vlan 200
sonic(config-vlanif-200)# ip address 200.0.0.1/16
sonic(config-vlanif-200)# mac-address 00:11:22:33:44:66
sonic(config-vlanif-200)# vrf 123
sonic(config-vlanif-200)# exit
#配置BGP
sonic(config)# route-map FROM_BGP_PEER_V4 permit 65535
sonic(config-route-map)# exit
sonic(config)# route-map DEFAULT_EVPN_ROUTE_MAP permit 15
sonic(config-route-map)# exit
sonic(config)# router bgp 65206
sonic(config-router)# bgp router-id 172.61.0.6
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.62.0.5 remote-as 65209
sonic(config-router)# neighbor 172.62.0.5 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.21 remote-as 65210
sonic(config-router)# neighbor 172.62.0.21 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 172.61.0.6/32
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 out
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# redistribute connected
sonic(config-router-af)# exit
sonic(config-router)# address-family l2vpn evpn
sonic(config-router-af)# advertise-all-vni
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP out
sonic(config-router-af)#exit
sonic(config-router)#exit
#配置EVPN
sonic(config)# interface vxlan 0
sonic(config-vxlanif-0)# source 172.61.0.6
sonic(config-vxlanif-0)# exit
sonic(config)# vlan 100
sonic (config-vlan-100)# vni 100
sonic (config-vlan-100)# exit
sonic(config)# vlan 200
sonic (config-vlan-200)# vni 200
sonic (config-vlan-200)# exit
sonic(config)# vrf 123
sonic(config-vrf)# vni 1000
sonic(config-vrf)# exit
sonic(config)# evpn mh redirect-off
sonic(config)# evpn mh mac-holdtime 0
sonic(config)# evpn mh neigh-holdtime 0
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# evpn mh uplink
sonic(config-if-0/48)# exit
sonic(config)# interface ethernet 0/52
sonic(config-if-0/52)# evpn mh uplink
sonic(config-if-0/52)# exit
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# evpn mh es-id 100
sonic(config-lagif-5)# evpn mh es-sys-mac 00:00:01:00:00:01
sonic(config-lagif-5)# interface link-aggregation 6
sonic(config-lagif-6)# evpn mh es-id 200
sonic(config-lagif-6)# evpn mh es-sys-mac 00:00:01:00:00:02
sonic(config-vrf)# write
sonic(config-vrf)# reload
5.5 Leaf03交换机配置
sonic# configure terminal
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 172.61.0.7/32
#配置互联口
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# ip address 172.62.0.10/30
sonic(config-if-0/48)# interface ethernet 0/52
sonic(config-if-0/52)# ip address 172.62.0.26/30
sonic(config-if-0/52)# exit
#配置聚合口
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# exit
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# link-aggregation-group 5
sonic(config-if-0/0)# exit
sonic(config)# vlan 100
sonic(config-vlan-100)# exit
sonic(config)# vlan 200
sonic(config-vlan-200)# exit
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# switchport trunk vlan 100
sonic(config-lagif-5)# switchport trunk vlan 200
sonic(config-lagif-5)# lacp system-id 00:00:01:00:00:03
sonic(config-lagif-5)# exit
sonic(config)# vrf 124
sonic(config-vrf)# exit
sonic(config)# interface vlan 100
sonic(config-vlanif-100)# ip address 100.0.0.1/16
sonic(config-vlanif-100)# mac-address 00:11:22:33:44:55 # VLAN MAC
sonic(config-vlanif-100)# vrf 124
sonic(config-vlanif-100)# interface vlan 200
sonic(config-vlanif-200)# ip address 200.0.0.1/16
sonic(config-vlanif-200)# mac-address 00:11:22:33:44:66
sonic(config-vlanif-200)# vrf 124
sonic(config-vlanif-200)# exit
#配置BGP
sonic(config)# route-map FROM_BGP_PEER_V4 permit 65535
sonic(config-route-map)# exit
sonic(config)# route-map DEFAULT_EVPN_ROUTE_MAP permit 15
sonic(config-route-map)# exit
sonic(config)# router bgp 65207
sonic(config-router)# bgp router-id 172.61.0.7
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.62.0.9 remote-as 65209
sonic(config-router)# neighbor 172.62.0.9 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.25 remote-as 65210
sonic(config-router)# neighbor 172.62.0.25 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 172.61.0.7/32
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 out
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# redistribute connected
sonic(config-router-af)# exit
sonic(config-router)# address-family l2vpn evpn
sonic(config-router-af)# advertise-all-vni
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP out
sonic(config-router-af)# exit
sonic(config-router)# exit
#配置EVPN
sonic(config)# interface vxlan 0
sonic(config-vxlanif-0)# source 172.61.0.7
sonic(config-vxlanif-0)# exit
sonic(config)# vlan 100
sonic (config-vlan-100)# vni 100
sonic (config-vlan-100)# exit
sonic(config)# vlan 200
sonic (config-vlan-200)# vni 200
sonic (config-vlan-200)# exit
sonic(config)# vrf 124
sonic(config-vrf)# vni 1000
sonic(config-vrf)# exit
sonic(config)# evpn mh redirect-off
sonic(config)# evpn mh mac-holdtime 0
sonic(config)# evpn mh neigh-holdtime 0
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# evpn mh uplink
sonic(config-if-0/48)# exit
sonic(config)# interface ethernet 0/52
sonic(config-if-0/52)# evpn mh uplink
sonic(config-if-0/52)# exit
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# evpn mh es-id 300
sonic(config-lagif-5)# evpn mh es-sys-mac 00:00:01:00:00:03
sonic(config-vrf)# write
sonic(config-vrf)# reload
5.6 Leaf04交换机配置
sonic# configure terminal
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 172.61.0.8/32
#配置互联口
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# ip address 172.62.0.14/30
sonic(config-if-0/48)# interface ethernet 0/52
sonic(config-if-0/52)# ip address 172.62.0.30/30
sonic(config-if-0/52)# exit
#配置聚合口
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# exit
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# link-aggregation-group 5
sonic(config-if-0/0)# exit
sonic(config)# vlan 100
sonic(config-vlan-100)# exit
sonic(config)# vlan 200
sonic(config-vlan-200)# exit
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# switchport trunk vlan 100
sonic(config-lagif-5)# switchport trunk vlan 200
sonic(config-lagif-5)# lacp system-id 00:00:01:00:00:03
sonic(config-lagif-5)# exit
sonic(config)# vrf 124
sonic(config-vrf)# exit
sonic(config)# interface vlan 100
sonic(config-vlanif-100)# ip address 100.0.0.1/16
sonic(config-vlanif-100)# mac-address 00:11:22:33:44:55
sonic(config-vlanif-100)# vrf 124
sonic(config-vlanif-100)# interface vlan 200
sonic(config-vlanif-200)# ip address 200.0.0.1/16
sonic(config-vlanif-200)# mac-address 00:11:22:33:44:66
sonic(config-vlanif-200)# vrf 124
sonic(config-vlanif-200)# exit
#配置BGP
sonic(config)# route-map FROM_BGP_PEER_V4 permit 65535
sonic(config-route-map)# exit
sonic(config)# route-map DEFAULT_EVPN_ROUTE_MAP permit 15
sonic(config-route-map)# exit
sonic(config)# router bgp 65208
sonic(config-router)# bgp router-id 172.61.0.8
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.62.0.13 remote-as 65209
sonic(config-router)# neighbor 172.62.0.13 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.62.0.29 remote-as 65210
sonic(config-router)# neighbor 172.62.0.29 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 172.61.0.8/32
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map FROM_BGP_PEER_V4 out
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# redistribute connected
sonic(config-router-af)# exit
sonic(config-router)# address-family l2vpn evpn
sonic(config-router-af)# advertise-all-vni
sonic(config-router-af)# neighbor PEER_V4_EBGP activate
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP in
sonic(config-router-af)# neighbor PEER_V4_EBGP route-map DEFAULT_EVPN_ROUTE_MAP out
sonic(config-router-af)# exit
sonic(config-router)# exit
#配置EVPN
sonic(config)# interface vxlan 0
sonic(config-vxlanif-0)# source 172.61.0.8
sonic(config-vxlanif-0)# exit
sonic(config)# vlan 100
sonic (config-vlan-100)# vni 100
sonic (config-vlan-100)# exit
sonic(config)# vlan 200
sonic (config-vlan-200)# vni 200
sonic (config-vlan-200)# exit
sonic(config)# vrf 124
sonic(config-vrf)# vni 1000
sonic(config-vrf)# exit
sonic(config)# evpn mh redirect-off
sonic(config)# evpn mh mac-holdtime 0
sonic(config)# evpn mh neigh-holdtime 0
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# evpn mh uplink
sonic(config-if-0/48)# exit
sonic(config)# interface ethernet 0/52
sonic(config-if-0/52)# evpn mh uplink
sonic(config-if-0/52)# exit
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# evpn mh es-id 300
sonic(config-lagif-5)# evpn mh es-sys-mac 00:00:01:00:00:03
sonic(config-vrf)# write
sonic(config-vrf)# reload
5.7 Server1及虚机配置
#配置bond0为hash模式
[root@Sever1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
USERCTL=yes
BONDING_OPTS="miimon=100 mode=4 lacp_rate=fast xmit_hash_policy=layer3+4 fail_over_mac=1 "
MASTER=yes
[root@Sever1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens1f0
DEVICE="ens1f0"
BOOTPROTO=none
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
[root@Sever1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens1f1
DEVICE="ens1f1"
BOOTPROTO=none
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
#重新加载bonding模块,重启网络
![5.7](https://asterfusion.com/wp-content/uploads/2024/11/5.7.png)
#添加并绑定网桥
brctl addbr br0
brctl addif br0 bond0
ifconfig br0 up
#启动虚机
virt-install --name VM1 --ram 2048 --vcpus 2 \
--disk path=/opt/CentOS-7-x86_64-GenericCloud.qcow2,size=10,format=qcow2 --accelerate \
--vnc --vncport=5911 --vnclisten=0.0.0.0 \
--network bridge=br0,model=virtio \
--import \
--noautoconsole
#进入虚机,创建Vlan接口及配置IP
ip link add link eth0 name eth0.100 type vlan id 100
ip link add link eth0 name eth0.200 type vlan id 200
ip addr add 100.0.0.2/24 dev eth0.100
ip addr add 200.0.0.2/24 dev eth0.200
ip link set dev eth0.100 up
ip link set dev eth0.200 up
ifconfig eth0.100 hw ether 52:54:00:34:c8:d9
ifconfig eth0.200 hw ether 52:54:00:34:c8:d0
5.8 Server2及虚机配置
#配置bond0为hash模式
[root@Sever2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
USERCTL=yes
BONDING_OPTS="miimon=100 mode=4 lacp_rate=fast xmit_hash_policy=layer3+4 fail_over_mac=1 "
MASTER=yes
[root@Sever2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-
DEVICE="enp2s0f0"
BOOTPROTO=none
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
[root@Sever2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp2s0f1
DEVICE="enp2s0f1"
BOOTPROTO=none
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
#重新加载bonding模块,重启网络
![5.8](https://asterfusion.com/wp-content/uploads/2024/11/5.8.png)
#添加并绑定网桥
brctl addbr br0
brctl addif br0 bond0
ifconfig br0 up
#启动虚机
virt-install --name VM1 --ram 2048 --vcpus 2 \
--disk path=/opt/CentOS-7-x86_64-GenericCloud.qcow2,size=10,format=qcow2 --accelerate \
--vnc --vncport=5911 --vnclisten=0.0.0.0 \
--network bridge=br0,model=virtio \
--import \
--noautoconsole
#进入虚机,创建Vlan接口及配置IP
ip link add link eth0 name eth0.100 type vlan id 100
ip link add link eth0 name eth0.200 type vlan id 200
ip addr add 100.0.0.3/24 dev eth0.100
ip addr add 200.0.0.3/24 dev eth0.200
ip link set dev eth0.100 up
ip link set dev eth0.200 up
5.9 Server3及虚机配置
#配置bond0为hash模式
[root@Sever3 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
USERCTL=yes
BONDING_OPTS="miimon=100 mode=4 lacp_rate=fast xmit_hash_policy=layer3+4 fail_over_mac=1 "
MASTER=yes
[root@Sever3 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp2s0f0
DEVICE="enp2s0f0"
BOOTPROTO=none
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
[root@Sever3 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp2s0f1
DEVICE="enp2s0f1"
BOOTPROTO=none
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
#重新加载bonding模块,重启网络
![5.9](https://asterfusion.com/wp-content/uploads/2024/11/5.9.png)
#添加并绑定网桥
brctl addbr br0
brctl addif br0 bond0
ifconfig br0 up
#启动虚机
virt-install --name VM1 --ram 2048 --vcpus 2 \
--disk path=/opt/CentOS-7-x86_64-GenericCloud.qcow2,size=10,format=qcow2 --accelerate \
--vnc --vncport=5911 --vnclisten=0.0.0.0 \
--network bridge=br0,model=virtio \
--import \
--noautoconsole
#进入虚机,创建Vlan接口及配置IP
ip link add link eth0 name eth0.100 type vlan id 100
ip link add link eth0 name eth0.200 type vlan id 200
ip addr add 100.0.0.4/24 dev eth0.100
ip addr add 200.0.0.4/24 dev eth0.200
ip link set dev eth0.100 up
ip link set dev eth0.200 up
6 查看BGP状态
6.1 Leaf01 BGP状态
![6.1](https://asterfusion.com/wp-content/uploads/2024/11/6.1-1-1024x231.png)
6.2 Leaf02 BGP状态
![6.2](https://asterfusion.com/wp-content/uploads/2024/11/6.2-1-1024x229.png)
6.3 Leaf03 BGP状态
![6.3](https://asterfusion.com/wp-content/uploads/2024/11/6.3-1024x226.png)
6.4 Leaf04 BGP状态
![6.4](https://asterfusion.com/wp-content/uploads/2024/11/6.4-1024x226.png)
6.5 Spine01 BGP状态
![6.5](https://asterfusion.com/wp-content/uploads/2024/11/6.5-1024x270.png)
6.6 Spine02 BGP状态
![6.6](https://asterfusion.com/wp-content/uploads/2024/11/6.6-1024x257.png)
7 查看聚合状态
7.1 Leaf01聚合状态
![7.1](https://asterfusion.com/wp-content/uploads/2024/11/7.1.png)
7.2 Leaf02聚合状态
![7.2](https://asterfusion.com/wp-content/uploads/2024/11/7.2.png)
7.3 Leaf03 聚合状态
![7.3](https://asterfusion.com/wp-content/uploads/2024/11/7.3.png)
7.4 Leaf04 聚合状态
![7.4](https://asterfusion.com/wp-content/uploads/2024/11/7.4.png)
8 查看VxLAN隧道状态
8.1 Leaf01状态
![8.1](https://asterfusion.com/wp-content/uploads/2024/11/8.1.png)
8.2 Leaf02状态
![8.2](https://asterfusion.com/wp-content/uploads/2024/11/8.2.png)
8.3 Leaf03 状态
![8.3](https://asterfusion.com/wp-content/uploads/2024/11/8.3.png)
8.4 Leaf04 状态
![8.4](https://asterfusion.com/wp-content/uploads/2024/11/8.4.png)
9 查看EVPN MH状态
9.1 Leaf01状态
![9.1](https://asterfusion.com/wp-content/uploads/2024/11/9.1.png)
9.2 Leaf02状态
![9.2](https://asterfusion.com/wp-content/uploads/2024/11/9.2.png)
9.3 Leaf03 状态
![9.3](https://asterfusion.com/wp-content/uploads/2024/11/9.3.png)
9.4 Leaf04 状态
![9.4](https://asterfusion.com/wp-content/uploads/2024/11/9.4.png)
10 虚机互相访问
Server1上的虚机访问Server2的虚机
![10-1](https://asterfusion.com/wp-content/uploads/2024/11/10-1.png)
![10-2](https://asterfusion.com/wp-content/uploads/2024/11/10-2.png)
Server1上的虚机访问Server3的虚机
![10-3](https://asterfusion.com/wp-content/uploads/2024/11/10-3.png)
![10-4](https://asterfusion.com/wp-content/uploads/2024/11/10-4.png)
Server2上的虚机访问Server3的虚机
![10-5](https://asterfusion.com/wp-content/uploads/2024/11/10-5.png)
![10-6](https://asterfusion.com/wp-content/uploads/2024/11/10-6.png)
11 故障测试
Server1上的虚机持续访问Server3的虚机,中间断开Server1和Leaf1的链路,然后再恢复,观察流量是否有中断。
![11-1](https://asterfusion.com/wp-content/uploads/2024/11/11-1.png)
![11-2](https://asterfusion.com/wp-content/uploads/2024/11/11-2.png)
观察到流量始终没有丢包。
Server1上的虚机持续访问Server3的虚机,中间重启Leaf,然后再恢复,观察流量是否有中断。
![11-4](https://asterfusion.com/wp-content/uploads/2024/11/11-4.png)
在Server1上抓包,可以看到ping包从ens1f1发出,从ens1f0回复
![11-5](https://asterfusion.com/wp-content/uploads/2024/11/11-5-1024x204.png)
![11-6](https://asterfusion.com/wp-content/uploads/2024/11/11-6-1024x153.png)
ens1f0对应Leaf1,ens1f1对应的是Leaf2,那我们重启Leaf2,收发包应该都切到Leaf1,到ens1f0
![11-7](https://asterfusion.com/wp-content/uploads/2024/11/11-7-1024x315.png)
并且中间没有丢包
![11-8](https://asterfusion.com/wp-content/uploads/2024/11/11-8.png)