一、去堆叠原理
- 在动态聚合中当Partner_System_Priority和Partner_Systemmac一致时,则认为对端设备为同一个设备。同时本端的不同端口接收LACPDU报文中要求Pantner_Port不一致Partner_key一致时则可以聚合成功。如下图所示:
- S-MLAG配置实现如下:
配置LACP的系统MAC地址:lacp system-mac mac-address(xxxx-xxxx-xxxx)
配置LACP的系统优先级:lacp system-priority priority (0-65535)
配置LACP的系统编号 lacp system-number number(1-3)
配置聚合接口加入S-MLAG组 port s-mlag group group-id(1~1024)
通过以上配置,则成功欺骗了服务器,认为上面连得是同一台交换机,从而完成lacp协商和建立。
二、去堆叠配置关键点
- 在堆叠方案中两台设备虚拟为一台,控制层面只有一个,两台设备的表项依靠LIPC进行同步,M-LAG方案中依靠M-LAGPDU进行同步,在S-MLAG方案中两台设备控制层面完全独立,所以需要在接入交换机上配置arp转为直连路由,然后重分布进BGP,然后通过路由做到全网同步。
- 此时服务器需要修改内核,做到双发ARP,如下图所示:
在服务器上看聚合接口状态是两个物理网卡聚合在一起的逻辑接口,单条物理线路的UP/DOWN逻辑的接口状态并没有变化,并不能触发服务器发送免费ARP的更新,如果没有32位主机路由的牵引可能会造成流量负载不均衡。所以需要服务器的OS内核进一步优化,当服务器成员接口发生UP/DOWN时,发送免费ARP进行更新。
- 两台接入交换机连接服务器的三层网关接口MAC地址更改为相同的MAC地址,避免两台设备发送不同的MAC地址造成服务器侧ARP表项反复切换。
- 接入设备开启BUM隔离、本地ARP代理,避免在相同TOR接入服务器相互学习到真实MAC的ARP,因为在服务器某一服务器网卡DOWN之后,该TOR的其他服务器访问该服务器还使用真实MAC封装,就会导致访问异常。这时需要TOR交换机开启BUM流量隔离,接入交换机网关开启本地ARP代理功能,在同一TOR下服务器的二层流量也需通过三层转发。关键配置如下:
traffic classifier arp-hw-forwarding operator and
if-match source-mac 0000-5e00-0101
if-match acl mac 4001
#
traffic classifier arp-no-hw-forwarding operator and
if-match acl mac 4001
#
traffic behavior arp-hw-forwarding
filter permit
#
traffic behavior arp-no-hw-forwarding
filter deny
#
qos policy arp-no-hw-forwarding
classifier arp-hw-forwarding behavior arp-hw-forwarding
classifier arp-no-hw-forwarding behavior arp-no-hw-forwarding
#
acl number 4001
rule 0 permit type 0806 ffff
#
qos apply policy arp-no-hw-forwarding global outbound
接口下配置:
mac-address 0000-5e00-0101
local-proxy-arp enable
arp route-direct advertise
broadcast-suppression pps 0
multicast-suppression pps 0
unicast-suppression pps 0
- 开启TOR上行接口监控。如果TOR的上联接口全部DOWN时,下行接入服务器无法感知到,服务器会继续向故障TOR发送数据。这时需要配置monitor-link监控上行线路,当上行接口全部故障时,关闭下行接口,同时上行接口UP时,下行接口也需要延迟UP。因为上行接口的BGP等路由协议收敛速度远远大于下行接口链路聚合收敛速度,所以需要在上行接口UP时,下行接口延迟UP。
- 开启ARP主动探测。去堆叠方案中去往服务器的流量都是由32位主机路由进行引导,如果出现静默主机无法生成ARP主机路由的情况,在此种情况下可以通过交换机主动探测ARP功能进行优化。
- Arp超时时间一般设计为90s
- 聚合口下配置lacp 边缘端口,主要用于PXE装机
三、堆叠、M-LAG、S-MLAG 对比
|
S-mlag |
mlag |
堆叠 |
原理 |
两台设备控制面分离,耦合小,单台设备故障只影响一个,可靠性较高。 |
两台设备控制面分离,耦合小,单台设备故障只影响一个,可靠性较高。 |
两台设备控制面合一,耦合度高,单台故障影响整体,可靠性较低 |
配置&维护复杂性 |
配置要求两端一致,维护简单 |
配置复杂 |
集中式配置,维护简单 |
升级风险 |
分别升级,风险低 |
分别升级,风险低 |
成员节点升级影响整个控制面,升级风险较大 |
三层转发 |
双活接入,需要开启BUM隔离和arp代理 |
双活接入,需要开启vrrp或者三层接口特殊配置 |
双活接入配置简单 |
特性支持能力 |
较弱 |
较弱 |
全面 |
网络方案设计 |
场景相对单一,适用于全三层场景,服务器操作系统需要定制开发 |
相对复杂,三层网络需要双活节点设计 |
简单,按照单节点设计 |
- 去堆叠具有良好的兼容性,可以实现不同厂家设备的异构,这是M-LAG和堆叠无法做到的。M-LAG和堆叠在底层实现十分复杂,需要进行大量表项和状态同步工作,去堆叠对交换机LACP协议进行简单的改动就可以实现,三层表项通过现有路由协议同步,二层表项通过服务器“ARP双发”实现。
- 去堆叠也有其劣势,为了实现“ARP双发”需要修改操作系统内核代码,对维护和开发人员要求都非常高,互联网使用的操作系统比较单一都是Linux操作系统,操作系统版本统一,容易完成修改和适配。设备发生故障收敛时相对于堆叠收敛还是有一定差距的,同时S-MLAG方案的适配场景相对单一,必须是全三层组网,接入的二层隔离也限制了组播等一些应用。
- Mlag 对于堆叠这是控制层面“分离”,实际使用上复杂度高于堆叠,并且在组网上的限制也多于堆叠,mlag相对于堆叠并不能完全说是控制完全独立,实际上IPL线路仍然承载着状态同步以及横穿流量。