探索通用可程式設計資料平面

2021-07-30 21:00:28 字數 3553 閱讀 7931

引言:相比傳統網路資料平面,通用可程式設計資料平面讓網路使用者可以自定義資料報的完整處理流程,實現理想的協議無關網路資料處理。作為一種理想的sdn資料平面,通用可程式設計資料平面還不夠完善,還需要在不斷的嘗試中摸索前進。

本文選自《重構網路:sdn架構與實現》。

相比傳統網路資料平面,通用可程式設計資料平面讓網路使用者可以自定義資料報的完整處理流程,實現理想的協議無關網路資料處理。而當下的openflow模型還無法成為一種完全的通用可程式設計資料**模型,還無法實現協議無關的**。只有實現了真正的通用可程式設計資料平面,才會真正釋放網路的可程式設計能力,從而逐步實現網路的軟體化和程式化。

對於網路使用者和網路服務**商,通用可程式設計資料平面使得他們可以快速地開發新網路功能及部署新網路服務。網路使用者可以從軟體產業過去幾十年已發展成熟的軟體程式設計理論、軟體工程實踐和工具中受益。計算機軟體工程師也能夠很容易對網路資料平面裝置進行程式設計、測試和除錯,以乙個完全可程式設計的方式來管理整個網路。

對於網路晶元**商,通用可程式設計資料平面使他們能專注於設計及改進那些可重用的資料報處理架構和基本模組,而不是糾纏特定協議裡錯綜複雜的細節和異常行為。而且,一旦證明這些架構和基本模組可行,**商就可以在多代交換晶元的設計中重複使用它們,不必為客戶不斷產生的新需求而反覆修改。

對於網路研究人員,通用可程式設計資料平面為他們驗證新想法提供了新的契機。openflow資料平面裝置早期被廣泛用於網路科研領域這一事實也證明了這一點。網路研究人員基於通用可程式設計資料平面可以快速搭建滿足新實驗需求的網路系統,不需要等待裝置廠商的產品公升級。

從openflow switch通用**模型誕生至今,學術界和產業界在通用可程式設計資料平面領域做了很多努力,持續推動了sdn資料平面的發展。其中典型的通用可程式設計資料平面設計思路是the mckeown group的可程式設計協議無關交換機架構pisa(protocol-independent switch architecture)。

pisa架構

pisa是在2023年的rmt(reconfigurable match tables)架構基礎上發展起來的一種新的sdn資料平面。到達pisa系統的資料報先由可程式設計解析器解析,再通過入口側一系列的match-action階段,然後經由佇列系統交換,由出口match-action階段再次處理,最後重新組裝傳送到輸出埠。

其中可程式設計協議解析器模型是glen gibb等在2023年提出的一種新的通用抽象模型,實現了協議無關的網路資料報協議解析處理,改進了openflow switch在支援新網路協議方面的不足。可程式設計的match-action模型實現了協議無關的網路資料**處理,包括匹配邏輯和行動邏輯兩部分。匹配邏輯是通過靜態隨機儲存器(sram)和三態內容定址儲存器(tcam)的混合查詢表,以及計數器、流量統計表和通用雜湊表組合實現的。行動邏輯是通過一組alu標準布林和算數運算單元、資料報頭修改操作和雜湊操作組合實現的。pisa還提供了一條回流路徑使一些特殊資料報能夠被多次反饋到解析器和**處理流水線。pisa 實現了乙個可程式設計資料報生成器,使控制平面可以將頻繁或週期性的資料報生成操作交給資料報生成器來完成。

可以看出,pisa通用可程式設計資料平面在可程式設計協議解析處理和可程式設計資料報處理操作兩個方面進行了擴充套件。但是中間資料報排程部分還是採用傳統的設計思路,不支援使用者可程式設計的資料報佇列管理和排程處理。sivaraman等在2023年提出了一種通用可程式設計包排程處理模型,實現了使用者可程式設計的包排程處理,改進了pisa在資料報排程處理可程式設計性方面的不足。

但是,相比通用計算資料平面,pisa在可程式設計生態上還有不足。通用計算資料平面就是通用處理器,就是我們所熟悉的如何在通用處理器上程式設計、基於高階程式語言描述具體的應用,以及編譯這些程式並在通用處理器上執行。計算機領域的資料平面可程式設計生態系統已經非常成熟,而在網路領域裡,這樣的故事才剛剛開始。

網路資料平面程式語言的出現,使得使用者可以自定義網路資料報的處理流程,進一步提公升了通用可程式設計資料平面的可程式設計能力。p4(programming protocol-independent packet processors)語言是網路資料平面程式語言中的典型例子。使用者通過編寫一段p4程式來定義資料報的處理流程,然後利用p4編譯器將這段程式翻譯成指定網路資料平面的配置資訊,從而實現使用者可程式設計的網路資料處理。

p4語言

p4資料平面程式語言框架是否能成為一種成功的通用可程式設計資料平面,其關鍵在於p4語言的建模能力和p4開發工具的完善程度。p4語言的建模能力依賴於語言本身的發展和功能庫的完善。每個p4程式包含header、parser、table、action和control programs五部分。p4聯盟建立了乙個開源社群,發布了廣受支援的1.0.2版本和最新的1.1.0版本語言規範,也維護了一組p4程式案例。

現有的開源p4開發工具主要包括p4編譯器、p4交換機參考模型和測試框架。p4編譯器需要從p4程式的header和parser部分匯出資料平面解析器的配置資訊,從table、action和control programs中匯出match-action表中的配置資訊和所有依賴關係。同時,編譯器還需要考慮目標資料平面硬體的功能和特性,盡可能支援更多的目標硬體。需要注意的是,通過編譯p4程式,不僅可以生成資料平面裝置的配置資訊,還可以生成執行api,來實現控制平面與資料平面之間的互動。在這些開發工具的支援下,使用者可以很容易地編寫和編譯自己的p4程式,使用參考模型來執行和除錯程式。

除此之外,在openflow switch通用**模型的基礎上,研究人員嘗試建立更加通用的網路資料處理抽象模型。華為美國研究所的宋浩宇等提出了協議無關**(protocol oblivious forwarding,pof)框架,通過對網路**處理行為進行再次抽象,實現協議無關**處理。具體來說,對任意報文,其報文解析和匹配域讀取都可以抽象為在報文特定位置讀取特定長度位元串,**麵僅需要知道偏移量和長度就可以完成處理。同樣,對於報文的處理也可以抽象為在報文特定位置的位元串的插入、刪除、拷貝和修改等操作。在pof架構中,pof交換機並沒有協議的概念,它僅在pof控制器的指導下通過來定位待匹配的資料,從而完成網路資料**處理。

針對openflow switch不支援描述有狀態網路處理的問題,羅馬杜維嘉大學的giuseppe bianchi等在openflow switch基礎上增加了新的抽象子模型state table,建立了支援有狀態網路處理的新通用資料平面模型openstate。明尼蘇達大學的hesham mekky等提出的應用感知sdn架構,在openflow switch基礎上增加了新的應用table子模組,增強了資料平面支援有狀態網路處理的抽象能力。普林斯頓大學研究團隊提出了一種新的網路資料處理原語fast(flow-level state transitions),使得使用者可以通過sdn控制器對資料平面裝置的有狀態處理流程進行程式設計。這些新的研究思路都對openflow switch通用**模型的抽象能力做了進一步擴充套件。

任何技術的發展都不是一帆風順的,也不可能一蹴而就。作為一種理想的sdn資料平面,通用可程式設計資料平面還不夠完善,還需要在不斷的嘗試中摸索前進。

本文選自《重構網路:sdn架構與實現》,點此鏈結可在博文視點官網檢視此書。

探索通用可程式設計資料平面

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!引言 相比傳統網路資料平面,通用可程式設計資料平面讓網路使用者可以自定義資料報的完整處理流程,實現理想的協議無關網路資料處理。作為一種理想的sdn資料平面,通用可程式設計資料平面還不夠完善,還需要在不斷的嘗試中摸索前進。本文選自 重構網路 sdn架...

LILYGO T Wristband 可程式設計的手環

因為最近開發一款大眾化的健康產品,購買了一款可以自己程式設計的手環。其實現在銷售的眾多手環就是這樣的,只是沒有開放出來大家程式設計而已。這是我拆開進行程式設計的樣子 除了程式設計能力限制以外,它的長電版105mah,也受不了超過1個半小時。另外,還沒來得急研究抬手顯示等 它的程式設計接線口就壞掉了,...

可程式設計記憶體區

堆區 亦稱動態記憶體分配。程式在執行的時候用malloc或new申請任意大小的記憶體,程式設計師自己負責在適當的時候用free或delete釋放記憶體。動態記憶體的生存期可以由我們決定,如果我們不釋放記憶體,程式將在最後才釋放掉動態記憶體。但是,良好的程式設計習慣是 如果某動態記憶體不再使用,需要將...