2. SONIC
有了 SAI, 这让网络操作系统不再关心底层怎么与专有硬件通信,操作系统厂商可以专注于网络操作系统的开发,其中以 SONIC 最为突出,他是 Microsoft/Azure 网络操作系统,由微软和多家厂商一起开发,并且开源。
2.1. 什么是SONIC?
SONiC 是一个基于 Linux 的开源网络操作系统,运行在多个供应商和 ASICs 的交换机上。SONiC 提供一整套网络功能,如 BGP 和 RDMA,这些功能在一些最大的云服务提供商的数据中心经过生产验证。它为团队提供了创建所需网络解决方案的灵活性,同时利用大型生态系统和社区的集体力量。
2.2. SONIC 系统架构[13]
SONIC 系统的体系结构由各种模块组成,这些模块通过一个集中的、可伸缩的基础设施彼此交互。这个基础结构依赖于 redis-database 引擎的使用: 键值数据库提供独立于语言的接口、数据持久性、复制和所有声音子系统之间的多进程通信的方法。
SONIC 通过依赖 redis-engine 基础结构提供的发布者/订阅者消息传递范式,应用程序可以只订阅它们所需的数据视图,并避免与其功能无关的实现细节。
SONIC 将每个模块放在独立的docker容器中,以保持语义仿射组件之间的高内聚性,同时减少脱节组件之间的耦合。每个组件都被编写为完全独立于平台特定的细节,而这些细节是与低层抽象交互所必需的。
SONIC 将其主要功能组件分解为以下 docker 容器:
- Dhcp-relay
- Pmon
- Snmp
- Lldp
- Bgp
- Teamd
- Database
- Swss
- Syncd
2.3. SONIC 的功能发展
我们来看一下 SONIC 的功能发展 (来源于 SONIC 官网) [14]
Release | Release Date | SAI version | Features Included |
SONiC.201705 | 5/15/2017 | 0.9.4 | BGP |
ECMP | |||
LAG | |||
LLDP | |||
QoS – ECN | |||
QoS – RDMA | |||
Priority Flow Control | |||
WRED | |||
COS | |||
SNMP | |||
Syslog | |||
Sysdump | |||
NTP | |||
COPP | |||
DHCP Relay Agent | |||
SONiC to SONiC upgrade | |||
Multiple Images support | |||
One Image | |||
SONiC.201709 | 9/15/2017 | 0.9.4 | VLAN |
ACL permit/deny | |||
IPv6 | |||
Tunnel Decap | |||
Mirroring | |||
Post Speed Setting | |||
BGP Graceful restart helper | |||
BGP MP | |||
SONiC.201712 | 12/15/2017 | 1 | Fast Reload |
SONiC Support SAI 1.0 | |||
TACACS+ | |||
LACP Fallback | |||
MTU Setting | |||
Vlan Trunk | |||
Static Port breakout1 | |||
Dynamic ACL Upgrade | |||
SWSS Unit Test Framework | |||
CobfigDB framework | |||
SONiC.201803 | 3/15/2018 | 1.2 | |
Critical Resource Monitoring | |||
MAC Aging | |||
IPv6 ACL | |||
BGP/Neighbor-down fib-accelerate | |||
PFC WD | |||
SONiC.201807 | 7/30/2018 | 1.3 | |
gRPC | |||
Dtel support | |||
SONiC Architecture and User Manual (Documentation) | |||
Sensor transceiver monitoring | |||
LLDP extended MIB: lldpremtable, lldplocporttable, lldpremmanaddrtable, lldplocmanaddrtable, lldplocporttable, lldpLocalSystemData | |||
SONiC.201811 | 11/30/2018 | 1.3 | Release Note |
Debian Kernel Upgrade to 4.9 | |||
Warm Reboot | |||
Incremental Config (IP, LAG, Port shut/unshut) | |||
Asymmetric PFC | |||
PFC Watermark | |||
Routing Stack Graceful Restart | |||
Basic VRF and L3 VXLAN | |||
SONiC.201904 | 4/30/2019 | 1.4 | Release Note |
FRR as default routing stack | |||
Upgrade each docker to stretch version | |||
Upgrade docker engine to 18.09 | |||
Everflow enhancement | |||
Egress ACL bug fix and ACL CLI enhancement | |||
L3 RIF counter support | |||
PMon Refactoring | |||
BGP-EVPN support(type 5), (related HLD Fpmsyncd,Vxlanmgr,template) | |||
Transceiver parameter tuning PR pending on CR sign off | |||
SONiC.201910 | 10/30/2019 | 1.5 | Progress Tracking |
ZTP – design review in progress | |||
BFD – SW – 100ms interval from FRR | |||
NAT | |||
STP/PVST | |||
Mgmt VRF | |||
Multi-DB optimization | |||
Test to Pytest | |||
sFlow | |||
Management Framework (Tentative ) | |||
Platform Driver Development Framework | |||
Build Improvements | |||
Error handling enhancements | |||
L2 functional and performance enhancements | |||
L3 perf enhancement | |||
BroadView BST | |||
VRF | |||
Configuration Validation | |||
Dynamic Break Out | |||
Platform APIs move to new APIs * | |||
Sub-port support | |||
Backlog | |||
CLI framework | |||
VRF (Taken) | |||
L3 MLAG (Taken) | |||
EVPN | |||
RDMA CLI enhancement | |||
Virtual path for streaming telemetry (pushed off) | |||
Management VRF (pushed off) | |||
Port and Vlan configuration and validation (TBD) |
3. 结束语
今天我们先聊这些,我们大致了解一下开放型网络包含的几个重要组件,开源软件的概念,开源的网络操作系统的概念,开放的计算硬件有何而来,软件定义网络的概念,但是开放型网络中还包含以下组件:
- 网络功能虚拟化
- 云计算
- 自动化
- 敏捷型开发方法和处理过程
SONIC 作为网络操作系统在其中扮演很重要的角色,如果想进一步了解 SONIC 子系统的各个功能以及逻辑,网络功能虚拟化,云计算,网络自动化,以及敏捷型开发方法和处理过程,请关注我们。
参考文献:
[1] https://en.wikipedia.org/wiki/Software-defined_networking
[2] https://en.wikipedia.org/wiki/Open_source
[3] https://en.wikipedia.org/wiki/Open-source_software
[4] https://www.opencompute.org/about
[5] https://aptira.com/what-is-open-networking/
[6] https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Open-Hardware-and-Open-Networking-Software-How-We-Got-Here-and-Where-We-are-Going-Steven-Noble-Big-Switch-Networks-_-NetDEF.pdf
[7] https://www.opencompute.org/wiki/Networking/ONIE
[8] https://www.openswitch.net/about/
[9] http://opennetlinux.org/
[10] https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Open-Hardware-and-Open-Networking-Software-How-We-Got-Here-and-Where-We-are-Going-Steven-Noble-Big-Switch-Networks-_-NetDEF.pdf
[11] https://events19.linuxfoundation.org/wp-content/uploads/2017/11/Open-Hardware-and-Open-Networking-Software-How-We-Got-Here-and-Where-We-are-Going-Steven-Noble-Big-Switch-Networks-_-NetDEF.pdf
[12] https://www.opencompute.org/documents/switch-abstraction-interface
[13] https://github.com/Azure/SONiC/wiki/Architecture
[14] https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning