2.?SONIC
有了 SAI, 這讓網(wǎng)絡(luò)操作系統(tǒng)不再關(guān)心底層怎么與專有硬件通信,操作系統(tǒng)廠商可以專注于網(wǎng)絡(luò)操作系統(tǒng)的開(kāi)發(fā),其中以 SONIC 最為突出,他是 Microsoft/Azure 網(wǎng)絡(luò)操作系統(tǒng),由微軟和多家廠商一起開(kāi)發(fā),并且開(kāi)源。
2.1.?什么是SONIC?
SONiC 是一個(gè)基于 Linux 的開(kāi)源網(wǎng)絡(luò)操作系統(tǒng),運(yùn)行在多個(gè)供應(yīng)商和 ASICs 的交換機(jī)上。SONiC 提供一整套網(wǎng)絡(luò)功能,如 BGP 和 RDMA,這些功能在一些最大的云服務(wù)提供商的數(shù)據(jù)中心經(jīng)過(guò)生產(chǎn)驗(yàn)證。它為團(tuán)隊(duì)提供了創(chuàng)建所需網(wǎng)絡(luò)解決方案的靈活性,同時(shí)利用大型生態(tài)系統(tǒng)和社區(qū)的集體力量。
2.2.?SONIC 系統(tǒng)架構(gòu)[13]
SONIC 系統(tǒng)的體系結(jié)構(gòu)由各種模塊組成,這些模塊通過(guò)一個(gè)集中的、可伸縮的基礎(chǔ)設(shè)施彼此交互。這個(gè)基礎(chǔ)結(jié)構(gòu)依賴于 redis-database 引擎的使用: 鍵值數(shù)據(jù)庫(kù)提供獨(dú)立于語(yǔ)言的接口、數(shù)據(jù)持久性、復(fù)制和所有聲音子系統(tǒng)之間的多進(jìn)程通信的方法。
SONIC 通過(guò)依賴 redis-engine 基礎(chǔ)結(jié)構(gòu)提供的發(fā)布者/訂閱者消息傳遞范式,應(yīng)用程序可以只訂閱它們所需的數(shù)據(jù)視圖,并避免與其功能無(wú)關(guān)的實(shí)現(xiàn)細(xì)節(jié)。
SONIC 將每個(gè)模塊放在獨(dú)立的docker容器中,以保持語(yǔ)義仿射組件之間的高內(nèi)聚性,同時(shí)減少脫節(jié)組件之間的耦合。每個(gè)組件都被編寫為完全獨(dú)立于平臺(tái)特定的細(xì)節(jié),而這些細(xì)節(jié)是與低層抽象交互所必需的。
SONIC 將其主要功能組件分解為以下 docker 容器:
- Dhcp-relay
- Pmon
- Snmp
- Lldp
- Bgp
- Teamd
- Database
- Swss
- Syncd
2.3.?SONIC 的功能發(fā)展
我們來(lái)看一下 SONIC 的功能發(fā)展 (來(lái)源于 SONIC 官網(wǎng)) [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. 結(jié)束語(yǔ)
今天我們先聊這些,我們大致了解一下開(kāi)放型網(wǎng)絡(luò)包含的幾個(gè)重要組件,開(kāi)源軟件的概念,開(kāi)源的網(wǎng)絡(luò)操作系統(tǒng)的概念,開(kāi)放的計(jì)算硬件有何而來(lái),軟件定義網(wǎng)絡(luò)的概念,但是開(kāi)放型網(wǎng)絡(luò)中還包含以下組件:
- 網(wǎng)絡(luò)功能虛擬化
- 云計(jì)算
- 自動(dòng)化
- 敏捷型開(kāi)發(fā)方法和處理過(guò)程
SONIC 作為網(wǎng)絡(luò)操作系統(tǒng)在其中扮演很重要的角色,如果想進(jìn)一步了解 SONIC 子系統(tǒng)的各個(gè)功能以及邏輯,網(wǎng)絡(luò)功能虛擬化,云計(jì)算,網(wǎng)絡(luò)自動(dòng)化,以及敏捷型開(kāi)發(fā)方法和處理過(guò)程,請(qǐng)關(guān)注我們。
參考文獻(xiàn):
[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