facebook网络架构学习总结(F4)

2023-11-15

1 简介

1.1 大规模快速演进

Facebook 的生产网络本身就是一个大型分布式系统,针对不同任务划分成不同层次并采 用不同的技术(a large distributed system with specialized tiers and technologies):

  • 边缘(edge)
  • 骨干(backbone)
  • 数据中心(data centers)

我们基础设施的核心设计哲学是具备下面两种能力:

  • 快速演进(move fast)
  • 支撑快速增长(support rapid growth)

同时还需要保证IDC的基础设施架构需要足够简单,以方便工程师进行运维。

1.2 集群方式的限制

我们以前的数据中心网络是基于集群构建的(built using clusters)。

  • 一个集群是一个大型部署单元(a large unit of deployment)
  • 包括几百个机柜及相应的置顶交换机(TOR switches)
  • 通过一组大型、多端口集群交换机(large, high-radix cluster switches)对 TOR 做汇聚

这种集群方式的缺点是很明显的,主要是:

  1. 集群大小受限于集群交换机的端口密度(port density of the cluster switch)。要构建最大的集群,我们就需要最大的网络设备,而这些设备只能从有限 几家供应商那里买到;
  2. 一个盒子上有这么多端口,与我们“提供尽可能的最高带宽基础设施”目标有 冲突。当接口速度演进到下一个级别时(例如 10G 到 25G),支持新速度而又如 此高密度的盒子并不能很快出来;
  3. 数据中心的大面积区域都依赖少数几个盒子,那硬件和软 件故障将导致严重的后果;
  4. 更难的是,如何在集群大小(cluster size)、机柜带宽(rack bandwidth)和 出集群带宽(bandwidth out of the cluster)之间维护一个最优的长期平衡( optimal long-term balance);

       传统上,集群间的连接是超售的(oversubscribed,与收敛比是类似的概念),集群 内的带宽要比集群间的带宽大得多。这假设并要求大部分应用内通信( intra-application communications)都要发生在集群内部。但我们的应用是分布式扩展的 ,不应受限于这种边界。我们的数据中心一般都会有很多集群,不仅集群内的机器到机器流 量在增长,跨集群的机器到机器流量也在不断增长。将更多端口用于集群互联能缓解这 个问题。但流量的快速和动态增长,使得这种平衡流量的方式永无尽头。

2 fabric设计

      在设计下一代数据中心网络时,我们步子迈地比较大,将整个数据中心建筑(data center building)设计为单个高性能网络,而非众多集群组成的层级化超售系统( hierarchically oversubscribed system of clusters)。 我们还希望每次扩展容量时,在不淘汰或对存量基础设施进行定制的前提下,能有一个清晰 、简单的快速网络部署(rapid network deployment)和性能扩展(performance scalability)路径。

       为实现这个目标,我们采取了一种分散(disaggregated)的方式:弃用大型设备和集 群,而是将网络分割为很多小型、无差别的基本单元 —— server pods(服务器独立交 付单元)—— 并在数据中心的所有 POD 之间创建统一的高性能连接。

2.1 POD概念

    一个POD的网络结构图如下:

                            

  • POD 其实没有非常特别的地方 —— 它就像一个三层的微集群(layer3 micro-cluster);
  • POD 并不是由任何硬件特性规定的;它只是我们的一个标准“网络单元”(unit of network);
  • 每个 POD 有 4 个我们称之为 fabric 交换机的设备,有需要还可以扩展;
  • 每个 TOR 当前有 4x40G 上行链路,为 10G 接入的服务器机柜提供 160G 的总上 行带宽;(现在采用的是25/100G组网)

     相比之前clos传统网络架构的pod,这种小pod区别在于:

  1. 一个网络单元的规模很小,可以适应于不同机房模块的规模大小;
  2. 能匹配各数据中心的多种室内规划, 并且只需基本的中型交换机来汇聚 TOR;
  3. fabric 交换机更小的端口密度使得它们的内部架构非常简单、模块化和健壮(主要是表现单台设备的故障相比高密度的框式设备影响更小), 并且这种设备能够很容易从多家厂商采购;
  4. pod在设计上就定为无阻塞网络,pod的fabric交换机上下行收敛比1:1;

2.2 网络架构分析

     为实现 building 范围的连接(building-wide connectivity),采用如下方式;

  1. 创建了 4 个独立的 spine 交换机平面(“planes” of spine switches),每个平 面最多支持 48 台独立设备
  2. 每个 POD 内的每台 fabric 交换机,会连接到其所在 spine 平面内的每台 spine 交换机。
  3. POD 和 spine 平面提供了一个模块化的网络拓扑,能够提供几十万台 10G 接入交换机, 以及 PB 级跨 POD 带宽(bisection bandwidth),使得数据中心 building 实现 了无超售的机柜到机柜性能(non-oversubscribed rack-to-rack performance)。

    网络架构如下所示:

按照这种多平面进行划分的思路,构建如下架构:

按途中架构进行规划设计:

  1. s1交换机每个小pod由4台交换机组成,上下行收敛比为1:1。每个小pod下所能容纳的TOR数取决于s1的设备选型。若是用96口100G,一个小pod有48台TOR(不考虑堆叠/去堆叠:2304台服务器容量。假设每个机柜放置13台服务器,单pod下机柜数目177个左右);若是用128口100G,一个小pod下有64台TOR(不考虑去堆叠/堆叠,3072台服务器容量。假设每个机柜放置13台服务器,单pod下机柜数目256个左右);
  2. TOR交换机层面,收敛比为1200:400=3:1;
  3. s2交换机对应4个平面,每个平面的交换机数量最多可以到48台。采用128口100G交换机,上行接S3每台设备都是3条100G链路,则S2与S3间的带宽能达到19.2T(按一个one-building pod两万多台server的规模,最多能达到32T,也就是说该带宽是给该大POD到其他IDC、其他大POD的流量带宽)。下行最多可容纳9个server pod,每个pod能容纳2304台服务器,总共服务器容量为20736台server;
  4. s3交换机一般采用大框子的设备(12516/12816),其实在F4标准讲解中一般用中型号的交换机既可以满足,主要用来做One-building pod之间的互联互通(型号越高,横向扩展能力越强,若是采用大框子起码可以容纳30~50万台左右服务器;若是采用128口100G的盒式设备,4台组edge-pod则可以容纳20万台服务器左右,8组edge-pod可以容纳40万台);
  5. DCI设备主要是城域网的设备,在F4讲解的架构中S3是edge pod(边缘节点),但如果要dci互通,个人理解最好再加一层DCI交换机作为DCN的最外层边界,用来进行城域网间的互联;

2.3 网络建设落地

        对于如此庞大的网络架构,在网络设备位置的摆放与布线方面,也需要进行设计,尽可能保持设备间线的利用率最高。减小线缆长度,便于快速部署,以下是f4架构中设备的位置关系摆放。从顶向下看,edge-pod位于各spine平面的垂直上层,与各个building互联,各spine平面位于机房中心,两边是各pod的fabric交换机,再往外是TOR。层次化分明,通过这种方式来达到线路的最高效利用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

facebook网络架构学习总结(F4) 的相关文章

  • (简单成功版本)Mysql配置my.ini文件

    目录 一 背景 二 删除原有的mysql服务 三 初始化mysql 四 自行添加my ini文件 五 新建mysql服务 六 启动mysql服务 七 设置数据库密码 7 1 登录mysql数据库 7 2 修改root用户密码 八 配置my
  • Xcode编译报错不提示

    M1 Xcode Version 12 5 1 12E507 编译项目之后提示 Build Failed 但是并不报 小红点 不指示是哪个文件报错 不知道去哪里找报错文件了 Xocode 工具栏上有这个按钮 选择之后点击某次编译 如果有错误
  • DOTA目标检测数据集

    Dota开源目标检测数据集 DOTA v1 5包含16个类别中的40万个带注释的对象实例 这是DOTA v1 0的更新版本 它们都使用相同的航拍图像 但是DOTA v1 5修改并更新了对象的注释 其中许多在DOTA v1 0中丢失的10像素
  • 拷贝构造函数的调用方式以及相关问题【最清晰易懂】

    这几天一直有一个问题在我大脑里挥之不去 之前面试实习的时候也被问过 但是回答的不好 面试官问 你知道的构造函数有哪些 我说 无参构造函数 有参构造函数 拷贝构造函数 移动构造函数 关于一些函数的说明 面试官说 其实拷贝构造函数 移动构造函数
  • java给字符串数组追加字符串_java往字符串数组追加新数据

    public class Test public static void main String args 原字符串数组 String arr 原字符串数据1 原字符串数据2 执行数据添加 arr insert arr 需要追加的字符串数据

