Swing State: Consistent Updates for Stateful and Programmable Data Planes
阿新 • • 發佈:2018-11-11
Swing State: Consistent Updates for Stateful and Programmable Data Planes
年份:2017
來源:ACM
本篇論文解決的問題
Before
原來的狀態遷移是三角形路由的方式:
NF1->Controller->NF2
浪費時間、還需要控制器開闢額外的儲存空間
Now
現在把要更新的流量attach到資料平面的資料流上,藉助資料流之手(信使)傳遞狀態資訊。
ABSTRACT
背景:由於可程式設計帶狀態資料平面的飛速發展,得益於資料平面的高速處理速度,於是把網路功能從控制器(或主機上)遷移到資料平面實現。
這就意味著資料平面不單單要考慮flows,還要考慮states,比如流量遷移時,要考慮狀態遷移的問題。
存在的問題
Swing State的解決方案:在資料平面上實現狀態遷移,把需要遷移的狀態附加在live traffic上,目標NF收到流量後提取出狀態資訊資訊,達到狀態遷移的目的。注意:Swing State只遷移那些不能再生成的狀態資訊。
Swing State only migrates the states that cannot be safely reconstructed at the destination switch.
本篇論文設計的實驗:給定一個P4程式,分析出哪個狀態需要被遷移並自動增加對應的程式實現執行時的狀態遷移
INTRODUCTION
基於控制平面實現狀態遷移存在的問題(為什麼狀態遷移不能通過控制器):
- 目前的狀況,狀態是以以線速率更新(可以達到Tbps),如果以這個速率給控制器傳送,基於軟體實現的控制器肯定是應付不過來的。這樣就會增加巨大的處理時延,造成狀態遷移的不一致性,這對於很多的網路應用是不允許發生的。
- 控制器可能不會完整的知道那些待遷移的狀態的位置(它只知道一部分,造成那些不被知道的狀態不能在第一時間被遷移)。因為有些狀態位置資訊是根據執行時因素決定的,但是執行時因素是不能被控制器訪問的,這就造成了控制器不能精準的定位所有待轉移狀態的位置。
- 資料平面狀態資訊可以在多條流量之間共享,借用多條flow一起實現狀態遷移,可以減少狀態遷移的時延,避免不一致性。可惜的是,這些可被利用的flow是根據執行時因素
Swing State:
- 解決了以上所有的問題,實現的資料平面的一致性狀態遷移。不依靠控制器,只在資料平面進行狀態遷移。
解決問題的關鍵點:借用資料流當作狀態傳輸的信使,讓資料流從源NF那裡記錄並攜帶狀態的值,把它們送到目標NF那裡。狀態在源交換機 是存在暫存器的cell裡面;一個數據報把這個資料讀到它自己身上,然後帶到目的交換機。
The key idea is to have each packet record the state values it reads at the source data plane, carry them to the destination device (through piggybacking), and override the memory locations it reads there.