作者简介:郑敏先,任职于诺云信息系统(上海)有限公司,担任售前工程师。从事SDN、白盒交换机和云计算相关产品的推广工作。
在2015年3月举行的OCP(Open Compute Project,开放计算项目)峰会上, 微软向OCP贡献SAI (Switch Abstraction Interface,交换机抽象接口)。当年7月,OCP正式接纳了SAI 。
2016年3月9日,微软在这届OCP峰会上,正式发布了SONiC ( Software for Open Networking in the Cloud)。SONiC的所有软件功能模块都是开源的,推动了OCP社区以及其他厂商在开放网络方面的创新。
SONiC是构建网络设备(如交换机)所需功能的软件集合。它可以通过交换机换抽象接口(SAI)运行在不同的ASIC平台。正是由于SAI的存在,SONiC的的app(网络功能)才能够支持多个厂家的ASIC。
需要注意的是,SAI没有公开源代码,ASIC厂家只提供二进制格式的SAI文件。虽然SAI没有开源,但是SAI向上给SONiC提供了一套统一的API 接口,向下则对接不同的ASIC。
SONiC和SAI支持的ASIC芯片厂商及其对应产品为:
SONiC是一个将传统交换机操作系统软件分解成多个容器化组件的创新方案,这使得增加新的组件和功能变得非常方便。(SONiC路线图 :https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning )
SONiC大量使用了现有的开源项目和开源技术,如Docker,Redis,Quagga和LLDPD 以及自动化配置工具Ansible、Puppet和Chef等。
OCP接纳SONiC和SAI,很重要的一点就是看重SONiC能够完善白盒交换机的生态链 。试想一下,如果没有SAI,那么就需要白盒交换机厂商自行适配不同的ASIC。有了SAI之后,适配ASIC的工作就由芯片厂商完成,使得白盒交换机厂商推出一款新产品所花费的时间大大缩短。
前面已经提到过SONiC只是构建交换机网络功能的软件集合,它需要运行在Base OS上。SONiC所使用的Base OS 是ONL (Open Network Linux ) 。ONL是一款为白盒交换机而设计的开源Linux操作系统,ONL中包括了许多硬件(温度传感器、风扇、电源、CPLD控制器等)的驱动程序。
将SONiC和Base OS、SAI、ASIC平台对应的驱动打包制作成为一个文件,这个文件才是可直接安装到白盒交换机的NOS镜像 。SONiC目前已经可以运行在Accton/EdgeCore 、Dell和Mellanox等厂商的白盒交换机上。SONiC社区提供一些制作好的NOS镜像 : https://github.com/Azure/SONiC/wiki/Supported-Devices-and-Platforms
由于SONiC的网络应用都是基于容器构建的,可以非常方便的在生产环境实现不停机部署或升级应用,这一点也吸引了不少的互联网公司的目光。百度、阿里、腾讯等公司于2017年8月成立的“凤凰项目”主要就是细化这个打包工作,并兼容更多白盒交换机,未来还会做LTS模式的版本管理工作。(凤凰项目相关介绍:http://www.opendatacenter.cn/work-group/p-958516783572459522.html)