Published at 2021-01-10 | Last Update 2021-01-10
本文是读 Cloud Native Data Center Networking ( O’Reilly, 2019)时的所做的一些笔记。这本书理论和实践兼备,是现代数据中心网络、云 原生数据中心网络设计和 BGP 的很好入门参考。
作者 Dinesh G. Dutt 是一家网络公司的首席科学家,在网络行业有 20 多年工作经验,曾 是 Cisco Fellow,是 TRILL、VxLAN 等协议的合作者(co-author)之一。
分布式应用(distributed application)正在与网络(network)共舞,而且 前者是主角。
分布式应用突然变换了舞步,现代数据中心的故事也由此开始。 理解这种转变对网络从业人员至关重要,否则只会不断被一些新名词带着走。
本章回答以下问题:
Fig 1-1. The evolution of application architecture
应用架构演进:
单体应用
客户端-服务器应用
Web 应用
微服务(分布式应用)
Fig 1-2. Access-aggregation-core network architecture
图 1-2 是在上世纪末开始占据统治地位的网络架构:接入-汇聚-核心三级网络架构。
图中没有画出汇聚和核心之间的连接,是因为这些连接因方案和厂商而异,而且 不影响接下来的讨论。
这种网络架构重度依赖交换(或称桥接,bridging),而在同时期,互联网(the internet)真正快速发展成型。
既然支撑互联网的是 IP 路由(IP routing)技术,为什么数据中心网络没有选择路 由(routing),而是选择的交换(bridging)呢?三方面原因:
交换芯片的出现(silicon switched packet forwarding)
厂商特定的软件栈(proprietary network software stacks)在企业中占据主导地位
交换网络所宣称的零配置(zero configuration of bridging)
厂商设备无关、高性能芯片加上零配置,使得桥接网络在那个年代取得很大成功。但这种网 络也存在一些限制:
广播风暴和 STP:这是自学习的机制决定的,
泛洪成本
网关高可用
FHRP 原理:几台路由器之间互相检测状态,确保永远有且只有一台在应答对网关的 ARP 请求。
FHRP 协议举例:
现有网络架构无法解决以上问题。
泛洪
自学习机制是 “flood-and-learn”,因此泛洪是不可避免的。当网络规模非常大时 (例如大规模虚拟机场景),定期地会有上百万的泛洪包,终端计算节点不堪重负。
VLAN 限制
VLAn 总共 4096 个,无法满足云计算时代的多租户需求。
汇聚应答 ARP 的负担
汇聚负责应答 ARP。ARP 数量可能非常多,导致汇聚交换机 CPU 飙升。
交换机水平扩展性和 STP 限制
理论上,增加汇聚交换机数量似乎就能增加东西向带宽。但是,STP 不支持两个以上 的交换机场景,否则后果无法预测。因此汇聚交换机就固定在了两个,无法扩展。
交换网络需要运行大量不同类型的协议,例如:
显著增加了网络的复杂性。
STP 使得网络只能用到一半的链路带宽。
STP 的行为无法预测。一些常规故障或设备维护都可能导致 STP 故障。
VLAN 在汇聚交换机终结,即在交换(bridging)和路由(routing)的边界终结。
网工无法灵活地将任意可用接口分配给用 户的VLAN(需要端到端的链路都有可用接口才行)。
云计算场景下,需要非常快速的网络资源交付。
VLAN 需要整条链路端到端的配置和感知,而且配置会引起控制平面的 STP 等协议震荡(收 敛),容易引起网络故障。因此添加或删除 VLAN 都需要天级别的时间。
一些对这种网络方案的改进尝试:TRILL 和 MLAG。
经过时间沉淀,其他各种上层协议(L3+)已经退潮,IP 协议成为唯一主流。 是时候从网络需求出发,设计一种新的架构了。
本章我们看到了应用架构(application architecture)是如何驱动网络架构演进的。
Form is destiny — in networking even more than in life. The structure of the network lays the foundation for everything that follows.
形式决定结果 —— 在网络世界尤其如此。网络结构为后面的所有东西 奠定了基础,正如树根与树干、树冠的关系一样。新一代的结构就是:CLOS 拓扑。
云原生数据中心基础设施的先行者们希望打造一种具备大规模扩展性的东西。 CLOS 拓扑就像红杉树,用一种类似分形的模型(fractal model)实现了水平扩展(scale out)。
本书主要内容就是 CLOS 拓扑中的网络设计。CLOS 拓扑及其特性, 是每一位网络工程师和网络架构师的必修课。
Fig 2-1. Illustration of a common Clos topology
Spine 和 Leaf 可以是同一种交换机,这虽然不是强制要求,但同构设备的使用会 给这种架构带来明显收益。
Spine-Leaf 架构的容量(capacity)很高,因为
Spine 交换机只有一个目的:连接所有的 Leaf 节点。
总结起来就是,Spine-Leaf 架构中,所有功能都下放到了边缘节点(Leaf 和服务器),中心节点(Spine)只提供连接功能。
水平扩展(scale-out)和垂直扩展(scale-in):
Spine-Leaf 架构可以实现良好的水平扩展(scale-out):
Access-Aggregation-Core 架构扩展容量的方式:只能替换成性能更强的设备,称为垂直扩展(scale-in)。
CLOS 架构的一个好处是:只用一种设备就能构建出超大型网络(build very large packet-switched networks using simple fixed-form-factor switches)。
从根本上改变了我们思考网络故障、管理网络设备,以及设计和管理网络的方式。
接入-汇聚-核心三级网络架构的一个固有限制是:只能支持两台汇聚交换机。 那 CLOS 架构是如何支持多台 Spine 的呢?答案是:CLOS 中不再使用 STP,交换机之间的 互连不再走桥接(bridging),而是走路由(routing)。
但并不是说 CLOS 中不再有桥接,只不过转发已经限制到了边缘节点,即 Leaf 交换机和服务器之间。
前面提到,用交换(bridging)做交换机互连的原因之一是:各厂商有不同的三层协议, 只有二层是相同的,都是以太网。发展到后来,各种三层协议逐渐淘汰,IP 协议作为唯一 的三层协议一统江湖,因此用 bridging 方式做交换机互连已经不是必须的了。
那路由方式(routing)到底是如何支持多台 Spine 的呢?答案:ECMP。
从本质上来说,CLOS 拓扑是用路由(routing)替代了原来的交换(switching),作为最 主要的数据包转发方式(primary packet forwarding model)。
收敛比:下行带宽 / 上行带宽。
收敛比是 1:1
的网络称为无阻塞网络(nonblocking network)。
如果 Spine 和 Leaf 都是 n
端口交换机,那 CLOS 拓扑
支持的最大服务器数量:n*n/2
所需的交换机数量(假设无阻塞网络):n + n/2
ISL: inter-switch link。
更大的 Spine-Leaf 互连带宽的好处:
考虑到制冷、机柜尺寸、服务器封装、交换机芯片等方面的原因,以上的理论并不能原封不 动落实到实际的数据中心中。
受电源功率限制,单个机柜一般不超过 20 台服务器。考虑到散热能力,这个限制可能会更 小。
实际中很少需要无阻塞网络,Spine 和 Leaf 也使用不同类似的设备。商业芯片厂商一般会
提供配套的 Spine 和 Leaf 交换芯片,例如 Broadcom 的 Trident
和 Tomahawk
系列。
有了多台 Spine 之后,挂掉一台就不会产生灾难性的影响。例如,假如有 16 台 Spine, 那平均来说,挂掉一台只会影响 1/16 的流量。而在传统网络中,挂掉一台汇聚会影响 1/2 的流量。
另外,挂掉一条链路(link)时,只影响一台 leaf 到一台 spine 之间的流量,这台 leaf 到其他 spine 的流量是不受影响的。
there are no systemic failures of the style found in access-agg networks due to the use of routing, not bridging, for packet switching.
用路由代替交换,使得 CLOS 架构消除了系统性故障(systemic failures)的风险, 而接入-汇聚-核心三级网络架构是无法消除这种风险的(例如,全网广播风暴)。
前面看到,128 端口的两级 CLOS 架构最多支持 8192 台服务器。如何设计出能支撑更多服 务器的 CLOS 架构呢?答案是三级(甚至更多级)CLOS 架构。
Fig 2-5. Three-tier Clos topology with four-port switches
上图中有两种三级 CLOS 的设计:
图 b:SuperSpine 和 Spine 是同一台设备,它们之间的互连是在交换芯片完成的。
图 c:三层交换机都是独立设备,Spine 和 Leaf 组成 POD,再和上面的 SuperSpine 互连。
三级 CLOS 服务器和交换机数量:
支撑的最大服务器数量:n*n*n/4
所需交换机数量:n + n*n
CLOS 架构是富连接(richly connected)或称全连接(full mesh)网络,因此所需的布线 工作量大大增加。
设备都是一致的,没有特殊性,管理起来更简单。管理交换机就像管理 Linux 服务器一样。
便于自动化。
Fig 2-7. Dual-attached host models
a primary implication of Clos topology: the rise of network disaggregation.
交换机不再是厂商提供的一体机,而是分解为各个软件和硬件部分,每个部分可以独立设计 、采购和升级。
Fig 3-1. High-level components of a network switch
组装一台交换机就像组装一台 PC 机。
交换机分解更多的是出于商业或业务考虑,而非技术(a business model, not a technical issue)。
控制成本。
后期的运维成本比前期的采购成本高的多。
Facebook 发起了 Open Compute Project (OCP)。
在裸交换机上安装网络操作系统(NOS):Open Network Installer Environment (ONIE),类似于服务 器领域的 PXE。
为什么没有直接用 PXE?PXE 只支持 x86。ARM 和 PowerPC 用的 u-boot。
VxLAN 的硬件支持最早出现在商用芯片(merchant silicon),而不是传统交换机厂商的芯片上。
芯片厂商:
Broadcom 是商用芯片领域的拓荒者和领导者,
Mellanox 是另一个有力竞争者,
Barefoot 是这个领域的新秀,Cisco 和 Arista 都有基于 barefoot 芯片的交换机。
其他:Innovium, Marvell
芯片配置:
Edgecore, Quanta, Agema, and Celestica, Dell.