连接未来的SONiC!
关注星融元
什么是SONiC?
在构建公有云平台Azure的过程中,微软逐渐意识到传统网络设备的局限性。
于是成立了SONiC(Software for Open Networking in the Cloud)/SAI(Switch Abstraction Interface)开源项目,目标是针对Azure对网络的需求,基于标准的Linux内核重新构建一个开放的网络系统软件。
并且,微软没有将这个系统做成封闭的,而是以开放、开源、社区的模式运作;
SONiC/SAI最近几年的蓬勃发展在很大程度上也是得益于此…
图1:SONiC/SAI概念
在SONiC/SAI定义的开放架构中,传统网络设备软硬件一体的封闭架构被打破,软件和硬件被彻底解耦;就好像今天的Windows/Linux操作系统能够运行在任何第三方基于标准设计的PC/Server硬件上一样,SONiC/SAI网络软件系统也能够运行在任何符合标准的网络硬件平台之上啦!
SONiC/SAI给整个网络产业带来的最根本变革是:
- 软硬件解耦的理念和标准化的软硬件接口定义,分别让网络软件系统和硬件平台飞速发展;
- 网络软件系统的演进,也可以让快速迭代、按需定制、社区共建成为可能;
- 网络软件的开发形成了全新的共建、共享、开放的网络生态系统,快速推进网络自身的发展。
SONiC/SAI全新的理念、开放的架构,很快获得了云计算时代的用户、厂商的青睐,成为云计算时代构建网络软件系统的首选。
也正因此,SONiC/SAI被OCP(Open Compute Project,开放计算项目)吸纳,成为OCP网络组的两个子项目。
SONiC系统架构
SONiC构建在Linux系统之上,并且利用键值数据库(redis)、容器技术(docker)、标准化硬件接口定义等技术,使其成为一个软硬件彻底解耦、软件模块松耦合(loose coupling)、高可靠、易于扩展、开源开放的网络软件系统。
图2:SONiC系统架构
从图2我们可以看到:
- 运行在用户空间的SONiC系统,只有为数很少的模块(pmon、swss和syncd)与Linux内核之间存在交互关系,从而保证了系统的稳定性。
- 以redis键值数据库为交互中心,redis为SONiC的所有软件模块构建了一个松耦合的通信载体,同时提供数据一致性、信息复制、多进程通信等机制。
- 采用了最新的容器架构,除SONiC CLI和SONiC Configuration这两个软件模块以外,构成SONiC系统的其他各个软件模块均被隔离在独立的Docker容器中。使用者无论需要增加新的功能,还是改变一个Docker,都不需要做太大的变化,只对一个局部做出改变即可!
星融元基于SONiC构建的网络操作系统
星融是国内最早参与SONiC社区的公司之一
经过几年的发展,SONiC已经成为云计算领域极具发展前途的开源社区之一。
星融(Asterfusion)创始团队的核心成员来自于华为、Cisco、Broadcom等知名网络企业,对于网络和云计算领域的技术和产品有着深刻的理解,创立星融之前就已经在积极跟踪、深度参与SONiC及其社区。
作为新一代云网络供应商的星融自成立之初就正式加入了SONiC社区,成为国内最早参与SONiC社区的云网络公司之一。
图3:SONiC社区成员
SONiC社区活跃的成员大致可以分为以下几类:
- 互联网巨头/云计算公司:阿里巴巴、百度、滴滴、Docker、Facebook、京东、LinkedIn、Microsoft、腾讯等
- 传统网络设备供应商:Arista、Cisco、Dell、Juniper、Ruijie等
- 白盒网络设备供应商:Celestica、Edgecore、Quanta等
- 新一代云网络供应商:Apstra、Asterfusion等
- 网络交换芯片供应商:Barefoot、Broadcom、Cavium、Centec、Innovium、Marvell、Mellanox等
可见,SONiC社区已经形成了从最低层芯片到最上层大规模用户的全面生态系统,这个生态系统从硬件芯片、系统架构、系统集成、大规模应用等各个层面促进着SONiC的发展与成熟。
AsterNOS网络操作系统
星融致力于为云计算时代的用户提供新一代云网络解决方案。
为了提供全开放、高性能、业务可视的云网络解决方案,星融以SONiC为内核,构建了新一代的网络操作系统——AsterNOS。
图4:AsterNOS整体架构
AsterNOS构建在标准的Linux内核与SONiC/SAI之上,基于SONiC的标准功能,星融为AsterNOS开发了一些增强特性??:
- 增加了VLAG、BGP EVPN、PICFA™、REST API等功能来提升系统整体可用性;
- 通过REST API将网络的所有能力开放出去,使系统能够被第三方云管平台集中管理、自动调用;
- 基于REST API提供了Web UI,让用户能够通过图形化的界面来操作和管理云网络;
- 应用编排、业务调度、资源管理、策略管理等运维和运营的增强特性,使系统能够支持云管理平台的业务统一规划、自动部署;
- 集成了Python、Ansible、NETCONF等DevOps工具,使得系统能够与DevOps平台自动对接;
- 开放标准的Docker容器环境,支持第三方应用直接在网络系统中运行。
另外值得一提的是,星融还为AsterNOS提供了可编程
- 基于可编程交换芯片的高性能硬件平台
- 统一控制器:Asteria SDN云网控制器(AFC)
AsterNOS、AFC和高性能的可编程硬件平台一起为云计算提供新一代的SDN云网络方案:
图5:星融云网络方案整体架构
星融积极回馈SONiC社区
秉承开源、开放的精神,星融积极回馈SONiC开源社区。
截至2020年4月,星融已经向社区贡献了多个Bug Fix,其中有21个通过社区评审,并被合并进入主线版本。
这21个Bug Fix具体如下:
20个针对SONiC系统,分布在路由协议(FRR、docker-fpm-frr、vrfmgrd)、应用模块(dhcp-relay、libteam、lldp)、VXLAN隧道(vxlanorch)、ACL模块(portsorch)、安全保护(copporch、ebtables)、服务质量保障(qosorch)、系统与配置管理(sonic-sfp、config、hostcfgd)、系统仿真(vstests)等模块。
除了上述Bug Fix以外,星融目前正在计划将自行开发的增强功能也贡献给SONiC社区,帮助社区进一步提升SONiC的可用性、易用性。
星融可以帮助企业用户使用SONiC
针对企业用户,在部署SONiC和基于SONiC进行的二次开发过程中遇到的一些难题,星融从以下几个方面,可以帮助企业用户顺利使用SONiC。
搭建本地Git仓库
很多企业用户通过github.com下载、编译SONiC源代码的过程并不顺利,往往会碰到无法连接、下载速度慢继而导致编译失败等问题。
针对这样的问题,星融在云端为企业用户搭建了位于本地的Git代码仓库,定时、自动地克隆源服务器上的相关内容以提供本地镜像,需要使用时只要连接到这个本地的Git代码仓库即可。
提供技术咨询服务
针对企业的生产环境,星融编制了全面的测试用例,在基于各种交换芯片的硬件平台上对SONiC系统中的各个软件模块进行了详尽的功能、集成、性能及压力测试,并且将测试过程中发现的问题修正后反馈给社区。
在这个过程中,星融积累了对SONiC系统的深刻理解,能够提供全方位的SONiC技术咨询服务,帮助企业用户清楚明白地使用SONiC。
提供一站式SONiC解决方案
对于希望使用原生SONiC的企业用户,星融能够帮助用户在选定的硬件平台上快速地完成开源、开放云网络系统的构建与部署;对于希望使用一站式解决方案的用户,星融可以基于AsterNOS、可编程交换硬件平台及AFC的支持,提供Turn-key方式的交付与部署,帮助用户轻松享受新一代的云网络技术为IT系统带来的“速度与便捷”。
功能与特性的定制开发
经过三年的发展,星融目前已经拥有了将近80名具备SONiC经验的开发/测试工程师,其中不乏具备架构能力的技术专家。因此,对于客户提出的针对网络的特殊功能需求,星融能够提供定制开发服务,将客户对需求的等待时间从18-24个月缩短到2-4周。