本文所讲的数据中心网络架构和技术范围是针对典型的大型互联网和云计算公司的超大规模数据中心(Hyperscale Data Center),不一定适合其他类型的数据中心网络。业界对于什么规模才算是“超大规模(Hyperscale”并没有一个精确的定义。
一般来说,一个数据中心网络集群至少有 5000台服务器才能够算得上是超大规模。当然,大型互联网公司的数据中心规模往往要比这个大得多,5万~10万台之间的单集群规模比较常见,如果按照一个城市区域计算,则一般有几十万台服务器的规模。过去十年,互联网和云计算迅猛的发展,催生了超大规模数据中心,而传统网络技术已经无法满足超大规模数据中心的要求,又驱动了网络技术的演进和变革。相比传统数据中心网络,现代超大规模数据中心网络在技术和架构上有很大的不同,主要表现在:网络架构的演变、网络设备的解耦和白盒化、网络功能虚拟化,以及网络运维的自动化和智能化。网络架构的演变
首先,传统企业数据中心因历史原因运行的一些经典应用需要网络的组播和广播功能,以及网络的二层桥接技术。为了满足这些网络功能,网络架构相对比较复杂,有过多冗余设计,很难扩展,一般都采用“1+1”冗余设计,网络的规模靠增加交换机设备来扩大。为了支持二层桥接功能,同时又要控制二层广播域,防止广播风暴,传统的企业数据中心网络一般采用分层模块化设计,有一定的二层桥接区域和清晰的二三层分界。这种二三层混合设计采用了很多厂商设备自带的高级功能,增加了复杂度,并影响了网络在各种故障场景下的收敛。
现代互联网数据中心没有这些传统应用的负担,网络可以只集中在Unicast和三层路由,从而大幅简化网络的功能和协议,因此现代互联网数据中心一般都采用全三层设计、路由网络协议,没有二层桥接、组播和广播的功能。同时,现代互联网数据中心规模都比较大,需要资源的弹性扩展和灵活扩展,这些催生了物理网络架构从分层模块化设计转向了横向可大规模扩展的 CLOS 架构设计。CLOS 架构目前已经成为超大规模数据中心网络的事实标准。网络设备解耦和白盒化
软件定义网络(Software Defined Network,SDN)的提出就像是一声春雷打开了网络发展的新篇章。SDN 的核心思想之一是把传统网络设备的管理平面、控制平面和数据平面进行分离,采用软件的方法集中控制和管理,让网络变得更加智能,同时简化数据平面,让网络变得更简单。设备解耦把数据平面、控制平面和管理平面集成在一起的单个厂商封闭系统变成了一个开放的系统,让网络更加开放。
虽然最初的OpenFlow 并没有在现代数据中心中广泛部署应用,但在过去的七年左右的时间里,各种开源社区和组织在SDN 概念的指导下,逐步发展壮大,打破了厂商封闭系统,走向了开放的设备解耦之路。SDN 发展至今,最具代表性的成果是商业化交换机芯片逐渐占据数据中心网络市场的主导地位,各种白盒交换机设备逐渐得到大规模部署,开源组织和开源软件也如雨后春笋般出现。
延续网络设备解耦和白盒化思想,行业人士开始进一步思考怎样才是最简单、最优性价比的交换机设备形态?对于构建超大规模数据中心,大型框式交换机是否必需?以什么方式来构建大容量的交换机最合适?业界已经有不少这方面的尝试,典型代表当属脸书公司公开的 Backpack Switch(可以参见OCP的相关文章),这种框式交换机突破传统背板互联方式,直接把基于单芯片的盒式交换机通过线缆互连在一起形成一个逻辑上的大型框式交换机,其优点是简单、研发投入可控、易于自动化运营。随着交换机芯片容量的大幅上升,越来越多的人认识到基于单芯片盒式交换机带来的简单、成本优化、网络延时优化等巨大好处,并开始尝试用单芯片盒式交换机来组建超大规模的数据中心网络。网络功能虚拟化
网络功能虚拟化(NFV)是加速网络行业变革的另一个源泉。网络功能虚拟化是通过使用x86等通用硬件及虚拟化技术,来替代原专业设备的软件处理,从而降低网络设备成本。它可以通过软硬件解耦及功能抽象,使网络设备功能不再依赖于专用硬件,资源可以充分灵活共享,实现新业务的快速开发和部署,并基于实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈等。
随着通用x86处理器性能的大幅提升,NFV愈发流行。在云计算数据中心网络中,NFV已经变成网络虚拟化的基石,基于x86服务器的虚拟交换机和虚拟路由的网关功能有效地构建了数据中心虚拟网络层,虚拟网络和物理网络的解耦极大地简化云计算网络设计,促进资源的弹性部署。同时,随着物理网络带宽的进一步增长,通用计算 CPU已经很难满足网络带宽增长的需要,网络转发功能需要转向硬件卸载。近年来,业界在这方面已经有很多的尝试和探索,包括智能化网卡及可编程交换机芯片等技术。网络运维的自动化和智能化
在过去很长的时间里,网络设备的管理和运维都以人工手动为主,需要靠人力通过ping、traceroute 等基本工具配置网络,或者登录网络设备中检查各种表项是否正常。这种人工运维方式催生了网络工程师这个职业的高价值和快速发展,最有代表性的当属IT业界最为成功的技术认证CCIE(Cisco Certifed Internet Expert)。但是,随着网络功能越来越复杂,网络规模越来越大,手工运维已经难以为继。举个简单的例子,一个大型云计算或者互联网公司有几十甚至上百个大型数据中心,而每个大型数据中心就有上千台的交换机,人工运维是不现实的。现代超大规模数据中心网络和传统网络的一个根本不同点就是运维的自动化和智能化。
架构的设计、设备和芯片的选择、网络功能的选择等都要充分考虑自动化和智能化运维的需要,一个无法自动化运维的架构设计是无法大规模部署的。自动化运维包括很多方面,从最开始的自动化架构验证到自动化的规模部署,再到自动化的新功能发布、软件版本升级,以及故障的自动化发现、隔离和恢复等。
过去 10 年,在超大规模数据中心自动化运维需求的驱动下,涌现出了很多的网络管理工具、开源管理软件、结构化设备管理方法、标准 API,以及各种网络可视化的功能等。网络的自动化运维取得了长足的发展,但是从另一个角度看,能够真正做到网络自动化运维的企业还很少。
这里面的原因很多,既包括企业自身原因,还有设备厂商的原因等。设备厂商由于自身利益等原因,很难在网络运维管理方面达到一致化的功能和接口,而自动化管理来自多家厂商设备的数据中心是一个很大的挑战。大型互联网公司在这方面一般做得比较好:一个原因是硬性超大规模的需求驱动,另一个原因是强大的研发力量,能够通过对网络设备的自研,把设备和网络运维体系高效结合,从而能够真正做到自动化运维。
-对此,您有什么看法见解?-
-欢迎在评论区留言探讨和分享。-