基于CX-N产品的MC-LAG应用场景配置
- 1 目的
- 2 型号和版本
- 3 MC-LAG介绍
- 4 MC-LAG基础配置说明
- 4.1 配置MC-LAG
- 4.2 配置peer-link
- 4.3 配置心跳检测链路
- 4.4 配置MC-LAG成员接口
- 4.5 配置Monitor Link组
- 5 MC-LAG典型配置案例
- 5.1 要求
- 5.2 拓扑图
- 5.3 测试环境
- 5.4 测试前的准备工作
- 5.5 配置步骤
- 6 结论
- Asterfusion CX-N数据中心交换机
1 目的
本文主要讲解企业级SONiC交换机的 MC-LAG解决方案和配置。
2 型号和版本
以下产品可以实现本方案:
CX-N系列交换机
AsterNOS系统软件版本:
AsterNOSv3.1
3 MC-LAG介绍
MC-LAG(Multi Chassis Link Aggregation Group,跨设备链路聚合组)是一种实现跨设备链路聚合的机制,通过将一台设备与另外两台设备进行跨设备链路聚合,保留了普通链路聚合的优点,同时提供了设备级别的冗余。
MC-LAG提供了一种横向虚拟化技术,将两台物理设备虚拟成单台逻辑设备,这台虚拟出来的“单个设备”与其相连的上行或下行设备实现“一对一”链路聚合。如下图所示:
本文所介绍的设备MC-LAG工作模式为:控制面主备模式、数据面双活模式,即:
在控制面需要区分主设备和备设备,主链路和备用链路;
在数据面采用双活方式,两台设备各自决定转发数据流。
4 MC-LAG基础配置说明
Asterfusion交换机运行企业级SONiC(AsterNOS)系统,能够灵活支持MC-LAG组网。
4.1 配置MC-LAG
mclag domain domain-id #创建MC-LAG域并进入视图,当前只支持创建一个域,范围1-4095。
session-timeout timeout #超时时间,单位秒,取值范围为3~3600,默认值为15秒;心跳检测报文的时间间隔应小于MC-LAG会话超时时间的1/3;会话超时时间应为心跳检测报文时间间隔的倍数。
Example:
sonic(config)# mclag domain 10
sonic(mclag-domain)# session-timeout 15
4.2 配置peer-link
vlan vlan-id #在全局视图下配置专用vlan,1-4095。
interface link-aggregation lag-id #创建聚合组,1-9999。
mode static #配置聚合模式为静态
commit #提交配置
switchport trunk vlan vlan-id #指定专用vlan并加入业务vlan
interface ethernet interface-name #进入接口视图
link-aggregation-group lag-id [port-priority port-priority] #加入相应lag,并可指定优先级0-65535,默认255。
startup-delay delay #配置接口延迟,默认为150秒,建议peer-link所在的物理接口上配置延迟值为145秒。
mclag domain domain-id #进入mclag域,id为之前配置的值。
peer-link link-aggregation name #指定peer-link。
commit #提交配置
Example:
sonic(config)# vlan 10
sonic(config-vlan-10)# exit
sonic(config)# interface link-aggregation 10
sonic(config-lagif-10)# mode static
sonic(config-lagif-10)# commit
sonic(config-lagif-10)# switchport trunk vlan 10
sonic(config-lagif-10)# exit
sonic(config)# interface ethernet 0/10
sonic(config-if-0/10)# link-aggregation-group 10
sonic(config-if-0/10)# startup-delay 100
sonic(config-if-0/10)# exit
sonic(config)# mclag domain 10
sonic(mclag-domain)# peer-link link-aggregation 10
sonic(mclag-domain)# commit
4.3 配置心跳检测链路
说明:心跳检测链路用来转发MC-LAG的控制报文,可以与peer-link共用,也可以使用单独的物理链路;
当开启双主检测功能时,要求心跳检测链路与peer-link共用,否则将导致功能失效。
使用单独的物理链路配置心跳检测
interface ethernet interface-name #进入接口视图
ip address A.B.C.D/M #配置接口ip地址
mclag domain domain-id #进入mclag域视图
peer-address A.B.C.D #配置心跳检测链路对端ip地址
local-address A.B.C.D #配置线条检测链路本端ip地址
vrf vrf-name #指定心跳检测链路VRF,默认default
heartbeat-interval interval #配置MC-LAG 心跳检测报文发送间隔时间,单位为秒,取值1~60,默认为1秒;
commit #提交配置
Example:
sonic(config)# interface ethernet 0/11
sonic(config-if-0/11)# ip address 10.0.0.11/24
sonic(config-if-0/11)# exit
sonic(config)# mclag domain 10
sonic(mclag-domain)# peer-address 10.0.0.12
sonic(mclag-domain)# local-address 10.0.0.11
sonic(mclag-domain)# heartbeat-interval 1
sonic(mclag-domain)# commit
使用peer-link配置心跳检测链路
interface vlan vlan-id #进入peer-link专用vlanif配置视图
ip address A.B.C.D/M #配置vlanif的ip地址
mclag domain domain-id #进入mclag域视图
peer-address A.B.C.D #配置心跳检测链路对端ip地址
local-address A.B.C.D #配置线条检测链路本端ip地址
vrf vrf-name #指定心跳检测链路VRF,默认default
commit #提交配置
Example:
sonic(config)# vlan 10
sonic(config-vlan-10)# ip address 10.0.0.11/24
sonic(config- vlan-10)# exit
sonic(config)# mclag domain 10
sonic(mclag-domain)# peer-address 10.0.0.12
sonic(mclag-domain)# local-address 10.0.0.11
sonic(mclag-domain)# commit
4.4 配置MC-LAG成员接口
说明:建议使用低速接口作为MC-LAG成员接口,为提高系统可靠性,建议跨设备聚合组使用动态聚合,并开启LACP短超时。要求部署MC-LAG的两台设备成员物理接口的port ID相同,否则无法正常聚合。
vlan vlan-id #创建业务VLAN,1-4094。
interface link-aggregation lag-id #进入LAG接口配置视图并创建下行聚合组,1-9999。
lacp fast-rate#开启lacp短超时
commit #提交配置
switchport trunk vlan vlan-id #加入业务vlan
mclag domain domain-id #进入mclag域视图
member lag lag-id #添加mclag成员接口
Example:
sonic(config)# vlan 10
sonic(config-vlan-10)# exit
sonic(config)# interface link-aggregation 10
sonic(config-lagif-10)# lacp fast-rate
sonic(config-lagif-10)# commit
sonic(config-lagif-10)# switchport trunk vlan 10
sonic(config-lagif-10)# exit
sonic(config)# mclag domain 10
sonic(mclag-domain)# member lag 10
4.5 配置Monitor Link组
说明:建议在部署MC-LAG的主备设备上配置Monitor Link组,上行口配置为uplink,下行口配置为downlink,开启该功能后,上行口状态down后,下行口会联动down,保证拓扑中出现故障时能够快速收敛。
monitor-link-group group-name [delay-time]#创建monitor-link组,delay-time为可选参数,表示上行口up后下行口up的延迟时间,单位秒,不配置时默认值为0。
interface ethernet interface-name #进入接口视图
monitor-link group-name uplink #配置上行口为uplink
interface link-aggregation lag-id #进入下行聚合组接口配置视图
monitor-link group-name downlink #配置MC-LAG成员接口为downlink
Example:
sonic(config)# monitor-link-group monitor1
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# monitor-link monitor1 uplink
sonic(config-if-0/48)# exit
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# monitor-link monitor1 downlink
5 MC-LAG典型配置案例
5.1 要求
用户的一台服务器server1运行着重要应用,希望接入的网络稳定可靠,现在用4台Asterfusion sonic交换机搭建网络,将两台leaf设备组成mc-lag与server1连接,测试其中一条链路断开的情况下server1是否会断网,测试过程中用server1与server2进行数据传输测试。
5.2 拓扑图
5.3 测试环境
硬件
名称 | 型号 | 硬件指标 | 数量 |
---|---|---|---|
spine交换机 | CX532P-N | 参见彩页 | 1 |
Leaf交换机 | CX308P-48Y-N-V2 | 参见彩页 | 3 |
服务器 | X86 | 普通服务器 | 2 |
光模块 | 多模 | 100G QSFP28 | 6 |
光纤 | 多模 | 100G适用 | 3 |
光模块 | 多模 | 10G SFP+ | 6 |
光纤 | 多模 | 10G适用 | 3 |
软件
软件 | 版本 |
---|---|
交换机操作系统 | AsterNOSv3.1 |
服务器系统 | CentOS Linux 7.8.2003 |
服务器内核 | 3.10.0-1127.18.2.el7 |
iperf3 | 3.9 |
管理IP
设备名称 | 接口 | IP地址 |
---|---|---|
Spine | 管理口 | 10.230.1.31 |
Leaf1 | 管理口 | 10.230.1.21 |
Leaf2 | 管理口 | 10.230.1.22 |
Leaf3 | 管理口 | 10.230.1.23 |
Server-1 | 管理口 | 10.230.1.11 |
Server-2 | 管理口 | 10.230.1.12 |
设备通信IP
设备名称 | 接口 | IP地址 |
---|---|---|
Spine | Ethernet 0/0 | 10.0.10.201 |
Spine | Ethernet 0/4 | 10.0.11.201 |
Spine | Ethernet 0/8 | 10.0.12.201 |
Spine | Loopback 0 | 172.16.0.1 |
Leaf1 | Ethernet 0/0 (Mc-Lag) | 100.0.10.201 |
Leaf1 | Ethernet 0/4(peer-link) | 11.0.0.11 |
Leaf1 | Ethernet 0/48 | 10.0.10.1 |
Leaf1 | Loopback 0 | 172.16.0.2 |
Leaf2 | Ethernet 0/0 (Mc-Lag) | 100.0.10.201 |
Leaf2 | Ethernet 0/4(peer-link) | 11.0.0.12 |
Leaf2 | Ethernet 0/48 | 10.0.11.1 |
Leaf2 | Loopback 0 | 172.16.0.3 |
Leaf3 | Ethernet 0/0 | 100.0.20.201 |
Leaf3 | Ethernet 0/48 | 10.0.12.1 |
Leaf3 | Loopback 0 | 172.16.0.4 |
Server-1 | Bond0 | 100.0.10.200 |
Server-2 | Eth0 | 100.0.20.200 |
5.4 测试前的准备工作
确保各设备按照拓扑图正确连接,确保iperf3测试软件正确安装。
5.5 配置步骤
第 1 步
配置 server1 的 bond0 接口的 IP 地址和网关。
[admin@Server1~]# sudo vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BROADCAST=100.0.10.255
IPADDR=100.0.10.200
NETMASK=255.255.255.0
NETWORK=100.0.10.0
ONBOOT=yes
USERCTL=no
GATEWAY=100.0.10.201
BONDING_OPTS=”miimon=100 mode=4 lacp_rate=fast xmit_hash_policy=layer2+3 fail_over_mac=1″
MASTER=yes
[admin@Server1~]# sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=”eth0″
BOOTPROTO=none
ONBOOT=”yes”
MASTER=bond0
SLAVE=yes
HWADDR=”b8:59:9f:42:36:68″
[admin@Server1~]# sudo vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=”eth1″
BOOTPROTO=none
ONBOOT=”yes”
MASTER=bond0
SLAVE=yes
HWADDR=”b8:59:9f:42:36:69″
[admin@Server1~]# sudo systemctl restart network
第 2 步
配置 server2 的 eth0 接口的 IP 地址和网关。
[admin@Server1~]# sudo ifconfig eth0 100.0.20.200/24 up
[admin@Server1~]# sudo route add default gw 100.0.20.201
第 3 步
配置spine switch IP地址。
sonic# configure terminal
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# ip address 10.0.10.201/24
sonic(config-if-0/0)# interface ethernet 0/4
sonic(config-if-0/4)# ip address 10.0.11.201/24
sonic(config-if-0/4)# interface ethernet 0/8
sonic(config-if-0/8)# ip address 10.0.12.201/24
sonic(config-if-0/8)# exit
sonic(config)# interface loopback 0
sonic(config-loif-0)# ip address 172.16.0.1/32
第 4 步
配置三台leaf设备的IP 地址和 MC-LAG。
Leaf1 配置
sonic# configure terminal
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# ip address 10.0.10.1/24
sonic(config-if-0/48)# interface loopback 0
sonic(config-loif-0)# ip address 172.16.0.2/32
sonic(config-loif-0)# exit
sonic(config)# vlan 10
sonic(config-vlan-10)# exit
sonic(config)# vlan 30
sonic(config-vlan-30)# exit
sonic(config)# interface link-aggregation 10
sonic(config-lagif-10)# exit
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# speed 10000
sonic(config-if-0/0)# link-aggregation-group 10
sonic(config-if-0/0)# exit
sonic(config)# interface ethernet 0/4
sonic(config-if-0/4)# speed 10000
sonic(config-if-0/4)# switchport trunk vlan 10
sonic(config-if-0/4)# switchport trunk vlan 30
sonic(config-if-0/4)# exit
sonic(config)# interface link-aggregation 10
sonic(config-lagif-10)# switchport trunk vlan 10
sonic(config-lagif-10)# exit
sonic(config)# vlan 10
sonic(config-vlan-10)# ip address 100.0.10.201/24
sonic(config-vlan-10)# exit
sonic(config)# vlan 30
sonic(config-vlan-30)# ip address 11.0.0.11/24
sonic(config-vlan-10)# exit
sonic(config)# monitor-link-group monitor1
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# monitor-link monitor1 uplink
sonic(config-if-0/48)# exit
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# monitor-link monitor1 downlink
sonic(config-if-0/0)# exit
sonic(config)# mclag domain 10
sonic(mclag-domain)# peer-link ethernet 0/4
sonic(mclag-domain)# local-address 11.0.0.11
sonic(mclag-domain)# peer-address 11.0.0.12
sonic(mclag-domain)# member lag 10
sonic(mclag-domain)# commit
sonic(mclag-domain)# interface vlan 10
sonic(config-vlan-10)# mac-address 00:11:22:33:44:55
sonic(config-vlan-10)# exit
sonic(config)# write
Leaf2 配置
sonic# configure terminal
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# ip address 10.0.11.1/24
sonic(config-if-0/48)# interface loopback 0
sonic(config-loif-0)# ip address 172.16.0.3/32
sonic(config-loif-0)# exit
sonic(config)# vlan 10
sonic(config-vlan-10)# exit
sonic(config)# vlan 30
sonic(config-vlan-30)# exit
sonic(config)# interface link-aggregation 10
sonic(config-lagif-10)# exit
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# speed 10000
sonic(config-if-0/0)# link-aggregation-group 10
sonic(config-if-0/0)# exit
sonic(config)# interface ethernet 0/4
sonic(config-if-0/4)# speed 10000
sonic(config-if-0/4)# switchport trunk vlan 10
sonic(config-if-0/4)# switchport trunk vlan 30
sonic(config-if-0/4)# exit
sonic(config)# interface link-aggregation 10
sonic(config-lagif-10)# switchport trunk vlan 10
sonic(config-lagif-10)# exit
sonic(config)# vlan 10
sonic(config-vlan-10)# ip address 100.0.10.201/24
sonic(config-vlan-10)# exit
sonic(config)# vlan 30
sonic(config-vlan-30)# ip address 11.0.0.12/24
sonic(config-vlan-10)# exit
sonic(config)# monitor-link-group monitor1
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# monitor-link monitor1 uplink
sonic(config-if-0/48)# exit
sonic(config)# interface ethernet 0/0
sonic(config-if-0/0)# monitor-link monitor1 downlink
sonic(config-if-0/0)# exit
sonic(config)# mclag domain 10
sonic(mclag-domain)# peer-link ethernet 0/4
sonic(mclag-domain)# local-address 11.0.0.12
sonic(mclag-domain)# peer-address 11.0.0.11
sonic(mclag-domain)# member lag 10
sonic(mclag-domain)# commit
sonic(mclag-domain)# interface vlan 10
sonic(config-vlan-10)# mac-address 00:11:22:33:44:55
sonic(config-vlan-10)# exit
sonic(config)# write
Leaf3 配置
sonic# configure terminal
sonic(config)# interface ethernet 0/48
sonic(config-if-0/48)# ip address 10.0.12.1/24
sonic(config-if-0/48)# interface ethernet 0/0
sonic(config-if-0/0)# speed 10000
sonic(config-if-0/0)# ip address 100.0.20.201/24
sonic(config-if-0/0)# interface loopback 0
sonic(config-loif-0)# ip address 172.16.0.4/32
sonic(config-loif-0)# exit
sonic(config)# write
第 5 步
配置spine设备bgp。
sonic# configure terminal
sonic(config)# router bgp 65001
sonic(config-router)# bgp router-id 171.16.0.1
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor 172.16.0.2 remote-as 65002
sonic(config-router)# neighbor 172.16.0.3 remote-as 65002
sonic(config-router)# neighbor 172.16.0.4 remote-as 65004
sonic(config-router)# address-family l2vpn evpn
sonic(config-router)# neighbor 172.16.0.2 activate
sonic(config-router)# neighbor 172.16.0.3 activate
sonic(config-router)# neighbor 172.16.0.4 activate
sonic(config-router)# advertise-all-vni
sonic(config)# write
sonic(config)# reload
第 6 步
配置三台leaf设备bgp。
Leaf1 配置
sonic(config)# router bgp 65002
sonic(config-router)# bgp router-id 171.16.0.2
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor 172.16.0.1 remote-as 65001
sonic(config-router)# neighbor 172.16.0.3 remote-as 65002
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 172.16.0.2/32
sonic(config-router-af)# exit
sonic(config)# router bgp 65002
sonic(config-router)# address-family l2vpn evpn
sonic(config-router)# neighbor 172.16.0.1 activate
sonic(config-router)# neighbor 172.16.0.3 activate
sonic(config-router)# advertise-all-vni
sonic(config)# write
sonic(config)# reload
Leaf2 配置
sonic(config)# router bgp 65002
sonic(config-router)# bgp router-id 171.16.0.3
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor 172.16.0.1 remote-as 65001
sonic(config-router)# neighbor 172.16.0.2 remote-as 65002
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 172.16.0.3/32
sonic(config-router-af)# exit
sonic(config)# router bgp 65002
sonic(config-router)# address-family l2vpn evpn
sonic(config-router)# neighbor 172.16.0.1 activate
sonic(config-router)# neighbor 172.16.0.2 activate
sonic(config-router)# advertise-all-vni
sonic(config)# write
sonic(config)# reload
Leaf3 配置
sonic(config)# router bgp 65004
sonic(config-router)# bgp router-id 171.16.0.4
sonic(config-router)# no bgp ebgp-requires-policy
sonic(config-router)# neighbor 172.16.0.1 remote-as 65001
sonic(config-router)# address-family ipv4 unicast
sonic(config-router-af)# network 172.16.0.4/32
sonic(config-router-af)# exit
sonic(config)# router bgp 65004
sonic(config-router)# address-family l2vpn evpn
sonic(config-router)# neighbor 172.16.0.1 activate
sonic(config-router)# advertise-all-vni
sonic(config)# write
sonic(config)# reload
第 7 步
用server1发送流量到server2,并查看spine上流量走向
[admin@Server2~]# iperf3 -s
[admin@Server1~]# iperf3 -c 100.0.20.200 -l 20k -b 100G -M 9000 -t 1000
查看Spine设备流量
第 8 步
将leaf1上行接口0/48 down,查看spine流量走向
6 结论
本次测试中,mc-lag链路故障后服务器之间可以正常通信,mc-lag链路恢复后服务器之间仍然可以正常通信,说明通过两台asterfusion sonic switch组成的mc-lag网络可以满足用户对网络高稳定性及高可靠性的需求。
点击了解Asterfusion CX-N数据中心交换机
如有其它问题,请填写右侧需求表单联系我们