19

开源网络操作系统大战之SONiC篇

 3 years ago
source link: https://www.sdnlab.com/24392.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

随着互联网行业的蓬勃发展,数据和流量开始向数据中心聚集,同时公有云的兴起使得数据中心的规模化效益变得愈发重要。传统网络设备因封闭、黑盒、厂商锁定等限制,无法满足云计算时代对网络提出的开放接口、软件定义、模块化构建、快速迭代等需求,在规模与竞争的驱动下,数据中心基础设施开始走向开源化。

自2014年以来,市场一直在转向开放、灵活、软件驱动的解决方案,开源项目正在帮助推动这种转变。预测显示,到2023年,开源网络市场(不包括超大规模应用)将达到13.5亿美元,在2019年至2023年期间的复合年增长率为33%,开源NOS将成为下一代网络扩展的理想选择。目前市场上主流的开源NOS有SONiC、Stratum、DANOS和DENT等等,之前我们已经聊过了Stratum,这次我们来看看SONiC有什么独特之处。

什么是SONiC?

SONiC(全称Software for Open Networking in the Cloud)是一款开源网络操作系统,由微软于2016年发起,并在一年后贡献给了开放计算项目(OCP)。SONiC基于Linux,建立在交换机抽象接口(SAI)上,并且可以运行在各种交换机和ASIC(专用集成电路)上。换句话说,SONiC是内核补丁、设备驱动程序、实用程序等的集合,旨在解决云网络的可靠性和可用性以及演进(即添加新功能)问题。 

SONiC-1.png

SONiC给整个网络产业带来的最根本变革在于:

  • 传统网络设备软硬件一体的封闭架构被打破,软件和硬件被彻底解耦;
  • 网络软件系统的演进让快速迭代、按需定制、社区共建成为可能;
  • 网络软件的开发形成了全新的共建、共享、开放的网络生态系统,快速推进网络自身的发展。

SONiC全新的理念、开放的架构,很快获得了云计算时代的用户、厂商的青睐,成为云计算时代构建网络软件系统的首选。SONiC将SAI作为南北向互联的中间件,屏蔽不同ASIC之间的驱动差异,也正是由于SAI的存在,SONiC的网络功能应用才能够支持多个厂家的ASIC。

SONiC系统架构

SONiC构建在Linux系统之上,并且利用键值数据库(redis)、容器技术(docker)、标准化硬件接口定义等技术,使其成为一个软硬件彻底解耦、软件模块松耦合(loose coupling)、高可靠、易于扩展、开源开放的网络软件系统。

SONiC基于以下原则:

  • 控制:SONiC是一款开放软件,任何人都可以利用它来选择想要部署的内容;
  • 可扩展:通过SONiC,开发人员可以轻松添加功能;
  • 敏捷性:快速反应能力,能够将新功能部署到正在运行的数据中心;
  • 开源:开源加快了新功能的实现速度和创新能力。

SONiC-2.jpg

SAI是SONiC的核心,并为SONiC提供了统一的API。网络硬件供应商可以在能够匹配该编程接口的前提下,提供更高速、更低功耗、更低成本、更高端口密度等特性的硬件,且无需软件进行特定的适配,这种方式使得供应商在硬件产品开发方面能够快速迭代、创新。

在数据架构方面,SONiC使用数据库架构代替原有的模块化耦合架构,将应用模块之间的传递数据模式变成应用模块之间通过数据库进行数据交换的模式,从关注流程转变为关注数据,实现了功能模块之间的解耦。采用数据库架构不仅为新功能开发提供了环境基础,同时能够提供在不影响转发面的前提下解决进程级别故障及功能升级的能力。

在模块化方案设计上,SONiC是首个将交换机软件拆分为多个容器化组件的解决方案。SONiC的核心是针对云网络场景,存在强烈的扩展性和规模化管理的需求。容器化使得SONiC具有极高的可扩展性,网络运营管理人员能够快速引入第三方、专有或开源组件,而不对原有业务造成影响。

简单看一下SONiC的架构设计:

  • 运行在用户空间的SONiC系统,只有为数很少的模块(pmon、swss和syncd)与Linux内核之间存在交互关系,从而保证了系统的稳定性。
  • 以redis键值数据库为交互中心,redis为SONiC的所有软件模块构建了一个松耦合的通信载体,同时提供数据一致性、信息复制、多进程通信等机制。
  • 采用了最新的容器架构,除SONiC CLI和SONiC Configuration这两个软件模块以外,构成SONiC系统的其他各个软件模块均被隔离在独立的Docker容器中。使用者无论需要增加新的功能,还是改变一个Docker,都不需要做太大的变化,只对一个局部做出改变即可。

SONiC-3.jpg

SONiC生态

除了微软以外,阿里巴巴、腾讯、LinkedIn等互联网公司也是最早一批采用SONiC的企业,如今SONiC已经被众多芯片厂商的ASIC芯片所支持,例如Barefoot Networks、Broadcom Limited、Cavium、Mellanox Technologies等。在国内,开放数据中心委员会(ODCC)网络工作组的凤凰项目也是依托SONiC开源社区,打造“白盒+开源OS”的网络生态。

SONiC社区已经形成了从最低层芯片到最上层大规模用户的全面生态系统,这个生态系统从硬件芯片、系统架构、系统集成、大规模应用等各个层面促进着SONiC的发展与成熟。

SONiC-4.png

SONiC社区活跃的成员大致可以分为以下几类:

  • 互联网巨头/云计算公司:阿里巴巴、百度、滴滴、Docker、Facebook、京东、LinkedIn、Microsoft、腾讯等
  • 传统网络设备供应商:Arista、Cisco、Dell、Juniper、Ruijie等
  • 白盒网络设备供应商:Celestica、Edgecore、Quanta等
  • 新一代云网络供应商:Apstra、Asterfusion等
  • 网络交换芯片供应商:Barefoot、Broadcom、Cavium、Centec、Innovium、Marvell、Mellanox等

SONiC-5.jpg

下图展示了支持SONiC的平台列表

SONiC-6.jpg

随着SONiC的不断发展,人们也开始讨论,在网络界,会不会出现统一的操作系统。如今各个厂家都有自己的操作系统,例如思科的IOS,Juniper的JunOS,Arista的EOS等等。未来,在云计算和开源的推动下,假以时日,各个网络设备是否会使用独立于厂商的、统一的操作系统?

本文内容整理自:
http://www.elecfans.com/tongxin/201912031127671.html
https://mp.weixin.qq.com/s/MfRkbHG9MJpy6LB2miWNfA
https://github.com/Azure/SONiC/wiki/Supported-Devices-and-Platforms


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK