207
技術社區[雲棲]
探索通用可編程數據平麵
引言:相比傳統網絡數據平麵,通用可編程數據平麵讓網絡用戶可以自定義數據包的完整處理流程,實現理想的協議無關網絡數據處理。作為一種理想的SDN數據平麵,通用可編程數據平麵還不夠完善,還需要在不斷的嚐試中摸索前進。
本文選自《重構網絡:SDN架構與實現》。
相比傳統網絡數據平麵,通用可編程數據平麵讓網絡用戶可以自定義數據包的完整處理流程,實現理想的協議無關網絡數據處理。而當下的OpenFlow模型還無法成為一種完全的通用可編程數據轉發模型,還無法實現協議無關的轉發。隻有實現了真正的通用可編程數據平麵,才會真正釋放網絡的可編程能力,從而逐步實現網絡的軟件化和程序化。
對於網絡用戶和網絡服務供應商,通用可編程數據平麵使得他們可以快速地開發新網絡功能及部署新網絡服務。網絡用戶可以從軟件產業過去幾十年已發展成熟的軟件編程理論、軟件工程實踐和工具中受益。計算機軟件工程師也能夠很容易對網絡數據平麵設備進行編程、測試和調試,以一個完全可編程的方式來管理整個網絡。
對於網絡芯片供應商,通用可編程數據平麵使他們能專注於設計及改進那些可重用的數據包處理架構和基本模塊,而不是糾纏特定協議裏錯綜複雜的細節和異常行為。而且,一旦證明這些架構和基本模塊可行,供應商就可以在多代交換芯片的設計中重複使用它們,不必為客戶不斷產生的新需求而反複修改。
對於網絡研究人員,通用可編程數據平麵為他們驗證新想法提供了新的契機。OpenFlow數據平麵設備早期被廣泛用於網絡科研領域這一事實也證明了這一點。網絡研究人員基於通用可編程數據平麵可以快速搭建滿足新實驗需求的網絡係統,不需要等待設備廠商的產品升級。
從OpenFlow Switch通用轉發模型誕生至今,學術界和產業界在通用可編程數據平麵領域做了很多努力,持續推動了SDN數據平麵的發展。其中典型的通用可編程數據平麵設計思路是The McKeown Group的可編程協議無關交換機架構PISA(Protocol-Independent Switch Architecture)。
PISA是在2013年的RMT(Reconfigurable Match Tables)架構基礎上發展起來的一種新的SDN數據平麵。到達PISA係統的數據包先由可編程解析器解析,再通過入口側一係列的Match-Action階段,然後經由隊列係統交換,由出口Match-Action階段再次處理,最後重新組裝發送到輸出端口。
其中可編程協議解析器模型是Glen Gibb等在2013年提出的一種新的通用抽象模型,實現了協議無關的網絡數據包協議解析處理,改進了OpenFlow Switch在支持新網絡協議方麵的不足。可編程的Match-Action模型實現了協議無關的網絡數據轉發處理,包括匹配邏輯和行動邏輯兩部分。匹配邏輯是通過靜態隨機存儲器(SRAM)和三態內容尋址存儲器(TCAM)的混合查找表,以及計數器、流量統計表和通用哈希表組合實現的。行動邏輯是通過一組ALU標準布爾和算數運算單元、數據包頭修改操作和散列操作組合實現的。PISA還提供了一條回流路徑使一些特殊數據包能夠被多次反饋到解析器和轉發處理流水線。PISA 實現了一個可編程數據包生成器,使控製平麵可以將頻繁或周期性的數據包生成操作交給數據包生成器來完成。
可以看出,PISA通用可編程數據平麵在可編程協議解析處理和可編程數據包處理操作兩個方麵進行了擴展。但是中間數據包調度部分還是采用傳統的設計思路,不支持用戶可編程的數據包隊列管理和調度處理。Sivaraman等在2015年提出了一種通用可編程包調度處理模型,實現了用戶可編程的包調度處理,改進了PISA在數據包調度處理可編程性方麵的不足。
但是,相比通用計算數據平麵,PISA在可編程生態上還有不足。通用計算數據平麵就是通用處理器,就是我們所熟悉的如何在通用處理器上編程、基於高級編程語言描述具體的應用,以及編譯這些程序並在通用處理器上運行。計算機領域的數據平麵可編程生態係統已經非常成熟,而在網絡領域裏,這樣的故事才剛剛開始。
網絡數據平麵編程語言的出現,使得用戶可以自定義網絡數據包的處理流程,進一步提升了通用可編程數據平麵的可編程能力。P4(Programming Protocol-Independent Packet Processors)語言是網絡數據平麵編程語言中的典型例子。用戶通過編寫一段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)框架,通過對網絡轉發處理行為進行再次抽象,實現協議無關轉發處理。具體來說,對任意報文,其報文解析和匹配域讀取都可以抽象為在報文特定位置讀取特定長度比特串{offset, length},轉發麵僅需要知道偏移量和長度就可以完成處理。同樣,對於報文的處理也可以抽象為在報文特定位置的比特串的插入、刪除、拷貝和修改等操作。在POF架構中,POF交換機並沒有協議的概念,它僅在POF控製器的指導下通過{offset, length}來定位待匹配的數據,從而完成網絡數據轉發處理。
針對OpenFlow Switch不支持描述有狀態網絡處理的問題,羅馬杜維嘉大學的Giuseppe Bianchi等在OpenFlow Switch基礎上增加了新的抽象子模型State Table,創建了支持有狀態網絡處理的新通用數據平麵模型OpenState。明尼蘇達大學的Hesham Mekky等提出的應用感知SDN架構,在OpenFlow Switch基礎上增加了新的應用Table子模塊,增強了數據平麵支持有狀態網絡處理的抽象能力。普林斯頓大學研究團隊提出了一種新的網絡數據處理原語FAST(Flow-level State Transitions),使得用戶可以通過SDN控製器對數據平麵設備的有狀態處理流程進行編程。這些新的研究思路都對OpenFlow Switch通用轉發模型的抽象能力做了進一步擴展。
此外,日本的NEC公司在OpenFlow Switch通用轉發模型基礎上設計網絡領域的專用指令集處理器(ASIP,Application Specific Instruction Set Processor)。在網絡數據平麵發展過程中,網絡處理器(NP,Network Processor)與通用可編程數據平麵非常相似。網絡處理器是一種可編程的網絡處理硬件,它結合了RISC處理器的低成本、靈活性及定製芯片(ASIC)的高性能。網絡處理器並不受限於某種具體的網絡協議,可以適應任意一種網絡協議。網絡處理器類似於通用處理器,硬件架構保持固定,由軟件決定網絡處理器如何處理數據包。相比通用可編程數據平麵,網絡處理器的設計與實現已經非常成熟,有很多完善的設計工具和案例可供參考。
任何技術的發展都不是一帆風順的,也不可能一蹴而就。作為一種理想的SDN數據平麵,通用可編程數據平麵還不夠完善,還需要在不斷的嚐試中摸索前進。
本文選自《重構網絡:SDN架構與實現》,點此鏈接可在博文視點官網查看此書。
想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼並關注。
最後更新:2017-04-20 14:00:58