开放网络操作系统介绍(4)、DANOS

 

源自Vyatta

Vyatta公司成立于2005年 。该公司提供一个也叫Vyatta的、在商用硬件上运行的开源网络操作系统。Vyatta名称取自梵语中的“open”,发音为“vee-at-ah”。2006年推出Vyatta商业订购版本,定价500美元/年 。

随着云计算的发展,Vyatta被众多公有云厂商支持。比如AWS Marketplace中的第一个虚拟路由器应用就是Vyatta :

开放网络操作系统介绍(4)、DANOS_第1张图片

2012年11月,博科收购了Vyatta 后,取消了开源的社区版本,软件也改名为Vyatta vRouter。但是Vyatta的开源之路并没有终结,针对博科停止Vyatta社区版的决定,独立开发人员从Vyatta Core 6.6 R1版本fork 出一个分支,即VyOS开源软件项目。
 

从Vyatta到dNOS

Vyatta于2017年7月被AT&T收购,Vyatta NOS构成了AT&T开源dNOS(disaggregated Network Operating System,分解的网络操作系统)平台的基础。

dNOS由硬件和软件组件组成:

  • 从较高层面来说,dNOS软件组件包括基本操作系统、控制和管理平面以及数据平面。
  • 硬件组件通常包括用于运行基本操作系统的通用CPU,控制和管理平面以及用例所需的任何软件数据平面。该通用CPU可以是虚拟化的,因此软件组件应该支持在虚拟环境中运行。硬件组件还可以包括专用硬件转发设备,例如ASIC、NPU、FPGA等商业芯片。通用CPU和专用转发设备可以共存于相同的硬件中,或者通过总线或网络分开。

AT&T将dNOS软件用在这几个场景:

  • X86 服务器上的VNF软件。 提供vCE、Netbond、vNAT、SD-WAN,、Routing、Firewall 和WAN 优化等功能。
  • Flexware uCPE上的VNF软件。FlexWare是AT&T的通用CPE(uCPE)硬件盒子。
  • 基站汇聚路由器、基站网关路由器上的软件

开放网络操作系统介绍(4)、DANOS_第2张图片

dNOS功能和组件图

简单分析下上面这张图中的三个层次:
1、应用程序(Applications)是路由器上控制平面或管理平面组件具有的任何网络功能。

2、共享基础设施和数据(Shared Infrastructure and Data)。NOS必须能够使用通用方法和协议在不同供应商的应用程序之间共享数据。 dNOS的一个关键目标是创建一个便于应用程序之间共享的开放环境。为此,dNOS包括通用基础架构组件和共享数据结构。

基本网络状态信息存储在一组公共共享数据结构中。这些数据结构包括有关接口状态,邻居解析表,转发信息库(FIB)状态等的信息。应用程序使用通用方法更新相关的基本网络状态共享数据。

所有共享基础设施数据由使用合适的标准数据结构和/或数据建模语言(例如,YANG)表示的标准化数据模型定义。数据共享基础设施和基本网络状态共享数据结构使得能够在不同协议之间共享公共数据(例如,经典IGP可访问的链路状态数据,例如OSPF和ISIS以及用于SDN控制应用的BGP-LS), 以及协议选择的优雅演变(例如,使用gRPC代替SNMP来收集OAM数据)。

用户,业务流程和数据导出接口提供了一个通用基础架构,用于将应用程序和系统基础架构连接到外部系统以进行管理和分析。ONAP管理和控制系统的北向接口包括NetConf / YANG和gRPC,并支持用于telemetry数据收集的流式传输和(传统)轮询机制。

3、dNOS包括一组支持多个不同转发层的组件。转发抽象层(FAL,Forwarding Abstraction Layer)负责从共享基础架构和数据组件获取高级网络状态输入,并转换为供应商特定API,以用于各种软件和硬件转发选项:

  • 在使用NPU /ASIC等专用硬件转发器时,FAL使用ASIC供应商提供的SDK和驱动程序 。
  • 在使用x86 CPU上运行的软件转发器时,FAL使用由NOS供应商、开源社区(例如,DPDK,FD.io)和硬件(例如,NIC)供应商的提供的软件组合。

FAL的目标是使ASIC供应商具有多样性,并且多个ASIC共享一个与目标无关的共同抽象层。长期目标是让FAL包含支持完全可编程硬件流水线的抽象。这种抽象将基于正式的网络编程语言,如P4或其他类似的行业认可的标准化语言。
 

从dNOS到DANOS

AT&T在2018年初将dNOS作为种子代码贡献给Linux基金会,Linux基金会的据此成立DANOS项目 。DANOS(Dis-Aggregated Network Operating System分解网络操作系统)将提供一个开放的NOS框架,利用现有的开源资源和硬件平台,如白盒交换机、白盒路由器和uCPE等。Vyatta第四代架构引入了商业芯片+软件转发的混合转发模式。采用Vyatta第四代架构的DANOS,预计于2019年第一季度正式发布

开放网络操作系统介绍(4)、DANOS_第3张图片

