1、概述
CLOS来自于传统电路交换概念,这个概念年代太久远,在当前数据通信网络中,内涵有所变化。本文主要谈的是实际上赋予的与原来略微有所差异的内涵。
CLOS架构本身概念比较宽泛,有设备级的CLOS,也有网络级的CLOS。
网络级CLOS
这个概念实际上与当前硅谷流行的FAT TREE网络结构很相似,甚至可以认为是一回事,主要是通过组网来形成非常大规模的网络结构,本质是希望无阻塞。
网络级CLOS,一般来说是非严格CLOS的(关于严格与非严格,后面会进一步讲述)。
设备级CLOS
设备级,又分为严格CLOS和非严格CLOS。
CLOS的无阻塞也有不同,如名义上的无阻塞(非严格CLOS算是此类)和完全无阻塞(严格CLOS算是此类)。在以往的交流中,发现搞测试的人对于这个概念很容易接受,因为对于每种情况大家立马能够想象出或构造出理论上的测试方法来证明。
2、FAT TREE网络与网络级CLOS
要说FAT TREE概念,可以先从Infiniband[注释1]交换机的架构入手。Infiniband交换机动辄有288个端口(端口速率10G/20G/40G),其芯片就是通过一种FAT TREE的方式来搭建高密端口交换机的。
注释1:InfiniBand架构是一种支持多并发链接的“转换线缆”技术,在这种技术中,每种链接都可以达到2.5 Gbps的运行速度。这种架构在一个链接的时候速度是500 MB/秒,四个链接的时候速度是2 GB/秒,12个链接的时候速度可以达到6 GB /秒。
InfiniBand技术主要是针对服务器端的连接问题的。因此,将会被应用于服务器与服务器(比如复制,分布式工作等),服务器和存储设备(比如SAN和直接存储附件)以及服务器和网络之间(比如LAN, WANs和the Internet)的通信。
举个例子,一个Infiniband芯片如果有24个端口( 10G/20G/40G),如图1所示。如何构造一个288端口(12槽位,每槽位24端口)的机架式交换机呢?
图1 24端口Infiniband芯片示意
如图2所示,这个交换机内部采用36片同款芯片,以一种FAT TREE(中文称为胖树)的结构实现了高密的高速端口。曾经有家以做高密高速万兆为基本产品的芯片厂家,提出过类似的以太网交换机方案 (当时还不是很理解这个模型,只是觉得思路很好)。
图2 FAT TREE的Infiniband交换机内部架构
在很多高性能计算环境中,Infiniband交换机之间也有这样组网的,并且经常采用同一款交换机来组网,网络拓扑和原理同图2(Infiniband在不同带宽之间转换,会引起时延增大,并影响高性能计算效率)。
在2010年初的时候,曾与一位来自Cisco的同行A讨论网络设计。A提出了CLOS网络结构的概念。
图3 “CLOS”网络结构
如图3所示一个5000个千兆的服务器集群网络,用4台12500+125台5800可构成一个5000个千兆的带宽上无阻塞网络。5800使用40个千兆接服务器,4个万兆分别上联不同的12500。当时12500还不能支持4台IRF,所以需要全网使能OSPF路由。现在则无所谓了,4台12500 IRF后,全网可实现带宽上无阻塞的二层网络。注意,这里使用的是“带宽上无阻塞”,A要求的CLOS是任意服务器之间通信没有带宽差异,都是1G。但是,他还给网络提了要求,就是接入上行的4条链路以round robin[注释2]轮转方式进行流量负载分担,并且要求服务器吞吐的报文字节等长,均为1500字节,以及服务器进行报文乱序的纠错。所有这些要素都加上,这个特定网络就是完全无阻塞CLOS的了。
因为我们的12500当时就是CLOS概念,所以我们也并不好奇这个网络需求,只是基本所有的接入交换机都无法做到round robin的负载分担。
考考各位,如果增加一层汇聚层,使用24个万兆的盒子,如何来构建更大规模的带宽无阻塞网络(1万-2万千兆端口)?(见[注释3])
注释3:答案简单,增加一层汇聚的万兆box,一半端口下挂接入交换机,一半端口上行接核心交换机(每个上行端口接一台核心)
去年底HP和我们讨论FAT TREE的网络结构,使用一个64端口的万兆设备来构建2000个万兆的无阻塞网络方案,使用的实际上是类似图2的方案,只是将堆积的芯片换成盒式交换机。
现在来说这个网络会有什么不足,为什么不是严格CLOS?
CLOS的核心精神是完全无阻塞或严格无阻塞,这样的网络结构,无论是“CLOS”结构还是FAT TREE结构,只是在带宽上看起来无阻塞,如接入层上下带宽相等,但是数据流如何分布到不同的上行链路呢?
如果是采用round robin方式,因为报文大小的差异,会使得不同链路实际上流量不均,而且是可构造测试例证明的;
如果是HASH算法,不论是链路聚合还是等价路由,也不可能完全均分,比如某个单条流就只能HASH到一条路径,如果存在单条大流量,如千兆TCP单流,则会使得上行链路流量不均。
所以,当前技术下,网络的CLOS结构并非严格CLOS。
3、设备级CLOS
设备级CLOS也是分严格无阻塞CLOS和非严格CLOS。
对S12500的具体体系架构,IP领航相关文章已经进行过介绍,这里不再赘述。
S12500除了CLOS架构,还具备cell级的交换,也就是报文在交换机内是经过切片、等长交换的,而且交换机内是每个端口通过credit模式[注释4]通信达到内部lossless,因此12500是严格CLOS、完全无阻塞的。(往往主要关注点在CLOS架构、超大缓存上,而忽略了这样一些关键细节)。并且,这也是经过了极其严格的Tolly测试的。再来看一个问题:有网友问,关于CLOS架构,实际应用中就是一个主控板加独立交换路由业务板吗?
从大的范围来看,CLOS是多级、多路径交换的一种方式,其实与主控板、独立交换等没有直接联系,只是在设计这样一个CLOS系统下,将主控与交换分离,更有助于提升系统的可靠性,以及架构将来的扩展性。因此在这个层面上来看,实际应用中确实是主控板+独立的交换路由业务板。
但只有主控与交换分离还是远远不够的,还要看是否能够达到完全无阻塞交换,流量如何上多个交换网,内部如何实现流量调度(内部lossless)以及VOQ能力等。
此外,使用多级crossbar的交换网,也能够搭出一个CLOS架构,但这不是严格CLOS,因为crossbar是逐流进行交换的。例如,Cisco明确指出N7000是crossbar架构(参见Cisco Live2010 N7000的架构材料,2011删掉了这一页),但是其线卡能力很强,单播报文通过round robin方式上交换网,组播通过HASH方式上交换网,可以看到交换网crossbar每端口带宽23G,总的来说每个槽位分配的带宽是非常高的,所以阻塞可能性非常之小,同时使用多包组合的superframing技术来提升转发效率,行为上与12500很接近了。
设备级的CLOS不同厂家实现方式不一样,H3C的实现是其中一种方式。
因此我们说某产品不是CLOS,正确的说法应该是“非严格CLOS”或“非严格完全无阻塞”。
实际上,CLOS、严格CLOS,或称无阻塞、完全无阻塞,也都是比较相对的概念,只是强调产品的架构适应能力有差异而已,无需在概念上过于区分。对于特定的应用场景,特别是大流量重负载网络环境,严格CLOS架构的设备业务承载能力显然要强不少。