36

详解:SONiC演进四部曲

 3 years ago
source link: https://www.sdnlab.com/24408.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.

开放网络建立在开放标准(例如OpenFlow协议等)和裸机硬件之上,可以自由选择网络操作系统,只有具备这些条件才能打破软件和硬件在网络层面的固有特性,实现软硬件的分离,提供灵活、可扩展和可编程的网络,以适应不同场景的应用需求。

开放式网络交换机日益普及,并允许部署不同的开源网络操作系统(NOS)。

开放式交换机

通常,交换机可以表示为四个分层组件的堆栈。下图显示了这些组件:

001.png

交换机的分层组件堆栈
  • 芯片或ASIC(专用集成电路)是为特定任务而设计的专用硬件元件,对交换机来说,此任务是通过网络快速发送数据包;
  • 硬件层包括交换机的其他所有物理组件,例如接口、输入/输出端口、LED和电源;
  • 网络操作系统(NOS)控制硬件和底层ASIC以用于联网,并允许控制和管理平面应用程序使用硬件;
  • 除了底层操作系统的功能外,控制平面和管理平面应用程序还为交换机用户提供了特定的功能。

为了理解开放式交换机与传统交换机之间的区别,需要考虑上述组件彼此交互的方式。传统交换机交付时预安装了无法更改的软件,无法独立更改。而开放式交换机解耦了NOS和底层硬件,可以彼此独立地改变,因此,开放式交换机让用户拥有更多的选择权去运行什么NOS。

随着开放式交换机的市场份额增长,人们对开源的网络操作系统需求也越来越强烈。

开源网络操作系统——SONiC

SONiC (Software for Open Networking in the Cloud) 是微软基于 Debian Linux 打造的一款开源网络交换机操作系统,声称包含了第3层网络设备的所有功能,SONiC Object Library3允许外部应用程序彼此交互并与SONiC应用程序交互。

由于微软运行着世界上最大的网络之一,因此其对SONiC提出了严格的要求:

1. 可以实现新特性,而又不影响最终用户。由于SONiC由多个容器组成,每个容器都包含用于部署特定网络功能(例如BGP、LAG)的资源,因此,当某个功能存在更新或bug时,只需更新一个容器即可,而不是替换整个交换机映像(这将导致数据平面停机)。这使得SONiC适用于在部署更新时不允许停机的情况。

2. 可以在最新的硬件平台上使用。由于SONiC使用SAI,因此数据中心可以不断地更新交换机硬件,而无需更改软件堆栈。因此,SONiC适用于那些可能会定期更改硬件的用例。

3. 云级深度遥测和全自动故障缓解。SONiC具有NetBouncer和Ever ow等创新产品,可以部署NetBouncer来自动准确地检测大型数据中心内的故障设备或链路,Ever ow可以调试多个网络故障,如丢包或循环。此外,它可以快速识别在网络中引起高延迟的设备。 简而言之,SONiC适用于必须持续监控以自动响应潜在问题的大型网络用例。

002.png

SONiC组件概述

SAI(Switch Abstraction Interface)

上文说过ASIC旨在处理特定任务,在网络交换机中对ASIC进行了设计和优化,以根据路由表快速处理传入的数据包。为了使NOS能够对ASIC进行编程,已经开发了几种API与ASIC进行通信。

作为大众熟知的方法之一,交换机抽象接口(SAI)是一个跨平台的交换机平台接口,该接口定义了标准化的API,可以对软件进行编程以用于多个不同的交换机,而无需进行任何更改SAI在所有硬件上运行相同的应用程序堆栈,这使得 SAI 接口具备简单性,一致性。SAI向上给SONiC提供了一套统一的API 接口,向下则对接不同的ASIC。

003.png

SONiC日渐成为构建开放网络的钥匙,SAI则是实现钥匙的标准模具,SONiC通过将SAI作为南北向互联的中间件,屏蔽了不同ASIC之间的驱动差异,也正是由于SAI的存在,SONiC的网络功能应用才能够支持多个厂家的ASIC。

Switch State Service

交换机状态服务(SwSS)是软件的集合,该软件提供数据库接口,用于与网络应用程序和网络交换机硬件进行通信并进行状态表示。SwSS允许在SONiC上运行的网络应用程序完全独立于它们所运行的硬件,下图显示了SwSS的体系结构:

004.png

SwSS架构

Quagga

