EVPN Multihoming场景配置
1 目的
本文主要介绍EVPN Multihoming场景在Asterfusion虚拟SONiC交换机(vAsterNOS)上的配置实现。通过阅读本文,用户可以快速理解和掌握EVPN Multihoming在Asterfusion SONiC交换机上的配置方法。
2 简介
2.1 vAsterNOS
vAsterNos是星融元推出的一款sonic交换机的虚拟操作系统,它继承了AsterNOS的所有软件特性,可运行在GNS3、EVE-NG等网络虚拟软件中。用户可以通过使用vAsterNos更好地了解星融元企业级sonic交换机的特性,从而为构建高效网络环境提供有力支撑。
关于设置vAsterNOS的使用环境的信息,请阅读:
Asterfusion虚拟SONiC交换机使用说明
2.2 EVPN Multihoming
EVPN Multihoming是指在使用以太网VPN(Ethernet VPN,EVPN)技术构建的数据中心网络中,使用多个物理链路和IP地址来实现冗余和负载均衡的技术。在EVPN Multihoming中,每个用户可以使用多个物理链路来与数据中心网络进行连接,这些链路可以来自不同的交换机。当一个链路或设备发生故障时,可以自动切换到备用链路或设备,保证数据中心网络的可用性。也可以通过负载均衡的方式,将网络流量分配到多个链路或地址中,提高网络性能和效率。Multihoming技术标准可参照RFC7432 and RFC4116,其具有良好的兼容性。
2.3 ESI
ESl(Ethernet Segmentldentifier,以太网段标识),用于标识 ES(Ethernet Segment),长度为 10 字节。
当前支持两种方式配置 ES1:
(1)配置唯一10 字节的 ESI、格式为 00:AA:BB:CC:DD:EE:FF:GG:HH:II;
(2)配置 es-id 和 es-sys-mac,再与保留位组成唯一 10 字节的 ESI。
使用时,为一组Leaf 设备连接到同一用户侧设备或主机的下行聚合口配置相同的 ESI,则这两个聚合口互为EVPN-Multihoming 对等体,该聚合接口也称为 ES 接口,该 Leaf 交换机也称为 ES 设备。
2.4 DF设备
在一组 ES 设备上,会为每个 ES 选择一个指定转发器,被选中的交换机称为DF(Designated Forwarder)设备,相应的,没有被选举成为DF的则称为 Non-DF设备。只有DF设备才允许将VXLAN 隧道收到的泛洪流量转发到本地配置 ESI的下行口,Non-DF设备则不允许。
3 技术原理
3.1 对等体发现
与 MC-LAG不同,EVPN-Multihoming 对等体之间无需 peer-link 互通,而是通过 EVPNtype-4路由(EthernetSegment Route)和type-1路由(Ethernet Auto-Discovery Route)进行动态发现。
EVPN-Multihoming 对等体节点通过配置相同的 ESI 进行互通、作为独立的 VTEP,具有唯一的 VTEP IP 地址
3.2 DF选举算法
DF 选举算法用于解决远端 BUM 流量复制问题:只有 DF 设备才允许将 VXLAN 隧道收到的泛洪流量转发到本地配置 ESI的下行口,Non-DF 设备则不允许。
在同一个 ES 中,具有最高 DF 偏好的 VTEP节点将成为 DF 设备,若偏好值相同,则选举具有最小 VTEPIP 地址的成为 DF 设备。DF选举动作由 EVPN type-4路由完成。
3.3 水平分割算法
水平分割算法用于防止同一个 ESI的 BUM 流量环路和复制:只有来自远程站点的 BUM 流量才被允许转发到本地站点。
4 EVPN Multihoming典型场景配置
4.1 要求
用户的数据中心拥有一套2+4的spine-leaf网络,现在需要将3台server部署在此网络中,要求使用multihoming部署方式,保障网络的高可靠性。具体组网情况参见4.2章网络拓扑。
4.2 拓扑
4.3 测试环境
此配置示例采用 Asterfusion 虚拟 SONiC 交换机 (vAsterNOS) 实现,因此需要运行 vAsterNOS 的虚拟环境。具体环境搭建请参考本文2.1节的相关链接。
4.4 设备互联IP
设备名称 | 接口 | IP地址 | 备注 |
---|---|---|---|
Spine1 | Ethernet 0/0 | 172.16.11.1/24 | |
Spine1 | Ethernet 0/1 | 172.16.12.1/24 | |
Spine1 | Ethernet 0/2 | 172.16.13.1/24 | |
Spine1 | Ethernet 0/3 | 172.16.14.1/24 | Router-id same as loopback0 |
Spine1 | Loopback 0 | 10.1.0.210/32 | |
Spine2 | Ethernet 0/0 | 172.16.15.1/24 | |
Spine2 | Ethernet 0/1 | 172.16.16.1/24 | |
Spine2 | Ethernet 0/2 | 172.16.17.1/24 | |
Spine2 | Ethernet 0/3 | 172.16.18.1/24 | |
Spine2 | Loopback 0 | 10.1.0.211/32 | Router-id same as loopback0 |
Leaf1 | Ethernet 0/2 | 172.16.11.2/24 | |
Leaf1 | Ethernet 0/3 | 172.16.15.2/24 | |
Leaf1 | Vlan 100 | 100.0.0.1/24 | |
Leaf1 | Vlan 200 | 110.0.0.1/24 | |
Leaf1 | Loopback 0 | 10.1.0.212/32 | Router-id and vtep ip same as loopback0 |
Leaf2 | Ethernet 0/2 | 172.16.12.2/24 | |
Leaf2 | Ethernet 0/3 | 172.16.16.2/24 | |
Leaf2 | Vlan 100 | 100.0.0.1/24 | |
Leaf2 | Vlan 200 | 110.0.0.1/24 | |
Leaf2 | Loopback 0 | 10.1.0.213/32 | Router-id and vtep ip same as loopback0 |
Leaf3 | Ethernet 0/1 | 172.16.13.2/24 | |
Leaf3 | Ethernet 0/2 | 172.16.17.2/24 | |
Leaf3 | Vlan 300 | 120.0.0.1/24 | |
Leaf3 | Loopback 0 | 10.1.0.214/32 | Router-id and vtep-ip same as loopback0 |
Leaf4 | Ethernet 0/1 | 172.16.14.2/24 | |
Leaf4 | Ethernet 0/2 | 172.16.18.2/24 | |
Leaf4 | Vlan 300 | 120.0.0.1/24 | |
Leaf4 | Loopback 0 | 10.1.0.215/32 | Router-id and vtep-ip same as loopback0 |
Server-1 | bond0 | 100.0.0.12/24 |
4.5 测试前的准备工作
确保各switch及server设备正确上线,并按照拓扑正确连接。
4.6 配置步骤
第 1 步
修改6台switches设备的mac地址,由于初始mac地址相同,所以在进行业务配置之前,必须先进行mac地址的修改。才能使设备功能正常运行。
sonic# system bash
admin@sonic:~$ sudo vi /etc/sonic/config_db.json
修改如下位置
重新加载配置并退出system bash。
admin@sonic:~$ sudo config reload -yf
admin@sonic:~$ exit
第 2 步
配置各交换机设备的互联端口。
Spine1
sonic# configure terminal
sonic(config)# interface ethernet 0/1
sonic(config-if-0/1)# ip address 172.16.11.1/24
sonic(config-if-0/1)# interface ethernet 0/2
sonic(config-if-0/2)# ip address 172.16.12.1/24
sonic(config-if-0/2)# interface ethernet 0/3
sonic(config-if-0/3)# ip address 172.16.13.1/24
sonic(config-if-0/3)# interface ethernet 0/4
sonic(config-if-0/4)# ip address 172.16.14.1/24
sonic(config-if-0/4)# exit
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 10.1.0.210/32
sonic(config-loif-0)#exit
Spine2
sonic# configure terminal
sonic(config)# interface ethernet 0/1
sonic(config-if-0/1)# ip address 172.16.15.1/24
sonic(config-if-0/1)# interface ethernet 0/2
sonic(config-if-0/2)# ip address 172.16.16.1/24
sonic(config-if-0/2)# interface ethernet 0/3
sonic(config-if-0/3)# ip address 172.16.17.1/24
sonic(config-if-0/3)# interface ethernet 0/4
sonic(config-if-0/4)# ip address 172.16.18.1/24
sonic(config-if-0/4)# q
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 10.1.0.211/32
sonic(config-loif-0)#exit
Leaf1
sonic# configure terminal
sonic(config)# interface ethernet 0/3
sonic(config-if-0/3)# ip address 172.16.11.2/24
sonic(config-if-0/3)# interface ethernet 0/4
sonic(config-if-0/4)# ip address 172.16.15.2/24
sonic(config-if-0/4)# exit
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 10.1.0.212/32
Leaf2
sonic# configure terminal
sonic(config)# interface ethernet 0/3
sonic(config-if-0/3)# ip address 172.16.12.2/24
sonic(config-if-0/3)# interface ethernet 0/4
sonic(config-if-0/4)# ip address 172.16.16.2/24
sonic(config-if-0/4)# exit
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 10.1.0.213/32
Leaf3
sonic# configure terminal
sonic(config)# interface ethernet 0/2
sonic(config-if-0/2)# ip address 172.16.13.2/24
sonic(config-if-0/2)# interface ethernet 0/3
sonic(config-if-0/3)# ip address 172.16.17.2/24
sonic(config-if-0/3)# exit
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 10.1.0.214/32
Leaf4
sonic# configure terminal
sonic(config)# interface ethernet 0/2
sonic(config-if-0/2)# ip address 172.16.14.2/24
sonic(config-if-0/2)# interface ethernet 0/3
sonic(config-if-0/3)# ip address 172.16.18.2/24
sonic(config-if-0/3)# exit
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 10.1.0.215/32
第 3 步
配置Leaf设备的聚合口
Leaf1
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# exit
sonic(config)# interface ethernet 0/1
sonic(config-if-0/1)# switchport
sonic(config-if-0/1)# link-aggregation-group 5
sonic(config-if-0/1)# exit
sonic(config)# interface link-aggregation 6
sonic(config-lagif-6)# exit
sonic(config)# interface ethernet 0/2
sonic(config-if-0/2)# switchport
sonic(config-if-0/2)# link-aggregation-group 6
sonic(config-if-0/2)# 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 access vlan 100
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 access 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/24
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 110.0.0.1/24
sonic(config-vlanif-200)# mac-address 00:11:22:33:44:66
sonic(config-vlanif-200)# vrf 123
sonic(config-vlanif-200)# exit
Leaf2
sonic(config)# interface link-aggregation 5
sonic(config-lagif-5)# exit
sonic(config)# interface ethernet 0/1
sonic(config-if-0/1)# switchport
sonic(config-if-0/1)# link-aggregation-group 5
sonic(config-if-0/1)# exit
sonic(config)# interface link-aggregation 6
sonic(config-lagif-6)# exit
sonic(config)# interface ethernet 0/2
sonic(config-if-0/2)# switchport
sonic(config-if-0/2)# link-aggregation-group 6
sonic(config-if-0/2)# 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 access vlan 100
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 access 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/24
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 110.0.0.1/24
sonic(config-vlanif-200)# mac-address 00:11:22:33:44:66
sonic(config-vlanif-200)# vrf 123
sonic(config-vlanif-200)# exit
Leaf3
sonic(config)# interface link-aggregation 7
sonic(config-lagif-7)# exit
sonic(config)# interface ethernet 0/1
sonic(config-if-0/1)# switchport
sonic(config-if-0/1)# link-aggregation-group 7
sonic(config-if-0/1)# exit
sonic(config)# vlan 300
sonic(config-vlan-300)# exit
sonic(config)# interface link-aggregation 7
sonic(config-lagif-7)# switchport access vlan 300
sonic(config-lagif-7)# lacp system-id 00:00:01:00:00:03
sonic(config-lagif-7)# exit
sonic(config)# vrf 456
sonic(config-vrf)# exit
sonic(config)# interface vlan 300
sonic(config-vlanif-300)# ip address 120.0.0.1/24
sonic(config-vlanif-300)# mac-address 00:11:22:33:44:77
sonic(config-vlanif-300)# vrf 456
sonic(config-vlanif-300)# exit
Leaf4
sonic(config)# interface link-aggregation 7
sonic(config-lagif-7)# exit
sonic(config)# interface ethernet 0/1
sonic(config-if-0/1)# switchport
sonic(config-if-0/1)# link-aggregation-group 7
sonic(config-if-0/1)# exit
sonic(config)# vlan 300
sonic(config-vlan-300)# exit
sonic(config)# interface link-aggregation 7
sonic(config-lagif-7)# switchport access vlan 300
sonic(config-lagif-7)# lacp system-id 00:00:01:00:00:03
sonic(config-lagif-7)# exit
sonic(config)# vrf 456
sonic(config-vrf)# exit
sonic(config)# interface vlan 300
sonic(config-vlanif-300)# ip address 120.0.0.1/24
sonic(config-vlanif-300)# mac-address 00:11:22:33:44:77
sonic(config-vlanif-300)# vrf 456
sonic(config-vlanif-300)# exit
第 4 步
配置 BGP
Spine1
sonic(config)# router bgp 65200
sonic(config-router)# bgp router-id 10.1.0.210
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.16.11.2 remote-as 65202
sonic(config-router)# neighbor 172.16.11.2 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.12.2 remote-as 65203
sonic(config-router)# neighbor 172.16.12.2 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.13.2 remote-as 65204
sonic(config-router)# neighbor 172.16.13.2 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.14.2 remote-as 65205
sonic(config-router)# neighbor 172.16.14.2 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 10.1.0.210/32
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)#end
sonic#write
sonic#reload
Spine2
sonic(config)# router bgp 65201
sonic(config-router)# bgp router-id 10.1.0.211
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.16.15.2 remote-as 65202
sonic(config-router)# neighbor 172.16.15.2 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.16.2 remote-as 65203
sonic(config-router)# neighbor 172.16.16.2 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.17.2 remote-as 65204
sonic(config-router)# neighbor 172.16.17.2 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.18.2 remote-as 65205
sonic(config-router)# neighbor 172.16.18.2 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 10.1.0.211/32
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)#end
sonic# write
sonic# reload
Leaf1
sonic(config)# router bgp 65202
sonic(config-router)# bgp router-id 10.1.0.212
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.16.11.1 remote-as 65200
sonic(config-router)# neighbor 172.16.11.1 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.15.1 remote-as 65201
sonic(config-router)# neighbor 172.16.15.1 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 10.1.0.212/32
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)#exit
sonic(config-router)#exit
Leaf2
sonic(config)# router bgp 65203
sonic(config-router)# bgp router-id 10.1.0.213
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.16.12.1 remote-as 65200
sonic(config-router)# neighbor 172.16.12.1 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.16.1 remote-as 65201
sonic(config-router)# neighbor 172.16.16.1 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 10.1.0.213/32
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)#exit
sonic(config-router)#exit
Leaf3
sonic(config)# router bgp 65204
sonic(config-router)# bgp router-id 10.1.0.214
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.16.13.1 remote-as 65200
sonic(config-router)# neighbor 172.16.13.1 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.17.1 remote-as 65201
sonic(config-router)# neighbor 172.16.17.1 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 10.1.0.214/32
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)# exit
sonic(config-router)# exit
Leaf4
sonic(config)# router bgp 65205
sonic(config-router)# bgp router-id 10.1.0.215
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor PEER_V4_EBGP peer-group
sonic(config-router)# neighbor 172.16.14.1 remote-as 65200
sonic(config-router)# neighbor 172.16.14.1 peer-group PEER_V4_EBGP
sonic(config-router)# neighbor 172.16.18.1 remote-as 65201
sonic(config-router)# neighbor 172.16.18.1 peer-group PEER_V4_EBGP
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 10.1.0.215/32
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)# exit
sonic(config-router)# exit
第 5 步
配置evpn multihoming
Leaf1
sonic(config)# interface vxlan 0
sonic(config-vxlanif-0)# source 10.1.0.212
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/3
sonic(config-if-0/3)# evpn mh uplink
sonic(config-if-0/3)# exit
sonic(config)# interface ethernet 0/4
sonic(config-if-0/4)# evpn mh uplink
sonic(config-if-0/4)# 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-lagif-6)#end
sonic# write
sonic# reload
Leaf2
sonic(config)# interface vxlan 0
sonic(config-vxlanif-0)# source 10.1.0.213
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/3
sonic(config-if-0/3)# evpn mh uplink
sonic(config-if-0/3)# exit
sonic(config)# interface ethernet 0/4
sonic(config-if-0/4)# evpn mh uplink
sonic(config-if-0/4)# 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-lagif-6)#end
sonic# write
sonic# reload
Leaf3
sonic(config)# interface vxlan 0
sonic(config-vxlanif-0)# source 10.1.0.214
sonic(config-vxlanif-0)# exit
sonic(config)# vlan 300
sonic (config-vlan-300)# vni 300
sonic (config-vlan-300)# exit
sonic(config)# vrf 456
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/2
sonic(config-if-0/2)# evpn mh uplink
sonic(config-if-0/2)# exit
sonic(config)# interface ethernet 0/3
sonic(config-if-0/3)# evpn mh uplink
sonic(config-if-0/3)# exit
sonic(config)# interface link-aggregation 7
sonic(config-lagif-7)# evpn mh es-id 300
sonic(config-lagif-7)# evpn mh es-sys-mac 00:00:01:00:00:03
sonic(config-lagif-7)#end
sonic# write
sonic# reload
Leaf4
sonic(config)# interface vxlan 0
sonic(config-vxlanif-0)# source 10.1.0.215
sonic(config-vxlanif-0)# exit
sonic(config)# vlan 300
sonic (config-vlan-300)# vni 300
sonic (config-vlan-300)# exit
sonic(config)# vrf 456
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/2
sonic(config-if-0/2)# evpn mh uplink
sonic(config-if-0/2)# exit
sonic(config)# interface ethernet 0/3
sonic(config-if-0/3)# evpn mh uplink
sonic(config-if-0/3)# exit
sonic(config)# interface link-aggregation 7
sonic(config-lagif-7)# evpn mh es-id 300
sonic(config-lagif-7)# evpn mh es-sys-mac 00:00:01:00:00:03
sonic(config-lagif-7)#end
sonic# write
sonic# reload
第 6 步
配置 3 台server的bond接口
Server-1
#configure bond0
[root@localhost /]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
TYPE=bond
ONBOOT=yes
BONDING_OPTS=”miimon=100 mode=4 lacp_rate=fast xmit_hash_policy=layer3+4 fail_over_mac=1 “
IPADDR=100.0.0.12
NETMASK=255.255.255.0
GATEWAY=100.0.0.1
MASTER=yes
#configure eth0
[root@localhost network-scripts]# vi ifcfg-eth0
DEVICE=”eth0″
BOOTPROTO=none
ONBOOT=”yes”
MASTER=bond0
SLAVE=yes
#configure eth1
[root@localhost network-scripts]# vi ifcfg-eth1
DEVICE=”eth1″
BOOTPROTO=none
ONBOOT=”yes”
MASTER=bond0
SLAVE=yes
Server-2
#configure bond0
[root@localhost /]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
TYPE=bond
ONBOOT=yes
BONDING_OPTS=”miimon=100 mode=4 lacp_rate=fast xmit_hash_policy=layer3+4 fail_over_mac=1 “
IPADDR=110.0.0.12
NETMASK=255.255.255.0
GATEWAY=110.0.0.1
MASTER=yes
#configure eth0
[root@localhost network-scripts]# vi ifcfg-eth0
DEVICE=”eth0″
BOOTPROTO=none
ONBOOT=”yes”
MASTER=bond0
SLAVE=yes
#configure eth1
[root@localhost network-scripts]# vi ifcfg-eth1
DEVICE=”eth1″
BOOTPROTO=none
ONBOOT=”yes”
MASTER=bond0
SLAVE=yes
Server-3
#configure bond0
[root@localhost /]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
TYPE=bond
ONBOOT=yes
BONDING_OPTS=”miimon=100 mode=4 lacp_rate=fast xmit_hash_policy=layer3+4 fail_over_mac=1 “
IPADDR=120.0.0.12
NETMASK=255.255.255.0
GATEWAY=120.0.0.1
MASTER=yes
#configure eth0
[root@localhost network-scripts]# vi ifcfg-eth0
DEVICE=”eth0″
BOOTPROTO=none
ONBOOT=”yes”
MASTER=bond0
SLAVE=yes
#configure eth1
[root@localhost network-scripts]# vi ifcfg-eth1
DEVICE=”eth1″
BOOTPROTO=none
ONBOOT=”yes”
MASTER=bond0
SLAVE=yes
完成配置后的server接口状态如下:
4.7 验证网络配置
1.各server之间互ping,能够ping通。
2.检查每个交换机的BGP状态。以 Spine1 和 Leaf1 为例:
Spine1
sonic# show bgp summary
Leaf1
sonic# show bgp summary
从查询结果可以看出各switch的bgp状态正常。
3.查看各leaf的聚合口状态,以leaf1和leaf3为例:
Leaf1
sonic# show link-aggregation summary
Leaf3
sonic# show link-aggregation summary
从查询结果可以看出各leaf的lag口状态正常。
4.查看各leaf的vxlan隧道,以leaf1和leaf3为例:
Leaf1
sonic# show vxlan tunnel
Leaf3
sonic# show vxlan tunnel
从查询结果可以看出各leaf vxlan tunnel状态正常。
5.查看各leaf的evpn multihoming 状态
Leaf1
sonic# show evpn es detail
Leaf2
sonic# show evpn es detail
Leaf3
sonic# show evpn es detail
Leaf4
sonic# show evpn es detail
从查询结果可以看出4台leaf的状态正常,其中leaf1和leaf3分别作为DF设备。
6.用server1 ping server3,将leaf1的ethernet0/1接口down掉,查看lag5的DF设备状态,并查看server1的ping是否中断。
sonic(config-if-0/1)# shutdown
sonic# show evpn es detail
从结果看,down掉0/1接口后,lag5的leaf1转变为non-df状态,同时leaf2转变为df状态。
并且Server1的ping没有中断。
5 结论
本次测试中,使用vAsterNOS及VM设备组网并配置EVPN Multihoming网络后,各VM之间能互相正常通信,并且leaf之间能正确建立vxlan隧道,相关路由也正常工作。当VM的其中一条接入链路断开后,数据会无缝切换到另一条链路继续传输,DF设备切换正常。当断开的链路重新连接正常后,DF设备也切回原来的设备,数据重新回到原来链路上传输。说明EVPN Multihoming功能工作正常,满足用户的网络高可靠需求。
6 设备升级
6.1 注意事项
以升级 Leaf-1 交换机为例,有以下注意事项:
(1)为减少 Leaf 设备升级期间对业务的影响,应当手动关闭 Leaf-1相应接口,将业务流量全部切换至 Leaf-2后,再对 Leaf-1 进行升级。
(2)如果在 Unique-IP VLAN 下有终端接入,若终端的网关设置为 Leaf-1 的 VLAN,需提前修改终端的网关为Leaf-2、再对 Leaf-1 进行升级。
(3)建议 Leaf 设备升级间隔至少 10 分钟。
下面对具体的操作步骤进行说明。
6.2 操作步骤
- 登录 Leaf-1 交换机,完成待升级的镜像安装后,执行configure terminal命令,进入系统配置视图;
- 将下行聚合接口的 LACP 协议状态依次置为 Down(该命令单次有效,重启自动恢复),实现用户侧流量的切换;
evpnmh-leaf-1(config)# interface link-aggregation 100
evpnmh-leaf-1(config-lagif-100)# lacp graceful-down
evpnmh-leaf-1(config)# interface link-aggregation 101
evpnmh-leaf-1(config-lagif-100)# lacp graceful-down
检查Leaf-1的下行聚合组状态:
evpnmh-leaf-1# show link-aggregation summary
Flags: A - active, I - inactive, Up - up, Dw - Down, N/A - not available,
S - selected, D - deselected, * - not synced
No. Team Dev Protocol Ports Description ----- --------------- ----------- ------------- -------------
0100 lag 100 LACP(A)(Dw) 0/64 (D) N/A
- 将上行口的物理状态依次置为 Down,实现隧道流量的切换
evpnmh-leaf-1(config)# interface ethernet 0/48
evpnmh-leaf-1(config-if-0/48)# shutdown
evpnmh-leaf-1(config-if-0/48)# interface ethernet 0/52
evpnmh-leaf-1(config-if-0/52)# shutdown
- 通过show counters interface命令确定Leaf-1上没有流量经过,已完全切换至Leaf-2。
- 升级重启Leaf-1;
evpnmh-leaf-1# reboot
Do you want to reboot? [y/N]: y
待升级完成,流量将自动切回 Leaf-1,检査 Leaf-1 的下行聚合组状态、BGP 邻居状态是否正常,确认 Leaf-1 恢复转发流量,再按照同样步骤进行 Leaf-2 设备的升级。
点击了解Asterfusion CX-N数据中心交换机
如有其它问题,请填写右侧需求表单联系我们