淺談數(shù)據(jù)中心SONiC開源操作系統(tǒng)

SDNLAB
SDNLAB
SONiC開源操作系統(tǒng)日漸成為構(gòu)建開放網(wǎng)絡的鑰匙,而SAI則是實現(xiàn)鑰匙的標準模具,SONiC+SAI為開放網(wǎng)絡系統(tǒng)生態(tài)的建立開辟了光明之路。SONiC不僅僅在公有云數(shù)據(jù)中心的大有所為,在邊緣,私有云等場景下也極具潛力。

SONiC開源操作系統(tǒng)日漸成為構(gòu)建開放網(wǎng)絡的鑰匙,而SAI則是實現(xiàn)鑰匙的標準模具,SONiC+SAI為開放網(wǎng)絡系統(tǒng)生態(tài)的建立開辟了光明之路。SONiC不僅僅在公有云數(shù)據(jù)中心的大有所為,在邊緣,私有云等場景下也極具潛力。

說到SONiC,就得不得不提到開源組織,開源項目分為很多組織,比如OCP、Linux foundation等,這些開源組織的覆蓋范圍也不同。

OCP在2011年成立,它的組織架構(gòu)下面分了很多工作組,包括:網(wǎng)絡工作組、服務器工作組、存儲工作組、機柜、供電等基礎(chǔ)設(shè)施工作組,還有邊緣工作組。

而SONiC就是在OCP開源組織中的網(wǎng)絡工作組,還有兩個項目也是關(guān)于SONiC的,一是SAI,交換機抽象接口,二是ONIE,ONIE實現(xiàn)交換機硬件和系統(tǒng)的解耦,支持在不同廠商的硬件上引導啟動開源操作系統(tǒng),這也就是白盒的來源。

SONiC: Software for Open Networking in the Cloud

SONiC使用了大量現(xiàn)有的開源技術(shù):Docker、Redis、Quagga和LLDPD以及自動化配置工具Ansible、Puppet和Chef等。SONiC是一個將傳統(tǒng)交換機操作系統(tǒng)軟件分解成多個容器化組件的創(chuàng)新方案,便于增加新的組件和功能。

SONiC 演進的三個關(guān)鍵時間點

回顧SONiC系統(tǒng)的整個發(fā)展過程,這里簡單劃分了三個時間點:

2017年,從SONiC支持的功能上,BGP,ECMP成為數(shù)據(jù)中心的必備,還有QoS、IPv6、 VLAN等。另外,微軟很早就開始研究RDMA,為業(yè)界大規(guī)模落地RDMA網(wǎng)絡奠定了一定的基礎(chǔ)。

2018年,PFC Watch-Dog給RDMA網(wǎng)絡破除了PFC Dead-Lock的配套功能,另一個亮點是DTEL,也就是Telemetry。Warm Reboot也是一個很重要的點,阿里的Demo的性能幾乎達到了1秒內(nèi)完成Reboot,與傳統(tǒng)的交換機系統(tǒng)重啟動輒幾十秒完全不同,能夠極大減少對數(shù)據(jù)轉(zhuǎn)發(fā)的影響。

2019年,F(xiàn)RR成為了默認的路由協(xié)議棧,這個路由協(xié)議棧也是開源的,支持BGP,OSPF,EVPN等協(xié)議。SONiC使用FRR,也間接說明了FRR在數(shù)據(jù)中心使用上穩(wěn)定性是沒問題的,當然,部署越多,F(xiàn)RR也會越成熟。

SONiC系統(tǒng)架構(gòu)

SONiC與數(shù)據(jù)中心緊密相連,對數(shù)據(jù)中心的理解能夠幫助我們更好的體會到SONiC設(shè)計的簡潔與優(yōu)美,前面提到SONiC用了很多開源技術(shù),SONiC能夠把如此多的開源技術(shù)運用起來,并且大規(guī)模的網(wǎng)絡能夠穩(wěn)定運行,這都得益于SONiC的架構(gòu)。

SONiC系統(tǒng)架構(gòu)是以Redis為中心的基于數(shù)據(jù)驅(qū)動操作系統(tǒng),SWSS,BGP等都是在Container里面運行。

往下是統(tǒng)一的SAI接口,能夠很好地屏蔽不同芯片廠商的SDK差異,這讓幾乎所有的交換芯片廠商都參與進來并貢獻自己的成果。它的數(shù)據(jù)中心功能非常簡化,主要包含port,interface,vlan等少量模塊。

在數(shù)據(jù)中心架構(gòu),還有一個特點就是解耦。應用程序去配置APP_DB,同步到Orchestion模塊來解決下發(fā)數(shù)據(jù)之間的依賴關(guān)系,并配置SAI_DB,這里也有一層映射關(guān)系,并不是直接從Orchestion到SAI,而是由SYNCD最終來完成SAI API的調(diào)用。

