CX-N-MC-LAG三层转发功能验证
1 方案概述
本文主要讲解CX-N 系列交换机基于MC-LAG实现的三层组网下的相关解决方案,验证网络通信、故障转移和恢复等能力。整个验证过程中交换机所有命令通过思科命令行配置完成。
1.1 MC-LAG二层转发
Asterfusion CX-N超低时延云交换机支持基于MC-LAG的二层转发功能,如图1所示:
在上行链路故障转移和恢复测试场景中,使用Server1生成TCP/UDP流量向Server3打流,此时流量路径为:Server1->Leaf1->Spine->Leaf3->Server3。
Leaf1交换机在上联端口HG1故障的情况下,L2流量可以通过Peer-link转发到对端Leaf2,然后通过BGP学习到下一跳为Spine,最后经过Leaf3到Server3。此时流量路径:Server1->Leaf1->Leaf2->Spine->Leaf3->Server3。
1.2 MC-LAG三层转发
Asterfusion CX-N超低时延云交换机支持基于MC-LAG的三层转发功能,相较于MC-LAG的二层转发功能,三层转发新增一条三层冗余链路用于数据转发,转发和控制分离。如图2所示:
在上行链路故障转移和恢复测试场景中,使用Server1生成TCP/UDP流量向Server3打流,此时流量路径为:Server1->Leaf1->Spine->Leaf3->Server3。
Leaf1交换机在上联端口HG1故障的情况下,L3流量可以通过BGP邻居学习到Server3的路由通过三层冗余链路转发到Leaf2,然后通过BGP学习到下一跳为Spine,最后经过Leaf3到Server3。此时流量路径:Server1->Leaf1->Leaf2->Spine->Leaf3->Server3。
2 物理网络拓扑
本次相关方案验证的整体物理拓扑如图1所示:
3 硬件与软件环境
3.1 设备管理口
验证过程中所涉及到的设备、主机名及管理网口IP地址等信息,如表1所示:
设备 | 主机名 | 管理口IP地址 | 备注 |
CX532-N | Spine1 | 10.230.1.32 | |
CX308-N | Leaf1 | 10.230.1.18 | |
CX308-N | Leaf2 | 10.230.1.19 | |
CX308-N | Leaf3 | 10.230.1.20 | |
Server | Server1 | 10.230.1.11 | |
Server | Server3 | 10.230.1.13 |
3.2 硬件环境
验证环境中涉及到的硬件环境,如表2所示:
名称 | 型号 | 硬件指标 | 数量 | 备注 |
Spine | CX532P-N | 【参见产品彩页】 | 1 | |
Leaf | CX308P-48Y-N | 【参见产品彩页】 | 3 | |
光模块 | 10G | SFP+ | 6 | 为了尽量减少物料种类,线缆和模块速率进行了统一,交换机互联使用100G模块和线缆,服务器需用10G模块和线缆 |
100G | QSFP28 | 10 | ||
网线 | / | / | 6 | |
光纤 | 多模 | 10G /25G适用 | 3 | |
多模 | 100G适用 | 5 | ||
服务器 | / | 内存推荐8G以上 | 2 |
3.3 软件环境
验证环境中涉及到的软件环境,如表3所示:
名称 | 版本 | 备注 |
iperf3 | 3.1.7 | |
CX532-N | SONiC.201911.R0314P06 | |
CX308-N | SONiC.201911.R0314P06 | |
服务器系统 | CentOS Linux 7.8.2003 | |
服务器内核 | 3.10.0-1127.18.2.el7 |
4 基础环境部署
在两台Server服务器上,安装部署本次验证方案的所需要的基础软件。
补充说明:以”[root@server ~]#”为开头的命令表示两台服务器都要执行。
4.1 LLDP
在两台Server服务器上安装LLDP服务,如果是X710网卡要求网卡驱动版本大于2.3.6,然后配置网卡开启LLDP。
[root@server ~]# yum -y install epel-release
[root@server ~]# yum -y install lldpd
[root@server ~]# systemctl start lldpd
[root@server ~]# systemctl enable lldpd
[root@server ~]# lspci |grep -i ether
[root@server ~]# ethtool -i ens1f0
[root@server ~]# ethtool -i ens1f1
[root@sever ~]# ethtool --set-priv-flags ens1f0 disable-fw-lldp on
[root@sever ~]# ethtool --set-priv-flags ens1f1 disable-fw-lldp on
4.2 安装iPerf3
在2台Server服务器上安装iPerf3软件用来打流。
在2台服务器上上执行:
[root@server ~]# yum -y install iperf3
[root@server ~]# iperf3 -v
iperf 3.1.7
Linux compute-2 3.10.0-1160.62.1.el7.x86_64 #1 SMP Tue Apr 5 16:57:59 UTC 2022 x86_64
Optional features available: CPU affinity setting, IPv6 flow label, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing
4.3 检查链路连接
所有交换机设备要提前检查和Server服务器之间的链路连接情况,确保交换机设备和Server服务器之间的链路连接没有问题,以下命令在所有交换机设备上执行。
admin@sonic:~$ sudo config cli-mode cli
admin@sonic:~$ sudo sonic-cli
sonic#
Spine1# show lldp table
Spine2# show lldp table
Leaf1# show lldp table
Leaf2# show lldp table
Leaf3# show lldp table
5 组网环境配置
5.1 逻辑拓扑
5.2 Spine1
5.2.1 设备恢复出厂设置
配置思科命令行,恢复Spine1设备到出厂设置。
Spine1@sonic:~$ sudo config cli-mode cli
Spine1@sonic:~$ sudo sonic-cli
sonic# delete startup-config
sonic# reload
5.2.2 配置Spine1接口IP
在Spine1交换机上配置与3台Leaf交换机的互联接口IP。
Spine1# configure terminal
Spine1(config)# interface ethernet 0/0
Spine1(config-if-0/0)# ip address 10.0.10.2/24
Spine1(config-if-0/0)# interface ethernet 0/4
Spine1(config-if-0/4)# ip address 10.0.11.2/24
Spine1(config-if-0/4)# interface ethernet 0/8
Spine1(config-if-0/8)# ip address 10.0.12.2/24
5.2.3 配置Spine1的BGP
在Spine1交换机上配置3台Leaf交换机的BGP邻居。
Spine1# configure terminal
Spine1(config)# interface loopback 0
Spine1(config-loif-0)# ip address 10.10.0.3/32
Change Loopback0 ip from 10.1.0.1/32 to 10.10.0.3/32
Loopback ip will be used as bgp router-id in frr
Spine1(config-loif-0)# ip address 10.10.0.3/3
Spine1(config-loif-0)# router bgp 65003
Spine1(config-router)# neighbor 10.0.10.1 remote-as 65007
Spine1(config-router)# neighbor 10.0.11.1 remote-as 65007
Spine1(config-router)# neighbor 10.0.12.1 remote-as 65008
Spine1(config-router)# route-map DEFAULT_EVPN_ROUTE_MAP permit 65535
Spine1(config-route-map)# route-map FROM_BGP_PEER_V4 permit 65535
Spine1(config)# address-family ipv4 unicast
Spine1(config)# router bgp 65003
Spine1(config-router)# address-family ipv4 unicast
Spine1(config-router-af)# redistribute connected
Spine1(config-router-af)# neighbor 10.0.10.1 route-map FROM_BGP_PEER_V4 in
Spine1(config-router-af)# neighbor 10.0.10.1 route-map FROM_BGP_PEER_V4 out
Spine1(config-router-af)# neighbor 10.0.11.1 route-map FROM_BGP_PEER_V4 in
Spine1(config-router-af)# neighbor 10.0.11.1 route-map FROM_BGP_PEER_V4 out
Spine1(config-router-af)# neighbor 10.0.12.1 route-map FROM_BGP_PEER_V4 in
Spine1(config-router-af)# neighbor 10.0.12.1 route-map FROM_BGP_PEER_V4 out
Spine1(config)# write
Spine1(config)# reload
5.3 Leaf1
5.3.1 设备恢复出厂设置
恢复Leaf1设备到出厂设置。
Leaf1# delete startup-config
Leaf1# reload
5.3.2 配置Leaf1端口速率
配置Leaf1交换机的Ethernet0口速率为10G。
Leaf1# configure terminal
Leaf1(config)# interface ethernet 0/0
Leaf1(config-if-0/0)# speed 10000
Leaf1(config-if-0/0)# show this
!
interface ethernet 0/0
speed 10000
5.3.3 配置Leaf1接口IP
在Leaf1交换机上配置与Leaf、Spine交换机的互联接口IP以及PortChannel、VLAN信息。
Leaf1# configure terminal
Leaf1(config)# interface ethernet 0/48
Leaf1(config-if-0/48)# ip address 10.0.10.1/24
Leaf1(config-if-0/48)# interface link-aggregation 1
Leaf1(config-lagif-1)# interface ethernet 0/0
Leaf1(config-if-0/0)# link-aggregation-group 1
Leaf1(config-if-0/0)# vlan 10
Leaf1(config-vlan-10)# vlan 30
Leaf1(config-vlan-30)# interface ethernet 0/56
Leaf1(config-if-0/56)# ip address 10.2.1.1/24
Leaf1(config-if-0/56)# mac-address 18:17:25:37:77:00
Leaf1(config-if-0/56)# interface ethernet 0/60
Leaf1(config-if-0/60)# switchport trunk vlan 10
Leaf1(config-if-0/60)# switchport trunk vlan 30
Leaf1(config-if-0/60)# interface vlan 10
Leaf1(config-vlanif-10)# ip address 100.0.10.1/24
Leaf1(config-vlanif-10)# interface link-aggregation 1
Leaf1(config-lagif-1)# switchport access vlan 10
5.3.4 配置Leaf1的MC-LAG
在Leaf1交换机上配置与Leaf2交换机互联接口的MC-LAG。
Leaf1# configure terminal
Leaf1(config)# vlan 30
Leaf1(config-vlan-30)# interface vlan 30
Leaf1(config-vlanif-30)# ip address 11.0.0.6/24
Leaf1(config-vlanif-30)# mclag domain 1
Leaf1(mclag-domain)# local-address 11.0.0.6
Leaf1(mclag-domain)# peer-address 11.0.0.7
Leaf1(mclag-domain)# peer-link ethernet 0/60
Leaf1(mclag-domain)# member lag 1
Leaf1(mclag-domain)# commit
Leaf1(mclag-domain)# interface vlan 10
Leaf1(config-vlanif-10)# mac-address 18:17:25:37:64:40
5.3.5 配置Leaf1的BGP
在Leaf1交换机上配置与Spine1交换机的BGP邻居。
Leaf1# configure terminal
Leaf1(config)# router bgp 65007
Leaf1(config-router)# bgp router-id 10.10.0.6
Leaf1(config-router)# interface loopback 0
Leaf1(config-loif-0)# ip address 10.10.0.6/32
Change Loopback0 ip from 10.1.0.1/32 to 10.10.0.6/32
Loopback ip will be used as bgp router-id in frr
Leaf1(config-loif-0)# router bgp 65007
Leaf1(config-router)# neighbor 10.0.10.2 remote-as 65003
Leaf1(config-router)# neighbor 10.2.1.2 remote-as 65007
Leaf1(config-router)# route-map FROM_BGP_PEER_V4 permit 65535
Leaf1(config-route-map)# router bgp 65007
Leaf1(config-router)# address-family ipv4 unicast
Leaf1(config-router-af)# redistribute connected
Leaf1(config-router-af)# neighbor 10.2.1.2 route-map FROM_BGP_PEER_V4 in
Leaf1(config-router-af)# neighbor 10.2.1.2 route-map FROM_BGP_PEER_V4 out
Leaf1(config-router-af)# neighbor 10.0.10.2 route-map FROM_BGP_PEER_V4 in
Leaf1(config-router-af)# neighbor 10.0.10.2 route-map FROM_BGP_PEER_V4 out
5.4 Leaf2
5.4.1 设备恢复出厂设置
恢复Leaf2设备到出厂设置。
Leaf2# delete startup-config
Leaf2# reload
5.4.2 配置Leaf2端口速率
配置Leaf2交换机的Ethernet0口速率为10G。
Leaf2# configure terminal
Leaf2(config)# interface ethernet 0/0
Leaf2(config-if-0/0)# speed 10000
Leaf2(config-if-0/0)# show this
!
interface ethernet 0/0
speed 10000
5.4.3 配置Leaf2接口IP
在Leaf2交换机上配置与Leaf、Spine交换机的互联接口IP以及PortChannel、VLAN信息。
Leaf2# configure terminal
Leaf2(config)# interface ethernet 0/48
Leaf2(config-if-0/48)# ip address 10.0.11.1/24
Leaf2(config-if-0/48)# interface link-aggregation 1
Leaf2(config-lagif-1)# interface ethernet 0/0
Leaf2(config-if-0/0)# link-aggregation-group 1
Leaf2(config-if-0/0)# vlan 10
Leaf2(config-vlan-10)# vlan 30
Leaf2(config-vlan-30)# interface ethernet 0/56
Leaf2(config-if-0/56)# ip address 10.2.1.2/24
Leaf2(config-if-0/56)# mac-address 18:17:25:37:77:01
Leaf2(config-if-0/56)# interface ethernet 0/60
Leaf2(config-if-0/60)# switchport trunk vlan 10
Leaf2(config-if-0/60)# switchport trunk vlan 30
Leaf2(config-if-0/60)# interface vlan 10
Leaf2(config-vlanif-10)# ip address 100.0.10.1/24
Leaf2(config-vlanif-10)# interface link-aggregation 1
Leaf2(config-lagif-1)# switchport access vlan 10
5.4.4 配置Leaf2的MC-LAG
在Leaf2交换机上配置与Leaf1交换机互联接口的MC-LAG。
Leaf2# configure terminal
Leaf2(config)# vlan 30
Leaf2(config-vlan-30)# interface vlan 30
Leaf2(config-vlanif-30)# ip address 11.0.0.7/24
Leaf2(config-vlanif-30)# mclag domain 1
Leaf2(mclag-domain)# local-address 11.0.0.7
Leaf2(mclag-domain)# peer-address 11.0.0.6
Leaf2(mclag-domain)# peer-link ethernet 0/60
Leaf2(mclag-domain)# member lag 1
Leaf2(mclag-domain)# commit
Leaf2(mclag-domain)# interface vlan 10
Leaf2(config-vlanif-10)# mac-address 18:17:25:37:64:40
5.4.5 配置Leaf2的BGP
在Leaf2交换机上配置与Spine1交换机的BGP邻居。
Leaf2# configure terminal
Leaf2(config)# router bgp 65007
Leaf2(config-router)# bgp router-id 10.10.0.7
Leaf2(config-router)# interface loopback 0
Leaf2(config-loif-0)# ip address 10.10.0.7/32
Change Loopback0 ip from 10.1.0.1/32 to 10.10.0.7/32
Loopback ip will be used as bgp router-id in frr
Leaf2(config-loif-0)# router bgp 65007
Leaf2(config-router)# neighbor 10.0.11.2 remote-as 65003
Leaf2(config-router)# neighbor 10.2.1.1 remote-as 65007
Leaf2(config-router)# route-map FROM_BGP_PEER_V4 permit 65535
Leaf2(config-route-map)# router bgp 65007
Leaf2(config-router)# address-family ipv4 unicast
Leaf2(config-router-af)# redistribute connected
Leaf2(config-router-af)# neighbor 10.2.1.1 route-map FROM_BGP_PEER_V4 in
Leaf2(config-router-af)# neighbor 10.2.1.1 route-map FROM_BGP_PEER_V4 out
Leaf2(config-router-af)# neighbor 10.0.11.2 route-map FROM_BGP_PEER_V4 in
Leaf2(config-router-af)# neighbor 10.0.11.2 route-map FROM_BGP_PEER_V4 out
5.5 Leaf3
5.5.1 设备恢复出厂设置
恢复Leaf3设备到出厂设置。
Leaf3# delete startup-config
Leaf3# reload
5.5.2 配置Leaf3端口速率
配置Leaf3交换机的Ethernet0口速率为10G。
Leaf3# configure terminal
Leaf3(config)# interface ethernet 0/0
Leaf3(config-if-0/0)# speed 10000
Leaf3(config-if-0/0)# show this
!
interface ethernet 0/0
speed 10000
5.5.3 配置Leaf3接口IP
在Leaf3交换机上配置与Leaf、Spine交换机的互联接口IP以及PortChannel、VLAN信息。
Leaf3# configure terminal
Leaf3(config-if-0/0)# interface ethernet 0/48
Leaf3(config-if-0/48)# ip address 10.0.12.1/24
Leaf3(config-if-0/48)# interface link-aggregation 1
Leaf3(config-lagif-1)# interface ethernet 0/0
Leaf3(config-if-0/0)# link-aggregation-group 1
Leaf3(config-if-0/0)# vlan 20
Leaf3(config-vlan-20)# interface vlan 20
Leaf3(config-vlanif-20)# ip address 100.0.20.1/24
Leaf3(config-vlanif-20)# interface link-aggregation 1
Leaf3(config-lagif-1)# switchport access vlan 20
5.5.4 配置Leaf3的BGP
在Leaf3交换机上配置与Spine1交换机的BGP邻居。
Leaf3(config)# router bgp 65008
Leaf3(config-router)# bgp router-id 10.10.0.8
Leaf3(config-router)# interface loopback 0
Leaf3(config-loif-0)# ip address 10.10.0.8/32
Change Loopback0 ip from 10.1.0.1/32 to 10.10.0.8/32
Loopback ip will be used as bgp router-id in frr
Leaf3(config-loif-0)# route-map FROM_BGP_PEER_V4 permit 65535
Leaf3(config-route-map)# router bgp 65008
Leaf3(config-router)# neighbor 10.0.12.2 remote-as 65003
Leaf3(config-router)# address-family ipv4 unicast
Leaf3(config-router-af)# redistribute connected
Leaf3(config-router-af)# neighbor 10.0.12.2 route-map FROM_BGP_PEER_V4 in
Leaf3(config-router-af)# neighbor 10.0.12.2 route-map FROM_BGP_PEER_V4 out
6 故障转移和恢复测试
6.1 服务器通信测试
在Server3服务器上创建服务端,在Server1服务器使用iperf3软件生成TCP/UDP流量。
[root@server3 ~]# iperf3 -s
[root@server1 ~]# iperf3 -c 100.0.20.3 -l 20k -b 10G -t 1000
6.2 查看流量路径
Spine1:
流量从Ethernet0口进,Ethernet8口出。
流量路径Server1-Leaf1-Spine1-Leaf3-Server3
6.3 查看设备路由信息
Spine1:
Leaf1:
Leaf2:
6.4 故障测试
流量所在的上行链路断链,检查Leaf的路由信息,查看Server1和Server3打流情况。
Leaf1:
Leaf1(config)# interface ethernet 0/48
Leaf1(config-if-0/72)# shutdown
Server1 Server3打流没有出现断流,有轻微流量抖动:
检查Leaf1路由信息:
由于上行链路断链,Leaf1通过BGP邻居学习到100.0.20.0/24的路由通过三层冗余链路Ethernet56口10.2.1.2到Leaf2再到Spine1
检查Leaf2路由信息:
Leaf2路由信息没有变化
检查Spine1路由信息:
Spine1路由信息没有变化
6.5 查看断链流量路径
Spine1:
流量从Ethernet4口进,Ethernet8口出。
Leaf2:
流量从Leaf2三层冗余链路Ethernet56口进,Ethernet48口出到Spine1。
Leaf1:
由于Leaf1上行链路断链,流量从Leaf1三层冗余链路Ethernet56口出,到Leaf2。
流量路径: Server1-Leaf1(三层冗余链路口)-Leaf2(三层冗余链路口)Spine1-Leaf3-Server3
6.6 故障恢复测试
恢复流量所在的上行链路故障,查看Server1和Server3打流情况。
Leaf1:
Leaf1(config)# interface ethernet 0/48
Leaf1(config-if-0/72)# startup
Server1 Server3打流没有出现断流,有轻微流量抖动:
检查Leaf1路由信息:
Leaf1上行链路断链恢复,路由恢复
检查Leaf2路由信息:
Leaf2路由信息没有变化
检查Spine1路由信息:
Spine1路由信息没有变化
6.7 查看断链恢复流量路径
Spine1:
流量从Ethernet0口进,Ethernet8口出。
Leaf2:
Leaf2没有流量
Leaf1:
Leaf1流量从Ethernet0口进,Ethernet48口出到Spine1。
流量路径恢复: Server1-Leaf1-Spine1-Leaf3-Server3
7 结论
通过上述解决方案验证可知,CX-N系列交换机具备MC-LAG的三层高可用转发功能,同时具备端口、链路及设备组网通信的故障转移和恢复能力。