唐鸿凯
摘 要:该文介绍了一种CLOS网络的链路分配方法,涉及CLOS网络出现硬件链路不均衡时如何实现负载均衡的技术。即网络的中间级交换单元与其互连的前后级交换单元之间可以使用的有效链路数量,等于其前级交换单元可用的空闲链路数量和后级交换单元可用的空闲链路数量之间的最小值。只要检测到有链路释放占用状态,就刷新该交换单元进行数据传输需要的各级链路数量信息,重新分配该数据传输通道上的各级交换单元的链路数量。
关键词:CLOS网络 均衡 数据中心
中图分类号:TN927 文献标识码:A 文章编号:1672-3791(2017)03(b)-0007-03
为了解决CLOS网络应用中链路不对等造成的网络拥塞问题,该文介绍了一种CLOS网络的负载均衡技术,既保证了数据传输过程中的链路匹配,又避免了负载均衡过程中的链路资源浪费,极大地保证了CLOS网络的整体交换性能,提高了整个CLOS网络的可靠性。
1 技术背景
CLOS架构[1]是一种多级交换架构,各级的每个交换单元都和下一级的所有交换单元相连接。典型的3级CLOS网络,如图1所示,n为入口和出口处每个交换单元的端口数,第2级为m个r×r的交换单元,每级与下一级各个交换单元之间仅有一条链路连接。当m≥2n-1时,该3级CLOS网络可以实现严格无阻塞的数据交换。
CLOS網络支持递归扩展,中间级可以是一个完整的3级CLOS网络,理论上可以无限扩展,构建具有更高容量的交换网络,为极大的数据流交换建立严格的无阻塞连接。
CLOS网络实现无阻塞交换的前提是要实现负载均衡,以防止出现同一时刻入口链路大于出口链路造成的网络拥塞。实际运用中,CLOS网络每级与下一级各个交换单元之间可以允许有多条链路连接,硬件上一般都通过设计对称的CLOS网络架构,保证各个中间级交换单元到入口和出口处各个交换单元之间的互联链路数相等。
CLOS网络工作过程中不可避免地会出现链路故障,导致网络拥塞。因此,必须引入负载均衡技术,保证整个CLOS网络的无阻塞交换。目前应用于CLOS网络,主要的负载均衡技术如下。
(1)禁用多余链路——当CLOS网络中,某个中间级交换单元的某些链路出现故障时,通过各种机制禁用掉与该交换单元互联的前后级各个交换单元的多余链路,保证故障交换单元到前后级各个交换单元之间的链路数相等。(2)速率动态调整——当CLOS网络中,某个交换单元的某些链路出现故障时,通过各种机制动态调整该故障交换单元的数据输入和输出速率,输入速率×输入链路≤输出速率×输出链路,防止出现网络拥塞。
方案1会造成CLOS网络链路资源上的浪费,降低了中间级交换单元的交换容量,影响整个网络的交换性能。方案2实现机制比较复杂,需要消耗较多的软件资源用来调整链路的传输速率。
2 实现方式
CLOS网络架构在数据中心交换机中广泛应用。数据中心交换机主要包括管理板、业务板(接口板)、交换板3个部分,其中业务板和交换板通过机箱背板互连构成了一个CLOS网络。
一种常见的数据中心交换机业务板和交换板形成的CLOS网络,如图2所示,处于中间级的所有交换板通过机箱背板共同构成了一个交换平面,假设该数据中心交换机支持r张业务板,每张业务板的入口到全部业务板的出口有r个数据传输路径,则整个CLOS网络支持r×r个数据传输路径。
图2中,每张业务板和交换平面之间通过4对链路连接(4条发送、4条接收),虚线代表链路故障。某一时刻业务板#1的入口处收到一条数据流,按照优先级的先后顺序分别需要传输到业务板#2、业务板#3、业务板#4,则该方案的实现流程如图3所示,该数据流的传输可以分为以下几个步骤。
(1)处于第一优先级路径的业务板#1→业务板#2,检测到该路径上有传输的数据需求。
(2)判断业务板#1的入口和业务板#2的出口侧是否存在空闲的链路,根据图2所示,业务板#2的出口侧有2条可用空闲链路,2条故障链路,业务卡#1的入口侧有4条可用空闲链路(假定该数据中心交换机此前处于空闲状态),如果通路上面没有空闲链路就返回重新检测。
(3)分配第一优先级路径的链路数,该路径上可以使用的链路数=min{业务卡#1入口侧可用的空闲链路数,业务卡#2出口侧可用的空闲链路数}=min{4,2}=2,业务卡#1入口侧可用的空闲链路数和业务卡#2出口侧可用的空闲链路数的最小值为2,即由业务板#1发往业务板#2可使用的链路数为入口侧和出口侧各2条。
(4)CLOS网络一般是采用动态路由机制,从业务卡#1的入口侧和业务卡#2入口侧各选择2条链路,同时将选中的链路标记为“被占用”的状态,通告该优先级链路分配完成,接着通告第一优先级路径上被选中的链路开启数据传输流程,通过被占用的所有链路往业务卡#2的出口侧传输数据。数据传输流程是原系统自带的数据传输流程,是另外进行的独立流程,和该方案通过相互之间的通告建立联系,两者互不影响。
(5)当第一优先级路径的链路分配通告完成后,处于第二优先级路径的业务板#1→业务板#3,开始执行该路径上的链路分配。
(6)通过确认,业务板#3的出口侧有2条可用空闲链路,2条故障链路,业务卡#1的入口侧有2条可用空闲链路,2条链路被占用。因此,该路径上可以使用的链路数=min{业务卡#1入口侧可用的空闲链路数,业务卡#3出口侧可用的空闲链路数}=2,将入口侧和出口侧选中的各2条链路全部标记为“被占用”的状态,同时通告该优先级链路分配完成,通告业务板#1→业务板#3之间被选中的链路开启数据传输流程。
(7)处于第三优先级路径上的数据,由于业务板#1的入口侧没有空闲链路,暂时处于循环检测的传输等待中。
(8)假设第一优先级路径的数据先于第二优先级路径的数据完成传输流程,当第一优先级的数据传输流程通告结束时,该路径会释放被占用的所有链路,入口侧和出口侧的链路重新被标记为“空闲”状态。此刻,会触发所有相关路径重新执行链路分配检测,各路径重新确认本路径上的链路分配是否需要进行调整。该方案的链路分配流程不会影响正在执行的数据传输流程,两个流程是独立进行的,相互之间仅仅互相通告。
(9)本时刻由于第二优先级路径的数据传输流程仍未结束,第二路径的空闲链路数量没有增加,因此第二优先级路径继续保持原先的链路分配结果。与此同时,业务卡#1的入口侧释放2条可用的空闲链路,2条链路继续被占用,而业务板#4的出口侧有4条可用空闲链路。进而执行第三优先级路径业务板#1→业务板#4的链路分配,该路径上可以使用的链路数=min{业务卡#1入口侧可用的空闲链路数,业务卡#4出口侧可用的空闲链路数}=2。
(10)同样的,第三优先级路径会将业务板#1入口侧剩余的2条链路和业务板#4出口侧的2条链路标记为“被占用”,同时通告选中链路开启数据传输流程,该阶段业务板#4的出口侧只启用2条链路进行数据传输。
(11)假設第二优先级路径的数据先于第三优先级路径的数据完成传输流程,当第二优先级路径业务板#1→业务板#3占用的链路被标记为“空闲”状态后。所有的相关路径又会再次进行一次链路检测,此时第三优先级路径业务板#1→业务板#4上仍有数据传输的需求,同时检测到业务板#1的入口侧和业务板#4的出口侧均存在2条空闲链路,进而再执行一次链路分配,该路径上还可以使用的链路数=min{业务卡#1入口侧可用的空闲链路数,业务卡#4出口侧可用的空闲链路数}=2。因此,该路径上业务板#1入口侧和业务板#4出口侧各剩余的2条链路全部标记为“被占用”,同时通告选中链路开启数据传输流程,即此刻业务板#1→业务板#4的路径上入口侧和出口侧均开启了4条链路的数据传输流程,直至业务板#1的数据流全部完成传输结束。
综上所述,可以将上述的链路使用情况成以下3个阶段。
第1阶段——业务板#1同时向业务板#2和业务板#3传输数据,该阶段业务板#1的入口侧启用4条链路,业务板#2和业务板#3出口侧非故障的2条链路也全部启用。
第2阶段——业务板#1同时向业务板#3和业务板#4传输数据,该阶段业务板#1的入口侧启用4条链路,业务板#2的出口侧非故障的2条链路也全部启用,业务板#4的出口侧启用2条链路。
第3阶段——业务板#1单独向业务板#4传输数据,该阶段业务板#1的入口侧启用4条链路,业务板#4的出口侧也启用4条链路。
上述3个阶段所有路径上业务板入口侧和出口侧启用的链路比始终保持1∶1,实现了链路故障时的负载均衡,同时链路的利用率可以达到100%,不会造成链路资源的浪费,很好地保证了整个CLOS网络的交换性能,提高了数据中心交换机的可靠性。
3 结语
该方案很好地解决了CLOS网络中的负载均衡问题,在非对称的CLOS网络中也能够应用,有效链路的利用率可以达到100%,保证了整个CLOS网络的交换性能。另外,该方案也可以很好地解决使用CLOS架构的数据中心交换机时不同版本交换板的混插兼容性问题,当数据中心交换机的CLOS网络发生链路故障时仍可以正常工作,保证了数据中心交换机的交换性能和可靠性,为用户节约维护成本。
参考文献
[1] Charles Clos.A Study of Non-Blocking Switching Networks[J].BSTJ,2013,32(5):406-424.
[2] RG-N18000系列云架构网络核心交换机[Z].