DANOS侧重于硬件/软件分解和超越云数据中心网络功能,创建和培养路由软件组件供应商生态系统,以提供创新的网络解决方案,满足MAN/WAN网络的大规模和快速发展的功能要求(包括蜂窝站点路由器,城域以太网服务和RAN回传路由器/交换机,Internet和VPN服务边缘路由器,运营商POP内互连结构,骨干核心路由器等)。DANOS 目前计划支持这五个操作系统:dNOS 、FRR、SONiC 、OpenSwitch和Stratum 。

DANOS的三大特点:

  • 将路由器的操作系统从路由器底层硬件中分离
  • 在基础操作系统、控制和管理平面以及数据平面内提供标准接口和应用程序编程接口(API)
  • 标准接口/API实现数据平面与控制平面的分离

开放网络操作系统介绍(4)、DANOS_第4张图片

DANOS/dNOS详细架构图(颜色对应上一张“dNOS功能和组件图”)

对照上面这张图,大概介绍下DANOS的控制和管理平面、基础操作系统和数据平面:

控制和管理平面:

  • 主要功能:
    1)控制和管理平面主要负责网络功能应用程序的操作。例如BGP守护程序、SNMP服务器等程序
    2)提供将应用程序集成到DANOS的通用配置和操作模式基础架构
    3)向外部业务流程系统和最终用户公开DANOS配置,操作和管理接口
    4)将控制平面和系统状态信息传递给机箱管理器(Chassis Manager),该管理器负责管理单个本地或多个远程分布式数据平面的接口
  • 其它功能特性
    1)网络应用程序可以是开源的或商业供应商的,也可以是用户自行开发的程序。
    2)应用程序与控制和管理平面基础架构之间的通信是通过共享的进程间通信(IPC)总线机制完成的。应用程序还可以使用此总线与其他应用程序共享其数据。
    3)采用YANG 模型定义的系统/应用程序数据模型。每个应用程序的所有配置、操作和共享数据都由功能开发人员在YANG中建模,并暴露给基础架构组件。
    4)适用于所有组件的通用混合CLI、REST和Netconf
    5)Shim层库提供应用程序和系统接口之间的接口
    6)机箱管理器使用ZeroMQ / Protobuf协调与远程数据平面的通信

基础操作系统:

  • 主要功能:
    1)提供系统基本功能,包括开机自检、设备驱动程序、进程管理、shell访问等。
    2)对基础网络状态信息的权威所有权
  • 其它功能特性
    1)基于Debian Linux的完全模块化的操作系统
    2)使用Linux内核API(Netlink Socket),使得原生应用程序不需要修改或只进行少量修改就能运行。netlink socekt是一种用于在内核态和用户态进程之间进行数据传输的特殊的IPC。它为内核模块提供一组特殊的API,并为用户程序提供了一组标准的socket 接口的方式,实现了一种全双工的通讯连接。类似于TCP/IP中使用AF_INET地址族一样,netlink socket使用地址族AF_NETLINK。每一个netlink socket在内核头文件include/linux/netlink.h中定义自己的协议类型。
    3)支持开放网络安装环境(ONIE)

数据平面:

  • 主要功能:
    1)同步控制/管理平面与数据平面之间的状态
    2)在控制/管理平面与硬件/软件数据平面之间提供转发抽象层
    3)在硬件和软件中提供通用数据包转发功能
  • 其它功能特性
    1)基于用户空间DPDK的分解软件转发流水线
    2)远程数据平面支持
    3)转发抽象层提供了软件和硬件转发的通用接口
    4)软件流水线的插件架构
    5)多厂商交换芯片支持用DPDK PMD(轮询模式驱动)实现
    6)高速punt path支持软件流水线服务卸载
    7)Chassiss agent 。 机箱管理器客户端,其负责与控制和管理平面同步状态。然后它将该数据呈现给转发抽象层(FAL)。 FAL负责将抽象网络数据表示转换为供应商特定的API,用于软件和硬件转发数据平面。这包括各个数据平面的本地状态,例如接口状态,FIB状态,QoS和防火墙配置等。
    8)Software pipeline。其使用标准化API将分组转发功能链接在一起。软件流水线是一个功能完整的流水线,能够实现各种功能,比如防火墙、NAT、DPI和分析数据导出等功能
    9)FAL的目标是提供一个抽象层,一旦编写了“驱动程序”,DANOS就可以通过该抽象层使用多个供应商的ASIC芯片。换句话说数据平面中的FAL充当多个供应商ASIC SDK和控制平面的数据表示之间的转换器,以实现硬件抽象。


参考资料:

1、https://about.att.com/content/dam/innovationblogdocs/att-routing-nos-open-architecture_FINAL%20whitepaper.pdf
2、https://www.fiercetelecom.com/telecom/linux-foundation-builds-off-at-t-s-dnos-to-push-danos-project
3、https://vimeo.com/307590844/132bdb2384

注:本文已发表至SDNLAB  https://www.sdnlab.com/22893.html

你可能感兴趣的:(开放网络,白盒交换机)