路由套件是控制平面软件的集合,它们使用多种路由协议在网络操作系统之上运行。路由套件与其他路由器交换路由信息,并在内核中更新路由信息。Quagga是路由套件的示例,它为SONiC提供了BGP路由功能,是开源的。

SONiC设备上存在两个主要的Quagga进程:BGPd(BGP daemon的缩写)和Zebra。下图显示了当收到一条新的BGP路由信息时,Quagga和SONiC是如何相互作用:

005.png

Quagga确定是否应在路由表中放置新路由,然后SONiC负责更新内核路由表

SONiC子系统交互

SONiC系统的体系结构包含各种模块,这些模块通过集中式和可扩展的基础结构相互交互。SONiC将每个模块放置在独立的docker容器中,以保持semantically-affine组件之间的高内聚性,同时减少相互分离的组件之间的耦合。

下图显示了每个Docker容器中包含功能的高级视图,以及这些容器之间的交互方式。

006.png

LLDP-状态相互作用

下图描述了在LLDP状态转移期间观察到的一组相互作用:

007.png

SNMP状态交互

snmp容器既托管snmp主代理(snmpd),又托管SONiC特定的agentX进程(snmp_subagent)。该子代理与所有提供可提供MIB状态信息的redis数据库/表进行交互。下图描述了在系统处理传入的snmp查询期间,各种SONiC组件之间的典型交互:

008.png

端口状态交互

下图描述了与端口相关的信息传输期间发生的系统交互:

009.png

关于SONiC子系统交互的详细信息以及具体过程可以查看:https://github.com/Azure/SONiC/wiki/Architecture

SONiC的演进历程

SONiC自推出以来在不断发展更新,目前已经有超过10家的云厂商和一些大型企业都采用了SONiC作为他们的交换机操作系统,而微软和阿里巴巴就是其中的两大巨头。

010.png

2016年,微软推出SONiC及其配套的交换机抽象接口(SAI)时,就在Linux内核上的容器中运行了第二层和第三层交换功能,并带有用于遥测的Redis数据库。该软件可在多个ASIC上运行,包括Broadcom的Trident 2、Mellanox的Spectrum、Cavium的XPliant(现在是Marvell的一部分)和Centec Networks的GoldenGate。这些主要用于40 Gb/s的交换机。

2017年,增加了Broadcom的Tomahawk、Tomahawk 2 ASIC、Marvell的Prestera、Barefoot的Tofino,主要用于100 Gb / s的交换机,大约有16种不同的平台可供使用。并且,RDMA和QoS功能也通过Swarm(旧的Docker工具)管理添加到了SONiC堆栈中。

2018年,SONiC有了另一个重大飞跃,虚拟化技术被添加到了容器支持中,并在流式遥测和新的配置数据库中添加了热重启(不到1秒)。并且,还添加了ARM计算支持,平台列表增加到31台不同的计算机,包括基于Nephos的Taurus芯片、Broadcom的Helix 4、Trident 2、Tomahawk 3芯片、Cisco的Lacrosse芯片(用于高端Nexus 9000交换机)。

2019年,SONiC增加了对Broadcom Jericho和Jericho 2深度缓冲器(deep buffer)交换机ASIC的支持,以及对Innovium的Teralynx 7、Marvell的Falcon、Mellanox的Spectrum 2 ASIC的支持。平台的基础增加到了69种不同的计算机。另外,微软与SONiC社区合作增加了对模块化交换机的支持。今年,思科将它的Silicon One商用路由器芯片添加到了SONiC中。

如今SONiC已走过了四个年头,市场占有率也在不断增加,但仍面临来自Stratum、DANOS和DENT等开源NOS的激烈冲击,未来SONiC能否继续扩大优势,占据头把交椅?

由江苏省未来网络创新研究院主办、SDNLAB承办的“2020 SONiC产业生态研讨会”将于9月19日进行线上直播,会议将邀请来自芯片公司、白盒厂商、传统数通厂商、互联网公司、测试厂商、研究院所等的专家学者共同探讨网络操作系统SONiC产业生态的行业分享,共同创造更繁荣的新一代开源网络生态。

s9.png

大家也可添加SDNLAB酱的微信,回复“SONiC”,拉你进本次会议交流群哦~
SONiC-7.jpg

参考链接:
https://github.com/Azure/SONiC/wiki/Architecture
https://mp.weixin.qq.com/s/sAXZouqy-t-Ozf4Iivoh7w
白皮书:Open-source network operating systems: feature evaluation of SONiC


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK