Facebook Open/R,新一代路由平台与网工的将来

网络技术现况

在网络工程师的平常工做中,咱们常常和各类网络协议,不一样厂家的网络设备打交道。从你们熟知的RIP,OSPF,ISIS以及互联网无处不在的BGP等等。配置和优化以上协议已经成为网络从业者的屡见不鲜。
而在业余时间,咱们认真好学,积极充电。学习Cisco,Juniper,华为等厂商的认证课程。
但是,自从IGRP至1980代发明以来,这些路由协议就没有怎么改变过。顶多在原来的基础上,新增了部分功能,例如RIP,OSPF,IS-IS支持IPv6,BGP支持新的family协议族等。python


换句话说,在突飞猛进,万象更替的今天,做为网络工程师的咱们,仍然用着30前发明的技术!程序员

诚然,有朋友会解释道,现现在的网络技术也在逐步升级,例如SDN技术的引入。但其实SDN只是一种新的解决方案,它解决了自动化集中控制的问题,优化了转发和控制层面。其对现现在的网络技术体系并非替代性的,颠覆性的。算法

假设有一天,这些传统的路由协议都消失了,取而代之的是咱们彻底没有接触过的新技术,网工的饭碗岂不是丢了?
想一想就细思极恐。编程


做为一名在网络行业浸淫多年的资深工程师,我我的也不但愿看到有这么一天。
可是很不幸,时代的脚步没有人可以阻止。在地球的另一端,一家社交媒体公司正在悄然改变这一切。服务器

它就是今天的主角:Facebook网络

Facebook 一群疯狂码农的乐园

由于某些缘由,你们平时对Facebook知之甚少。因此在这里有必要稍稍介绍下Facebook。架构

Facebook 是一家主打网络社交平台的公司,它相似于咱们平时使用的QQ空间,人人网等其余社交平台。并发

不知道大家是否看过一部电影,全名《社交网络》(THe Social Network)。它就是讲述了Facebook CEO扎克伯格被女朋友甩了之后,如何借助别人的点子建立了Facebook帝国,并发展壮大的过程。
本篇文章对于Facebook如何建立,咱们并不感兴趣。可是你们须要注意的是,CEO扎克伯格天才般的码农技能吸引了一大批志同道合的牛叉码农。他们坚信代码改变世界。运维


为了让你们有个更直观的了解Facebook的体量,让咱们来看看下面几组数据(截止2017第三季度)。ide

  1. Facebook有超过27亿人月活用户,同时每一年16%的速度递增。
  2. 日活跃用户13.7亿人,23%年递增速度。
  3. 天天有3亿张照片上传到Facebook服务器。
  4. 。。。。

在如此规模用户量背后,是全球范围的数据中心,以及跨越各个大洲的国际骨干网在支持着数亿人天天的社交动做。天然而然,网络设计规划以及平常运维也是成为公司业务的关键。

由于体量巨大,Facebook极其容易遭遇平时你们不太可能遇到的各类协议上的扩展性问题。有些问题对普通企业来讲,发生的几率为0.00000001%。可是在Facebook内发生的几率就是100%。

创新性开源路由平台 Open/R

由于不断增长的用户量和数据量,现在的网络协议逐渐跟不上Facebook内部不断产生的新应用。存在以下问题:

  1. 目前网络协议过于古老。设计之初是在有限的CPU和内存资源的状况下,解决网络可达性问题。而现在CPU和内存资源过剩,可是上层应用须要网络协议提供更多的服务来支持其功能,而不是简简单单的连通性问题。
  2. 在已有协议的基础上新增功能及其繁琐,Facebook曾向IETF撰写提交RFC,期间经历无数次的修改,耗时多年才得以获批。
  3. Facebook从创立之初,就一贯致力于把一切问题归结于软件问题。既然是软件问题,就用解决软件问题的思惟来处理,网络问题也不例外。

基于以上几点,Facebook放弃了修改已有协议,转而编写一套适合本身的全新的路由平台系统,那就是今天的Open/R。

Open/R结构

Open/R宏观结构图
上图为Open/R的宏观总体架构。

各个部件功能以下:

  • KV-STORE:产生链路状态泛洪,与邻接同步链路状态。存储与分发Key-Value,这些Key-Value 组合并不光是链路状态,理论上它能够存储任何信息。
  • Spark: 使用ipv6 Link-local 组播实现邻居发现,并向其余模块报告邻居状态。
  • LinkMonitor:顾名思义,经过Platform模块监控硬件接口的状态信息。并把经过Spark模块学习到的邻居关系报告给KV-STORE。
  • PrefixManager:IP地址前缀自动分发,这项功能大大简化在自动部署过程当中,无需工程师干预链路的IP地址分配。
  • Decision:当接收到KV-STORE模块传来的全网链路信息之后,基于最短路径算法计算链路状态路径。
  • FIB:维护转发信息表,并下发给Platform执行硬件转发表更新。
  • Platform:结合特定硬件平台的SDK,执行硬件层面的接口功能和FIB下发的路由功能。

仔细一看,这不是和日常的OSPF, ISIS同样吗?对外经过Hello发现邻居,创建邻接关系。对内经过Shortest Path算法算出最优路径,而后下发FIB。

没错,Open/R设计之初,就充分吸取学习现有路由协议的优秀机制,并加以利用。可是同时,它也引入以下众多功能:

  1. 跨平台运行- Open/R能够运行在不一样的硬件平台之上。全部硬件软件都抽象为接口,不一样的硬件ASIC和CPU均不会影响Open/R的正常运行。从而实现不一样网络设备的一致性体验,使得统一化网络管理更加容易。包括Arista和Juniper在内的厂商都经过API的方式运行Open R。以Juniper为例,QFX系列和PTX系列都支持Open/R。
  2. 基于IPv6原生开发,使用ipv6 link-local地址,支持zero-touch配置。若须要ipv4路由亦能够开启ipv4。
  3. 基于一个大掩码的聚合地址prefix,运行Open/R的路由节点能够实现自动分配IP地址实现即插即用功能。
  4. 由于功能模块化,提供了平滑重启的特性。升级过程当中不会打断业务。
  5. 支持实时业务流量剥离。
  6. 基于RTT的动态链路metric计算调整。省去了人工计算RTT来确认链路的Metric值的烦恼。
  7. 基于实时可达性探测,Open/R能够实时监控整个网络的健康情况。
  8. 提供API用于集成SDN控制器。
  9. 原生提供Python 库来调用全部主要的Open/R进程。(又是python!)
  10. 极其容易作仿真测试,最高曾经测试过一万个Open/R节点和6万个link链路。(想一想之前学习的知识,OSPF单区域不建议多余50台路由器,省得database过大。)

然而,最主要也是最重要的功能,是极强的扩展性。
今天你看到的是这些功能,可是随着业务发展须要,Facebook能够随时添加新模块进入此系统。并且-----Open/R开源了!!!

其实Open/R不是本文重点

其实今天的讨论重点,不是在Facebook 的Open/R,而是借着Open/R,和你们聊聊关于网络工程师的将来,关于咱们本身!

不知道你们看完Facebook Open/R介绍之后,想到了什么,有什么样的思考。

我说说我看到Open/R之后,个人感觉吧。
首当其冲,若是本身再不转变,就要失业了。
做为一名网络工程师,咱们赖以生存的技能就是网络技术,更深一层来讲,深入理解网络各个网络协议之间的运行机制,以及如何规划并实施。
可是正如我开篇提出的问题,假如这些协议在某一天都消失了怎么办?
取而代之的是像Open/R这样的新网络系统。曾经熟知的OSPF区域类型,BGP 的policy,协议timer等通通派不上用场。一切一切都是被码农们提早预设好,系统循序渐进运行就能够。若是遇到系统故障,做为网络工程师的咱们也插不上手,由于代码故障还须要代码来解决。

今天只有一个Open/R,明天会有无数个Open/R

若是你们只是以为,Facebook离我很遥远,并且Open R目前只有Facebook以及零星几个合做伙伴在部署。那就大错特错了。
首先,由于Open/R的开源,其余存在相似协议扩展性困扰的公司就会借着Open/R的设计思路和原理,开发出符合自身的路由平台。这个趋势不是谁可以阻挡的,包括设备制造商。
相似的例子为虚拟化,包括Cisco或者Juniper原来是借着硬件设备外加软件系统来盈利。可是在虚拟化面前,不得不推出虚拟化的路由交换平台,放弃部分硬件设备的利润。
仍是那句话,在科技进步的潮流面前,没有谁可以阻挡。
而此次潮流的最终受益者----是程序员。
在科幻世界里面,有这么一个方式叫作“高维打低维”。大概解释为:高维空间的生物打击低维空间的生物,易如反掌。
而在现实生活中,这种
正在发生在咱们身边。农耕时代敌不过工业时代,工业时代的产物又敌不过互联网时代。一样,在互联网应用发展迅猛的今天,程序员如雨后春笋,一切问题,均可以用代码解决。所以从某种层面上来讲,程序员们站在了更高的维度。而做为网工的咱们,则是低维。

对手 or 朋友?

翻开如今的博客,公众号。大大小小的文章都是关于程序员的,貌似做为网络工程师的咱们,已经成为过气明星,只能在街边小剧场路演。
那么咱们应该怎么办,继续生活在象牙塔内,内心暗暗仇视日夜加班的码农么?No No No,咱们不只不能仇视,还应该和他们成为朋友,合做双赢才是将来。

Facebook Open/R,新一代路由平台与网工的将来

有句话说得好,与其坐以待毙,不如融入其中。

网工的路该怎么走?

总结一句话:夯实网络基础知识,同时大力发展写代码能力,成为程序员的一份子。进可攻,退可守。
毕竟,程序员再强,他们对于网络技术知识的理解仍是不如职业的网络工程师,因此夯实网络基础知识很是重要。只要练好看家本领,才能开疆扩土。
同时,做为网工的咱们,应该大力学习编程,进入程序员的领域Get新技能,把本身变成程序员,跟上时代的步伐,才不会被时代所抛弃。

结尾

最后,以一句略带危机感的话语,结束这篇文章:

做为一名网工,但愿你们换个角度看待当下。网络并不只仅是OSPF,ISIS,BGP。也并不只仅是多少个CCIE。也许在地球的某个地方,破坏性的创新正在侵蚀咱们熟知的领域,最终引领咱们走向陌生。

----END-----

相关文章
相关标签/搜索