Orion:谷歌的新一代SDN控制器

eea5bae1e89f6f4c1b3a20fd4a7ed469.gif

作者 | 魏煌松

来源 | 鲜枣课堂

时至今日,谷歌在2015年公布的成果,“利用SDN将广域网带宽利用率提升至接近100%”,仍然是SDN的一个标杆案列,也是难以逾越的巅峰。但事实上,当时使用的SDN控制器Onix,早已退出了历史舞台。

在今年的NSDI会议上,谷歌发表论文,详细阐述了其第二代SDN控制器Orion的设计原则、整体架构和在生产网络中的应用情况。

尽管是最近才发表的论文,但Orion已经在现网中运行了四年,可谓是“久经考验”。

今天这篇文章会分为几个部分,包括介绍谷歌网络的整体情况,回顾第一代SDN控制器Onix,简要阐述谷歌新一代SDN控制器Orion的情况和几个重要的设计考虑。

谷歌网络情况简介

4633052251293d97101b177efb4e698e.png

如图所示,谷歌的网络主要分成三大部分,B4、B2(也叫Espresso)以及Jupiter。

其中B4是谷歌的数据中心互联网络,连接了谷歌全球的数据中心。B2是谷歌面向互联网的网络,负责将用户业务从全球各地的POP点引入到数据中心。而Jupiter,则是谷歌数据中心的内部网络。

这里再补充谈一下谷歌网络承载的业务流量属性。

直到现在,很多运营商专家都表示谷歌的流量基本是自有业务,因此可控性好,更适合SDN。而运营商网络的流量情况,则过于复杂。

事实上,随着谷歌产品线的扩展,尤其是云服务业务的增长,谷歌网络内的流量不可预测性也在不断提升。很大一部分流量,已经不再是自有业务。

谷歌的第一代SDN

谷歌的第一代SDN控制器Onix,总的来说有这么几点值得注意:


一是Onix本身是合作研发而非自研,二是Onix的引入是一个循序渐进的过程,三是Onix是一个单体(molonithic)程序。

Onix的研发是Nicara、NEC和谷歌合作进行的,甚至Nicara的专家还扮演了非常重要的角色。但到了Orion,从论文上看,作者已经是清一色的谷歌员工。可以说谷歌的网络团队在这几年中是在飞速成长的。

Onix投产的过程,也是循序渐进的,大概花了三年完成切换。

第一阶段是2010年开始引入openflow交换机,但新交换机对外的表现和传统交换机一样,只是网络协议运算在controller而不是设备本身完成。第二阶段是一个漫长的流量切换过程。直到2012年开始,流量才完全切换到openflow网络。

Onix作为一个单体程序,其很多固有局限性基本无法解决,这也是Orion出现的理由。

单体程序在稳定性和开发速度上,都存在很大的劣势。以谷歌的实力发布一个新版本都需要5个月,这个节奏和业务发展是明显不相称的。

微服务版本的Orion上线后,两周就可以发布一个版本,并且还有望提升到一周。分布式程序稳定性大增,控制器完全崩溃的几率变得更小。

Orion的整体情况

ffba0d1f4daa5b74a8dabf863cb91efa.png

Orion本身的工作模式,一个词总结,就是调和(reconciliation)

一方面,Orion接收网络管理方(人或者上层应用)的意图并层层翻译。另一方面,不断地感知当前网络的实际运行状态,然后将网络的运行状态逐渐调整向管理方意图靠拢。

从设计的根本原理上看,和Kubernetes的原理几乎一致。

59d4b8c35055d465370c3ffcc7ce7744.png

而从架构上看,Orion则是一个典型的微服务应用。

最上层是各种具体的网络应用,如负责域内算路的Routing Engine以及负责BGP广播的Raven等。

中间的核心层主要实现了控制器的通用功能,包括一个集中的NIB数据库(兼具消息队列功能)和负责处理配置、拓扑及流表生成的管理器,以及用于和路由器通信的OFE。

各个模块之间都是微服务,主要通过NIB承载的消息进行交互,这也很好的保障了故障隔离性及开发的可协调性。

值得注意的是,Orion控制的所有路由器均只有openflow协议栈,没有传统协议栈,包括BGP信息的广播和接收,都是在控制器上完成,可以说彻底实现了SDN化。

当然,出于安全性的考虑,Orion并不是一点集中的控制器,而是分域部署的。这在牺牲一些全局性带来的优势(如算路更优,流表更新更快等)的同时,也最大程度确保了网络的健壮性。

Orion的设计考虑

作为面向超大规模生产网络的控制器,意图驱动(intent-based)是必然选择。

谷歌表示宏观的意图远比细锁的过程更稳定,更不容易出错。因此Orion本身就被设计为一个逐层翻译和细化意图的控制器,最终会将管理人员的意图翻译为交换机可识别的openflow原语(primitives)。

Orion处理故障的原则也非常值得学习:对于小问题积极处理,对于大问题则直接躺平(不干涉数据面状态)。

4cc2895e163f9d0f2940c4ae6c571960.png

如图所示,一个数据流自顶向下的三层路由器网络中,如果感知到2个路由器损坏,则Orion会牵引流量绕开损坏的路由器,这就是fail-closed。

而如果感知到四个路由器都损坏了,则Orion不会再做任何操作,保持数据面当前状态,也就是fail-static。

这是因为一方面小问题Orion可以在不影响现网流量的情况下进行处理,但大问题的处理则会严重影响现有业务;另一方面数据面出现大问题的几率其实很小,更大的可能是管理通道或者控制器本身出现问题,因此感知到大面积故障误报的可能性很大。

最后一点是关于管理通道的问题。

一般认为带外管理因为具有单独的管理通道,会是更可靠的方式。但管理通道本身也可能损坏,且大量网元均通过带外管理也会产生巨大的成本。

因此,Orion采用了带内管理和带外管理相结合的方式:一方面只对重要设备进行带外管理,这样节省了大量成本;另一方面带内管理和带外管理互为备份,避免管理通道的损坏导致网元彻底脱管。      

结语

网络运营,追求的无非是安全和高效。

SDN本身就是为了高效而生的,经过业界多年的实践,这一点已经没有太大的争议,其效率的提升是实实在在的。而现在争议最大的,主要聚焦在安全和实施成本上。

考虑到网络的自然迭代,成本其实不是问题,逐步转型就好。谷歌也不是一夜之间把路由器都替换掉的。

而安全方面,我想谷歌的论文以及业界的其他实践,已经解答了很多技术上的问题。剩下的问题,更多是意识层面的:是靠算法调度流量更安全,还是深夜的双人割接更安全?是靠经验反复分析、层层把关的割接报告更可靠,还是软件自动计算的drain analysis更准确?

这些问题的答案并不是那么显然,因为安全的定义其实是很复杂的。

c518c7baaa61b8e1d2b2a133ff470125.png

总的来说,遇到的困难不少,取得的成果也不算大。但我仍然坚信,SDN就是未来。毕竟,梦想还是要有的。

c74032e66534ead85681db0e701c0cd6.gif

daf1855b8c285ca41b7793394fbbdaf2.png

往期推荐

虚幻引擎5上的《黑客帝国》全新体验,爱了爱了

元宇宙真的是割韭菜吗?

Log4j 第三次发布漏洞补丁,漏洞或将长存

低代码发展专访系列之六:低代码平台能解决业务重构的问题吗?

969e920266192e631394209fc5bcc7a7.gif

点分享

c640bcffd21857d9fb80c69d6e6accb7.gif

点收藏

e25ee060fd7d43dc83a91e53001ee5a5.gif

点点赞

2828e6b2c3fde7946c0d46bfe74cca50.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动云正式发布基于龙蜥 Anolis OS 的 BC-Linux V8.2 通用版操作系统

简介: 2020年12月CentOS项目组宣布CentOS 8将于2021年12月31日结束支持,这意味着从2022年开始,使用CentOS 8的用户,将无法得到来自官方的新硬件支持、bug修复和安全补丁。针对这一情况,移动云大云操作系统团队基于国内…

干掉讨厌的 CPU 限流,让容器跑得更快

简介: 让人讨厌的 CPU 限流影响容器运行,有时人们不得不牺牲容器部署密度来避免 CPU 限流出现。本文介绍的 CPU Burst 技术可以帮助您既能保证容器运行服务质量,又不降低容器部署密度。文章分为上下两篇,该文为上篇,下…

微弱信号检测_机动车检测线常用传感器介绍

机动车检测线中经常会运用到各种传感器,这些传感器相当于车辆检测系统的“眼睛”、“鼻子”和“耳朵”,通过台体装置和装在台体中的传感器,能够把车辆的性能数据转换成计算机系统能够识别的信号,供计算机处理和计算,最…

赋能开发者,英特尔发布oneAPI 2022工具包

英特尔发布了oneAPI 2022工具包。此次发布的最新增强版工具包扩展了跨架构开发的特性,为开发者提供更强的实用性和更丰富的架构选择,用以加速计算。 英特尔公司首席技术官、高级副总裁、软件和先进技术事业部总经理 Greg Lavender表示:“我十…

Quick BI V4.0功能“炸弹”来袭,重磅推出即席分析、模板市场、企业微信免密登录等强势功能

简介: 2021年7月,Quick BI公共云版本迭代新功能:重磅推出即席分析、模板市场,分析门槛再降低;推出企业微信无缝对接,移动端类目个性配置及管理提升多端能力;数据建模配置交互升级至拖拽模式提升…

打印速度快点的打印机_瞒着领导偷偷给你们发两台打印机

前几次小粉笔组织的活动都被“投诉”!说我们打印机太少~小粉笔心领神会,在这个月的活动预算费用上悄咪咪加了【两台打印机】~(看小粉笔多疼你们!)希望知道的笔芯不要把这条推文转发给我领导(要不然你们以后就没有打印机了~哼!)现在…

数据库误操作后悔药来了:AnalyticDB PostgreSQL教你实现分布式一致性备份恢复

简介: 本文将介绍AnalyticDB PostgreSQL版备份恢复的原理与使用方法。 一、背景 AnalyticDB PostgreSQL版(简称ADB PG)是阿里云数据库团队基于PostgreSQL内核(简称PG)打造的一款云原生数据仓库产品。在数据实时交互式…

与变异风险词赛跑 阿里探索AI治理网络风险

最近,阿里安全一线风控小二可粒发现,在禁售的风险防控库里,有人试图“上新”新品种,不法份子借助在社交媒体上走红的“魔法改运”等说辞,引人入玄学骗局。 尽量提前发现风险问题,提早布防是阿里安全风控部…

高效研发运维体系构建的流程和方法论

简介: 云计算产品大多都会与云原生发生关联,云原生正在重塑整个软件的生命周期。但到底什么是云原生?云原生带来的最大技术创新和未来机会是什么?围绕云原生,是否可以构建出一套云上的开发&运维体系,打…

Colima:MacOS 上的极简容器运行时和 Kubernetes

作者 | Addo Zhang来源 | 云原生指北Colima 是一个以最小化设置来在MacOS上运行容器运行时和 Kubernetes 的工具。支持 m1,同样也支持 Linux。Colima 的名字取自 Container on Lima。Lima 是一个虚拟机工具,可以实现自动的文件共享、端口转发以及 contai…

当容器应用越发广泛,我们又该如何监测容器?

简介: 随着容器技术蓬勃发展与落地推行,越来越多企业的业务运行于容器中。作为主流部署方式之一,容器将团队的任务和关注点分割开,开发团队只需关注应用程序逻辑和依赖项,而运维团队只需关注部署和管理,无需…

内含福利|CSDN携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!

伴随云原生技术的成熟与落地,越来越多框架、中间件等开源项目相继涌现,帮助开发者和企业有效解决业务问题。2022年1月8日,CSDN携手字节跳动基础架构,将在北京举办第四场云原生线下Meetup。在这里,您可以与众多开源技术…

Flink CDC 2.0 正式发布,详解核心改进

简介: 本文由社区志愿者陈政羽整理,内容来源自阿里巴巴高级开发工程师徐榜江 (雪尽) 7 月 10 日在北京站 Flink Meetup 分享的《详解 Flink-CDC》。深入讲解了最新发布的 Flink CDC 2.0.0 版本带来的核心特性,包括:全量数据的并发…

unity三维地图的经纬度如何在二维地图上表示_接入C++版本recastnavigation寻路库到Unity/服务端中...

前言因为Unity版本的更新迭代,老版本的A*插件在新版本Unity已经无法正常使用,包括一些运行时代码也已经过时,重新接入要花费很多时间,干脆接入一个新的寻路方案吧。这里选择的是久负盛名的https://github.com/recastnavigation/re…

Dataphin功能:集成——如何将业务系统的数据抽取汇聚到数据中台

简介: 数据集成是简单高效的数据同步平台,致力于提供具有强大的数据预处理能力、丰富的异构数据源之间数据高速稳定的同步能力,为数据中台的建设打好坚实的数据基座。 数据中台是当下大数据领域最前沿的数据建设体系, 它并不是从零开始, 无中…

5G专网,路在何方?

作者 | 蜉蝣采采来源 | 无线深海话说你平常打电话、刷视频、玩游戏的4G和5G,一般也被叫做“公网”。这个“公”字的含义正是公开,公用的意思。也就是说,这个网络,不但你能用,你隔壁的张三也能用,张三的老乡…

如何开发 Node.js Native Add-on?

简介: 来一起为 Node.js 的 add-on 生态做贡献吧~ 作者 | 吴成忠(昭朗)这篇文章是由 Chengzhong Wu (legendecas),Gabriel Schulhof (gabrielschulhof) ,Jim Schlight (jimschlight),Kevin Eady,Michael Dawson (mhdaw…

xxl子任务_XXL-JOB v2.1.2 发布,分布式任务调度平台

v2.1.2 Release Notes1、方法任务支持:由原来基于JobHandler类任务开发方式,优化为支持基于方法的任务开发方式;因此,可以支持单个类中开发多个任务方法,进行类复用XxlJob("demoJobHandler")public ReturnT …

程序员如何在业余时间提升自己?

简介: 在自省过程中,我们经常会问自己这么几个问题,这段时间我尝试了什么新事物、有了什么变化、得到什么成果。 近年来,出现越来越多“自主学习”、“业余提升" 的相关话题。 我们经常收到一些同学提问:程序员…

云原生演进趋势下传统数据库升级实践

简介: 在数字化背景下,我们有许多思考。数据库跟以前那有什么不一样呢?什么是所谓的云原生数据库呢?作为使用数据库的开发者,对数据库的需求有什么变化?如今使用数据库我们一般会提什么样的诉求&#xff1f…