摘要:

大量服务提供商投资越来越多的更大数据中心来保证基础计算需求以支持他们的服务。因此,研究人员和行业从业者都集中了大量的努力设计网络结构有效互连和管理流量以保证这些数据中心的性能。不幸的是,数据中心运营商通常对于分享他们的应用程序的实际需求有所保留,使得评估任何特定设计的实用性具有挑战性。

此外,大规模负载信息的文献有限,无论是好是坏,到目前为止由单个数据中心运营商提供的用例并不普遍。在本文中,我们报告的网络流量中观察到一些Facebook的数据中心。Facebook运行Hadoop等传统数据中心服务,其核心Web服务和支持缓存基础结构表现出的行为与那些在文献中报道的形成了对照。我们报告对比Facebook的数据中心的网络流量位置、稳定性和可预测性,评论他们对网络结构,流量管理,交换机设计的影响。

介绍:

我们发现文献中流量的研究并不能完全代表Facebook的需求。这种情况尤其严重当考虑新型网络结构、流量管理和交换机设计。

比如,数据中心连接的拓扑结构的最好选择取决于主机间的联系方式。然而,因为缺乏具体的数据,研究者经常根据最坏的情况设计一个all-to-all的流量模型,即是主机之间的联系都是依照相同的频率和强度,而这并不值得。如果需求可以被预计或者保持稳定在合理的时间段内,不均匀的结构是可行的,即连接数据中心的不同部分用不同的方式,通过混合设计包括光纤和无线连接。

而另外一种提升性能的方式是提升交换机本身的性能,特别是,有些人提出简单修改像减少缓冲,端口数,交换机各层结构的复杂性,也有人提出,取代传统交换用circuit或混合设计,利用流量需求的局部性(locality),持久性和可预测性。更极端的是,基于主机的解决方案提倡直接连接主机。显然,无论如何,这些方案的价值取决于它们的负载。

在之间的研究里,一些建议不能被很好的评估因为缺乏大规模数据中心。几乎所有的先前的研究大规模数据中心的研究考虑的是微软数据中心。而Facebook数据中心和微软的有很多相似的地方,比如避免虚拟机,它们也有一些不同。而一些关键的不同,会导致不同的结论,我们描述这些差异并解释背后的原因。

我们的研究发现对重要结构的影响包括:

流量既不是局部框架(rack-local)也不是全局(all-to-all)的;局域性取决于服务而不是总是稳定的无论时间区间的单位是秒还是天。高效的结构可能受益于变量程度的超额认购和框架内的带宽小于通常部署。

许多流存在周期长但不是很大。负载均衡有效地分配流量;流量需求相当稳定甚至超过次秒级时间间隔。因此,大流量对象并不比中值流大很多,大流量对象集合改变的很快。突如其来的大流量对象在较长时间是频繁的而不是流量很大,可能混淆许多流量管理方法。

包是小(non-Hadoop流量的平均长度小于200字节),不显示on/off到来的行为(即是连续的到达)。服务器与100台主机和机架并发连接(在5ms间隔),但大多数的流量往往是注定(很少)10台机架。

文章的第二节主要讲以前的研究数据中心的流量的主要发现。主要体现在三个方面:第一,流量是局部框架的(rack-local),即80%的服务器的流量在框架内。第二,流量是突发的而且不稳定的在各种各样的时间尺度内。最后,包的的大小有两种,要么最大(MTU),要么很小(TCP ACK segment)。

第三节详细描绘了Facebook的数据中心,包括它们的物理结构(Facebook’s 4-post cluster design)、支持的服务(通过HTTP请求是如何服务)和收集数据的方法(包括Fbflow和Port mirroring)。

数据中心连接的设计,规模,甚至技术的合适程度在很大程度上依赖于其流量的需求。在第四节中,文章量化的流量的强度,局域性,和稳定性在Facebook数据中心的三个不同类型的集群(即Hadoop, Frontend machines serving Web requests和 Cache)中。

之前的研究表明,数据中心流量的稳定性取决于观测的时间尺度。在第5节中,我们分析Facebook的流量在合适的时间尺度下,以期了解各种流量管理和负载平衡方法可能会在这种情况下的适用性。

第六节主要描绘了top-of-rack交换机设计的各个方面。特别是,我们考虑包的大小和到达过程,以及到任何特定的终端主机并发的目的地的数量。此外,我们测试短时间内突发性的影响及其它对交换缓冲的影响。

总结:

Facebook的数据中心网络支持各种不同的服务,表现出不同的流量模式。我们发现几个服务与文献中的大幅偏离。不同的应用程序,结合Facebook的数据中心网络规模(成百上千的节点)和速度(10-gbps边缘链接)导致工作负载和以前公布的数据集的多种方式做对比。因为文章篇幅的限制,我们不能提供一个详尽的解释,我们描述可能对拓扑结构,流量管理,top-of-rack交换机设计的影响。

