在过去一年中,Facebook给传统网络行业带来了有趣的创新。虽然大部分企业会对其网络操作详情保密,而Facebook则与大家分享了其创新。笔者认为,对于这个业务模式构建在人们共享的个人信息之上的企业而言,这非常合情合理。
并且,Facebook的开放性也给他们带来回报。基础设施副总裁Jason Taylor估计,在过去三年中,通过向开放计算项目(OCP)成员共享其设计规格,Facebook节省了大约20亿美元。
但真正引人注目的是去年Facebook推出的Wedge,这是与OCP社区合作开发的开放架顶式交换机。在8个月后,Facebook推出了6-Pack模块化版本的Wedge,用于网络核心。除这些裸机交换机外,该公司还推出了FBOSS(基于Linux的开发网络操作系统)和OpenBNC(系统管理)。
这种开放性对于其他企业的意义在于,所有这一切并不只是Facebook的疯狂科学项目。你很快可以通过台湾交换机制造商Accton购买Wedge,只需要花费专有交换机成本的小部分就可以将这些交换机引入到你的数据中心。并且,你不会被锁定为要在该交换机运行FBOSS.你可以货比三家,选择你最喜欢的网络操作系统,例如Open Network Linux、Cumulus Linux、Big Switch Switch Light、Pica8的PicOS或甚至瞻博网络的JUNOS.如果你有自己的开发团队,你也可以自己开发操作系统。
本文中我们将讨论Facebook分享的数据中心网络设计创新以及这对其他企业的价值。去年11月,在Wedge和6-Pack发布时间之间,Facebook启动了其最新的Altoona数据中心。对此,Facebook同样公开分享了其新设计。
事实证明,Altoona设计中有一些有价值的创新,可以借鉴到其他任何规模的数据中心。
对超大规模的误解
当提到“超大规模数据中心”时,很多人都会本能地想到Facebook、谷歌和Amazon.而由于这种关联,让人觉得只有大型供应商才能实现超大规模数据中心。
事实是,超大规模只是意味着进行非常快速扩展的能力。超大规模数据中心网络可能很小,但它可以迅速成倍扩展,而不需要改变网络的基本组件和结构。在这个扩展中,你可以使用相同的交换机和相同的互连模式,而不需要替换交换机来适应增长。
你的数据中心可以只有少量机架,如果网络设计正确的话,它就可以是超大规模数据中心。超大规模是一种能力,而不是规模。
对于超大规模数据中心的另一个误解是,它们是用于相对较少的大规模应用程序。这也是源自Facebook和谷歌的关联。超大规模设计其实非常适合重型东西工作负载,但超大规模设计原则也可以应用到一般企业数据中心,支持数百个业务应用程序,正如它可以支持单个社交媒体、大数据[注]或搜索应用程序。
超大规模也让人想起由才华横溢的年轻设计师从芯片开始构建的DIY网络,这些设计师的薪水远远超过一般网络运营商的水平。对于创新者来说,这可能是真的,但由于Facebook已经奠定了基础,现在一般人也可以将其设计原则应用到自己的数据中心。
为了了解Altoona网络的价值,让我们先来看看Facebook在其早期数据中心使用的网络架构。
好是不够的:Facebook的集群设计
图1展示了Facebook在Altoona之前的聚合集群设计,他们称之为“4-post”架构。多达255台服务器机柜通过ToR交换机(RSW)连接到高密度集群交换机(CSW)。RSW有多达44个10G下行链路和4或8个上行链路。4个CSW及其连接的RSW组成一个集群。
4个“FatCat(FC)”聚合交换机互联集群。每个CSW有一个40G连接到每个FC.一个80G保护环连接每个集群内的CSW,而FC连接到160G保护环。
这是一个很好的设计,包括几个方面:冗余性很好;超额配置很好(RSW和CSW之间通常为10:1,CSW和FC之间为4:1);这个拓扑结构相当平,没有路由器互联集群;并且增长的管理简单,通过添加新集群,至少可达到40G端口容量。
但Facebook发现这还不够好。
这种架构的主要问题在于CSW和FC需要非常大的交换机:
。 只有4个交换机处理所有集群内流量,4个交换机处理所有集群间流量,交换机故障会带来严重影响。一个CSW故障会减少25%的集群内容量,而一个FC故障会减少25%集群间容量。
。 非常大的交换机限制了供应商选择—只有少数“大腕级”制造商。由于这些供应商只出售相对较少的大型交换机,与大量供应商提供的较小型交换机相比,每端口CapEX和OpEx非常高。
。 这些大型交换机的专有内部属性不允许定制化、管理复杂,并且修复漏洞需要等待数月甚至数年。
。 大型交换机往往有超额交换结构,因此不能同时使用所有端口。
。 这种集群交换机的端口密度限制了这些拓扑结构的规模和贷款,让过渡到下一代端口的速度很慢。
。 Facebook的分布式应用程序创造了机器到机器流量,这难以在聚合网络设计内管理。
Altoona:超大规模数据中心
Altoona的下一代架构必须从根本上解决集群架构的问题,同时保持其最佳功能。具体做法是:
。 使用大量小型交换机,而不是少数大型交换机。这样的话,每个交换机仅负责较小比率的负载,交换机故障只会对整体容量带来较小的影响。
。 端口密度分布在多台交换机,而不是在一台交换机,让过渡到更高密度端口和减少内部超额配置变得更简单。
。 内部交换机架构应该是开放、无阻塞的,并建有商用芯片,鼓励定制化、简化管理和故障排除,并缩短漏洞修复等待时间。
。 寻找比集群更小的模块化单元,可以复制用于广泛的用途,并可经济地部署到各种规模的数据中心。
。 降低资本和运营支出。
。 快速、简单和便宜地适应任何速度的增长
对此,Facebook提出的是分层核心和pod设计,他们创建了跨越整个数据中心的单个高性能架构。基本构建块(或者说标准“网络单元”)pod包含48个ToR交换机,通过40G上线链路连接到4个光纤交换机。请看图2中这个拓扑结构,你可以发现折叠的3级Clos结构,或者说分支和主干拓扑结构。这些pod每个只包含48个服务器机架(+微信关注网络世界),而不是集群设计中数百台服务器机架。因此,在端口密度方面,ToR和光纤交换机可以保持相对较小。假设每个ToR交换机有48个10G下行链路,pod有3:1的超额配置—这是对10:1集群超额配置的显著改进。
每个pod通过40G上行链路连接到4个主干平面,正如图3所示。每个主干平面可以有多达48个交换机。这种拓扑结构的关键是,每个光纤交换机有相同数量的40G下行链路和上行链路,这样该结构就无阻塞,在pod之间没有超额配置。在整个数据中心,二等分带宽(运行多PB)是一致的。
图3显示的是光纤架构及其对应的主干平面之间的彩色连接。真正让你震惊的应该是,光纤交换机和主干交换机之间有大量链接。光纤和电缆很昂贵,所以管理pod和主干平面之间的距离很重要。
如果你旋转pod并进行排列,每个pod的48个机架将排列在数据中心,然而对主干平面进行同样的排列,你会得到图4中的立体图,光纤交换机成为主干平面的一部分。光纤交换机和主干平面之间的距离被缩短。请注意,还有边缘pod,这提供到架构的外部连接。
Facebook网络工程师Alexey Andreyev这样描述这个结构:“这种高度模块化设计使我们可以在任何层面快速扩展容量,在简单而统一的框架内。当我们需要更多计算容量时,我们添加服务器pod.当我们需要更多架构内网络容量时,我们在所有平面添加主干交换机。当我们需要更多架构外连接时,我们增加边缘pod或扩展现有边缘交换机的上行链路。”
Altoona数据中心经验
你现在可能想知道这与你和你的数据中心有什么关系。毕竟,Facebook正在支持着一个庞大的分布式应用程序,产生的机器到机器流量跨越其整个数据中心,而你可能没有这种需求。并且,虽然48机架pod比其早期集群更小,但大多数企业数据中心都少于48服务器机架。
那与你有什么关系呢?因为这不是关于规模,而是可扩展性。
Altoona设计可借鉴之处在于,你可以使用小型开放交换机构建你的数据中心,这个架构可以让你扩展到任何规模,而不需要改变基本构建块。首先看看交换机:你不需要等到Wedge或6-Pack上市(Accton很快将销售Wedge),你可以选择来自Accton、Quanta、Celestica、戴尔等供应商的裸机交换机。例如,具有32个40G端口的Quanta交换机售价为7495美元。24个40G端口的瞻博网络QFX5100售价不到3万美元。这个价格相差很大,JUNOS可以为你提供相当好的操作系统,而裸机交换机让你可以加载你选择的操作系统。
对于pod和核心设计,这可以根据你自己的需要来进行调整。Pod可以是你想要的任何规模;而“网络单元”是很好的概念,而不是规则。你可以创建一些pod设计来满足特定的工作流程需要,或者只是开始从较旧的架构迁移。Pod还可以针对应用程序。随着你的数据中心网络的增长,或者你采用更新的技术,你可以无中断地插入新的pod.
这同样适用于核心部分。你可以在2层网络或3层网络构建核心,这完全取决于你支持的工作流程。这种简单的pod和核心设计,让你可以以任何速度来扩展你的数据中心网络。