CLOS Networking
CLOS Networking 是指使用 Clos 网络拓扑结构(Clos Network Topology)进行网络设计的一种方法。该方法是由贝尔实验室的工程师 Charles Clos 在1950年代提出的,以解决电路交换网络的可扩展性和性能问题。随着现代计算和网络技术的发展,Clos 网络拓扑被广泛应用于数据中心网络架构,特别是在大规模数据中心中。
Clos 网络通常由多个层级的交换机(或者路由器)组成,常见的层级包括:
- 叶子层(Leaf Layer):连接服务器的第一层交换机。
- 脊骨层(Spine Layer):连接叶子层交换机的核心交换机。
- 超级脊骨层(Super-Spine Layer)(不常见, 仅在非常大规模的数据中心中):进一步连接多个脊骨层交换机。
主要特点和优点包括:
- 高性能与低延迟:多路径设计支持多种并行数据流,减少瓶颈。
- 可扩展性强:网络可以通过增加交换机来水平扩展,以满足不断增长的带宽需求。
- 冗余与容错性:多条路径提供高冗余性,提升网络的可靠性和容错能力。
- 均衡负载:可以实现有效的流量分布和负载均衡,优化网络资源的利用。
在现代数据中心,CLOS 网络架构通常采用协议如ECMP(Equal-Cost Multi-Path)和SDN(Software-Defined Networking)来增强网络的灵活性和管理效率。
总结来说,CLOS Networking 是一种高度可扩展、性能优越并且具有高可靠性的网络设计方法,被广泛应用于现代大型数据中心中。
Spine-Leaf架构
Spine-Leaf 架构是数据中心网络拓扑,它由两个交换层组成,分别是 Spine 和 Leaf。Leaf 层由接入交换机组成,这些交换机会对来自服务器的流量进行汇聚并直接连接到 spine 或网络核心。Spine 交换机可以一种全网格拓扑与所有 leaf 交换机实现互连。
传统上,数据中心网络基于三层模型:
- 接入交换机连接到服务器
- 聚合或分布交换机为接入交换机提供冗余连接
- 核心交换机提供聚合交换机之间的快速传输,通常以冗余对的形式连接,以实现高可用性
Spine-Leaf拓扑结构的其他常见差异包括:
- 去除了生成树协议 (STP)
- 相对于网络主干的模块化模型,固定端口交换机的使用增加
- 考虑到更高的互连数量,需要购买和管理更多电缆
- 基础设施的横向扩展与纵向扩展
为什么 Spine-Leaf架构越来越受欢迎?
鉴于云和容器化基础设施在现代数据中心的普及,东西向流量持续增加。东西向流量横向移动,从服务器到服务器。这种转变主要是由于现代应用程序的组件分布在更多的服务器或 VM 上。
对于东西向流量,具有低延迟、优化的流量流对于性能来说是必不可少的,尤其是对于时间敏感或数据密集型应用程序。Spine-Leaf架构通过确保流量始终与其下一个目的地的跳数相同来帮助实现这一点,因此延迟更低且可预测。
由于不再需要 STP,容量也有所提高。虽然 STP 支持两台交换机之间的冗余路径,但任何时候都只能有一台处于活动状态。因此,路径通常会被超额预订。相反,Spine-Leaf架构依靠等成本多路径 (ECMP) 协议来平衡所有可用路径上的流量,同时仍能防止网络环路。
除了更高的性能之外,Spine-Leaf拓扑还提供了更好的可扩展性。可以增加额外的 Spine 交换机,并连接到每个 Leaf 交换机,增加容量。同样,当端口密度成为问题时,可以无缝插入新的 Leaf 交换机。无论哪种情况,基础设施的这种“横向扩展”都不需要对网络进行任何重新架构,并且不会出现停机。
胖树(Fat-Tree)型网络架构
在 2008 年由美国加利福尼亚计算机科学与工程的几位教授发表的一篇论文《A scalable, commodity data center network architecture》中,明确的提出了一种三级的,被称之为胖树(Fat-Tree)的 CLOS 网络架构,标志着 CLOS 正式进入数据中心网络架构领域,这是 CLOS 网络模型的第三次应用。
当前,Fat-Tree 是业界普遍认可的实现无阻塞网络的技术。其基本理念是:使用大量低性能的交换机,构建出大规模的无阻塞网络,对于任意的通信模式,总有路径让他们的通信带宽达到网卡带宽。Fat-Tree 的另一个好处是,它用到的所有交换机都是相同的,这让我们能够在整个数据中心网络架构中采用廉价的交换机。
Fat-Tree 是无带宽收敛的:传统的树形网络拓扑中,带宽是逐层收敛的,树根处的网络带宽要远小于各个叶子处所有带宽的总和。而 Fat-Tree 则更像是真实的树,越到树根,枝干越粗,即:从叶子到树根,网络带宽不收敛。这是 Fat-Tree 能够支撑无阻塞网络的基础。
如上图所示,为了实现网络带宽的无收敛,Fat-Tree 中的每个节点(根节点除外)都需要保证上行带宽和下行带宽相等,并且每个节点都要提供对接入带宽的线速转发的能力。
下图是一个 2 元 4 层 Fat-Tree 的物理结构示例(2 元:每个叶子交换机接入 2 台终端;4 层:网络中的交换机分为 4 层),其使用的所有物理交换机都是完全相同的。
从图中可以看到,每个叶子节点就是一台物理交换机,接入 2 台终端;上面一层的内部节点,则是每个逻辑节点由 2 台物理交换机组成;再往上面一层则每个逻辑节点由 4 台物理交换机组成;根节点一共有 8 台物理交换机。这样,任意一个逻辑节点,下行带宽和上行带宽是完全一致的。这保证了整个网络带宽是无收敛的。同时我们还可以看到,对于根节点,有一半的带宽并没有被用于下行接入,这是 Fat-Tree 为了支持弹性扩展,而为根节点预留的上行带宽,通过把 Fat-Tree 向根部继续延伸,即可实现网络规模的弹性扩展。
Fat-Tree 拓扑示例
假设一个 k-ary(每个节点有不超过 k 个子节点)的三层 Fat-Tree 拓扑:
- 核心交换机个数 (k/2)^2
- POD 个数 k
- 每个 POD 汇聚交换机 k/2
- 每个 POD 接口交换机 k/2
每个接入交换机连接的终端服务器 k/2
每个接入交换机剩余 k/2 个口连接 POD 内 k/2 个汇聚交换机,每台核心交换机的第 i 个端口连接到第 i 个 POD,所有交换机均采用 k-port switch。
可以计算出,支持的服务器个数为 k * (k/2) * (k/2) = (k^3)/4,不同 POD 下服务器间等价路径数 (k/2) * (k/2) = (k^2)/4。上图为最简单的 k=4 时的 Fat-Tree 拓扑,连在同一个接入交换机下的服务器处于同一个子网,他们之间的通信走二层报文交换。不同接入交换机下的服务器通信,需要走路由。
Fat-Tree 的缺陷
Fat-Tree 的扩展规模在理论上受限于核心层交换机的端口数目,不利于数据中心的长期发展要求;
对于 POD 内部,Fat-Tree 容错性能差,对底层交换设备故障非常敏感,当底层交换设备故障时,难以保证服务质量;
Fat-Tree 拓扑结构的特点决定了网络不能很好的支持 One-to-All及 All-to-All 网络通信模式,不利于部署 MapReduce、Dryad 等高性能分布式应用;
Fat-Tree 网络中交换机与服务器的比值较大,在一定程度上使得网络设备成本依然很高,不利于企业的经济发展。
因为要防止出现 TCP 报文乱序的问题,难以达到 1:1 的超分比。