数据中心可扩展网络设计

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




(注:IEEE Micro杂志7月份有一期专门讲数据中心级别的计算。小组学习的时候挑了这篇文章:Scale-Out Networking in the Data Center [2,4](数据中心可扩展网络设计),介绍UCSD(Univ. of California, San Diego)的Triton网络,并且分析了拓扑、商品化部件、2层或3层局域网交换选择和多路转发等设计考虑,各位可以作为借鉴。)

过去的十年,扩展模型(Scale-Out)代替了升级模型(Scale-Up)作为大规模计算和存储的基础。传统的升级模型要求系统架构师用高端的部件替换掉原来计算或者存储能力不够的部件。这要求过一段时间就将应用和数据从一台机器移动到另一台。更糟糕地是,高端的部件使得我们不能使用商品化部件的好处,每个计算周期或者单位字节花的钱比起商品化部件要贵10倍以上。对于十万级别服务器的数据中心来说,使用商品化部件或是非商品化部件(noncommodity)的差别会有几十亿美金之多。

成本驱使了通过必要的软件开发来得到部署可增加、水平可扩展的商品化服务器和硬盘。在可扩展模型中,理想情况下要增加计算或者存储资源只需要往系统中增加服务器和硬盘就行了。比如,增加10%的计算能力,只需要往集群增加10%的服务器就行了。可扩展模型要求负载的并行度,对于来自很大用户群的许多小请求来说,比如搜索,这样的并行度是很容易达到的。

虽然可扩展模型提供了清晰且吸引人的好处,但是数据中心可扩展模型最后一个挑战来自网络。在数据中心部件之间协调和传输数据需要一个面向几万台服务器的高速互连网络。然而,当前情况下,为更大的集群提供带宽需要专门的非商品化交换机和路由器。比如,同一个机架服务器的互连可以用一个商品化的48端口非阻塞机顶交换机。但是,几千个机架之间的高速互连就需要一个分级网络。虽然分级互连叶子节点可以使用商品化交换机,更高级别的需要能力更强的专用交换机(更多端口和背板带宽)。目前数据中心使用的专用网络价格增加和性能限制相比商品化解决方案有10倍之多。

下面我们来看一下UCSD的Triton网络的结构。

需求

一个理想的网络特征应该是可扩展、可管理、灵活和便宜。

可扩展:这个网络必须支持100,000端口的数据中心,将近1 petabit/s的聚合带宽;并且,尺度必须是增量可扩展的——端口数可以以几百的粒度增加,聚合带宽可以以terabit/s的粒度增加。可管理:开发者应该可以把整个网络作为单一逻辑层(L2)的域来管理,实现即插即用的部署。扩充这个网络不需要配置DHCP、子网数、子网掩码和网络映射。同时,要避免布线的复杂性。灵活:任何服务应该可以灵活地可以在数据中心任何一处运行来支持终端和网络的虚拟化。便宜:单位节点的开销应该很低——从资本和维护的角度,相对于计算和存储都要低。从维护的角度还包括了管理的开销和每个端口的能耗。

拓扑

传统的数据中心网络(比如Cisco Data Center Infrastructure 2.5 Design Guide)最佳的方案是在树状的拓扑上,聚合到更密、更快速的交换机。根节点最高密度交换机限制了这些环境的网络性能。直到最近,非阻塞10-Gbps以太网交换机仍限制于128个端口。假设网卡是Gbps级别,这就使得单个网络的尺寸限制在几千个节点。

Triton的解决方案使用胖树拓扑,folded-clos拓扑使用相等交换的一种特殊缓冲实现。当然,胖树并不是什么新鲜事,在高性能计算里面很常用。但是,在大规模以太网和TCP/IP网络中使用它的需求是最近因为巨大的服务量和激增的数据集需要全交换(all-to-all)通信而出现的。

Sample fat tree topology

图1. 胖树拓扑的例子。在合适的调度下,这个拓扑可以提供单级交叉开关交换机一样的吞吐率。每个组(Pod)里面的边交换机在第二层为终端主机和聚合(aggregation)交换机提供互连。(参考资料1)

图1 [1] 显示了一个简单的胖树拓扑。这个拓扑用20个4端口交换机搭成了1个等价于16端口的交换机。通过合适的调度,这个拓扑可以提供单级交叉开关交换机一样的吞吐率。换句话说,它可以达到仅受限于每个端口速度的等分聚合带宽。达到这个功能在计算量上有挑战,但实际上Triton取得了不错的实际结果,在后面“多路转发”小节还会讨论。

商品化硅件