我们的方法强加一些限制在这项研究的范围内。使用终端主机捕获和时间戳数据包介绍了基于调度变化时间戳精度。此外,我们一次只能从几个主机捕获流量。同时,这些约束阻止我们评估影响像incast或微爆发,指出作为贡献者的可怜的应用程序的性能。此外,每个主机包转储必然是anecdotal和特别的,依赖同一框架内一个未使用的主机的存在作为目标。当Fbflow部署在数据中心时,它所提供的庞大的测量数据提出了另一个挑战,即数据处理和数据保存。我们因此认为有效的网络监视和分析是一个持续的和不断发展的问题。

Inside the Social Network’s (Datacenter) Network的更多相关文章

  1. openstack里面的Provider network 和 Tenant network 的区别

    openstack里面的Provider network 和 Tenant network 的区别 openstack里面的网络相对复杂.经常有人对几个网络概念搞混淆,这里基本说明下 Openstac ...

  2. 【解决】Failed to restart network.service: Unit network.service not found.

    问题:使用systemctl restart network 或 service network restart 命令重启网卡失败. 分析:原因其实也很简单,命令用错了,造成了找不到相应的网卡服务. ...

  3. android network develop(2)----network status check

    Check & Get network status Normally, there will be two type with phone network: wifi & mobil ...

  4. What is the difference between provider network and self-service network in OpenStack?

    "self-service networking" allows users to create their own virtual networks, subnets, rout ...

  5. 机器学习模型数据结构:logistic regression, neural network, convolutional neural network

    可以用两种方式来看神经网络,一种就是层的集合,也就是层组成的数组,另一种是神经元的集合,也就是神经元组成的Graph. 基于神经元的实现方式中,需要定义两个类 Neuron, Weight Neuro ...

  6. 论文阅读:An End-to-End Network for Generating Social Relationship Graphs

    论文链接:https://arxiv.org/abs/1903.09784v1 Abstract 社交关系智能代理在人工智能领域中越来越引人关注.为此,我们需要一个可以在不同社会关系上下文中理解社交关 ...

  7. (转)内置系统账户:Local system/Network service/Local Service 区别

    最近会转载一些 MSSQL 基础相关的文章. 参考文献: http://www.cnblogs.com/xianspace/archive/2009/04/05/1429835.html 前言 今天在 ...

  8. 【Network】Calico, Flannel, Weave and Docker Overlay Network 各种网络模型之间的区别

    From the previous posts, I have analysed 4 different Docker multi-host network solutions - Calico, F ...

  9. 深入理解openstack网络架构(4)-----连接到public network

    原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstack_network_architecture3 译文转自:http://b ...

随机推荐

  1. PyQt5--ShowTips

    # -*- coding:utf-8 -*- ''' Created on Sep 13, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...

  2. 单一事件中心管理组件通信( vuex )

    有时候两个组件也需要通信(非父子关系).在简单的场景下,可以使用一个空的 Vue 实例作为中央事件总线: 补充$emit ,$on的讲解 代码: <!DOCTYPE html> <h ...

  3. 协程运行原理猜测: async/await

    1.根据await调用链寻找最终的生产者或服务提供者: 2.请求服务: 3.进行执行环境切换,跳出顶层函数(第一个无await修饰的函数),执行后面的语句: 4.服务完成,将服务数据复制给最底层的aw ...

  4. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  5. Hibernate Validator注解大全

    hibernate Validator 是 Bean Validation 的参考实现 .Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现, ...

  6. WorldWind源码剖析系列:四叉树瓦片类QuadTile

    四叉树瓦片类QuadTile提供了对影像和地形数据的四叉树访问模型.该类的类图如下. 四叉树瓦片类QuadTile提供的主要字段.属性和方法简要描述如下: public QuadTileSet Qua ...

  7. lvs 最常用算法 + tcpdump vrrp 抓包

    1.SH: source hash, 源地址散列. 将请求的目标IP地址换成请求的源IP地址:实现session保持的机制:将来自于同一个IP的请求始终调度至同一RS: 源地址散列调度算法正好与目标地 ...

  8. C 语言的关键字static 和C++ 的关键字static 有什么区别

    C 中static 用来修饰局部静态变量和外部静态变量.函数. C++中除了上述功能外,还用来定义类的成员变量和函数.即静态成员和静态成员函数. 注意:编程时 static的记忆性,和全局性的特点可以 ...

  9. 女神画廊App (Swift1.2)

    这个App的是storyboard+code的结合,主要的重点是: 1.segue传递图片值. 2.Autolayout中可以使用右下角三角符号使用Add Missing Constraints进行大 ...

  10. Windows安装mapnik

    windows安装mapnik,首先去官网下载windows压缩包:http://mapnik.org/,解压位置C:\mapnik-v2.2.0 然后下载安装python2.7,安装位置  C:\P ...