編者按:微軟交換機(jī)操作系統(tǒng)開(kāi)源項(xiàng)目 SONiC (Software for Open Networking in the Cloud) 在微軟 Azure 數(shù)據(jù)中心里已經(jīng)大規(guī)模部署,但如何在高層的 Chassis Switch 上部署 SONiC 仍然是一個(gè)挑戰(zhàn)。為此,微軟亞洲研究院和 Azure 網(wǎng)絡(luò)產(chǎn)品部門合作,成功構(gòu)建了第一個(gè) SONiC Chassis 原型系統(tǒng),它的背后蘊(yùn)藏著研究者們歷經(jīng)十年的不懈探索。
隨著云計(jì)算時(shí)代的到來(lái),各大公司在全球不斷建設(shè)數(shù)據(jù)中心,來(lái)支撐飛速增長(zhǎng)的云計(jì)算業(yè)務(wù)。2011 年,由 Facebook 等公司發(fā)起了一個(gè)非營(yíng)利組織——開(kāi)放計(jì)算項(xiàng)目(Open Compute Project, OCP),旨在通過(guò)開(kāi)源的方式,重構(gòu)數(shù)據(jù)中心的下一代硬件,發(fā)展面向下一代數(shù)據(jù)中心的服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)、基礎(chǔ)設(shè)施等創(chuàng)新硬件。
OCP 是目前世界上計(jì)算基礎(chǔ)硬件方向覆蓋范圍最廣、影響力最大的組織之一,成員包括 Facebook、微軟、谷歌、英特爾、AMD、阿里巴巴、騰訊、百度和華為等公司。
在數(shù)據(jù)中心里,數(shù)以萬(wàn)計(jì)的服務(wù)器由無(wú)數(shù)的交換機(jī)連接起來(lái),構(gòu)成了一個(gè)高帶寬、低延遲的網(wǎng)絡(luò)。眾所周知,云計(jì)算業(yè)務(wù)對(duì)于可靠性有非常高的要求,這要求網(wǎng)絡(luò)的運(yùn)維人員,必須對(duì)交換機(jī)做到高度的可控制、可管理,能夠時(shí)刻了解網(wǎng)絡(luò)發(fā)生了什么,在出現(xiàn)故障的時(shí)候必須快速定位和排除故障。
此外,新的云計(jì)算業(yè)務(wù),也對(duì)交換機(jī)不斷提出新的功能需求,這就要求網(wǎng)絡(luò)的開(kāi)發(fā)人員能在短時(shí)內(nèi)實(shí)現(xiàn)新的交換機(jī)功能并部署上線。在這些新的挑戰(zhàn)和要求面前,傳統(tǒng)交換機(jī)廠商的設(shè)備已經(jīng)顯得越來(lái)越力不從心,因此,各大云計(jì)算廠商紛紛開(kāi)始了自己的交換機(jī)自研之旅。
SONiC Chassis
作為 OCP 合作項(xiàng)目的一部分,微軟在 2016 年 OCP 峰會(huì)上發(fā)布了交換機(jī)操作系統(tǒng)開(kāi)源項(xiàng)目 SONiC (Software for Open Networking in the Cloud)。該項(xiàng)目利用交換機(jī)抽象接口(Switch Abstraction Interface, SAI)為不同的交換芯片提供了統(tǒng)一的管理和操作接口,并將交換機(jī)軟件分解為多個(gè)容器模塊,來(lái)加速軟件的迭代開(kāi)發(fā),如圖1。SONiC 得到了很多云計(jì)算、交換機(jī)和芯片廠商的響應(yīng),目前的開(kāi)源社區(qū)成員包括微軟、阿里巴巴、騰訊這樣的云計(jì)算廠商以及 Mellanox、思科、Arista 這樣的交換機(jī)和芯片廠商。
圖1: SONiC 系統(tǒng)架構(gòu)
目前,SONiC 在微軟 Azure 數(shù)據(jù)中心里已經(jīng)得到了大規(guī)模的部署(如圖 2 所示)。然而,目前 SONiC 的部署局限在 T0 和 T1 這兩層的交換機(jī)(Switch)上,如何在高層(T2/T3)的 Chassis Switch 上部署 SONiC 仍然是一個(gè)巨大的挑戰(zhàn)。因此,微軟 Azure 網(wǎng)絡(luò)產(chǎn)品部門和微軟亞洲研究院系統(tǒng)與網(wǎng)絡(luò)組于 2018 年 9 月啟動(dòng)了 SONiC Chassis 的合作研究項(xiàng)目,來(lái)設(shè)計(jì)支持 SONiC 的 Chassis Switch。
圖2: SONiC 在微軟的數(shù)據(jù)中心內(nèi)的部署情況
傳統(tǒng)的 Chassis Switch 架構(gòu)其實(shí)是由多個(gè)交換機(jī)芯片構(gòu)成的(見(jiàn)圖 3 示例)。前端芯片和后端芯片是靠一個(gè)特殊的基于 Cell(交換機(jī)芯片內(nèi)部一種固定長(zhǎng)度的數(shù)據(jù)單元)交換(Cell Switching)的無(wú)損(Lossless)網(wǎng)絡(luò)連接起來(lái)的。
目前,Chassis Switch 內(nèi)部的 Cell 網(wǎng)絡(luò)并沒(méi)有公開(kāi)的拓?fù)浜吐酚蓸?biāo)準(zhǔn)。不同芯片廠商的 Chassis Switch 內(nèi)部 Cell 網(wǎng)絡(luò)的實(shí)現(xiàn)也不盡相同,且細(xì)節(jié)并不公開(kāi),可以說(shuō)是不折不扣的黑盒子。在這種不透明的情況下,網(wǎng)管們很難用 SONiC 來(lái)管理 Chassis Switch,也無(wú)法發(fā)現(xiàn)和診斷 Chassis 內(nèi)部出現(xiàn)的網(wǎng)絡(luò)問(wèn)題。
圖3: 傳統(tǒng) Chassis Switch 的內(nèi)部架構(gòu)
為了讓 SONiC 能夠運(yùn)行在 Chassis Switch 上,我們首先要把 Chassis Switch 變成網(wǎng)管們熟悉的白盒子。和傳統(tǒng) Chassis Switch 一樣,SONiC Chassis 依然由多塊交換芯片構(gòu)成。但不同的是,我們用標(biāo)準(zhǔn)的(二層)Clos 以太網(wǎng)(Ethernet Network)來(lái)連接這些芯片(如圖 4 所示)。
Clos 以太網(wǎng)是當(dāng)今數(shù)據(jù)中心的標(biāo)準(zhǔn)架構(gòu)。這樣,網(wǎng)管們可以輕松地把數(shù)據(jù)中心網(wǎng)絡(luò)的大量成熟技術(shù)(比如控制平面協(xié)議、流控機(jī)制和故障診斷技術(shù))和運(yùn)維管理經(jīng)驗(yàn)直接移植到 Chassis 內(nèi)部網(wǎng)絡(luò)上來(lái)。
圖4: SONiC Chassis 的內(nèi)部網(wǎng)絡(luò)拓?fù)?/p>
在拓?fù)錄Q定了后,下一個(gè)挑戰(zhàn)是 Chassis 內(nèi)部的控制平面(Control Plane)。SONiC Chassis 的每個(gè)芯片上都運(yùn)行了一個(gè) SONiC 實(shí)例(Instance),并采用了 BGP-EVPN 作為控制平面協(xié)議。前端芯片上的 SONiC 通過(guò) BGP-EVPN 直接互相交換外部的路由信息,而不涉及后端芯片上的 SONiC。這樣,我們僅需要在前端采用比較昂貴的大路由表芯片,而可以在后端芯片的選擇上擁有更多的選擇。比如,后端可以選擇高端口密度(High Port Density)小路由表的芯片,來(lái)提升整個(gè) SONIC Chassis Switch 的端口密度。
為了配合 BGP-EVPN,SONiC Chassis 內(nèi)部采用一種標(biāo)準(zhǔn)的網(wǎng)絡(luò)虛擬化技術(shù) — VXLAN(Virtual eXtensible Local Area Network) 。每一個(gè)前端芯片都是一個(gè) VXLAN 隧道節(jié)點(diǎn)(VXLAN Tunnel End Point, VTEP),進(jìn)出 Chassis 的數(shù)據(jù)包會(huì)被前端芯片添加/挪走 VXLAN 頭。在不知道外部的路由信息的情況下,后端芯片只需要根據(jù)數(shù)據(jù)包的 VXLAN 頭部信息,將數(shù)據(jù)包轉(zhuǎn)發(fā)至正確的前端芯片即可,如圖 5 所示。
圖5: SONiC Chassis 的控制平面,在這個(gè)例子里,VTEP1 上的 SONiC 直接把 10.0.1.0/24 的路由信息發(fā)送給了 VTEP6 上的 SONiC。
經(jīng)過(guò)歷時(shí)近半年的緊密合作,微軟亞洲研究院和 Azure 網(wǎng)絡(luò)產(chǎn)品部門在今年 2 月聯(lián)合構(gòu)建了第一個(gè) SONiC Chassis 的原型系統(tǒng),并且在 3 月的 OCP 全球峰會(huì)上進(jìn)行了展示,得到了工業(yè)界的廣泛關(guān)注。
目前,我們正在繼續(xù)解決 SONiC Chassis 中的一些關(guān)鍵技術(shù)問(wèn)題(比如 Chassis 內(nèi)部的擁塞控制以及故障監(jiān)控診斷機(jī)制),爭(zhēng)取早日將 SONiC Chassis 部署到微軟的數(shù)據(jù)中心中。
圖6: SONiC Chassis 的原型系統(tǒng),展示于 2019 年 3 月 OCP 全球峰會(huì)上
從 ServerSwitch 到 SONiC Chassis: 十年如一日的堅(jiān)持
“在 SONiC Chassis 項(xiàng)目的背后,其實(shí)是我們?cè)跀?shù)據(jù)中心交換機(jī)技術(shù)上十年的曲折探索歷程。”已經(jīng)在微軟亞洲研究院工作了 16 年的資深研究員熊勇強(qiáng)介紹道。“早在十年前,我們希望為 BCube 和 DCell 這樣以服務(wù)器為核心的數(shù)據(jù)中心架構(gòu)實(shí)現(xiàn)高性能的轉(zhuǎn)發(fā)引擎,所以我們啟動(dòng)了 ServerSwitch 項(xiàng)目。”
圖7: ServerSwitch 架構(gòu)
ServerSwitch 將商用的交換機(jī)芯片和服務(wù)器通過(guò)高帶寬的 PCI-E 接口連接起來(lái),充分挖掘了交換機(jī)芯片和 CPU 的可編程能力,實(shí)現(xiàn)了一個(gè)高性能可編程的平臺(tái)。在 2011 年,ServerSwitch 論文發(fā)表在計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)的頂級(jí)會(huì)議 USENIX Symposium on Networked Systems Design and Implementation (NSDI) 上,并獲得最佳論文獎(jiǎng)。
然而,這樣一個(gè)在學(xué)術(shù)界大受歡迎的工作,在微軟內(nèi)部的落地卻幾經(jīng)波折。“我們雖然基于 ServerSwitch 做了一些新穎的應(yīng)用,比如利用主機(jī)的大內(nèi)存來(lái)緩存交換機(jī)芯片無(wú)法吸收的數(shù)據(jù)包,但是離生產(chǎn)環(huán)境的需求還是有不小的距離。”熊勇強(qiáng)不無(wú)感慨地說(shuō)。“在 2012 年和 2013 年的時(shí)候,我們希望可以把 Azure 網(wǎng)絡(luò)的 Generic Flow Table (GFT) 卸載到 ServerSwitch 平臺(tái)上,并且做了很多努力,設(shè)計(jì)并實(shí)現(xiàn)了 40G ServerSwitch 系統(tǒng)。然而由于交換機(jī)芯片的流表資源的限制以及功耗問(wèn)題,產(chǎn)品部門最終還是選擇了 FPGA”。
轉(zhuǎn)機(jī)發(fā)生在 2013 年,ServerSwitch 的核心開(kāi)發(fā)者呂國(guó)晗(現(xiàn)微軟 SONiC 項(xiàng)目首席開(kāi)發(fā)經(jīng)理)加入了 Azure 網(wǎng)絡(luò)產(chǎn)品部門。于是微軟亞洲研究院和 Azure 網(wǎng)絡(luò)產(chǎn)品部門開(kāi)啟了 Azure Cloud Switch(ACS)的合作項(xiàng)目,旨在設(shè)計(jì)一個(gè)跨平臺(tái)模塊化的交換機(jī)操作系統(tǒng)。這可能也是微軟在自研交換機(jī)操作系統(tǒng)上最早的嘗試。
圖8: ServerSwitch
就在大家滿心歡喜的時(shí)候,命運(yùn)卻開(kāi)了一個(gè)不大不小的玩笑。ACS 最初是基于微軟公司的 Windows 平臺(tái)開(kāi)發(fā)的,就在 ACS Windows 原型系統(tǒng)即將大功告成之際,微軟開(kāi)始積極擁抱 Linux 和開(kāi)源系統(tǒng),而 Windows 并非是開(kāi)源網(wǎng)絡(luò)系統(tǒng)中的主流操作系統(tǒng),因此 Azure 網(wǎng)絡(luò)產(chǎn)品部門的負(fù)責(zé)人 Albert Greenberg 立刻叫停 ACS Windows 開(kāi)發(fā),轉(zhuǎn)向 Linux,也就是今天的 SONiC 項(xiàng)目。
“那個(gè)時(shí)候,大家在 ACS Windows 上已經(jīng)投入了巨大的心血,突然知道項(xiàng)目被叫停,都十分無(wú)奈和沮喪。”熊勇強(qiáng)回憶到。“但是不得不說(shuō),投身 Linux 確實(shí)是一個(gè)十分明智的決定。Linux 的開(kāi)源生態(tài)對(duì)于 SONiC 來(lái)說(shuō)是至關(guān)重要的。”
目前,SONiC 的合作伙伴生態(tài)系統(tǒng)涵蓋了業(yè)界主流的軟硬件廠商。其開(kāi)放性讓用戶有了多樣性的選擇,合作伙伴可以根據(jù)網(wǎng)絡(luò)需求自由選擇硬件和軟件。而合作伙伴的加入,也進(jìn)一步推動(dòng)了 SONiC 生態(tài)的完善。
回顧過(guò)去十年的探索歷程,微軟亞洲研究院的網(wǎng)絡(luò)研究者們經(jīng)歷了頂級(jí)會(huì)議上榮獲最佳論文的興奮,技術(shù)落地受挫的懊惱,項(xiàng)目最后一刻被叫停的無(wú)奈,直到今天獲得階段性成果的欣喜。他們的探索之旅依然在繼續(xù)。