数十年来,传统的核心/汇聚/接入网络架构一直是企业数据中心的主流架构,而当计算和存储变得越来越灵活、动态、可以“软件定义”之时,数据中心网络却一直在抗拒改变,因而也成了数据中心自动化和弹性扩展的瓶颈。
那么,数据中心网络如何才能像计算与存储那样,具备灵活自适性呢?Big Switch的共同创始人Kyle Farster和Facebook的网络工程师Petr Lapukhov一致主张,数据中心网络的运营者们应该寻求一种内核舱式(core and pod)设计,可以让超大规模数据中心从小起步,逐步试验,逐步适应日益变化的网络需求,而不必全盘放弃现有的网络基础设施。
20年来,3层的网络设计一直在做优化,唯独创新不属于它。
将近20年来,大多数网络专家们所学的最主要的数据中心设计就是3层架构:核心(L3)、汇聚(L2/L3)和接入(L2)。而且这种基本设计取得了巨大的成功,可以轻松且低成本地构建出可靠而且可扩展的网络,但是这样的优势正在面临着新一代数据中心网络需求的巨大挑战。
3层的网络设计构想,当时是因为L3的路由器与L2的交换机之间存在着明显的价格差,而网络流量又主要是南北向而非东西向的,且核心以及汇聚层的速度也要比边缘的速度快上至少10倍。但是现在,这些考虑因素全都不存在了。
更糟的是,3层设计在支持今日数据中心的业务创新方面全面溃败。而且3层设计中的一些小模块严重固化,想要对其进行快速升级迭代或者创新实验几乎是不可能的,要想提升其性价比也几乎毫无希望。从实际情形上看,3层设计是将网络锁定在了一个“最小公分母”的功能集合中,锁定在了单一厂商、产品换代缓慢的困境中。
如今,数据中心网络的设计已经走到了一个新的节点上。业界人士也都不断地在听说一些超大规模数据中心的运营者们在构建自己的创新网络。这些数据中心尽管规模庞大,但是其网络设计却可以允许你从小起步,快速地进行创新。
这种内核舱式创新的主要观点是:超大规模数据中心没必要一天就建成,而是可以添砖加瓦式的有机成长,每次只前进一小步即可。
从小起步的内核舱式创新
所谓内核舱式创新就是利用多个悬挂在路由核心层上、每个都单独设计的“舱”(内部结构不必相同)。路由核心可串起很多多次迭代的舱,并为其提供快速且简单的内部连接,将每个舱视为一个原子单元。而在每个舱内,可以只有单一的接入层,或者更常见的“叶片加脊柱”式网络。如果在一个舱内使用了“叶片加脊柱”拓扑,那么核心层往往会被称为“脊柱的脊柱”,整个网络就代表一棵“胖树”或“层叠式(Clos)”拓扑。
为了匹配新增的需求,新的舱可以在设计、工程、安装和摘除上都只作为一个单元或网元来对待。在一个数据中心里,可以有不同迭代的舱,例如v1、v2和v3代的筴可以同时共存,都悬挂在共享的核心上。在很多迭代方法中,每个舱的设计都在前一代的基础上升级——比如说可以在性价比曲线上的一些更好的点上构建较新的硬件平台。
内核舱设计的好处是网络、计算和存储都可以自行迭代,然后组合成一个单元,这样在运营和自动化上就非常简单了。这种方法可适应数据中心内的设计多样性,保证每个单元在舱的边界内是完全一致的。尽管使用各种不同的舱可能会伤害到整体网络的一致性,但却增加了小步试验、迭代成长的灵活性,同时又有足够的一致性可进行统一管理。
当然,这种方法也存在短板,那就是增加了操作的复杂性,它要求员工具备多种设计知识,可能还要用到各种不同的工具来管理和操作迭代层级不一样的多个单元。但无论如何,如果想要维护一个简单且统一的舱结构,对大多数任务进行自动化也显然要比对蔓延整个数据中心的传统3层网络进行自动化容易得多。
内核舱式设计也不会遭遇“最小公分母”或“单一厂商锁定”等3层架构所固有的问题。因为每个单独的舱在合理的范围内都可以是一个新的开始。
网络设计适应变化
内核舱式设计最早由一些超大规模数据中心的架构师们所采用,作为一种横向扩展的方法,而与之前所采用的昂贵的经典树拓扑纵向扩展模型相对立。传统的核心/汇聚/边缘设计一般需要在扩容时替换/重新设计/重建所有的3层架构(这在大多数企业的数据中心建设中是一种常态)。而采用内核舱式设计,你只须给核心增加新的舱便可扩容,也可以更新最新的舱设计(无须更改整个数据中心设计)而适应新的需求。
设想一个应用需要在接入交换机上有双倍的上行链路。在传统的3层设计中,一旦所需端口密度超过了设备的容量,唯一的选择就只能是在整个数据中心范围内重新设计更大、更高密度的盒子用于汇聚。而在内核舱式设计中,只须将一个新一代的舱集成进来便可,不会影响到数据中心的整体设计。
持续的创新不可避免地要求软件不断更新。那么内核舱式设计的一个重大优势就是能够让升级变得非常简单。所有的舱都可以独立升级,因为Clos或胖树网络的设计是在整个层上采用N+1冗余(最常见的是3+1),因此升级的操作风险很低。而传统的1+1三层设计,大多数升级都是高风险的或繁重不堪的。
对业界而言,已经有一些用例展示了这一革命性的和模块化的数据中心设计方法,可以查看微软或eBay的舱部署(一般是以术语“容器”展现的)。
内核舱式思维模式
我们看到,在网络设计上领风气之先(例如采用SDN软件和裸金属硬件)的一批数据中心架构师们已经开始拥抱内核舱式设计了。他们不会再整个数据中心内采用SDN,但却会在某一代的舱设计中用到。他们可通过一个集中控制器获得自动化,不再需要打包的“最小公分母”设计,且可以更容易从小起步,逐步试用,最终适应未来的各种业务需求。
颇具讽刺意味的是,很多企业架构师在描述其数据中心时,首先都会说到3层设计,但在细节上却各有不同。对于很多数据中心架构师来说,向内核舱式设计的转变更多的是在心智上而非现有网络上的。
当数据中心的架构师们认可了这种新的思维模式时,就会有更多的数据中心网络(无论其规模如何)从小处起步。数据中心网络设计一直是一门需要在诸多优先项之间进行权衡的学问,如果能在优先项列表中出现内核舱式设计,并由此而实现“创新”,那将是一个重大的利好消息。