随机推荐

  • win11安装mysql5.7带安装包与常见问题如重装,初次登录不上,跳不了密码等

    目录 1下载 2安装 注意1 你的新建只有文件夹而且需要权限 注意2报错The service already existsThe current server installed 3初次登录与密码 注意3密码是只能输入进去的 4设置密码与
  • OpenCV总结3——图像拼接Stitching

    之前折腾过一段时间配准发现自己写的一点都不准 最近需要进行图像的拼接 偶然的机会查到了opencv原来有拼接的库 发现opencv处理配准之外还做了许多的操作 就这个机会查找了相关的资料 同时也研究了以下他的源代码 做一个简单的总结 Sti
  • css实现表单验证

    在我们的日常业务中 表单验证是个很常见设计需求 像一些登录注册框 问卷调查也都需要用到表单验证 一般我们的实现思路都是JS监听input框的输入内容 判断用户输入内容 从而以此来决定下一步的操作
  • 13.6 Production State Awareness (PSA)

    1 Introduction UFS设备可以利用有关其生产状态的知识 相应地调整内部操作 例如 在设备焊接之前加载到存储设备中的内容可能被破坏 其概率高于regular模式 UFS设备可以在设备焊接前使用 Special 内部操作加载内容
  • qt界面论坛

    http www cnblogs com appsucc archive 2012 03 14 2395657 html
  • JAVA核心知识点--Maven引入org.apache.tools.zip

    可以看出 org apache tools zip 是 ant jar里面的 所以要引入org apache tools zip 直接maven引入ant即可
  • 基于SSM框架的家教中介平台系统的设计与实现(源码免费获取)

    技术架构 Java语言 MySQL数据库 SSM框架 功能简介 1 系统登录 系统登录成为了管理员访问系统的路口 设计了系统登录界面 包括管理员名 密码和验证码 然后对登录进来的管理员判断身份信息 判断其为管理员 还是普通用户 2 管理员管
  • logback 对特殊日志进行过滤

    工作中需要对 logback 的日志进行定制化过滤 此时一般有两种方法 logger 在 logback spring xml 中添加如下配置 可以关闭对应类的日志
  • Intellij安装scala插件详解

    参考博客 1 http wwwlouxuemingcom blog 163 com blog static 20974782201321953144457 2 http blog csdn net stark summer article
  • cvm云服务器的,cvm云服务器如何登录

    cvm 登录到 本地为 Windows 计算机 1 在本地 Windows 机器上 单击开始菜单 运行 输入 mstsc 命令 即可打开远程桌面连接对话框 2 在输入框输入 Windows 服务器的公网 IP 登录 云服务器控制台 可查看云
  • 牛客剑指offer之【JZ12 矩阵中的路径】

    哈喽 这次真的是好久不见呀 我回来啦 接下来的日子我会不断更新牛客上的剑指offer题解 为什么这么做呢 是因为博主刷题总是刷了忘忘了刷 一样的题目换种形式就要做好久 说到底还是对知识点的理解不够透彻 加之算法对一个即将找工作的大学生来说更
  • 【Pytorch with fastai】第 15 章 :深入探讨应用程序架构

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 计算机网络参考模型(OSI讲解)

    计算机网络参考模型 文章目录 计算机网络参考模型 一 什么是七层网络模型 二 每一层的功能与特点 三 osi模型和TCP IP模型的区别 四 数据封装和解封装的过程 1 封装与解封装过程 2 设备与层之间的关系 一 什么是七层网络模型 七层
  • 保护模式的分段

    一 分段的背景 在8086处理器诞生之前 内存寻址方式就是直接访问物理地址 8086处理器为了寻址1M的内存空间 把地址总线扩展到了20位 但是 一个尴尬的问题出现了 ALU的宽度只有16位 也就是说 ALU不能计算20位的地址 为了解决这
  • Less-11-12 【‘、“)】

    目录 第十一 十二关 1 在账号密码输入admin 查看成功效果 2 输入错误的账号密码 查看错误效果 3 找注入点 我们尝试在账户的输入框中加单引号 发现出现报错 4 加注释 查看页面是否恢复正常 可以看到页面成功执行了 证明当前网址存在
  • vscode搭建linux内核开发环境

    vscode在linux下搭建内核驱动开发环境 一 前言 Souce insight是一个阅读 开发linux内核驱动模块的好工具 但是Source insight是收费的软件 而且没有原生linux版本 要是想在纯linux环境下进行li
  • Unity3D RPG实现 3 —— 对话、任务系统

    目录 成果展示 对话系统 对话的存储数据结构 对话的UI面板设置 创建对话 任务的 NPC 实现对话控制器显示主对话窗口的内容 创建对话的选项内容 任务系统 创建任务 UI 面板 任务的存储数据结构 任务管理器与接受任务 任务控制相关脚本
  • Linux内核网络:实现与理论--介绍

    这本书主要涉及了Linux内核网络协议栈的实现和它背后的理论 你会在后续章节发现更深层次和更细节地针对网络子系统的分析和它的结构 我不会讨论和网络没有直接关系的话题内容 比如你在读内核里网络代码的时候会遇到锁 同步 SMP 原子操作等等 关
  • 2023年03月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

    C C 编程 1 8级 全部真题 点这里 第1题 数字字符求和 请编写一个程序实现以下功能 从一个字符串中 提取出所有的数字字符即0 9 并作为数求和 时间限制 1000 内存限制 65536 输入 一行字符串 长度不超过100 字符串中不
  • facebook网络架构学习总结(F4)

    1 简介 1 1 大规模快速演进 Facebook 的生产网络本身就是一个大型分布式系统 针对不同任务划分成不同层次并采 用不同的技术 a large distributed system with specialized tiers an