这个系列总共有三篇,分别在:

肖宏辉:GCP 网络系统Andromeda --- 概述篇

肖宏辉:GCP 网络系统Andromeda --- 控制面

肖宏辉:GCP 网络系统Andromeda --- 数据面

最近看了Google在2018年的一篇NSDI文章,介绍他们的数据中心SDN方案Andromeda,原文在[1]。最近计划用三篇,分别从概述,控制面和数据面,再结合一些自己的理解,介绍一下这个系统。这是第一篇:概述。

GCP(Google Cloud Platform)眼中虚拟网络

云计算的兴起给网络技术带来了新的机遇和挑战。对于Cloud中的常规三大服务,计算,存储,网络。对应网络部分,需要在具备高性能大规模能力的同时,也支持一系列的功能,例如LB,FW,VPN,QoS,Dos protection,隔离,NAT等等。更具体的来看,云环境中的虚拟网络,应该具备以下能力:

  • 作为最基本的需求,需要为独立的用户提供隔离的虚拟网络。每个虚拟网络中的虚拟机运行在独立的私有IP网络中。对于这个虚拟网络,其中的虚拟机之间应该能相互通信;虚拟机与云环境中的公共服务(DNS,软件源等)能通信;虚拟机与外部第三方服务商能通信;虚拟机与互联网能通信。所有这些通信要受用户策略的控制,同时不同的用户可以使用不同的策略,达到不同的控制效果。另外,理想情况下,虚拟网络应该提供与underlay物理网相同的吞吐量和时延。
  • 除了最基本的连通性,还需要支持持续的功能演进。随着时间的推移,一些新的功能会不停的添加进来,例如计费,DoS防护,性能监控,防火墙等,甚至架构也可能面临重大的调整,例如Andromeda就经历过从早期的OS kernel datapath迁移到了现在的OS kernel bypass的datapath。持续的功能演进不是难点,难点是演进的过程中,要使得虚拟机不受到影响。
  • 云计算的一个好处就是相比普通的部署具备了更高的可用性,因为一整套的软件可控系统,可以很方便的provision,scale,migrate服务。所以虚拟网络的可用性,稳定性及其重要,在设计上也要小心考虑,尽量缩小系统的出错域(错误的影响范围)
  • 为了满足上面两点,虚拟机的Live-Migration(热迁移)成为了必要条件。为了支持Live-Migration,虚拟网络需要确保迁移过程中packet仍然能传输,并且尽量较少网络性能下降的时间(迁移过程中网络性能下降在所难免,但是持续时间应尽量减少)
  • GCP(Google Cloud Platform)成长的很快,表现在两个维度:GCP内虚拟网络的个数;每个虚拟网络中的虚机的个数,因此,网络控制面的性能变得非常重要。超大的云平台中,虚拟网络控制面主要有三个挑战:首先转发表更大(单个虚拟网络中虚机更多);转发表需要被发布的范围更广(虚拟网分布在更多的主机上);变化的频率更高

虚拟网络和SDN的研究和内容已经很多,比如高速的dataplane,分布式控制平面,各种虚拟网络功能,但是似乎并没有对于一整套端到端可用系统的研究。Andromeda,作为GCP的网络虚拟化系统,就是这么一个端到端的系统。

Andromeda架构

GCP有一套完整的管理系统,可以配置存储,计算,网络,权限等,而Andromeda是作为GCP管理系统中的网络部分存在。另一方面,GCP由多个cluster组成,一个cluster就是一批位置相近的物理服务器,它们具有相同的物理网络连通性,同时也有相同的物理网络错误域。Andromeda在每个cluster中都有一套独立的程序,这个在后面介绍。

本质上来说,Andromeda是一个SDN系统。所以,与其他的SDN系统一样,它包含了控制面和数据面。Andromeda的核心设计思想也很简单通俗:就是分层,包括了分层的控制平面和分层的数据平面。

控制面

Andromeda的控制面可以支持超过10W VM的虚拟网络,变更生效时间的中位数在184ms。并且操作一个用户虚拟网络,不会对其他虚拟网络造成影响。有关控制面的实现细节在下一篇详细介绍。

数据面

Andromeda的数据面由多层的datapath组成,根据所需要的功能和性能,网络流量被分配到其中一条路径。

  • Host Fast Path:顾名思义,这个datapath运行在虚拟机所在的主机上。这是所有虚机packet看到的第一个datapath。它以牺牲灵活性为前提,提供了高性能的转发,目前可以实现300ns/packet的转发速度。为了达到这个数字,Host Fast Path被设计的只能简单的处理有限种类的packets。其他的packets被送到其他的datapath来处理。
  • Host Coprocessor path:这个datapath也运行在虚机所在的主机上。Host Fast Path处理不了的packet被送到了Coprocessor path。这个datapath用来处理对CPU消耗较高,且对时延无要求的网络流量。同时也被用来实现网络功能,例如Stateful 防火墙,LB等。所有功能性的东西被放到Coprocessor path,这样可以让Fast path专心做高性能转发。
  • Hoverboard datapath。Hoverboard是专门的gateway节点,这个datapath就是运行在这些节点上。理论上Coprocessor + Fast path应该处理所有的网络流量,但是为了提升控制面的性能和规模,不是所有的转发信息都会下发到主机。大部分的idle和long-tail流量,被送到Hoverboard节点,被Hoverboard datapath转发。

此外,Andromeda采用的是高性能、基于软件的底层方案,而不是类似于SR-IOV这种基于硬件的方案。使用硬件方案,可以很容易的得到与underlay物理网络一样的性能。但是相比之下,软件方案更加灵活,能支持更快速的功能迭代,能更容易的支持Live-Migration,因为SR-IOV需要考虑迁移前后不同的物理网卡的配置问题。除此之外,SR-IOV因为依赖硬件网络,会受到硬件表项的限制。对于一些网络功能,可能会引入额外的专用设备,进而增加网络转发的overhead。

最后,一个Cluster中,Andromeda所有的组件如下图所示,其中有一些已经提到过,有一些还没有提到,我们会在接下来的两篇具体的分析每一个组件。

[1] https://www.usenix.org/system/files/conference/nsdi18/nsdi18-dalton.pdf

部署到gcp_GCP 网络系统Andromeda --- 概述篇相关推荐

  1. 【区块链 | Compound】1.剖析DeFi借贷产品之Compound:概述篇

    前言 我前段时间一直在研究 Compound,走过一点弯路,也趟过一些坑,最终把它啃了下来.最近有些小伙伴也在咨询我相关的一些问题,那我本着乐善好施的优良传统,决定将我所学的知识整理成文字分享出来.我 ...

  2. 浅谈在centos中使用docker部署war包项目(jsp篇)

    ​ 在centos中使用docker部署war包项目(jsp篇) 一.环境的准备 二.Docker优点 1.简化程序 2.避免选择恐惧症 3.节省开支 三.Docker结构 1.Client( Doc ...

  3. 规则引擎Ilog Jrules开发基础教程【连载1】-- 概述篇

    概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来.规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入.解释业务规则.并根据业务规则做出相应的决策. 通 ...

  4. Cobbler部署指南之Cobbler安装操作系统篇

    ##################################################### ##如有转载,请务必保留本文链接及版权信息 ##欢迎广大运维同仁一起交流linux/unix ...

  5. 【java】四步法:spring boot项目部署在CentOS 8(后端篇)

    四步法:spring boot项目部署在CentOS 8(后端篇) 一.使用IDEA打包项目为jar包(构建) 1. IDEA版本 2. maven版本 3. pom.xml 设置 4. 构建jar包 ...

  6. nginx下部署vue项目概览 - (资源篇)

    相关博客: nginx下部署vue项目概览 这里使用的是百度云的服务器,CentOS7系统的 linux服务器用centos还是ubuntu系统_Linux nginx服务器搭建以及配置 nginx部 ...

  7. 零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)—项目概述篇(一)

    零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)-项目概述篇(一) 一.项目开发总体框架 二.项目开发流程 三.项目技术选型

  8. App开发智能车载应用之概述篇

    App开发智能车载应用之概述篇 Apple CarPlay Vs Android Auto 苹果和谷歌都先后公布了自己的智能车载解决方案Apple CarPlay和Android Auto. 两家采用 ...

  9. TensorRt推理部署优化方案及流程概述

    TensorRt推理部署优化方案及流程概述 1.参考资料 先放上参考资料,以表感谢. TensorRT-Installation-Guide.pdf TensorRT-Developer-Guide. ...

最新文章

  1. 汇编语言带C循环,如何将此C for循环转换为汇编语言?
  2. oracle存储过程生成单号,Oracle生成单据编号存储过程的实例代码
  3. 关于hive中Map join 时大表left join小表的问题
  4. 计算机程序设计vb课后题,《VB程序设计》课后题答案
  5. 【微软官方文档】Windows终端(Windows Terminal)
  6. 【分享-windows文件快速搜索神器】Everything 免费、快速搜索文件/文件夹
  7. 如何使用strace+pstack利器分析程序性能
  8. nlp中bpe_缓冲池扩展(BPE)–内存中OLTP:内存挑战
  9. 20+免费精美响应式Html5 网站模板01(含源码)
  10. PB的特点及Powerscript的语言基础
  11. 关于幼儿教师音乐素养对幼儿成长影响力的研究的论文怎么写呀
  12. 官方正式发布 Java 16
  13. Informix 12.10版本新特性-2
  14. 社会保障计算机考试证书查询,在电脑上如何查询职业资格证书?
  15. 编译与调试以及makefile
  16. VS Code工作区用法
  17. A-Star算法探索和实现(一)
  18. 2023 首发 最新聚支付系统源码 无后门 支持易支付和码支付
  19. 【python】解决网页gb2312编码中文乱码问题
  20. 基于matlab的铣床运动,利用Matlab/Simulink仿真数控机床的动态轨迹误差

热门文章

  1. 一个三流学校程序员的奋斗历程
  2. YUV / RGB 格式及快速转换
  3. 集合:按元素的中文属性排序
  4. Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法
  5. 写给大数据开发初学者的话5
  6. sql:无法解决 equal to 操作中 Chinese_PRC_CI_AS 和 Chinese_Taiwan_Stroke_CI_AS 之间的排序规则冲突。...
  7. android Instrumentation 转载
  8. 10.11 安装pod
  9. 你知道自己执行的是哪个jre吗?
  10. 2017ACM/ICPC亚洲区沈阳站 C Hdu-6219 Empty Convex Polygons 计算几何 最大空凸包