一、堆叠简介
1.1、定义
堆叠(也称堆叠系统,Stack),是指将多台(2~4台)设备通过线缆连接在一起,从逻辑上变成一台设备,作为一个整体参与数据转发,如图1-1所示。
图1-1 堆叠示意图

1.2、目的
扩展端口数量
如图1-2所示,当接入的用户数增加,原设备端口密度不能满足接入需求时,可以通过增加新的设备并组成堆叠而得到满足。
图1-2 扩展端口数量示意图

扩展带宽
如图1-3所示,当网络规模扩大,设备上行带宽需求增加时,可以增加新设备,同时与原设备组成堆叠,将成员设备的多条物理链路配置成一个聚合组,提高设备的上行带宽。
1-3 扩展带宽示意图

提供设备级与链路级可靠性
如图1-4所示,堆叠的多台成员设备之间冗余备份,当一台设备发生故障时,业务将切换至其他成员设备继续工作;另外,利用堆叠跨设备Eth-Trunk实现跨设备的链路冗余备份,当一条链路发生故障时,能确保流量切换至其他链路继续转发,保证了设备级与链路级的可靠性。
图1-4 提供设备级与链路级可靠性示意图

简化组网
如图1-5所示,网络中的多台设备组成堆叠,虚拟成单一的逻辑设备。简化后的组网不再需要使用VRRP、MSTP等协议,实现冗余的同时避免了二层网络环路,极大的简化了网络配置和复杂度,同时依靠跨设备的链路聚合,实现了更为快速的收敛,提升了网络性能。
图1-5 简化组网示意图

二、堆叠组网方案
堆叠是指将多台交换机设备通过线缆连接后组合在一起,虚拟化成一台设备,作为一种横向虚拟化技术,将多台设备在逻辑上虚拟成一台设备,可以简化网络的配置和管理。同时,结合跨设备链路聚合技术,不仅可以实现设备及链路的高可靠性备份,而且可以避免二层环路。相对传统的STP破环保护,逻辑拓扑更加清晰、链路利用更加高效。
图2-1 堆叠示意图
华为CE系列交换机提供的堆叠技术有CSS技术(框式堆叠)、iStack(盒式堆叠),主要典型特征有:
1、 交换机多虚一:CSS/iStack对外表现为一台逻辑交换机,控制平面合一,统一管理。
2、 转发平面合一:CSS/iStack内物理设备转发平面合一,转发信息共享并实时同步。
3、 跨设备链路聚合:跨CSS/iStack内物理设备的链路被聚合成一个Eth-Trunk端口,和下游设备实现互联。
如图2-2所示的数据中心网络中,接入层、汇聚层/核心层通过部署堆叠构造出一个逻辑简单、无环的网络。
接入层使用低成本的CE8800&7800&6800&5800系列交换机来部署堆叠。终端设备(服务器或其他网络设备)双归接入堆叠,可以保证接入链路的高可靠性。
汇聚层/核心层使用高性能CE12800系列交换机部署堆叠,与接入层之间通过跨框链路聚合连接,形成一个无环的网络。
图1-2 数据中心内堆叠组网图
部署方案:
通过堆叠(CSS/iStack)技术保证节点的可靠性:一台设备故障后,另外一台设备自动接管所有的业务。
通过CSS+LAG+iStack 部署端到端可靠性架构,打造无间断数据中心,保证业务持续运营。
多台接入层iStack堆叠,2台汇聚层CSS集群堆叠。
接入与汇聚间采用多条10GE或40GE链路全连接,保障链路高可靠。
汇聚与核心间采用高速40GE链路全连接,确保汇聚到核心无阻塞转发。
方案特色:
简化管理和配置
堆叠建立后,多物理设备虚拟成为一台设备,用户可以通过任何一台成员设备登录堆叠系统,对所有成员设备进行统一的配置和管理,使网络需要管理的设备节点减少一半以上。
其次,组网变得简洁,不再需要配置xSTP、VRRP等协议,简化了网络配置。
带宽利用率高
采用链路聚合的方式,带宽利用率可以达到100%(STP会阻塞链路),采用逐流方式负载均衡,支持多种负载分担方式。
快速的故障收敛
相对于STP秒级的故障收敛时间,链路聚合的故障收敛时间可控制在ms级内,大大降低了网络链路或节点故障对业务的影响。
扩容方便、保护投资
随着业务的增加,当用户进行网络升级时,只需要增加新设备即可,在不需要更改网络配置的情况下,平滑扩容,很好的保护了投资。
堆叠技术从低端盒式到高端框式都已经被广泛应用,具备了相当的成熟度和稳定度,估计会给部分读者造成堆叠技术简直堪称完美的错觉,但我们要知道任何技术都不是完美的,就堆叠技术而言,它的不足之处在于:
堆叠的虚拟化局限于单个层次
虽然横向虚拟化技术在一定程度上优化了网络结构、减少了管理节点,但是做的还不够彻底。一方面是横向虚拟化后依然没有减少网络的层级;另一方面是依然没有彻底解决管理节点较多的问题。大规模的数据中心都有高密度接入的特点,有大量的接入交换机,为了可靠性一般是多台接入交换机虚拟化(多是2台虚拟化),这样即使在做了横向虚拟化后管理节点的数量也是相当可观的。假设接入层有40台接入交换机,每两台交换机做虚拟化,那么依旧还是有多达20个管理节点。
堆叠虚拟化控制面多虚一
网络设备虚拟化之后,所有主控平面合一,但是这种合一只能采用主备备份的模式,即只有主设备的主控板正常工作,而其他主控板都处于备份状态。因此,整个系统的物理节点规模就受限于主控节点的处理能力,不是想做多大就做多大的。例如框式设备虚拟化一般为2台,盒式设备一般为16台。目前最大规模的虚拟化系统大概可以支持接入1~2万台主机,可以从容应付一般的中、小型数据中心,但对于一些超大型的数据中心来说,就显得力不从心了。
三、堆叠系统网络位置部署建议
场景一:堆叠系统工作在汇聚层
该场景是汇聚层堆叠最常见的场景,如图3-1所示。
在该场景下,堆叠系统中的每台设备上行通过Eth-Trunk接口连接到核心设备上。此堆叠系统简化了汇聚设备的管理,提升了汇聚设备上行的可靠性。
图3-1 堆叠系统工作在汇聚层

场景二:堆叠系统工作在接入层
该场景是二层接入层堆叠最常见的场景,如图3-2所示。
在该场景下,堆叠系统中的每台设备上行通过Eth-Trunk接口连接到汇聚设备上。此堆叠系统简化了接入设备的管理,提升了接入设备上行的可靠性。
图3-2 堆叠系统工作在接入层

场景三:堆叠系统工作在接入环上
该场景一般不常用,如图3-3所示。
在该场景下,多台堆叠系统之间通过Eth-Trunk接口组成环,其中一个堆叠系统通过Eth-Trunk接口上行连接到汇聚设备上。此堆叠系统减少了接入设备的管理IP数量。
图3-3 堆叠系统工作在接入环上

建议
如下建议是根据盒式设备各系列的定位来建议各设备形态最适合的场景。实际使用时,如果客户有特殊需求,建议将高端的设备往低位置放,不建议将低端的设备往高位置放。(这里的位置指设备在网络中的层次,如:汇聚层位置比接入层位置高)
从堆叠可靠性和堆叠带宽角度考虑,设备组建堆叠时,建议如下:
尽量每台成员设备都有上行口连接到核心设备,以便当任意一台设备发生故障时,不影响上行流量。
多台设备堆叠时,建议任意两台设备间的堆叠带宽相同,否则堆叠系统的带宽等于系统中最小的堆叠带宽
表3-1 场景推荐
四、堆叠原理描述
4.1、堆叠组成
图4-1 堆叠组成示意图

堆叠角色
堆叠中的单台设备称为堆叠成员设备,按照功能不同可以分为以下角色:
主设备(Master):负责管理整个堆叠,堆叠中只有一台主设备。
备设备(Standby):是主设备的备份设备。当主设备故障时,备设备会接替原主设备的所有业务。堆叠中只有一台备设备。
从设备(Slave):主要用于业务转发,从设备数量越多,堆叠系统的转发能力越强。除主设备和备设备外,堆叠中其他所有的成员设备都是从设备。
堆叠成员设备的角色是在堆叠建立过程中通过一定的规则选举出来的,不能直接配置某台成员设备为主设备。堆叠主备角色的选举,请参见堆叠建立。
堆叠链路
堆叠链路(Stack Link),负责承载主备从设备之间的堆叠管理/控制流量以及数据流量。一般情况下,堆叠链路由多条链路捆绑组成,主、备、从设备间的流量在多条链路上进行负载分担。堆叠链路通过定时发送心跳报文,主动查询故障(定时检测端口状态、端口错包等)并快速上报,确保链路故障后的流量切换。
堆叠成员ID
堆叠成员ID,即堆叠成员设备的编号(Member ID),也可简称为堆叠ID,用来标识堆叠成员设备,每个堆叠成员设备在堆叠系统中具有唯一的堆叠ID。
堆叠ID取值范围为1~9。缺省情况下,取值为1。堆叠时由堆叠主设备对成员设备的堆叠ID进行管理,当堆叠系统有新成员加入时,如果新成员与已有成员堆叠ID冲突,则堆叠主设备从1~最大的堆叠ID进行遍历,找到第一个空闲的ID分配给该新成员。新建堆叠或堆叠成员变化时,如果不在堆叠前手动指定各设备的堆叠ID,则由于启动顺序等原因,最终堆叠系统中各成员的堆叠ID是随机的。因此,在建立堆叠时,建议提前规划好设备的堆叠ID,使设备启动后的堆叠ID与规划的堆叠ID一致。
当堆叠成员从堆叠系统中移除时,会继续使用堆叠系统使用的堆叠ID,可以执行命令stack member member-id renumber 1手动恢复堆叠ID为缺省值1。如果不手动恢复堆叠ID,该设备再次加入其他堆叠系统时会保留此前使用的堆叠ID,只有当其与新堆叠系统的堆叠ID冲突时,才会被重新分配新的堆叠ID。
堆叠优先级
堆叠优先级是堆叠成员设备的一个属性,主要用于主备角色选举过程中影响成员设备的角色,优先级值越大表示优先级越高,优先级越高当选为主设备的可能性越大(并不是一定就可以当选为主设备)。在满足一定的规则下,可以通过配置不同的优先级来人为保证期望中的主备角色。优先级对选举的影响可参见堆叠主设备和备设备选举。
堆叠域
堆叠域(Domain ID)用于区分不同的堆叠。一个网络中可能有多个堆叠系统,为避免因连线错误而导致非预期设备组建堆叠,可以为不同的堆叠系统配置不同的堆叠域,在不同堆叠域中的设备即使连线进行互联,也不能组建堆叠。
4.2、堆叠连接方式
设备支持业务口堆叠,堆叠成员设备之间通过与Stack-Port端口绑定的业务端口相连,业务口堆叠涉及两种端口的概念,如图4-1所示。
图4-1 业务口堆叠连接示意图

物理成员端口
物理成员端口是成员设备之间用于堆叠连接的普通业务口,简称为成员端口。成员端口用于转发需要跨成员设备的业务报文或成员设备之间的堆叠协议报文。
Stack-Port端口
Stack-Port端口是专用于堆叠的逻辑端口,是堆叠特性的公共基础端口技术。Stack-Port端口需要和成员端口绑定,一个Stack-Port端口可以与一个或多个成员端口绑定,以提高链路的带宽和可靠性。
每台设备支持两个Stack-Port端口,为Stack-Port n/1和Stack-Port n/2,其中n为设备的堆叠ID。
4.3、堆叠拓扑
如图4-2所示,堆叠的连接拓扑有两种:链形连接和环形连接。表1从可靠性、链路带宽利用率和组网布线是否方便的角度对两种连接拓扑进行对比。
图4-2 堆叠连接拓扑示意图

表4-1 堆叠连接拓扑对比