谷歌网络帝国背后的故事
三年半之前,一个包裹被快递到了爱荷华州一个农业小镇的某办公楼里,一段关于谷歌的神奇故事就此拉开了帷幕。
包裹里面是几个奇怪的计算设备,它们非常的宽大扁平,就像装披萨的盒子。盒子的一边是密集的开口,显然是用来接入大量网线用的,另一边贴着一个“海王星交换机”(Pluto Switch)的标签。它们的外形与常规的网络设备大相径庭,而且盒子的背面还印着许多芬兰语的字符。这个公司的工作人员显然并不知道这些盒子的具体用途,于是有人把这些盒子转寄到了他们威斯康辛的总部,希望那里的IT专家们可以解答这些盒子的秘密。总部的IT工作人员一开始同样一头雾水,但是不久之后他们在一个非常小众的网络论坛上得到了一些答复:这些盒子是网络交换机,它们工作在因特网纷繁复杂丰富多彩的表面之下,负责在数据中心之间大量的传输和转移数据,并且,它们的主人是谷歌。
谷歌的确在爱荷华州的那个小镇附近设有数据中心,所以显然是邮递员粗心把这个设备寄到了错误的地址。这个公司的工作人员把这些盒子两两装好之后寄给了谷歌,并且迅速的从那个论坛上销声匿迹,但是他们在论坛上曾经发过的照片和技术讨论还是为人们打开了一扇窥探谷歌帝国内部的神秘网络世界的窗户。它指向了一个也许会改变整个互联网世界的神秘项目,而谷歌却从未在公开的场合谈论过它。
图为谷歌代号为”海王星“(Pluto)的高性能架顶式交换机
多年以来,谷歌在搭建自己的服务器网络时并没有使用传统网络设备商的设备,他们并没有大规模的购买思科,惠普或者爱立信的交换机和路由器。为了适应谷歌急速扩张的服务器网络,他们专门设计了自己的网络设备并且为他们编写了自己的软件用于配置和管理自己的网络。而直到这次阴差阳错的邮递员事件,外界才第一次看到这些设备的真容。由于这个项目对于谷歌的重大意义,在对外界保密的同时谷歌一直在持续增加对这个项目的投入。直到今天早上,在硅谷的一个技术会议中,来自谷歌的Amin Vahdat才第一次作为这个项目的负责人展示了支撑谷歌网络帝国长达10年的前5代的硬件软件解决方案,并且对这个领域的一些基础技术进行了介绍和探讨。这些探讨对于整个互联网世界都具有一定的前瞻性,毕竟未来会有更多的互联网公司将要走上谷歌已经走过的路。
图为Amin Vahdat, 谷歌“消防水管”(Firehose)项目的负责人
Amin Vahdat最早是UCSD的教授,他的研究领域就是网络的拓展,当意识到在学术圈的世界里已经无法构建规模足够大的网络之后,他来到了谷歌。据Vahdat介绍,谷歌这个秘密项目名字叫做“消防水管”(Firehose),始于2004年。到2005,2006年的时候,这个项目的产品已经部署在谷歌若干个数据中心日夜运行。除了快递员投错的那些类似于“高性能架顶式”(Top-of-Rack)交换机的产品,他们还开发了另外一种用于连接大规模网络之间相互连接的“集群交换机”(Cluster swtiches)。不仅如此,谷歌甚至还设计开发了自己专属的路由协议和网络管理软件。对此Vahdat的解释是:“那时的设备完全不能应付我们的网络所需要处理的带宽和数据吞吐量,那样的设备在这个星球上根本就不存在。”
谈到消防水管这个项目最初的动机,Vahdat表示主要有两个方面,一方面在于谷歌的服务器网络扩张太快,传统网络设备商的产品已经无法满足他们在各个不停扩张的数据中心之间快速交换数据的需求;另一方面谷歌也需要为这个长期持续的挑战找到一个低成本的解决方案,运用传统的手段搭建谷歌所需要的规模的数据中心和网络,成本将是真正意义的天文数字。而这个低成本的解决方案就是大量购买价格低廉的民用级的芯片,并且让他们协同工作完成交换处理海量数据的任务,听起来很像当下被炒得火热的云计算的概念雏形。
十几年之前当谷歌刚刚开始搭建自己的服务器网络时,他们的选择跟其他所有公司如出一辙。他们尝试从思科购买最大最强的集群交换机(Cluster swtiches),在每个数据中心的内部,这些集群交换机构成了网络的骨架。每一部这样的集群交换机都要花费谷歌几十万到几百万美元,而每一部这样的交换机上只有固定数量的网络接口可以连接到其他的交换机,这意味着搭建一个可以满足谷歌需要的数据网络将会耗费无尽的美元。“那时候我们的采购只会跟他们说,嘿哥们,把你们现有最牛的交换机给我们,只要最牛的。”
于是从2004年开始谷歌内部成立了一个小组开始研究自己的网络设备解决方案。这个方案简而言之就是用普通的民用级芯片搭建通用的硬件,然后在上面跑任何需要运行的软件。思科为不同级别的需求提供不同的硬件,并每套硬件上面都运行特定的相匹配的软件。而谷歌的解决方案则简单粗暴的多,所有的硬件都是相同的,面对不同的需求时解决方案的差别仅在于一起协作的硬件的数量,一个“高性能架顶式”交换机就相当于一个“集群交换机”上的一块板,性能的提升几乎等同于数量的叠加,而这些相同的硬件都可以运行任何需要运行的软件。根据Vahdat的介绍,现在谷歌“朱庇特”(Jupiter)系列集群交换机的处理能力已经达到了每秒40Tb,等同于4000万个家庭用户接入的带宽和吞吐量。
图为谷歌的”朱庇特“(Jupiter)系列集群交换机,每秒可以处理40Tb的数据,相当于4000万家庭用户接入的吞吐量。
相较于硬件,Vahdat对于他们解决方案的软件部分言之甚少。但是他透露他们的网络设备运行在Linux的系统之上,他们还开发了自己的路由协议“火线”(Firepath),用于判断数据交换时的最佳路径。在网络世界里工业标准的路由协议是BGP和OSPF,开发自己的路由协议是非常罕见的现象。Vahdat解释说在他们开始搭建网络的时候这些标准协议还不像今天这般简单和高效,而他们将要搭建这个世界上最大最复杂的网络,所以他们需要一个更加简单快速可扩展的方案。“火线”协议的细节无比复杂,如果要介绍它的优势,一言以蔽之,“火线”的用户可以通过一个中央控制软件来统一配置整个网络的行为,而在传统的网络世界里如果想要达到同样的效果,网络管理专家们必须对网络中的每个交换机一个一个的单独配置。
谷歌的服务器网络很可能是世界上最大的一个。一个惊人的事实是,如今谷歌网络内部数据中心之间交换的数据量已经超过了谷歌和整个互联网之间交换的数据量。如今像微软,亚马逊和Facebook也都面临着和谷歌类似的挑战,而他们也各自进行着类似的项目。Facebook从一开始就公开了他们的SDN(software-defined networking)计划,而美国最大的网络服务提供商AT&T也已经在紧锣密鼓的进行着向这种新的网络技术的迁移。
SDN技术发展到现在,凭借其低成本,高灵活性和几乎无限的扩展性的巨大优势,已经给传统的网络设备商带来了前所未有的挑战,而这种挑战很可能是颠覆性的,它意味着传统网络设备商们的蛋糕整个变小了,而且将越变越小。当谷歌微软这样的巨头纷纷抛弃思科们的时候,那些中小规模的公司一样会因为SDN的种种优势而希望转投SDN的怀抱,他们之所以还不能这样做是因为他们不像那些巨头公司一样有足够的资源来设计开发自己的硬件软件和解决方案。于是一批新的创业公司应运而生,他们专门为其他公司提供新一代的网络解决方案,“当你只需要花很少的钱买一堆廉价芯片并且用一个中央控制软件就可以配置整个网络的时候,昂贵而又复杂的传统网络解决方案看起来如此笨拙不堪一击。”如今Nicira (已经被VMware收购), Big Switch Networks, 和 JR Rivers’ Cumulus Networks等公司的蓬勃发展已经证明了SDN大势的不可阻挡,网络世界注定将要迎来一场革命。