云的魔力在于它始终开启,并且可以从任何地方访问。用户已经习惯于服务在他们需要时就在那里。数据中心(或仓库级计算机)是所有服务流出的中心。它通常 housed 在一个朴实无华的仓库大小的建筑物中,没有任何迹象表明里面有什么。在呼呼作响的风扇和冰箱大小的计算机机架中,电气电缆和光纤交织在一起,将一切连接在一起——数据中心网络。本文提供了一个“导览”,介绍围绕数据中心核心网络的原理和核心思想——现代的织布机,编织互联网的数字结构。
大规模并行计算机植根于HPC(高性能计算),15年前千核处理器系统已可用。HPC系统依赖于快速(低延迟)且高效的互连网络,该网络能够为细粒度(例如,缓存行大小)通信提供高带宽和高效的消息传递。这种对性能和低延迟的狂热关注迁移到了金融企业系统,在这些系统中,百万分之一秒的差异可能会对交易价值产生影响。
近年来,以太网网络在弥合使用COTS(商用现成)组件构建的面向容量的集群和专用定制系统架构之间的性能和可扩展性差距方面取得了重大进展。以太网作为最强大的计算机Top500列表(top500.org)上的集群互连的增长就证明了这一点。十年前,高性能网络大多是定制的和专有的互连,而以太网仅被Top500系统中2%的系统使用。然而,今天,根据2011年11月的Top500计算机列表,超过42%的最强大的计算机正在使用千兆以太网。紧随其后的是InfiniBand,约占系统总数的40%。这些基于标准的互连与规模经济相结合,为现代数据中心网络提供了遗传物质。
如图1所示,现代数据中心13,17,24是数万台主机的所在地,每台主机都包含一个或多个处理器、内存、网络接口和本地高速I/O(磁盘或闪存)。计算资源被打包成机架,并分配为集群,集群由数千台主机组成,这些主机通过高带宽网络紧密连接。虽然网络在整体系统性能中起着核心作用,但它通常仅占集群成本的10-15%。注意不要将成本与价值混淆——网络对于集群计算机就像中枢神经系统对于人体一样。
每个集群在处理器类型和速度上都是同构的。数千台主机被协调起来,以利用线程级并行性,这对于许多互联网工作负载至关重要,因为它们将传入的请求划分为并行子任务,并将来自数千个内核的许多子任务的结果编织在一起。通常,所有并行子任务都必须完成,请求才能完成。因此,任何一个子任务的最大响应时间将决定总体响应时间。25即使在存在大量线程级并行性的情况下,网络和协议栈带来的通信开销最终也会限制应用程序性能,因为Amdahl定律2的影响会逐渐显现。
高层系统架构和编程模型塑造了程序员的概念视图和应用程序使用方式。本地(DRAM)和远程(网络)内存引用的延迟和带宽“成本”通常会烘焙到应用程序中,因为在为底层系统架构优化代码时会做出编程权衡。通过这种方式,应用程序在系统架构的限制内有机地增长。
集群应用程序使用模型(专用或在多个应用程序之间共享)对SLA(服务级别协议)和应用程序性能有重大影响。HPC应用程序通常以专用的方式使用系统,以避免来自多个应用程序的争用,并减少应用程序性能的由此产生的变化。另一方面,Web应用程序通常依赖于来自多个集群的服务,其中每个集群可能同时运行多个应用程序以提高整体系统利用率。因此,数据中心集群可能会使用虚拟化来实现性能和故障隔离,并且Web应用程序在编程时会考虑到这种共享。
诸如搜索、电子邮件和文档协作之类的Web应用程序是计划资源,并在集群内运行。4,8面向用户的应用程序具有软实时延迟保证或SLA,应用程序必须满足这些保证或SLA。在此模型中,应用程序大约有几十毫秒的时间来回复用户的请求,该请求被细分并分派到集群中的工作线程。工作线程生成回复,这些回复被聚合并返回给用户。不幸的是,如果工作流的一部分没有及时执行,那么它可能会超过指定的超时延迟——例如,由于网络拥塞——因此,合并结果的某些部分将不可用,因此被忽略。这不必要地浪费了CPU周期和网络带宽,并可能对计算结果产生不利影响。
为了降低拥塞的可能性,可以通过为甚至对抗性流量模式提供充足的带宽来过度配置网络。大规模网络中的过度配置成本高昂。或者,实施QoS(服务质量)策略将流量划分为不同的类别,并提供性能隔离和高级流量工程是确保满足应用程序级SLA的一步。大多数QoS实现都是通过交换机和NIC(网络接口控制器)硬件实现的,其中流量根据路由器和主机显式标记的优先级或使用端口范围隐式引导来隔离。目标是相同的:一个高性能网络,可以在不同的流量模式下提供可预测的延迟和带宽特性。
数据中心网络内的流量通常根据流来衡量和表征,流是来自源主机到目标主机的包序列。当引用互联网协议时,流进一步细化为包括特定的源端口号和目标端口号以及传输类型——例如,UDP或TCP。流量是不对称的,客户端到服务器的请求丰富但通常很小。然而,服务器到客户端的响应往往是更大的流;当然,这也取决于应用程序。从集群的角度来看,互联网流量变得高度聚合,因此,流量流的平均值说明不了什么,因为聚合流量表现出高度的变异性,并且是非高斯的。16
因此,当运行Web搜索时,即使网络仅被利用10%,也可能会看到大量的丢包。为了更好地理解单个流的特征,应用程序会进行仪表化以“采样”消息并导出流量流的分布;这些知识使您能够推断出网络流量的分类法并对单个流进行分类。最常见的分类是双峰的,使用所谓的“大象”和“小鼠”类。
大象流具有大量的包,并且通常寿命长;它们表现出“突发”行为,在短时间内在网络中注入大量的包。流内的流量通常是有序的,这意味着大象流可能会创建一组“热点”链路,这些链路可能会导致在使用有损流控制的网络中树饱和或丢包。来自大象流的性能影响可能是显著的。尽管这些流的数量相对较少——比如不到1%——但它们可能占网络上数据量的一半以上。
由大象流引起的瞬时负载不平衡可能会对任何无辜的旁观者流产生不利影响,这些旁观者流正在耐心地等待对两者路由都通用的重度利用链路。例如,从A到B的大象流可能与从C到D的流共享一个公共链路。任何对共享链路的长期争用都会增加从C到D的流中丢弃数据包的可能性。任何丢包都将导致发送方的传输层未确认数据包,并在超时时间到期时重新传输。由于超时时间通常比网络的往返时间大一到两个数量级,因此这种额外的延迟22是性能变化的重要来源。3
当今典型的多层数据中心网络23具有大量的超额订阅,其中连接到机架交换机(即,第一层)的主机彼此之间的带宽配置明显多于——比如一个数量级——与其他机架中的主机之间的带宽配置。这种机架亲和性对于降低网络成本和提高利用率是必要的。每个主机发出的流量强度随时间波动,并且由此产生的瞬时负载不平衡可能会造成争用,并最终导致流控制丢包。集群之间的流量通常不太注重时间,因此可以进行分阶段和计划。集群间流量的编排程度较低,并且包含更大的有效负载,而集群内流量通常是细粒度的,并且具有突发行为。在下一个级别,数据中心之间,带宽通常非常昂贵,距离遥远,具有高度管制的流量流和模式,以便高度利用昂贵的链路。当发生拥塞时,最重要的流量可以访问链路。了解网络流的粒度和分布对于容量规划和流量工程至关重要。
网络拓扑精确地描述了交换机和主机是如何互连的。这通常表示为图,其中顶点表示交换机或主机,链路是连接它们的边。拓扑结构对于网络的性能和成本都至关重要。拓扑结构影响许多设计权衡,包括性能、系统封装、路径多样性和冗余,而这些反过来又影响网络的容错能力、平均和最大电缆长度,当然还有成本。12思科数据中心基础设施3.0设计指南6描述了基于类似树状拓扑结构15的常见实践,该拓扑结构类似于Charles Clos7提出的早期电话网络,在网络的不同级别进行带宽聚合。
如图2所示,胖树或折叠Clos拓扑结构的聚合带宽与系统中主机端口的数量成比例增长。可扩展网络是指增加网络中的端口数量应线性增加所交付的双向带宽的网络。可扩展性和可靠性是密不可分的,因为扩展到大型系统规模需要一个健壮的网络。
主机的地址是如何在网络中识别端点的。端点与路由路径中遍历的中间交换元件区分开来,因为消息是由端点创建并传递到端点的。最简单地说,地址可以被认为是主机名的数字等价物,类似于Unix报告的hostname命令。
地址是唯一的,并且必须以规范形式表示,路由功能可以使用该规范形式来确定数据包的路由位置。交换机检查与执行路由的层相对应的包头——例如,来自第3层的IP地址或来自第2层的以太网地址。以太网上的交换涉及ARP(地址解析协议)和RARP(反向地址解析协议),它们在第2层网络上广播消息以更新本地缓存,从而将第2层地址映射到第3层地址,反之亦然。第3层路由要求每个交换机维护子网掩码,并静态分配IP地址或使用DHCP(动态主机配置协议)等分发主机地址。
当交换机插入并了解其身份并与其对等方交换路由信息时,第2层路由表会自动填充;但是,数据包转发表的容量仅限于,例如,64K条目。此外,每个第2层交换机都将参与STP(生成树协议)或使用TRILL(大量链路透明互连)链路状态协议来交换路由信息并避免在对等方之间交换链路状态时可能出现的瞬时路由环路。第2层和第3层路由都不完全适合数据中心网络,因此,为了克服这些限制,已经提出了许多新的路由算法(例如,PortLand1,18和VL2 11)。
路由算法确定数据包在网络中遍历的路径。数据包通过网络的路由或路径可以在创建消息时断言,称为源路由,或者可以在数据包访问中间交换机时以分布式方式逐跳断言。源路由要求每个端点都知道到达所有其他端点的规定路径,并且每个源路由的数据包都携带完整的信息来确定从源端点到目标端点的一组端口/链路遍历。由于这种开销和不灵活的故障处理,源路由的数据包通常仅用于拓扑发现和网络初始化,或在交换机状态未知时的故障恢复期间使用。更灵活的路由方法是在每个交换机中使用分布式查找表,如图3所示。
例如,考虑一个典型的以太网交换机。当数据包到达交换机输入端口时,它使用数据包头中的字段索引到查找表中,并确定来自当前交换机的下一个跳或出口端口。
良好的拓扑结构将具有丰富的路径多样性,其中可能存在多个可能的出口端口,每个出口端口都通向不同的路径。拓扑结构中的路径多样性可能会产生ECMP(等价多路径)路由;在这种情况下,路由算法会尝试通过均匀地分散流量来对链路上的流量进行负载均衡。为了实现这种均匀分散,交换机中的路由功能将散列数据包头的几个字段以生成确定的出口端口。在链路或交换机发生故障时,路由算法将利用网络中的路径多样性来找到另一条路径。
如果不存在更短(即,更少跳数)的路径,则通过网络的路径被称为最小路径;当然,可能存在多个最小路径。例如,胖树拓扑结构15在任意两个主机之间具有多个最小路径,但蝴蝶拓扑结构9在任意两个主机之间仅具有单个最小路径。有时,选择非最小路径是有利的——例如,为了避免拥塞或绕过故障进行路由。非最小路径的长度范围可以从min+1到访问每个交换机恰好一次的哈密顿路径的长度。通常,路由算法可能会考虑长度比最小路径长一个跳数的非最小路径,因为考虑所有非最小路径的成本将非常高昂。
本节讨论共享网络资源的礼仪——具体而言,物理链路和缓冲区空间是需要流控制才能有效共享的资源。流控制在网络堆栈的不同级别执行:数据链路层、网络层、传输层,并且可能在应用程序本身内执行,以实现资源的显式协调。在通信堆栈的较低级别发生的流控制对应用程序是透明的。
网络级流控制规定了如何管理每个交换机或NIC的输入缓冲区:例如,存储转发、虚通道14或虫洞19。为了更好地理解流控制的性能影响,您必须首先了解总延迟,T,数据包会产生
T = H(tr + Ltp) + ts
H是数据包在网络中经过的跳数;tr是从第一个微片(流控制单元)到达时到第一个微片退出时测量的交换机的直通延迟;以及tp是通过平均电缆长度L的传播延迟。对于短链路——例如,少于10米——电信号传输具有成本效益。然而,更长的链路需要光纤才能在更长的距离上进行通信。电信号传输(每米5纳秒)中的信号传播速度快于光纤(每米6纳秒)。
通过电缆的传播以亚光速发生,这是因为导体表面存在频率相关分量,或电缆中的“趋肤效应”。这会将信号速度限制为真空光速的约四分之三。光纤中的信号传播速度甚至更慢,这是因为介电波导用于改变折射率分布,以便信号的更高速度分量(即,更短的波长)将传播更远的距离,并与更低速度的分量同时到达,从而将信号速度限制为真空光速的约三分之二。光信号传输还必须考虑执行电光信号转换以及反向转换所需的时间。
平均电缆长度,L,主要由拓扑结构和数据中心内系统机架的物理位置决定。数据包的串行化延迟,ts,是将数据包挤压到狭窄的串行通道上所需的时间,并由通道的比特率决定。例如,一个1,500字节的以太网数据包(帧)需要超过12μs(忽略任何帧间间隙时间)才能被挤压到1-Gb/s的链路上。顾名思义,使用存储转发流控制时,数据包在每个跳数处被缓冲,然后交换机才对其进行任何处理。
Tsf = H(tr + Ltp + ts)
因此,串行化延迟,ts,在每个跳数处都会产生,而不是像虚通道和虫洞流控制的情况那样仅在目标端点处产生。这可能会在数据中心网络中给往返网络延迟增加大约100μs。
稳定网络单调地传递消息,如图4中特征吞吐量-负载曲线所示。然而,在没有端到端流控制的情况下,当提供的负载超过饱和点时,网络可能会变得不稳定,如图中的虚线所示,a。饱和点是提供的负载,超过该负载时,网络被认为是拥塞的。为了响应这种拥塞,可能会丢弃数据包以避免输入缓冲区溢出。这种有损流控制在以太网网络中很常见。
丢弃数据包虽然在概念上很简单且易于实现,但给传输级机制带来了检测和重传丢失数据包的责任。请注意,在传输过程中丢失或损坏的数据包由相同的传输级可靠交付协议处理。当提供的负载较低时(小于a),由于损坏而导致的数据包丢失很少见,因此,为传输级重传付出相对较大的代价通常是可以容忍的。增加的流量(大于a)和对抗性流量模式将导致在交换机的输入队列耗尽后丢弃数据包。由此产生的重传只会进一步加剧已经拥塞的网络,从而产生性能不佳的不稳定网络,如图4中的虚线所示。或者,使用无损流控制时,当出现拥塞时,数据包可能会被阻止或保持在源端,直到资源可用。
全局拥塞控制机制可以防止网络在饱和后区域运行。大多数网络使用端到端流控制,例如TCP5,它在源和接收器对之间使用窗口机制,以尝试将源的注入速率与接收器的接受速率匹配。然而,TCP是为可靠的数据包交付而设计的,而不是为及时的数据包交付而设计的;因此,它需要调整(TCP拥塞控制算法将自动调整以找到正确的速率)以平衡性能并避免由于在重负载下急于重传数据包而造成不必要的数据包重复。
几十年前,早期工作站的网络设计人员做出了权衡,导致了单个TCP/IP/以太网网络堆栈,无论是在几米还是几公里的范围内进行通信。随着处理器速度和密度的提高,网络通信的成本相对于处理器周期而言有所增加,从而将网络堆栈暴露为关键的延迟瓶颈。22这部分是由于TCP/IP/以太网堆栈中的用户-内核上下文切换造成的——并且可能需要额外的工作来将消息从应用程序缓冲区复制到内核缓冲区,然后在接收器处再复制回来。一种双管齐下的硬件/软件方法解决了这种延迟惩罚:OS旁路和零拷贝,这两者都旨在消除每个消息的用户-内核切换,并通过允许网络传输直接从用户应用程序缓冲区获取消息有效负载来避免冗余的内存复制。
为了改善用户/内核切换的性能影响,可以使用OS旁路将消息直接存入用户应用程序缓冲区。应用程序通过在门铃内存位置上自旋等待来参与消息传递协议。到达时,NIC将消息内容存入用户应用程序缓冲区,然后“按响”门铃,通过将偏移量写入缓冲区来指示消息到达,可以在该偏移量中找到新消息。当用户线程检测到更新后的值时,将完全从用户空间处理传入的消息。
零拷贝消息传递协议避免了从用户空间到内核空间的额外内存复制,反之亦然,在接收方也是如此。中断信号指示消息的到达,中断处理程序处理新消息并将控制权返回给用户应用程序。中断延迟——从引发中断到将控制权交给中断处理程序的时间——可能很长,尤其是在使用中断合并来分摊多个中断的延迟惩罚时。不幸的是,虽然中断合并提高了消息效率(即,提高了有效带宽),但它以增加消息延迟和延迟变化为代价。
通常,云计算需要两种类型的服务:面向用户的计算(例如,服务网页)和向内计算(例如,索引、搜索、map/reduce等)。面向外部的功能有时可以在互联网的“边界”处完成,常见的请求页面在那里被缓存并由边缘服务器服务,而向内计算通常由数据中心中的集群执行,集群具有紧密耦合、协调的通信。用户需求对于地理区域来说是昼夜变化的;因此,在全球范围内布置了多个数据中心以适应不断变化的需求。在可能的情况下,需求可以分散到附近的数据中心,以对流量进行负载均衡。
这种计算基础设施的庞大规模使得灵活部署非常具有挑战性。每个集群都是逐机架构建的,并作为单元(机架、架顶交换机等)以及整体进行测试,并使用生产级工作负载和流量强度进行测试。
集群生态系统在其生命周期内有机地增长,这得益于软件的快速发展——包括应用程序,以及在较小程度上,操作系统。Web应用程序的类流体软件需求通常会消耗包含它们的集群资源,这使得灵活性成为这种类流体系统中的首要任务。例如,增加10%的额外存储容量应该意味着集群中增加不超过10%的服务器。这种线性增长函数对于系统的可扩展性至关重要——增加少量的服务器会导致总体集群容量的相应增长。这种灵活性的另一个方面是资源添加的粒度,这通常与集群封装约束有关。例如,向集群添加另一个机架(包含,例如,100台新服务器)比在数据中心地板上添加整行(包含数十个机架)更易于管理。
即使是中等规模的集群也将拥有数公里的光纤电缆,这些电缆充当连接服务器机架的广阔高速公路系统,这些服务器机架在数据中心地板上组织成多行。数据中心网络拓扑结构和由此产生的电缆复杂性是“烘焙在”其中的,并且仍然是集群的刚性固定装置。管理电缆复杂性并非易事,这从遍布数据中心的错综复杂的光纤电缆挂毯中可以立即看出。为了冗余,在“捆绑”光纤中发生电缆故障时,或为了计划的带宽增长而运行额外的光纤电缆的情况并不少见。光纤电缆经过仔细测量,以留出一些松弛度并满足电缆的弯曲半径,并且它们经过细致的标记,以使故障排除不再像大海捞针一样。
抽象是阿基米德的杠杆,它提升了计算机科学中的许多学科,并在计算机系统设计和软件工程中得到广泛应用。就像一系列嵌套的俄罗斯套娃一样,网络编程模型在网络堆栈的连续层之间提供抽象,从而实现对数据和系统管理的平台无关访问。这种类型抽象的一个例子是协议缓冲区21,它为用C++、Java或Python编写的Web应用程序提供了结构化消息传递接口。
网络中最常用的抽象可能是通信通道的概念,它是一种连接两个主机的虚拟资源。TCP通信模型以文件描述符的形式向程序员提供这种抽象,例如,在套接字上执行的读取和写入操作会导致相应的网络事务,这些事务对用户应用程序是隐藏的。在很大程度上,InfiniBand QP(队列对)动词模型为NIC中底层的发送/接收硬件队列提供了抽象。除了提供更直观的编程接口之外,当出现故障时,抽象还可以充当软件周围的保护层,沉积软件沉积层以隔离关键故障(例如,内存损坏或更糟的是,主机电源故障)。
糟糕的事情会发生在优秀的软件上。Web应用程序的设计必须意识到故障,并在各种故障场景中尽可能地具有弹性。10对于现代集群而言,网络是造成大部分不可用预算的原因。无论是伽马射线导致内存中的软错误,还是粗心的工人意外地挖出光纤线路,操作系统和底层硬件基板都在协同工作,以促进Web应用程序的健壮生态系统。
数据中心网络充当协作任务之间信息交换的“中枢神经系统”。网络的功能通常分为控制平面和数据平面。控制平面提供了一个与数据网络并置的辅助网络,其任务是主要数据平面的“命令和控制”。控制平面是用于数据平面的配置、故障检测和修复以及监视的自治系统。控制平面通常作为嵌入式系统在每个交换机组件中实现,其任务是在可能的情况下进行故障检测、通知和修复。
例如,当网络链路发生故障或具有异常高的传输错误数时,控制平面将重新路由网络以避免故障链路。这需要根据路由算法重新计算路由,并在受影响的交换机的路由表中放置新条目。当然,这种修补的效果不是瞬时的。一旦路由算法计算出新路由,考虑到新发现的故障链路,它必须将路由分发给受影响的交换机。此信息交换所需的时间称为收敛时间,路由协议的主要目标是确保将其最佳地限制在较小的时期内。
故障恢复是一个非常复杂的主题,除了最简单的数据中心网络外,所有网络都感到困惑。使情况复杂化的因素包括边缘链路,这些链路通过在活动和非活动(即,启动和关闭)之间转换而导致“抖动”,反复创建大量错误通知,并导致基于波动和不一致的链路状态进行路由重新计算。一些链路层协议允许向下调整链路速度,以期提高链路质量。当然,降低链路速度会导致链路带宽降低,这反过来可能会限制网络的整体带宽,或者至少会由于慢速链路上的争用增加而造成负载不平衡。由于这些复杂因素,通常最好从路由算法中逻辑地切除故障链路,直到可以更换和验证物理链路为止。
数据中心网络通常被认为是系统架构中的关键设计要素,以及动态共享处理器、内存和I/O设备的骨架结构。从1G到10G以太网以及新兴的40G以太网的发展暴露了通信堆栈中的性能瓶颈,这需要更好的硬件-软件协调才能实现高效通信。Solarflare、Myricom和InfiniBand等公司的其他方法试图通过更有效的抽象来重塑传统的套接字编程模型。然而,Internet套接字仍然是数据中心网络的主要编程接口。
网络性能和可靠性是关键的设计目标,但它们会受到成本和服务性约束的制约。大型集群计算机的部署是逐步完成的,并且通常受到建筑物电力容量的限制。电力在集群网络中进行分配,以使电源故障仅影响集群中一小部分主机——例如,少于 10%。当硬件发生故障(这是预期的)时,主机上运行的操作系统会与更高级别的虚拟机监控程序或集群操作系统协调,以允许就地更换故障硬件,而不会耗尽集群中的流量。可扩展的 Web 应用程序被设计为预期偶尔的硬件故障,因此由此产生的软件必然是具有弹性的。
良好的用户体验依赖于可预测的性能,数据中心网络需要在各种流量模式下提供可预测的延迟和带宽特性。随着单线程性能达到瓶颈,微处理器正在提供更多的核心,以跟上摩尔定律无情的步伐。因此,应用程序正在寻求更高的线程级并行性,并扩展到具有大量核心的规模,同时核心之间的通信也相应增加。这种趋势正在推动以通信为中心的集群计算,成千上万个核心协同工作,让人联想到一群鸟儿在云层中无缝穿梭。
1. Al-Fares, M., Loukissas, A., Vahdat, A. 2008. 可扩展的商品化数据中心网络架构。载于 SIGCOMM 2008 数据通信会议论文集 (SIGCOMM '08): 63-74; http://doi.acm.org/10.1145/1402958.1402967.
2. Amdahl's law; http://en.wikipedia.org/wiki/Amdahl's_law.
3. Ballani, H., Costa, P., Karagiannis, T., Rowstron, A. 2011. 面向可预测的数据中心网络。载于 SIGCOMM 2011 会议论文集 (SIGCOMM '11): 242-253; http://doi.acm.org/10.1145/2018436.2018465.
4. Barroso, L.A.; Dean, J.; Holzle, U. 2003. 面向全球的 Web 搜索:Google 集群架构。IEEE Micro 23 (2):22-28; http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1196112&isnumber=26907.
5. Cerf, V., Icahn R. E. 2005. 分组网络互联协议。SIGCOMM 计算机通信评论 35(2):71-82; http://doi.acm.org/10.1145/1064413.1064423.
6. 思科数据中心基础设施 3.0 设计指南。数据中心设计—IP 网络基础设施; http://www.cisco.com/en/US/docs/solutions/Enterprise/Data_Center/DC_3_0/DC-3_0_IPInfra.html.
7. Clos, C. 1953. 非阻塞交换网络研究。贝尔系统技术期刊 32(2):406-424.
8. Fitzpatrick, B. 2004. 使用 Memcached 的分布式缓存。Linux Journal 2004(124); https://linuxjournal.cn/article/7451.
9. Dally, W., Towles, B. 2003. 互连网络原理与实践。 San Francisco, CA: Morgan Kaufmann Publishers Inc.
10. Gill, P., Jain, N., Nagappan, N. 2011. 理解数据中心中的网络故障:测量、分析和影响。载于 SIGCOMM 2011 会议论文集 (SIGCOMM '11): 350-361; http://doi.acm.org/10.1145/2018436.2018477.
11. Greenberg, A., Hamilton, J. R., Jain, N., Kandula, S., Kim, C., Lahiri, P., Maltz, D. A., Patel, P., Sengupta, S. 2009. VL2:一种可扩展且灵活的数据中心网络。载于 SIGCOMM 2009 数据通信会议论文集 (SIGCOMM '09): 51-62; http://doi.acm.org/10.1145/1592568.1592576.
12. Greenberg, A., Hamilton, J., Maltz, D. A., Patel, P. 2008. 云的成本:数据中心网络中的研究问题。SIGCOMM 计算机通信评论 39(1):68-73; http://doi.acm.org/10.1145/1496091.1496103.
13. Hoelzle, U., Barroso, L. A. 2009. 数据中心即计算机:仓库级机器设计导论 (第 1 版)。Morgan & Claypool Publishers.
14. Kermani, P., Kleinrock, L. 1976. 虚电路:一种新的计算机通信交换技术,计算机网络 3(4):267-286; http://www.sciencedirect.com/science/article/pii/0376507579900321.
15. Leiserson, C. E. 1985. Fat-trees:用于硬件高效超级计算的通用网络。IEEE Transactions on Computers 34(10):892-901.
16. Mori, T., Uchida, M., Kawahara, R., Pan, J., Goto, S. 2004. 通过周期性采样数据包识别大象流。载于第四届 SIGCOMM 互联网测量会议论文集 (IMC '04): 115-120; http://doi.acm.org/10.1145/1028788.1028803.
17. Mudigonda, J., Yalagandula, P., Mogul, J., Stiekes, B., Pouffary, Y. 2011. NetLord:一种用于虚拟化数据中心的可扩展多租户网络架构。SIGCOMM 计算机通信评论 41(4):62-73; http://doi.acm.org/10.1145/2043164.2018444.
18. Mysore, R. N., Pamboris, A., Farrington, N., Huang, N., Miri, P., Radhakrishnan, S., Subramanya, V., Vahdat, A. 2009. PortLand:一种可扩展的容错二层数据中心网络结构。SIGCOMM 计算机通信评论 39(4):39-50; http://doi.acm.org/10.1145/1594977.1592575.
19. Ni, L. M., McKinley, P. K. 1993. 直接网络中虫洞路由技术综述,Computer 26(2):62-76; http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=191995&isnumber=4947.
20. Ousterhout, J., Agrawal, P. Erickson, D., Kozyrakis, C., Leverich, J., Mazières, D., Mitra, S., Narayanan, A., Parulkar, G., Rosenblum, M., Rumble, S. M., Stratmann, E., Stutsman, R. 2010. RAMClouds 的案例:完全基于 DRAM 的可扩展高性能存储。SIGOPS 操作系统评论 43(4):92-105; http://doi.acm.org/10.1145/1713254.1713276.
21. Protocol buffers; http://code.google.com/apis/protocolbuffers/.
22. Rumble, S. M., Ongaro, D., Stutsman, R., Rosenblum, M., Ousterhout, J. K. 2011. 现在是低延迟的时代了。载于第 13 届 Usenix 操作系统热点主题会议论文集 (HotOS13)。
23. Vahdat, A., Al-Fares, M., Farrington, N., Mysore, R. N., Porter, G., Radhakrishnan, S. 2010. 数据中心中的横向扩展网络。IEEE Micro 30(4):29-41; http://dx.doi.org/10.1109/MM.2010.72.
24. Vahdat, A., Liu, H., Zhao, X., Johnson, C. 2011. 新兴的光学数据中心。发表于光纤通信会议。OSA 技术文摘 (CD); http://www.opticsinfobase.org/abstract.cfm?URI=OFC-2011-OTuH2.
25. Wilson, C., Ballani, H., Karagiannis, T., Rowstron, A. 2011. 宁可晚到也不要不到:在数据中心网络中满足截止日期。载于 SIGCOMM 2011 会议论文集 (SIGCOMM '11): 50-61; http://doi.acm.org/10.1145/2018436.2018443.
喜欢它,讨厌它?请告诉我们
Dennis Abts 是 Google 的技术人员,他在那里参与下一代大型集群的架构和设计。在加入 Google 之前,Abts 曾担任 Cray Inc. 的高级首席工程师和系统架构师。他在互连网络、数据中心网络、缓存一致性协议、高带宽内存系统和超级计算领域拥有众多技术出版物和专利。他获得了明尼苏达大学双城分校的计算机科学博士学位,并且是 和 IEEE 计算机协会的成员。
Bob Felderman 在普林斯顿大学和加州大学洛杉矶分校都工作过,之后在信息科学研究所短暂工作了一段时间。然后,他帮助创立了 Myricom,该公司后来成为集群计算网络技术的领导者。在那里工作七年后,他转到 Packet Design,在那里他将高性能计算理念应用于 IP 和以太网领域。后来,他成为 Precision I/O 的创始人之一。所有这些经验最终使他来到 Google,在那里他担任首席工程师,致力于数据中心网络和通用平台系统架构方面的问题。
© 2012 1542-7730/12/0400 $10.00
最初发表于 Queue vol. 10, no. 5—
在 数字图书馆 中评论这篇文章
David Collier-Brown - 你对带宽一窍不通
当您的员工或客户说他们的互联网性能很差时,带宽可能不是问题。一旦他们的带宽达到 50 到 100 Mbps 范围,问题就是延迟,即 ISP 路由器处理其流量所需的时间。如果您是一家 ISP 并且所有客户都讨厌您,请振作起来。现在这是一个可以解决的问题,这要归功于一群专注的个人,他们找到了这个问题,解决了它,然后在家庭路由器中验证了他们的解决方案。
Geoffrey H. Cooper - 使用 FDO 和不受信任的安装程序模型的设备入职
设备的自动入职是处理正在安装的越来越多的“边缘”和物联网设备的重要技术。设备的入职与大多数设备管理功能不同,因为设备的信任从工厂和供应链转移到目标应用程序。为了通过自动入职加快流程,必须在设备中正式确定供应链中的信任关系,以实现过渡自动化。
Brian Eaton, Jeff Stewart, Jon Tedesco, N. Cihan Tas - 通过关键路径追踪进行分布式延迟分析
低延迟是许多 Google 应用程序(如搜索)的重要特性,延迟分析工具在维持大规模低延迟方面起着关键作用。对于包含功能和数据不断演变的服务的复杂分布式系统,将总体延迟保持在最低水平是一项具有挑战性的任务。在大型、真实世界的分布式系统中,现有的工具(如 RPC 遥测、CPU 性能分析和分布式追踪)对于理解整个系统的子组件很有价值,但在实践中不足以执行端到端的延迟分析。
David Crawshaw - 一切 VPN 焕然一新
VPN(虚拟专用网络)已经有 24 年的历史了。这个概念是为与我们今天所知的截然不同的互联网而创建的。随着互联网的增长和变化,VPN 用户和应用程序也随之发展。VPN 在 2000 年代的互联网中经历了一个尴尬的青春期,与其他广泛流行的抽象概念互动不良。在过去的十年中,互联网再次发生了变化,这个新的互联网为 VPN 提供了新的用途。一种全新的协议 WireGuard 的开发,为构建这些新的 VPN 提供了技术基础。