軟體定義網路與 NFV

可程式化資料平面(programmable data plane)

回想一下,資料平面是交換器裡真正負責轉送封包的快速機構。傳統上那套機構是硬接死的:晶片只懂內建的一套協定與固定的處理管線,就這樣——像一台行為在出廠時就決定好的家電。可程式化資料平面則是它的轉送行為能被軟體定義與改變:你告訴它如何解析封包、要比對哪些欄位、要採取哪些動作,而不是接受晶片自帶的那一套。

具體來說,可程式化資料平面是一台圍繞著可重新設定的封包處理管線打造的交換器(或 SmartNIC),通常用 P4 之類的語言來程式化。你寫一支程式,定義解析器(標頭如何被讀取)、比對動作表(要比對什麼、要做什麼)以及管線順序,再編譯並載入設備。設備仍在硬體中以線路速率轉送——可程式化並不代表每個封包都跑緩慢的軟體——但現在這場遊戲的規則,包括它所懂的封包格式本身,都由你的程式設定,而不是在製造時就被凍結。控制器仍以具體規則去填表;可程式化資料平面定義的是這些規則所棲身的結構。

為什麼重要:可程式化資料平面移除了早期 SDN 的一個隱藏限制。OpenFlow 能集中控制,但交換器仍只能比對標準已知的標頭欄位。可程式化資料平面讓你能支援新的或自訂的協定、打造把量測直接記錄在封包裡的帶內遙測,並為單一應用量身調整轉送——全都不必買新晶片。誠實的取捨:可程式化管線在晶片面積與功耗上可能比為單一工作最佳化的固定功能晶片更貴,而寫出正確、高效能的資料平面程式是一項專門的技能。可程式化是力量,但它不是免費的。

某維運者希望每台交換器把封包在它那裡排隊多久蓋進每個封包,好讓收集器精準找出延遲在哪累積。在固定的資料平面上這辦不到。在可程式化資料平面上,他寫一支 P4 程式,在轉送的同時把排隊時間附加到封包上——使交換器本身在全線路速率下變成精準的量測儀器。

當資料平面可程式化,交換器就能做晶片從未被設計來做的新工作。

可程式化不代表慢:可程式化資料平面仍在硬體中以線路速率轉送。可重新設定的是處理的結構(解析、表、動作),而不是逐封包的速度。而且它仍需要一個控制平面來決定實際的規則。

又稱
programmable forwarding plane可程式化資料平面可程式化轉送平面