大规模网络设施的两个挑战是将整个网络作为一个逻辑交换机管理,以及连接拓扑需要的大量布线。比如,很多所谓的商品化硅件提供商,比如Fulcrum Microsystems、Marvell和Broadcom,正在把24-、48-或者64-端口10Gigabit以太网(GigE)交换机移植到芯片上。对于k=64的例子,可以组建一个65,636端口的10GigE交换机,划分成64个组(Pod),每个组1,024个端口。不幸地是,这个拓扑同时需要5,120个单独的64端口交换机和131,072根网线(见图2 [3] )。要管理这么多交换机和网线是一件不小的挑战,这使得胖树在资本投入上的优势可能因为在管理上建造和管理的困难而失去。

The "Yellow Wall"

图2. The "Yellow Wall" (参考资料3)

UCSD使用模块化的交换机[3]来解决这个问题。通过定制底板和定制ASIC以太网扩展协议模块,降低了开销和功耗,并且将131,072根网线降到了64根。这个交换机就是Triton的核心技术了(有兴趣的读者可以参考资料3)。

两层交换或者三层交换的选择

拓扑和交换机选定后,另一个独立的问题是路由机制:局域网L2或者L3地址域的选择[5]。L2网络是即插即用的,L3网络需要管理员手动配置子网掩码并和DHCP同步;L2网络的地址空间是平的,交换机转发表的项数就会很多,L3网络的地址空间是分层的,转发表就比较简洁;最后,因为虚拟机在数据中心里面的广泛应用,L3网络中虚拟机的迁移受到限制,而L2就没有类似问题。综合这些考虑,UCSD采用在L2网络基础上插入伪MAC地址,使用定制的位置发现协议得到和模块化交换机的关系。

多路转发

为了更好的消除长流的冲突,UCSD的网络中使用了动态的流控。通过统计交换机部件的流量计数,得到流量需求矩阵来分配最佳路径。

参考资料:

1. 100,000-port Ethernet switch anyone?http://www.networkworld.com/community/node/44473

2. Scale-Out Networking in the Data Center, http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5550998&tag=1

3. Data Center Switch Architecture in the Age of Merchant Silicon, http://www.nathanfarrington.com/presentations/merchant_silicon-hoti09-slides.pdf

4. www.nathanfarrington.com/papers/scale-out-micro10.pdf

5. LAN switching, http://en.wikipedia.org/wiki/LAN_switching

(1个打分, 平均:5.00 / 5)

雁过留声

“数据中心可扩展网络设计”有11个回复

  1. IPplusOptical 于 2010-10-19 7:40 上午

    好东西!

  2. 慧伟 于 2010-10-20 8:42 上午

    其实最核心的是交换机的设计。如果有兴趣可以看看[3]

  3. K 于 2010-10-20 5:55 下午

    好东西,谢谢分享

  4. ABC 于 2010-10-26 12:42 上午

    3的设计纯粹是为了数据中心,和普通的商业交换机还是不太一样,呵呵。考虑的东西重点不一样。

  5. IPplusOptical 于 2010-10-27 6:25 上午

    弯曲最近技术上发生了调整?通过Google的RSS,发现最近几天不更新了。这篇文章还在RSS的第一条。

  6. droplet 于 2010-10-27 6:46 上午

    弯曲是不是启用了cache?很多评论不能及时更新。cache虽然对性能有帮助,但是对浏览不好啊。

  7. 高飞 于 2010-10-29 11:15 下午

    RSS最近因为网站出了点问题,10月19日以后停止更新了。现在已经恢复。

    评论不能更新,是因为filter自动把某些评论放入审查队列,等待批准。

  8. zeroflag 于 2010-11-02 2:30 上午

    看了这篇文章,自己也想了一下。如果是用本文所说的设计,那么核心层的设备之间用什么样的链路进行连接呢?在100G以太网成熟商用之前,恐怕只能用多条10G链路捆绑。另外核心层设备的拓扑是什么呢?会不会在核心层之间由于收敛比过大出现瓶颈呢?

    个人的观点与其在核心层的链路上出现瓶颈,不如用双核心双链路的树形连接,把带宽的收敛放到汇聚层上去,这样似乎更能接受一些!

  9. wei 于 2010-12-31 5:32 上午

    Fulcrum的数据中心我懂一些.互相学习阿.

  10. zeroflag 于 2011-03-04 8:41 下午

    做回倒斗党把,重新学习了这篇文章,发现我对FAT TREE完全理解错了。按照FAT TREE的拓扑,核心层之间是不需要连接的。

    不过新的问题又出来了,按照FAT TREE的拓扑结构,这样的网络在选路上是非常重要的,现有的以太网要搞定这种拓扑,则必须抛弃STP,我想问的是,现在有这种相关的协议出来吗?如果没有,这种拓扑结构则必然是是三层的,这又和作者建议采用二层产生的冲突了。

    希望有高手回答。

  11. 小虾 于 2011-03-04 11:23 下午

    这个交换原理好像和JUNIPER的Qfabric的原理一样。