天天看點

P4:程式設計網絡的轉發平面

随着物聯網裝置、資料流量、新協定以及私有雲和公共雲的巨大增長,網絡世界的創新速度也在不斷加快。網絡的未來已經超越了SDN的資料和控制平面分離,而是在ASIC中深入編寫轉發邏輯。技術現在正從傳統的固定架構轉向靈活的可程式設計交換機。新的可程式設計ASIC支援自定義協定,以及目前和未來的協定。

P4:程式設計網絡的轉發平面

要充分利用這種靈活性,需要使用新的、更進階别的、特定于域的語言來簡化轉發平面的編寫。每個ASIC制造商都必須提供自己的定制語言,這更多地取決于硬體架構。将轉發平面邏輯從一個網絡ASIC制造商移植到另一個制造商需要付出很多努力。這就産生了對獨立于底層硬體和協定的标準語言的需求。

這就是P4(獨立于程式設計協定的資料包處理器)的用武之地。P4是一種開源的、特定于域的程式設計語言,專為程式設計可重構網絡而設計。 P4語言是公開的,由p4.org聯盟開發,該聯盟包括網絡、雲系統和學術機構領域的各種公司。最初,P4針對的是網絡交換機的資料平面程式設計。現在,它的範圍已擴充到包括硬體或軟體、網絡接口卡和其他資料包處理系統在内的可程式設計網絡元素。

P4編譯器:P4如何獨立于目标

從過去幾年來看,很明顯,在任何網絡裝置中由資料平面處理的資料包大緻可以分為三個基本階段。 1)Parser block:負責分組識别和提取,2)Control block:負責比對+動作,3)DeParser:負責形成所需的出口包。

網絡晶片正在以這種方式建構,并且與協定無關。 P4是可以為任何目标裝置編譯的語言,用于指定如何在資料平面中處理資料包。 P4編譯器的體系結構有助于通過分離語言和目标模型使其獨立于目标。每個晶片供應商都可以實作自己的編譯器後端以映射到他們的硬體架構。 P4的體系架構(見圖)還允許晶片公司定義自己的模型,然後編寫P4後端來支援相同的内容,進而有助于隔離硬體細節。

P4:程式設計網絡的轉發平面

每個晶片制造商隻需要一個與其硬體相容的P4編譯器工具鍊,使用者就可以獨立于廠商的依賴性編寫自己的P4程式,并在不影響速度的情況下編譯和運作。使用者隻需關注實際的資料包處理邏輯,而無需擔心底層硬體。編譯器将為您的硬體生成runtime代碼。下圖顯示了P4為資料平面程式設計提供的核心元件。

P4:程式設計網絡的轉發平面

P4如何有益?

P4帶來了許多好處,包括:

 ●  所有可程式設計網絡裝置的開源語言。易于移植。

 ●  由于P4程式可以由使用者編寫,是以有助于保留新IP的所有權。現在,不再需要與晶片廠商或他們的客戶共享新的功能規範,進而保留知識産權保護。

 ●  P4使新協定的部署更加簡單,消耗的時間更少。

 ●  在不同應用程式中使用的網絡裝置需要不同的協定集。使用P4,使用者可以根據應用程式僅實作所需的協定,并删除其應用程式不需要的協定。是以,可以有效地利用現有資源。

 ●  程式設計資料平面現在使用軟體編寫程式,使用P4編譯和加載硬體,進而提供軟體重用、資料隐藏、庫建立、硬體和軟體元件分離、軟體更新和調試友善等優點。

但是,實作這些好處也面臨着一些挑戰。需要記住的一點是,定制專有語言可以更好地控制可程式設計網絡硬體。 P416是P4語言的2016版本,它确實支援外部方法以滿足此類自定義硬體的特定要求,但會削弱P4的易于移植性。

此外,Hash、ECMP、多點傳播、廣播、鏡像、排隊、排程和校驗等功能非常依賴于硬體。很難用Generic P4解決所有目标并獲得對硬體的完全通路權限。

P4中控制平面和資料平面之間的通信方式有限。是以,不支援生成新資料包。

也就是說,P4開辟了許多機會并改變了網絡晶片的設計方式。 P4架構提供了一個設計完全可程式設計晶片的樣本模型和思路。未來所有傳統交換機将很快轉換為可程式設計交換機,具有完全軟體定義的資料和控制平面。

原文釋出時間為:2018-09-17

本文來自雲栖社群合作夥伴“

SDNLAB

”,了解相關資訊可以關注“

”。

繼續閱讀