SONiC(Software for Open Networking in the Cloud,云中開(kāi)放網(wǎng)絡(luò)軟件)是一個(gè)基于 Linux 的開(kāi)源網(wǎng)絡(luò)操作系統(tǒng) (NOS),旨在為現(xiàn)代網(wǎng)絡(luò)環(huán)境帶來(lái)靈活性和效率。與傳統(tǒng)的專(zhuān)有網(wǎng)絡(luò)操作系統(tǒng)相比,SONiC的核心思想是引入開(kāi)放網(wǎng)絡(luò)原則,即將硬件與軟件解耦,使得網(wǎng)絡(luò)設(shè)備的操作系統(tǒng)可以在各種硬件平臺(tái)上運(yùn)行,從而促進(jìn)了互操作性。SONiC是最受歡迎的網(wǎng)絡(luò)開(kāi)源項(xiàng)目之一。 SONiC-DASH是SONiC NOS的擴(kuò)展,全稱(chēng)為Disaggregated API for SONiC Hosts,簡(jiǎn)稱(chēng)DASH。它是一款開(kāi)源軟件,旨在利用各種智能網(wǎng)卡(SmartNIC)、智能交換機(jī)(SmartSwitch)、數(shù)據(jù)處理單元(DPU)、IPU、加速器和其他網(wǎng)絡(luò)設(shè)備,為云應(yīng)用提供企業(yè)級(jí)網(wǎng)絡(luò)性能。
DASH的設(shè)計(jì)目標(biāo)是將SONiC擴(kuò)展到標(biāo)準(zhǔn)功能之外,允許在邊緣或者定制網(wǎng)絡(luò)路徑上使用。通過(guò)DASH,管理員能夠利用外部處理元件來(lái)卸載CPU并加速各種任務(wù),例如人工智能/機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、深度數(shù)據(jù)包檢測(cè)、媒體和信號(hào)處理、虛擬現(xiàn)實(shí)以及科學(xué)和軍事應(yīng)用等。DASH還提供了一個(gè)框架,用于編寫(xiě)這些服務(wù)的行為模型,以及測(cè)試用例。 DASH 的主要目標(biāo)是讓可編程技術(shù)足夠具體,以?xún)?yōu)化網(wǎng)絡(luò)性能并充分利用商用硬件技術(shù),從而實(shí)現(xiàn)10倍甚至100倍的狀態(tài)連接性能。
SONiC 和 DASH 架構(gòu)
SONiC 是一款專(zhuān)為交換機(jī)(包括TOR交換機(jī)、spine交換機(jī)和邊界leaf交換機(jī))量身定制的網(wǎng)絡(luò)操作系統(tǒng),為網(wǎng)絡(luò)設(shè)備管理提供了強(qiáng)大的框架,實(shí)現(xiàn)了網(wǎng)絡(luò)操作的可編程性和自動(dòng)化。 另一方面,DASH主要運(yùn)行在智能設(shè)備上,專(zhuān)注于從CPU上卸載處理任務(wù)以提升任務(wù)加速。DASH 利用 SONiC 提供的現(xiàn)有 API 擴(kuò)展其功能來(lái)與基于 SONiC 的網(wǎng)絡(luò)環(huán)境集成。 DASH 建立在 SONiC 的基礎(chǔ)系統(tǒng)架構(gòu)之上。它仍然依賴(lài)于 redis-db 作為數(shù)據(jù)和模塊的中心點(diǎn),這些數(shù)據(jù)和模塊打包到容器中,發(fā)布/訂閱數(shù)據(jù)并與外部環(huán)境進(jìn)行交互。DASH 由 SONiC 模塊組成,并進(jìn)行了一些擴(kuò)展,可以與現(xiàn)有 SONiC 生態(tài)系統(tǒng)無(wú)縫集成。 下圖展示了 DASH 擴(kuò)展或添加的模塊以及它們之間的交互:
圖 1:SONiC 和 DASH 架構(gòu) 如果我們將 DASH 視為與外部環(huán)境交互的黑盒軟件,則會(huì)涉及兩個(gè)主要組件用于通信。第一個(gè)是北向API,稱(chēng)為DASH API,它方便SDN控制器對(duì)DASH的管理。第二個(gè)是南向 API,它是一種擴(kuò)展的 SAI API(交換機(jī)抽象接口 API),提供獨(dú)立于供應(yīng)商的機(jī)制來(lái)控制轉(zhuǎn)發(fā)元件。 DASH擴(kuò)展的組件:
gNMI容器:負(fù)責(zé)實(shí)現(xiàn)gNMI協(xié)議的組件,基于gRPC和Protocol Buffers。它支持使用基于 gNMI 的網(wǎng)絡(luò)管理工具和平臺(tái)遠(yuǎn)程管理和配置 SONiC-DASH 設(shè)備。
Redis DB:主要用于存儲(chǔ)實(shí)時(shí)操作數(shù)據(jù)以及SONiC生態(tài)系統(tǒng)內(nèi)各個(gè)組件之間的通信。
orchagent:負(fù)責(zé)將高級(jí)配置轉(zhuǎn)換為低級(jí)操作的關(guān)鍵組件。Orchagent 抽象了網(wǎng)絡(luò)設(shè)備配置,使 SONiC 能夠通過(guò)與 SAI API 接口在各種硬件平臺(tái)上無(wú)縫工作,SAI API 提供了用于訪問(wèn)特定于硬件的功能的標(biāo)準(zhǔn)化接口。
交換機(jī)抽象接口(SAI)API:提供標(biāo)準(zhǔn)化編程接口,抽象不同底層交換ASIC和硬件平臺(tái)的功能。
DASH 配置由 SDN 控制器編排,管理基礎(chǔ)設(shè)施物理層(underlay)之上建立的overlay層。SDN 控制器和 DASH 設(shè)備之間的通信通過(guò)托管在新 SONiC-DASH 容器內(nèi)的基于 gRPC 的 gNMI 端點(diǎn)進(jìn)行。在 DASH 容器中,在 gNMI 中建模的 SDN 配置被轉(zhuǎn)換為 Redis DB 中的 DASH_APP_DB 對(duì)象。
隨后,交換機(jī)狀態(tài)服務(wù) (SWSS) 容器內(nèi)的 SONiC orchagent得到增強(qiáng),可將這些對(duì)象轉(zhuǎn)換和解釋為 ASIC_DB 對(duì)象,包括新引入的 DASH 特定 SAI 對(duì)象。然后,改進(jìn)的syncd利用供應(yīng)商特定的SAI 庫(kù)來(lái)配置數(shù)據(jù)平面。
DASH管道
DASH 在傳統(tǒng) SONiC 管理的底層基礎(chǔ)設(shè)施之上建立了overlay服務(wù)。這種overlay服務(wù)或應(yīng)用利用管道作為自適應(yīng)處理單元,允許創(chuàng)建自定義處理邏輯,每個(gè)階段都描述了一系列表,表項(xiàng)根據(jù)指定的標(biāo)準(zhǔn)匹配數(shù)據(jù)包并執(zhí)行相應(yīng)的操作。這些管道位于數(shù)據(jù)平面(例如SmartNIC, DPU),支持動(dòng)態(tài)配置。 此外,還可以對(duì)管道進(jìn)行編程,以動(dòng)態(tài)適應(yīng)不斷變化的網(wǎng)絡(luò)需求。這種靈活性支持定義針對(duì)特定數(shù)據(jù)包行為的操作,如丟棄、轉(zhuǎn)發(fā)、修改或保存。例如,入站數(shù)據(jù)包處理管道可以管理發(fā)往虛擬網(wǎng)絡(luò) (VNET) 內(nèi)的虛擬機(jī) (VM) 的流量。
圖2:入站數(shù)據(jù)包處理管道 DASH 是一個(gè)相對(duì)較新的項(xiàng)目,目前已經(jīng)為云提供了一些初始服務(wù)。 以下是支持的應(yīng)用程序:
VNET 到 VNET - 允許 VNET 中的 VM 到 VM 通信、路由支持、LPM 支持、ACL 支持;
VNET 對(duì)等互連 - 連接兩個(gè)或多個(gè)虛擬網(wǎng)絡(luò);
高可用性 (HA) - 在故障轉(zhuǎn)移的情況下提高可用性;
負(fù)載均衡 - 使用虛擬機(jī)之間的直接路徑在端點(diǎn)之間分配傳入網(wǎng)絡(luò)流量以確保高效利用;
服務(wù)隧道和專(zhuān)用鏈路 - 在允許訪問(wèn)的 VNET 的專(zhuān)用鏈路之間建立連接;
加密網(wǎng)關(guān) - 管理網(wǎng)絡(luò)內(nèi)數(shù)據(jù)流量的加密和解密的服務(wù);
快速路由網(wǎng)關(guān) - 允許客戶(hù)建立云服務(wù)的私有和專(zhuān)用連接。
P4和 DASH
P4是一種特定于領(lǐng)域的編程語(yǔ)言,旨在定義交換機(jī)和路由器等轉(zhuǎn)發(fā)設(shè)備如何處理網(wǎng)絡(luò)數(shù)據(jù)包。與傳統(tǒng)的網(wǎng)絡(luò)語(yǔ)言不同,P4 專(zhuān)注于提供高水平的抽象來(lái)對(duì)數(shù)據(jù)平面進(jìn)行編程,讓網(wǎng)工能夠自定義和優(yōu)化數(shù)據(jù)包處理,無(wú)需依賴(lài)于特定的硬件或協(xié)議。
P4 是協(xié)議無(wú)關(guān)的,這意味著它允許用戶(hù)定義數(shù)據(jù)包處理的行為,無(wú)需綁定到特定的網(wǎng)絡(luò)協(xié)議。在快速發(fā)展的網(wǎng)絡(luò)環(huán)境中,新的協(xié)議和技術(shù)不斷涌現(xiàn),P4 的靈活性顯得尤其有價(jià)值。借助 P4,網(wǎng)絡(luò)運(yùn)營(yíng)商可以調(diào)整其基礎(chǔ)設(shè)施來(lái)支持這些變化,無(wú)需進(jìn)行大量硬件升級(jí)或更換。
P4 的主要用例之一是SDN環(huán)境。SDN將控制平面與數(shù)據(jù)平面分離,允許網(wǎng)絡(luò)管理員動(dòng)態(tài)地控制和管理網(wǎng)絡(luò)行為。P4 支持在數(shù)據(jù)平面中對(duì)自定義數(shù)據(jù)包處理邏輯進(jìn)行編程,從而促進(jìn)高度靈活和可編程的網(wǎng)絡(luò)架構(gòu)的創(chuàng)建。
DASH 定義了數(shù)據(jù)平面設(shè)備處理數(shù)據(jù)包的方法,主要通過(guò)管道來(lái)實(shí)現(xiàn)。而P4 用于建模和描述 DASH 管道。通過(guò)P4,網(wǎng)工可以定義在硬件中執(zhí)行的自定義數(shù)據(jù)包處理邏輯,從而減輕通用 CPU 的工作負(fù)擔(dān)并加快數(shù)據(jù)包處理速度。
P4代碼是數(shù)據(jù)平面行為的最終規(guī)范。具體來(lái)說(shuō),通過(guò)使用P4代碼或由P4編譯器生成的P4Info,可以自動(dòng)生成DASH SAI頭文件,從而建立P4代碼與相應(yīng)的DASH-SAI API之間的連接。此外,用于測(cè)試overlay服務(wù)的SAIThrift代碼也是自動(dòng)生成的。這種集成突顯了P4作為數(shù)據(jù)平面行為的單一來(lái)源的重要性。 需要注意的是,P4用于描述數(shù)據(jù)平面的行為,用于生成頭文件,但數(shù)據(jù)平面本身的實(shí)現(xiàn)并不一定要在P4中進(jìn)行。如何實(shí)現(xiàn)數(shù)據(jù)平面取決于硬件供應(yīng)商,但必須符合P4中描述的模型。
圖 3:帶有 P4 的 DASH 管道
如前所述,DASH是SONiC的擴(kuò)展,其代碼庫(kù)和API有單獨(dú)的存儲(chǔ)庫(kù)。盡管有這些單獨(dú)的存儲(chǔ)庫(kù),但構(gòu)建過(guò)程通過(guò)其指定的構(gòu)建環(huán)境(稱(chēng)為SONiC-buildimage)與SONiC無(wú)縫集成。在啟動(dòng)SONiC構(gòu)建時(shí),DASH代碼會(huì)自動(dòng)包含并編譯,以確保其集成到SONiC生態(tài)系統(tǒng)中。為了確保操作功能的完整性,某些組件必須與DASH一起構(gòu)建。 DASH旨在通過(guò)增強(qiáng)硬件編程來(lái)實(shí)現(xiàn)廣泛的網(wǎng)絡(luò)功能,它借助SONiC的架構(gòu)和關(guān)鍵組件,并遵循SDN方法來(lái)實(shí)現(xiàn)數(shù)據(jù)平面。盡管DASH仍處于開(kāi)發(fā)階段,但已經(jīng)與SONiC的主流基線集成。當(dāng)前,硬件供應(yīng)商還需要更多時(shí)間來(lái)發(fā)布符合DASH標(biāo)準(zhǔn)的設(shè)備。我們看到了這項(xiàng)技術(shù)的巨大潛力,它將成為未來(lái)網(wǎng)絡(luò)實(shí)施的一個(gè)重要組成部分。
審核編輯:黃飛
-
交換機(jī)
+關(guān)注
關(guān)注
21文章
2721瀏覽量
101363 -
網(wǎng)絡(luò)設(shè)備
+關(guān)注
關(guān)注
0文章
325瀏覽量
30326 -
Sonics
+關(guān)注
關(guān)注
0文章
3瀏覽量
6267 -
DASH
+關(guān)注
關(guān)注
0文章
8瀏覽量
2774
原文標(biāo)題:SONiC-DASH:網(wǎng)絡(luò)可編程的進(jìn)化之路
文章出處:【微信號(hào):SDNLAB,微信公眾號(hào):SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
可編程技術(shù)的引爆點(diǎn)
分享一款不錯(cuò)的基于SRAM編程技術(shù)的PLD核心可重構(gòu)電路結(jié)構(gòu)設(shè)計(jì)
如何設(shè)計(jì)具有相似功能且基于SRAM編程技術(shù)的電路結(jié)構(gòu)?
PLC控制系統(tǒng)的編程技術(shù)
DSP器件的現(xiàn)場(chǎng)可編程技術(shù)

Xilinx針對(duì)消費(fèi)數(shù)字電視顯示器擴(kuò)展可編程技術(shù)優(yōu)勢(shì)
賽靈思發(fā)布28納米FPGA平臺(tái) 推進(jìn)可編程技術(shù)
可編程SoC(SoPC),什么是可編程SoC(SoPC)
現(xiàn)代可編程序控制器網(wǎng)絡(luò)通信技術(shù)_部分2
現(xiàn)代可編程序控制器網(wǎng)絡(luò)通信技術(shù)_部分1
可編程技術(shù)在網(wǎng)絡(luò)芯片上的應(yīng)用
可編程時(shí)代下網(wǎng)絡(luò)芯片如何應(yīng)用可編程技術(shù)
可編程技術(shù)在網(wǎng)絡(luò)芯片的應(yīng)用,可增強(qiáng)網(wǎng)絡(luò)的靈活性
采用5管單元的SRAM結(jié)構(gòu)實(shí)現(xiàn)CPLD可編程電路的設(shè)計(jì)

評(píng)論