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