探索通用可編程數據平面

引言:相比傳統網絡數據平面,通用可編程數據平面讓網絡用戶能夠自定義數據包的完整處理流程,實現理想的協議無關網絡數據處理。做爲一種理想的SDN數據平面,通用可編程數據平面還不夠完善,還須要在不斷的嘗試中摸索前進。
本文選自《重構網絡:SDN架構與實現》。編程

  相比傳統網絡數據平面,通用可編程數據平面讓網絡用戶能夠自定義數據包的完整處理流程,實現理想的協議無關網絡數據處理。而當下的OpenFlow模型還沒法成爲一種徹底的通用可編程數據轉發模型,還沒法實現協議無關的轉發。只有實現了真正的通用可編程數據平面,纔會真正釋放網絡的可編程能力,從而逐步實現網絡的軟件化和程序化。微信

  對於網絡用戶和網絡服務供應商,通用可編程數據平面使得他們能夠快速地開發新網絡功能及部署新網絡服務。網絡用戶能夠從軟件產業過去幾十年已發展成熟的軟件編程理論、軟件工程實踐和工具中受益。計算機軟件工程師也可以很容易對網絡數據平面設備進行編程、測試和調試,以一個徹底可編程的方式來管理整個網絡。網絡

  對於網絡芯片供應商,通用可編程數據平面使他們能專一於設計及改進那些可重用的數據包處理架構和基本模塊,而不是糾纏特定協議裏錯綜複雜的細節和異常行爲。並且,一旦證實這些架構和基本模塊可行,供應商就能夠在多代交換芯片的設計中重複使用它們,沒必要爲客戶不斷產生的新需求而反覆修改。架構

  對於網絡研究人員,通用可編程數據平面爲他們驗證新想法提供了新的契機。OpenFlow數據平面設備早期被普遍用於網絡科研領域這一事實也證實了這一點。網絡研究人員基於通用可編程數據平面能夠快速搭建知足新實驗需求的網絡系統,不須要等待設備廠商的產品升級。框架

  從OpenFlow Switch通用轉發模型誕生至今,學術界和產業界在通用可編程數據平面領域作了不少努力,持續推進了SDN數據平面的發展。其中典型的通用可編程數據平面設計思路是The McKeown Group的可編程協議無關交換機架構PISA(Protocol-Independent Switch Architecture)。編程語言

        圖片描述
                        PISA架構ide

  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語言的建模能力依賴於語言自己的發展和功能庫的完善。每一個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架構與實現》,點此連接可在博文視點官網查看此書。
                    圖片描述
  想及時得到更多精彩文章,可在微信中搜索「博文視點」或者掃描下方二維碼並關注。
                       圖片描述

相關文章
相關標籤/搜索