綜上,SONiC的架構(gòu)具備兩個特點:解耦合和特性精簡。

數(shù)據(jù)庫驅(qū)動:以RedisDB為中心,將所有模塊之間的關(guān)聯(lián)解耦合;

軟件解耦合:用戶的進程都運行在容器中;

硬件解耦合:芯片層用的是統(tǒng)一的SAI接口,以屏蔽不同芯片廠商之間SDK的差異;

特性精簡:當前僅滿足數(shù)據(jù)中心的應用特性即可。

所以,SONiC系統(tǒng)架構(gòu)有很多優(yōu)點,它能夠用快速迭代、快速測試、快速上線;并且數(shù)據(jù)轉(zhuǎn)發(fā)與應用程序分離,warm reboot/update;各組件運行在Docker中,各自有獨立的運行環(huán)境,極大減少了相互的影響;另外,我們能像管理服務器一樣管理交換機;SONiC還具有開放性:基于debian,易于擴展,支持C、C++、python、go等語言。

當然SONiC也有一定的缺點,對比傳統(tǒng)交換機廠商的閉源實時操作系統(tǒng)的性能,SONiC對CPU內(nèi)存硬盤等系統(tǒng)硬件需求高,性能不夠硬件來湊。

SONiC與廠商支持

SONiC近年來一直是網(wǎng)絡的熱門,這離不開它背后眾多的用戶與廠商,國內(nèi)的包括阿里、騰訊、百度、滴滴、京東、美團等,國外的有微軟、Facebook、領(lǐng)英等。

SONiC當前的生態(tài)是非常開放的,具備大量的產(chǎn)業(yè)鏈合作伙伴,包括云計算、運營商、設(shè)備商以及大量的芯片廠商,基本上已經(jīng)??把產(chǎn)業(yè)進行了重塑。最底下有芯片提供商,中間有一些設(shè)備商和ODM廠商,最上面是應用方。該產(chǎn)業(yè)鏈在很多場景下并不是串聯(lián)的關(guān)系,這樣進一步解耦產(chǎn)業(yè)鏈,就??可以帶來一個更好的??經(jīng)濟成本,??以及更快的迭代速度。

SONiC Microsoft部署

微軟的架構(gòu), T0和T1主要是盒式交換機,T2和T3主要是框式交換機。第一步是在盒式交換機上完成了??SONiC的全面替代因為盒式交換機對比框式交換機更簡單。

當前微軟已經(jīng)完成了百分之百的SONiC數(shù)據(jù)中心的替換,??它和以前傳統(tǒng)的交換機有非常大的不同:它的迭代的能力非??焖?,基本上每天都會完成??幾千個交換機的升級,每幾個月都會完成大版本的升級以及特性的增加,另外還將版本的增加時間由月變?yōu)榱酥堋_@種快速迭代符合了當前互聯(lián)網(wǎng)高速發(fā)展的趨勢。

SONiC Linkedin部署

Linkedin也完成了百分百的替換,而且還在上面做了一些增強,包括FRR集成、IPv6 ACL、FIB加速、warm reboot協(xié)作以及一些安全的特性。

SONiC Alibaba部署

回到國內(nèi),SONiC已經(jīng)在阿里巴巴的DC集群里全線應用了,??而且它把INT在現(xiàn)網(wǎng)中用起來了。??同時??也做了很多云業(yè)務之間的優(yōu)化等工作。??

SONiC Tencent部署

騰訊也進行了全面的應用,而且在這基礎(chǔ)上做了大量的擴展,包括像NETsence和mod??等。

SONiC還有哪些工作計劃

我們在使用思科設(shè)備時,對于命令行操作網(wǎng)絡設(shè)備已經(jīng)很熟悉了,但SONiC是通過Json配置文件去Write DB來完成與交換機的交互,沒有命令行支持。對于這點,有人認為沒有命令行會不方便,也有人認為SONiC都是自動化去配置,不需要傳統(tǒng)人工CLI去配置,能夠解決人為的錯誤操作帶來的網(wǎng)絡故障。那我們換個角度,如果只是開放一些Debug或者show的CLI呢,是不是兩全其美,既不會帶來人為配置風險,用起來也很方便。

現(xiàn)在,SONiC每年有大量的會議、大量的社區(qū)成員、大量的活躍用戶,還有大量的支持平臺,當前ARM的生態(tài)也被考慮到社區(qū)里。關(guān)于SONiC有很多可以做的事情,很多可以發(fā)揮的地方,包括CPU平臺的開放性,應用場景的開放性等。SONiC的架構(gòu)和生態(tài)既是優(yōu)勢,也是未來演進的動力。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論