隨著物聯網設備的巨大增長、數據流量的增加、新協議以及私有云和公共云的不斷增長,網絡世界的創新步伐正在加快。網絡的未來已經超越了分離SDN的數據和控制平面,而是在ASIC深處對轉發邏輯進行編程。現在,技術正在從傳統的固定架構硅開關轉向靈活的可編程開關。新的可編程ASIC允許支持自定義協議以及現在和未來的協議。這需要新的更高級別的域特定語言來簡化轉發平面的寫入。每個ASIC制造商都必須提出自己的自定義語言,這更多地依賴于硬件架構。將轉發平面邏輯從一個網絡ASIC制造商移植到另一個制造商將需要大量的努力,而且非常痛苦。這產生了對獨立于底層硬件和協議的標準語言的需求。
什么是P4?
P4(獨立于編程協議的數據包處理器)是一種特定于域的開源編程語言,專為編程可重新配置的網絡管道而設計。P4語言是公共語言,由 p4.org 聯盟開發,該聯盟包括網絡,云系統和學術機構領域的各種公司。最初,P4是為網絡交換機的數據平面編程而設計的,但其范圍已擴大到涵蓋可編程網絡元素,例如硬件或軟件交換機,網絡接口卡,路由器或其他數據包處理系統。
P4 編譯器:P4 如何獨立于目標?
從過去幾年來看,很明顯,任何網絡設備中數據平面處理的數據包大致可以分為三個基本階段。1)解析器塊:負責數據包識別和提取,2)控制塊:負責匹配+操作,3)解析器:負責形成所需的出口數據包。網絡芯片就是以這種方式構建的,并且是獨立于協議的。P4 是可以為任何目標設備編譯以指定如何在數據平面中處理數據包的語言。P4 編譯器的體系結構通過分離語言和目標模型來幫助使其獨立于目標。P4 具有前端開源和后端松散,使其獨立于目標。每個芯片供應商都可以實現自己的編譯器后端以映射到其硬件架構。P4 的架構還有助于通過定義自己的模型,然后編寫 p4 后端來支持相同的硬件細節。
圖 1:P4 編譯器體系結構
每個芯片制造商只需要擁有與其硬件兼容的P4編譯器工具鏈,用戶可以獨立于供應商的依賴編寫自己的P4程序,在不影響速度的情況下進行編譯和運行。用戶只需要專注于實際的數據包處理邏輯,而無需擔心底層硬件。編譯器將為硬件生成運行時代碼。圖 2 顯示了 P4 為數據平面編程提供的核心組件。
圖 2:P4 組件
P4 有何益處?
適用于所有可編程網絡設備的開源語言。易于攜帶
由于P4程序可以由用戶編寫,因此有助于保留新IP的所有權。現在不再需要與芯片供應商或有時他們的客戶共享新功能規范,從而保留知識產權保護
P4 使新協議的部署變得更加簡單,消耗的時間更少
在不同應用程序中使用的網絡設備需要不同的協議集。使用 P4,用戶可以根據其應用程序僅實現所需的協議,并刪除其應用程序不需要的協議。因此,可用資源可以得到有效利用
編程數據平面現在使用軟件,您可以使用P4編寫程序,在硬件上進行編譯和加載,從而提供諸如軟件重用,數據隱藏,庫創建,硬件和軟件組件分離,輕松軟件升級和輕松調試等好處
使用 P4 的挑戰
自定義專有語言可以更好地控制可編程網絡硬件,因為它僅為此而設計。P416 確實支持 extern 方法以滿足此類自定義硬件特定要求,但在 P4 中使用 extern 使其不那么便攜
哈希、ECMP、組播、廣播、鏡像、排隊、調度和校驗和等功能很少非常依賴于硬件。使用通用 P4 解決所有目標并完全訪問硬件很困難
P4 中控制平面和數據平面之間的通信方式有限。不支持生成新數據包
P4開辟了很多機會,并改變了網絡芯片的設計方式。P4架構給出了設計完全可編程芯片的示例模型和想法。展望未來,所有傳統交換機將很快轉換為具有完全軟件定義數據和控制平面的可編程交換機。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
19265瀏覽量
229671 -
交換機
+關注
關注
21文章
2638瀏覽量
99548 -
編譯器
+關注
關注
1文章
1624瀏覽量
49109
發布評論請先 登錄
相關推薦
評論