第十二章 重新思考网络设计
云原生数据中心网络通过遵循以下设计原则,实现了可靠的、具有成本效益的网络:
标准的,简单的构建块
对网络故障的重新考虑
关注简单性
12.1 标准、简单的设备类型
这一原则显著地区别了云原生数据中心运营商与传统时代的运营商。
Clos拓扑结构
网络解耦
选择少于几种类型的设备类型,比如Spine和Leaf各一个
使用这些简单的标准设备构建库存管理
这些简单的固定形式设备的另一个优点是能够自动配置它们
随着网络自动化的出现,以及具有Clos拓扑的扩展模型,专注于执行一个功能的简单标准盒子要更加有效。
试图减少网络中设备的数量,以此减少布线带来的复杂性和成本。
12.1.1 网络解耦
网络解耦使库存管理更加简单。
12.2 失败:因为树而错失了森林
网络设计的另一个基本转变是回到了IP网络的原始模型:网络不会失败;单个组件会。为了确保网络在面对单个组件故障时保持运行,网络设计者必须使用较小的设备附带的自然冗余。较小的路由器会导致尽可能限制故障的范围。换句话说,受故障影响的物体的“爆炸半径”保持得尽可能小。
Clos拓扑的使用鼓励了一个扩展模型,在这个模型中,核心不必执行复杂的任务和携带许多状态。通过将复杂的功能推到叶子上,包括进入状态分布的服务器中,它更容易扩展规模。因为状态分布在许多盒式设备中,一个盒式设备的故障的爆炸半径比一个携带大量状态的大盒式设备的爆炸半径要小得多。
当操作员购买大型Spine交换机以减少他们拥有的盒子数量时,他们也会自动增加故障的爆炸半径。这通常不会被考虑到操作员的思维中。使用512个端口的Spine交换机,您可以构建512个机架的两层关闭拓扑。但现在,失败的影响要大得多。如果你把它分解成一个三层关闭网络,每个有8个64个机架,你会得到一个更可靠的网络。
12.2.1 L2故障模型与L3故障模型相比
L2网络一直是网络的基石。L2网络的主要问题是,它们在非常小的范围内都不可靠。STP的根本问题是,当它失败时就会变得滥交,而不是礼貌地沉默。
L3网络,云原生数据中心的基础。换句话说,如果路由器在特定时间内没有收到邻居的消息,路由器将节点标记为死亡,并将其从所有路径中删除。这意味着一个过载或停机的节点将停止接收作为围绕其运行的其他节点路由的流量。
因此,L3网络本质上比L2更稳定。
12.2.2 简单故障与复杂故障相比
简单的盒子往往会经历简单的失败。固定形式交换机使用单个交换芯片,单个CPU,等等。这意味着可以相当快速地隔离硬件故障。传统网络的大型聚合设备以复杂的方式出现问题,有如此多的可移动部件:多个交换芯片、多个cpu、连接线卡到中央控制卡的双背板,等等。
当一个硬件设备在传统时代出现故障时,库存管理和设备的成本通常鼓励网络运营商在设备继续运行在网络中时解决问题。这种方法给网络运营商带来了巨大的压力。
使用简单、标准和廉价的设备,很容易用另一个设备代替故障设备。这意味着故障设备可以从网络中移除并脱机调试,而一个替代设备可以让网络恢复到完全运行状态。自动化和使用定义明确、简单的功能确保了更换设备既不费力也不耗时。这种方法对网络和运营商都要健康得多。
12.2.3 处理升级
L2协议不允许流量从节点上软卸载,以进行计划的维护或替换。在二层网络上,即使可以计划事件,现有的流量也会受到不必要的影响。另一方面,路由协议支持优雅地退出网络,保持可靠性。
通过使单个节点可靠来使网络可靠的原则导致了在线软件升级(ISSU)等灾难性的想法。ISSU也被吹捧为系统升级的解药,因为它允许现有流量不受升级的影响。就像任何和ISSU工作过的人都会告诉你,它是可靠的。
几乎在个人看来,云原生数据中心避开了ISSU。他们使用了L3路由协议的能力,从网络中提取节点并和平升级。
12.3 更少的追求
传统网络运营商对于设备的功能要求极其贪婪。
12.3.1 正确的体系结构如何提供帮助
Clos拓扑结构的体系结构,摆脱了传统网络架构的困境。各个供应商内置了许多特性来解决这些问题。问题是,这些增强功能是特定于供应商的:有时会内置到硬件中,有时会内置于标准协议的扩展中,有时也会产生全新的协议。故障安全、特定于供应商的特性的实现只是历史演变的功能;
L2,作为一个网络的标题,也意味着过多的协议。你有STP和LACP,都是前面提到的。您还有一个FHRP和各种STP增强,一些标准的和一些专有的。然后,您就有了一个协议,如单向链路检测(UDLD)、多播协议,当然,还有路由协议。所有这些都意味着很多复杂性,从而导致复杂的故障和交互。
仅仅依赖于L3网络,从网络中消除多播,运营商基本上可以以两种协议运行整个网络:路由协议和BFD。这大大简化了配置和协议的复杂性。
12.3.2 特征集本质主义
与其寻求大量供应商驱动的选项,不如回到基本原则,根据“何时想要什么”设计满足您需求的网络。
供应商会推动那些比必要或理想更复杂的解决方案,因为他们要么不支持更简单的选项,要么复杂的解决方案会导致供应商锁定。如果您的配置非常紧凑,因此您可以注意到错误,那么您的网络很可能会更可靠。
向上移动另一个层,新的网络设计排除了从未属于网络的网络。传统的网络供应商在交换机中添加了越来越多的功能,以使设备在数据中心发挥更重要的作用,而不是提供高效、高速的连接。这种方法还导致不必要和不自然的特征在交换机中部署。这反过来又导致了更复杂的设备,以及由于单个设备固有的复杂性,其可靠性要低得多的网络。
12.4 对云原生网络设计原则的约束
首先重要的限制来自于部署在网络上的应用程序。许多云原生数据中心运营商可以轻松地工作,编写并拥有在他们的网络上运行的应用程序。例如,AWS、微软Azure和谷歌都可以拒绝在其VPC产品中提供L2功能或多播。然而,许多金融机构和成熟的组织可能充斥着旧的“遗留”应用程序,这些应用程序要么根本无法重写,要么重写成本高昂。在这种情况下,网络不得不屈服于这些应用程序的意愿。
许多这些较老的应用程序都对网络做出了假设,比如在集群或发现中使用多播和广播;在这里,消除L2将是很困难的。但是,较新的应用程序,特别是在存储领域,也会继续做出这些错误的假设。将这些应用程序限制在较旧的网络上是我所知道的一些组织处理这个问题的一种方式。他们阻止运行这样的应用程序,通过收取更多的费用来运行这样的网络,这样构建新的应用程序就不做出这些旧的错误假设。
另一个限制是,当您使用旧设备,无法部署新的网络设计。