SONiC開源操作系統(tǒng)日漸成為構(gòu)建開放網(wǎng)絡(luò)的鑰匙,而SAI則是實(shí)現(xiàn)鑰匙的標(biāo)準(zhǔn)模具,SONiC+SAI為開放網(wǎng)絡(luò)系統(tǒng)生態(tài)的建立開辟了光明之路。SONiC不僅僅在公有云數(shù)據(jù)中心的大有所為,在邊緣,私有云等場(chǎng)景下也極具潛力。
說到SONiC,就得不得不提到開源組織,開源項(xiàng)目分為很多組織,比如OCP、Linux foundation等,這些開源組織的覆蓋范圍也不同。
OCP在2011年成立,它的組織架構(gòu)下面分了很多工作組,包括:網(wǎng)絡(luò)工作組、服務(wù)器工作組、存儲(chǔ)工作組、機(jī)柜、供電等基礎(chǔ)設(shè)施工作組,還有邊緣工作組。
而SONiC就是在OCP開源組織中的網(wǎng)絡(luò)工作組,還有兩個(gè)項(xiàng)目也是關(guān)于SONiC的,一是SAI,交換機(jī)抽象接口,二是ONIE,ONIE實(shí)現(xiàn)交換機(jī)硬件和系統(tǒng)的解耦,支持在不同廠商的硬件上引導(dǎo)啟動(dòng)開源操作系統(tǒng),這也就是白盒的來源。
SONiC: Software for Open Networking in the Cloud
SONiC使用了大量現(xiàn)有的開源技術(shù):Docker、Redis、Quagga和LLDPD以及自動(dòng)化配置工具Ansible、Puppet和Chef等。SONiC是一個(gè)將傳統(tǒng)交換機(jī)操作系統(tǒng)軟件分解成多個(gè)容器化組件的創(chuàng)新方案,便于增加新的組件和功能。
SONiC 演進(jìn)的三個(gè)關(guān)鍵時(shí)間點(diǎn)
回顧SONiC系統(tǒng)的整個(gè)發(fā)展過程,這里簡(jiǎn)單劃分了三個(gè)時(shí)間點(diǎn):
2017年,從SONiC支持的功能上,BGP,ECMP成為數(shù)據(jù)中心的必備,還有QoS、IPv6、 VLAN等。另外,微軟很早就開始研究RDMA,為業(yè)界大規(guī)模落地RDMA網(wǎng)絡(luò)奠定了一定的基礎(chǔ)。
2018年,PFC Watch-Dog給RDMA網(wǎng)絡(luò)破除了PFC Dead-Lock的配套功能,另一個(gè)亮點(diǎn)是DTEL,也就是Telemetry。Warm Reboot也是一個(gè)很重要的點(diǎn),阿里的Demo的性能幾乎達(dá)到了1秒內(nèi)完成Reboot,與傳統(tǒng)的交換機(jī)系統(tǒng)重啟動(dòng)輒幾十秒完全不同,能夠極大減少對(duì)數(shù)據(jù)轉(zhuǎn)發(fā)的影響。
2019年,F(xiàn)RR成為了默認(rèn)的路由協(xié)議棧,這個(gè)路由協(xié)議棧也是開源的,支持BGP,OSPF,EVPN等協(xié)議。SONiC使用FRR,也間接說明了FRR在數(shù)據(jù)中心使用上穩(wěn)定性是沒問題的,當(dāng)然,部署越多,F(xiàn)RR也會(huì)越成熟。
SONiC系統(tǒng)架構(gòu)
SONiC與數(shù)據(jù)中心緊密相連,對(duì)數(shù)據(jù)中心的理解能夠幫助我們更好的體會(huì)到SONiC設(shè)計(jì)的簡(jiǎn)潔與優(yōu)美,前面提到SONiC用了很多開源技術(shù),SONiC能夠把如此多的開源技術(shù)運(yùn)用起來,并且大規(guī)模的網(wǎng)絡(luò)能夠穩(wěn)定運(yùn)行,這都得益于SONiC的架構(gòu)。
SONiC系統(tǒng)架構(gòu)是以Redis為中心的基于數(shù)據(jù)驅(qū)動(dòng)操作系統(tǒng),SWSS,BGP等都是在Container里面運(yùn)行。
往下是統(tǒng)一的SAI接口,能夠很好地屏蔽不同芯片廠商的SDK差異,這讓幾乎所有的交換芯片廠商都參與進(jìn)來并貢獻(xiàn)自己的成果。它的數(shù)據(jù)中心功能非常簡(jiǎn)化,主要包含port,interface,vlan等少量模塊。
在數(shù)據(jù)中心架構(gòu),還有一個(gè)特點(diǎn)就是解耦。應(yīng)用程序去配置APP_DB,同步到Orchestion模塊來解決下發(fā)數(shù)據(jù)之間的依賴關(guān)系,并配置SAI_DB,這里也有一層映射關(guān)系,并不是直接從Orchestion到SAI,而是由SYNCD最終來完成SAI API的調(diào)用。
綜上,SONiC的架構(gòu)具備兩個(gè)特點(diǎn):解耦合和特性精簡(jiǎn)。
數(shù)據(jù)庫驅(qū)動(dòng):以RedisDB為中心,將所有模塊之間的關(guān)聯(lián)解耦合;
軟件解耦合:用戶的進(jìn)程都運(yùn)行在容器中;
硬件解耦合:芯片層用的是統(tǒng)一的SAI接口,以屏蔽不同芯片廠商之間SDK的差異;
特性精簡(jiǎn):當(dāng)前僅滿足數(shù)據(jù)中心的應(yīng)用特性即可。
所以,SONiC系統(tǒng)架構(gòu)有很多優(yōu)點(diǎn),它能夠用快速迭代、快速測(cè)試、快速上線;并且數(shù)據(jù)轉(zhuǎn)發(fā)與應(yīng)用程序分離,warm reboot/update;各組件運(yùn)行在Docker中,各自有獨(dú)立的運(yùn)行環(huán)境,極大減少了相互的影響;另外,我們能像管理服務(wù)器一樣管理交換機(jī);SONiC還具有開放性:基于debian,易于擴(kuò)展,支持C、C++、python、go等語言。
當(dāng)然SONiC也有一定的缺點(diǎn),對(duì)比傳統(tǒng)交換機(jī)廠商的閉源實(shí)時(shí)操作系統(tǒng)的性能,SONiC對(duì)CPU內(nèi)存硬盤等系統(tǒng)硬件需求高,性能不夠硬件來湊。
SONiC與廠商支持
SONiC近年來一直是網(wǎng)絡(luò)的熱門,這離不開它背后眾多的用戶與廠商,國(guó)內(nèi)的包括阿里、騰訊、百度、滴滴、京東、美團(tuán)等,國(guó)外的有微軟、Facebook、領(lǐng)英等。
SONiC當(dāng)前的生態(tài)是非常開放的,具備大量的產(chǎn)業(yè)鏈合作伙伴,包括云計(jì)算、運(yùn)營(yíng)商、設(shè)備商以及大量的芯片廠商,基本上已經(jīng)??把產(chǎn)業(yè)進(jìn)行了重塑。最底下有芯片提供商,中間有一些設(shè)備商和ODM廠商,最上面是應(yīng)用方。該產(chǎn)業(yè)鏈在很多場(chǎng)景下并不是串聯(lián)的關(guān)系,這樣進(jìn)一步解耦產(chǎn)業(yè)鏈,就??可以帶來一個(gè)更好的??經(jīng)濟(jì)成本,??以及更快的迭代速度。
SONiC Microsoft部署
微軟的架構(gòu), T0和T1主要是盒式交換機(jī),T2和T3主要是框式交換機(jī)。第一步是在盒式交換機(jī)上完成了??SONiC的全面替代因?yàn)楹惺浇粨Q機(jī)對(duì)比框式交換機(jī)更簡(jiǎn)單。
當(dāng)前微軟已經(jīng)完成了百分之百的SONiC數(shù)據(jù)中心的替換,??它和以前傳統(tǒng)的交換機(jī)有非常大的不同:它的迭代的能力非常快速,基本上每天都會(huì)完成??幾千個(gè)交換機(jī)的升級(jí),每幾個(gè)月都會(huì)完成大版本的升級(jí)以及特性的增加,另外還將版本的增加時(shí)間由月變?yōu)榱酥?。這種快速迭代符合了當(dāng)前互聯(lián)網(wǎng)高速發(fā)展的趨勢(shì)。
SONiC Linkedin部署
Linkedin也完成了百分百的替換,而且還在上面做了一些增強(qiáng),包括FRR集成、IPv6 ACL、FIB加速、warm reboot協(xié)作以及一些安全的特性。
SONiC Alibaba部署
回到國(guó)內(nèi),SONiC已經(jīng)在阿里巴巴的DC集群里全線應(yīng)用了,??而且它把INT在現(xiàn)網(wǎng)中用起來了。??同時(shí)??也做了很多云業(yè)務(wù)之間的優(yōu)化等工作。??
SONiC Tencent部署
騰訊也進(jìn)行了全面的應(yīng)用,而且在這基礎(chǔ)上做了大量的擴(kuò)展,包括像NETsence和mod??等。
SONiC還有哪些工作計(jì)劃
我們?cè)谑褂盟伎圃O(shè)備時(shí),對(duì)于命令行操作網(wǎng)絡(luò)設(shè)備已經(jīng)很熟悉了,但SONiC是通過Json配置文件去Write DB來完成與交換機(jī)的交互,沒有命令行支持。對(duì)于這點(diǎn),有人認(rèn)為沒有命令行會(huì)不方便,也有人認(rèn)為SONiC都是自動(dòng)化去配置,不需要傳統(tǒng)人工CLI去配置,能夠解決人為的錯(cuò)誤操作帶來的網(wǎng)絡(luò)故障。那我們換個(gè)角度,如果只是開放一些Debug或者show的CLI呢,是不是兩全其美,既不會(huì)帶來人為配置風(fēng)險(xiǎn),用起來也很方便。
現(xiàn)在,SONiC每年有大量的會(huì)議、大量的社區(qū)成員、大量的活躍用戶,還有大量的支持平臺(tái),當(dāng)前ARM的生態(tài)也被考慮到社區(qū)里。關(guān)于SONiC有很多可以做的事情,很多可以發(fā)揮的地方,包括CPU平臺(tái)的開放性,應(yīng)用場(chǎng)景的開放性等。SONiC的架構(gòu)和生態(tài)既是優(yōu)勢(shì),也是未來演進(jìn)的動(dòng)力。