【网络协议】openR调研

OpenR 是 Facebook 内部设计和开发的路由协议/平台。最初于 2016 年发布,作为所有运行于 Terragraph 上的硬件的软件基础,提供了一个测试更快、更有效的新型路由程序的框架,引导数据的高速流转,给予开发者们充分的灵活性。

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

因为不断增加的用户量和数据量,如今的网络协议逐渐跟不上Facebook内部不断产生的新应用。存在如下问题:

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

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

Open/R结构

【网络协议】openR调研_第1张图片

上图为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开源了!!!

你可能感兴趣的:(【网络协议】openR调研)