1. 程式人生 > >SDPA: Toward a Stateful Data Plane in Software-Defined Networking

SDPA: Toward a Stateful Data Plane in Software-Defined Networking

  • 文章名稱:SDPA: Toward a Stateful Data Plane in Software-Defined Networking
  • 發表時間:2017
  • 期刊來源:IEEE/ACM Transactions on Networking

摘要

OpenFlow僅僅提供簡單的“match-action”正規化,對於SDN資料平面來說,缺少帶狀態轉發功能,限制了OpenFlow支援高階網路應用的能力,同時,嚴重依賴控制器處理狀態資訊也導致了控制器和資料平面效能問題。本文為資料平面提出SDPA,設計了FP(協同處理單元),FP通過指令和狀態表管理狀態資訊,擴充套件了OpenFlow的協議,以支援控制器與FP之間的通訊。另外設計了軟、硬體SDPA架構交換機,證明我們方法的可行性和實用性。另外在一個SDPA交換機上,開發了由帶狀態防火牆,域名系統(DNS)反射防禦,以及heavy hitter detection 組成的網路功能鏈。


I 介紹

先介紹了SDN架構帶來的可程式設計能力,說明SDN上層智慧和狀態集中,下層為網路應用服務,OpenFlow是SDN南向介面的一個代表性技術,僅提供"match-action"匹配正規化,資料包的處理是通過在控制器下發的流表中,匹配資料包頭,再進行相應的動作處理。

OpenFlow技術的不足

一、

OpenFlow僅集中在L2/L3層網路傳輸,對帶狀態處理提供有限的支援,沒有控制器參與,不能對流狀態進行監控。

二、

嚴重依賴控制器保留資料包的狀態,由於在控制器和交換機之間的相關處理延遲和控制通道瓶頸,會導致資料平面和控制平面的擴充套件性和效能問題。

三、

OpenFlow頭欄位不能夠靈活擴充套件以滿足不同應用的需求。相關的研究努力有P4,以解決這個問題,但是P4仍然不支援直觀的帶狀態應用程式設計。

為解決以上問題,提出創新的帶狀態資料平面SDPA架構,以在SDN資料平面支援直觀的程式設計和支援帶狀態應用的高效能處理。 SDPA提出"match-state-action"正規化, 這個正規化特點是狀態資訊可以在資料平面維護,並且不需要控制器的參與。基於SDPA正規化,我們提出普通的帶狀態軟體、硬體交換機設計,基於這個平臺,帶狀態防火牆和DNS反射防禦可以在這個平臺上實現。

  • 所做貢獻:
    • 一、提出一種新穎的帶狀態結構(SDPA),以支援SDN資料平面帶狀態應用的直觀可程式設計和高效能處理。SDPA支援“match-state-action”正規化,可以用於實現帶狀態防火牆和DNS反射防禦。。SDPA適用於在資料平面需要處理狀態資訊的不同網路應用。
    • 二、設計並且實現了擴充套件的OpenFlow協議以支援SDPA。通過這個協議,SDN控制器可以與狀態處理模組FP(Forwarding Processor縮寫)進行通訊,在資料平面的交換機上維護狀態資訊。
    • 三、實現了SDPA軟體、硬體交換機原型,並且基於SDPA軟、硬交換機原型,開發了一個簡單的網路功能鏈,這個網路功能鏈由帶狀態防火牆,DNS反射防禦和高度偵測應用組成。
    • 四、用額外的實驗評估我們的方法,結果顯示,在基於SDN的網路中,SDPA可以通過可管理的處理開銷,大大的降低帶狀態應用的轉發延遲。

本文整體結構:在II中概述SDPA正規化的概念,III中清楚表達SDPA架構設計,IV中提出實現,V中進行評估,VI中總結相關工作,在VII中做一些討論。VIII中結束本文。


II Motivation And SDPA Paradigm

A Motivation

第一、一些應用需要記錄每一個數據包的狀態資訊進行高階處理。同時,狀態資訊記錄在控制器是不合適的(造成控制器和資料平面的效能問題)。

第二、現在的SDN技術在資料平面僅支援有限的帶狀態處理。

第三、儘管一些應用可以通過中間盒進行實現,但是中間盒缺乏通用的可程式設計介面,網路中很多中間盒,也難於管理。綜上,有必要為SDN資料平面設計支援帶狀態處理的系統機制。

B SDPA正規化

SDPA正規化如下圖1所示,它添加了一個state欄位,以維護流的狀態資訊,同時不需要控制器參與,當實現帶狀態應用時(比如防火牆),進入的資料包根據相關的狀態資訊進行處理,接著,狀態資訊根據進來的資料包、內部或外部事件進行更新。


III 設計

通過在資料平面新增智慧,可以在SDPA架構資料平面維護狀態資訊。

一、設計了FP(協同處理單元),可以為現有的OpenFlow架構提供相容性,擴充套件了OpenFlow指令,在FP和流表之間引導資料包。FP依據之前引入的應用狀態遷移矩陣或狀態機實現對資料包更為複雜的處理。
二、如圖2所示,在狀態機中新增STT(State Transition Table),用來描述每個帶狀態應用的狀態機。在FP中新增ST(State Table)以保留流的狀態資訊,還添加了AT(Action Table)記錄不同狀態下的動作。

因為不同的應用在狀態遷移上有差異,每個應用處理自身的表集。控制器初始化資料平面,將下發AT、STT、ST到資料平面,在執行時,流的第一個資料包將傳送到控制器,由控制器決定哪個應用處理這條流,然後,流表項由控制器下發,指導流進入FP中。同時,控制器傳送對應的帶狀態表項給FP。。流的狀態資訊在資料平面維護,控制器可以在流到來之前主動地下發表項。以下將介紹每個模組。

A 轉發處理器(FP)

FP依據當前的狀態和遷移策略維護流的狀態資訊和處理資料包。在資料平面新增GOTO_ST(n)指令,用於引導OpenFlow管道中的資料包進入FP中的狀態表n。在FP處理資料包後,它將把資料包傳送回在OpenFlow管道源流表中。在資料包被要求在交換機內,按照順序地被多個應用處理時,控制器可以下發幾個GOTO_ST指令來引導資料包分別的進入對應的應用。另外,在FP中設計了動作,動作可以靈活的擴充套件以滿足應用的需求。這些動作可以以下幾類:控制動作:用於引導流表和FP之間的資料包。比如GOTO_ST。處理動作:用於FP處理流,包括SET_FIELD,OUTPUT,DROP,等等。 狀態操作動作:用於操作狀態表,比如STATE_UPDATE。演算法動作:他們用於執行算術操作,邏輯動作:用於執行邏輯動作。

B 狀態處理

設計了三類表對狀態資訊進行維護,三個表分別為ST,STT,AT。因為不同的應用可能需要維護不同的狀態資訊,每一個應用可能需要一個唯一的表集。

ST(State Table)

狀態表用於維護SDN資料平面的狀態資訊(稱ST)。STs可以由控制器動態的初始化。當一個應用需要進行帶狀態處理,控制器可以傳送一個資訊給FP初始化它的ST。初始化資訊包含ST表的所有欄位資訊。在資料平面,狀態是根據進來的資料包或者內部/外部的事件更新維護的。。狀態資訊可以上傳到控制器,故控制器可保留網路的全域性狀態資訊,另外控制器依據應用需求,決定多久對控制器狀態資訊進行更新。圖2右邊是ST的結構,State Table定義的"Match Fields"欄位,用來匹配資料包欄位。它是靈活、可擴充套件的,依照OpenFlow匹配欄位,ST包括等長的匹配欄位掩碼域。狀態 域在狀態表中清晰地記錄了流的狀態資訊(沒有掩碼),狀態的實現可以基於TCAM或者SRAM。控制器可以傳送狀態操作資訊主動地新增、移除、修改狀態表項。

STT(State Transition Table)

設計SST來支援狀態更新策略配置,狀態更新策略是關於特別的面向連線的協議。狀態遷移表配置了遷移策略,指示狀態如何根據協議進行轉換。狀態前儀表包含三個不同的域。分別為State,Event,Next State(見圖2)。STT僅在初始化時,由控制器下發到FP。

  • 狀態域包括等長的掩碼域(mask),可以為不同的事件,模糊匹配當前狀態。mask對於高階帶狀態應用處理非常重要,比如,在heavy hitter detection中,無論計數器的值是多少,當前計數器的狀態應該與閾值進行對比。沒有mask的話,將會有無數的表項。

  • Event域是狀態遷移的觸發器。比如,每個資料包攜帶TCP標籤,觸發TCP狀態遷移。我們將事件標準化為Param1+ Comparison_Operator+Param2格式。FP可以從資料包、表、交換機、控制器獲得Param1和Param2。這兩個引數可以來自同樣的源地址,比如來自資料包首部的資料包源IP地址和資料包目的地址。操作符限制為<,>,=,>=或者<=。事件在不同的應用中有差異。我們通過判斷等式是否滿足來判斷事件是否檢測到,這可以根據相關的STT表項觸發狀態狀態遷移。比如,TCP資料包 的flag如果==FIN,連線的狀態將會從ESTABLISH到CLOSING。

  • Next State域可以通過算術或者邏輯操作直接地分配或計算。我們將Next State域定義為type+parameter。現在,我們支援兩種型別的Next State 域。分別為DIRECT_ASSIGN,由控制器直接定義,ADD_ONE:Next State欄位是當前State+1。

AT(Action Table)

AT用於記錄不同狀態下的動作。AT的結構如圖2所示。"Match Field" 和"State" 域與ST中的域相同。"Action"域描述了對應的動作。我們將動作功能分為以上討論的幾類。一個動作被定義為ActionType+Parameter形式。Actions可以靈活的擴充套件,只要我們為這些動作分配執行的方法和必要的引數。

C SDPA對帶狀態應用的支援

很多網路應用可以抽象為對一條流或者流集合定義的狀態機。當一個數據包進入FP,FP首先查詢在ST中的當前狀態,然後使用當前的狀態和事件(如果有的話),FP將會檢視STT並且查詢或者計算新的狀態。然後資料包和新的狀態將會送到AT進行相應的處理,同時,新的狀態將被更新到ST中,最後,資料包返回給OpenFlow管道進行下一步處理。

文中列舉一些帶狀態應用,如表1所示,同時對帶狀態應用分為兩類概念:有限狀態機和無限狀態機。

1)有限狀態機

一些帶狀態應用監控狀態可以抽象為有限狀態機,比如TCP連線狀態。考慮帶狀態防火牆監控流的TCP狀態例子。TCP連線包括SYN,SYN_ACK,ESTABLISHED,FIN_WAIT,CLOSED狀態。他們根據在TCP資料包首部的TCP 標記(flags)配置的事件進行狀態更新。圖3展示了ST、STT、AT設計的帶狀態防火牆。ST和AT中的match field(匹配域)附帶著掩碼,並且可以指定為萬用字元。在STT中的Next Field欄位可通過控制器直接地明確地配置。當非法的資料包到來,它們可以通過不合法的遷移很輕鬆地識別並且丟棄。

2)無限狀態機

很多網路應用需要對資料包計數,並且對不同計數器的狀態進行反應,比如heavy hitter detection,流大小檢測,負載均衡,DDoS檢測等,至於heavy hitter detection,為了在伺服器或者傳統SDN交換機子網檢測heavy hitters,控制器需要在流表安裝計數規則,然後按時地從交換機上查詢計數資料。這個方法有兩個限制,(1)頻繁查詢導致控制器開銷嚴重(2)從交換機上獲取所有的計數資料消耗控制器和交換機之間的大量頻寬。這些限制呼籲一種機制來解決狀態改變,同時不需要交換機與控制器頻繁進行通訊。接下來介紹在SDPA架構下實現heavy hitter detection。

表的定義如圖4所示,SDPA使用ST的狀態欄位保留流計數器。當一個數據包到來時,我們首先抽取出某個欄位,以識別這條流(比如源IP用於heavy hittter detection),然後查詢在ST中的計數資料(狀態欄位)。STT負責增加counter的值,並且檢查計數值是否大於閾值。。我們在STT表的 state 欄位配置一個萬用字元匹配規則,並且在 event 欄位與當前的狀態閾值對比。這裡,event 的param1是從ST中的狀態抽取出來的,param2通過控制器分配。如果計數器比閾值大,流的狀態將被更新為OVER_THRESHOLD,否則,計數器加一。AT 依賴流的新的狀態配置動作。如果新的狀態是OVER_THRESHOLD,那麼交換機將傳送資料包給控制器,告知檢測到heavy hitter。否則,資料包通過。

SDPA APIs

為了支援靈活定義帶狀態功能,我們在控制器之上定義了北向APIs,另外在控制器之間定義了南向APIs,北向API主要用於操作員編寫應用,包括確定應用的處理邏輯和表結構。南向APIss主要用於控制器和FP之間的交流。控制器通過南向結構初始化、修改FP中的STs、STTss和ATs。我們闡述API設計如下:

1)SDPA APIs關鍵組建

SDPA APIs 包括以下關鍵元件,(1)Match field(匹配欄位):匹配域的定義描述了每一條流的識別符號,比如TCP連線的五元組。匹配欄位可 (2)State(狀態): 狀態可以定義為列舉型別變數,比如enum state 為{1,2,3,....,n},交換機不需要知道每個狀態的意義。控制器可以通過列舉的狀態(state)值構造狀態表和狀態遷移表。(3)Event:一個event是狀態遷移的觸發器。比如,TCP資料包攜帶一個 flag,進行狀態遷移。。(3)Action:我們配置動作處理不同狀態下的資料包。Action可以靈活的擴張,只要我們在控制器和資料平面分配他們執行方法和引數。SDPA支援的動作如III-A所示。

2)南向API

控制器和FP通過南向APIs進行互動,是傳統OpenFLow 協議的一個擴充套件。南向APIs主要用於操作資料平面的狀態資訊,比如從控制器給FP初始化、修改表項,控制器對於FP有完全的控制。

用以上四個元件,我們定義了兩種訊息型別,控制器->FP的訊息和SDPA南向介面非同步訊息。控制器到FP的訊息用於控制器管理或者檢視FP的狀態。控制器到FP的訊息主要包括:

  • 表初始化訊息:用於初始化FP中的表。
  • 表項修改訊息: 用於新增、修改、刪除狀態表(State table)和動作表的表項。
  • 交換機配置訊息:他們用於控制器配置資料平面屬性,比如狀態報告間隔。需要注意的是,控制器到FP的訊息可能要也可能不要FP做出迴應。

非同步訊息主要用於FP初始化並且將狀態改變更新到控制器。控制器不詢問時,這訊息也會發送到控制器,FP傳送非同步訊息給控制器,表示狀態改變或者其他的時間。包括STATE_ENTRY_REMOVE、STATE_ENTRY_MODIFY。當一個狀態表項因為超時而移除時,STATE_ENTRY_REMOVE訊息將被觸發。狀態表的表項改變時,FP將傳送STATE_ENTRY_MODIFY訊息告訴控制器。

北向介面:北向介面用於為操作員提供帶狀態應用程式設計。北向介面可以分為三類:

  • (1)表格式功能,使用者呼叫這個介面來定義表字段,比如match fields,state,event 和 action。我們在當前的實現上提供固定的欄位集合選擇。但是,這個欄位集合可以通過應用需求進行靈活的擴充套件。
  • (2)訊息構造功能,用於控制器和交換機建立訊息遷移,包括表的初始化和修改以及交換機配置。
  • (3)訊息遷移功能 ,用於將訊息遷移到交換機。

E SDN交換機架構支援SDPA

我們設計了一個SDN交換機架構以支援SDPA,如圖5所示。我們新增FP和狀態表給SDN交換機架構來維護在資料平面的狀態資訊。另外,增加了策略模組,用於調整處理策略。這個模組包括STT和AT以及以上討論的關於狀態相關的配置。新的架構包-含以下功能模組:

  • 網路介面:直接與物理層相連,主要的功能包括接收/傳送資料包和資料包處理。工作在物理層和鏈路層。
  • 轉發引擎(Forwarding Engine):用於決定資料包的轉發路徑。為轉發操作解析收到的資料包頭和查詢流表以獲取目的埠。
  • 轉發處理器: FP與控制器互動,並且負責維護和管理資料平面的狀態資訊。
  • Flow Table(流表):扮演連線整個系統的角色。它可以根據控制器下發的資訊進行更新並且返回相關的轉發指令給轉發引擎。
  • State Table : 用於資料平面程式處理時,維護資料平面處理狀態資訊。
  • Policy Module: 它用於儲存來自控制器的處理策略,包括整個STT,AT,狀態報告間隔策略的配置。

F SDPA架構中的控制器增強

在SDPA架構中,除了控制器傳統的集中控制功能以外,我們用更高的效能改進了控制器以支援帶狀態應用。我們在交換機內部設計了FP,使用SDPA南向介面進行控制器和交換機之間的的通訊。控制器能夠初始化交換機內的應用,在執行時,控制器可以主動地增加、修改、刪除FP中的表項。此外,控制器能夠配置交換機屬性,包括狀態報告間隔等等。從應用的角度來看,控制器提供北向介面,為應用提供修改ST,STT和AT,以實現帶狀態邏輯處理。

控制器可以按時地接收來自資料平面的狀態報告,並且為狀態非同步更新本地狀態記錄。交換機不需要在每次狀態(遷移)更新時通知控制器,這樣可以節省網路的頻寬和減輕控制器負擔。儲存在控制器上的狀態可以用於故障恢復,控制器可以將故障交換機的狀態安裝到新的交換機上,並且對應的指導流。由於控制器可能不能夠處理最新的故障交換機狀態,安裝在新交換機上的狀態可能與老的交換機上的狀態不一致。支援交換機故障恢復並且狀態一致超出本文討論範圍。

注意,在SDPA架構中,控制器仍然是智慧指揮中心。傳統的功能比如鏈路發現,拓撲檢測,轉發等等仍然執行控制器上。我們在這個架構中新增SDPA協議,並且在資料平面維護狀態,為帶狀態應用提高兩者的效能和可擴充套件性。


IV SDPA交換機實現

A 在軟體上實現SDPA架構

B 在硬體上實現SDPA架構

C 網路功能鏈的定製

D 在硬體交換機上動態部署應用

E 彈性SDPA架構

V 評估

實驗對比:

A、SDPA架構下的軟體交換機效能vs傳統OpenFlow軟體交換機效能

B、無狀態轉發軟體交換機效能vs傳統OpenFlow軟體交換機效能

C、帶狀態表的彈性測試,這個測試時關於SDPA軟體交換機表大小和它對於延遲和吞吐量的影響

D、在SDPA硬體交換機中帶狀態防火牆vsSDPA軟體交換機帶狀態防火牆

E、SDPA硬體交換機帶狀態防火牆效能 vs 在傳統OpenFlow硬體交換機無狀態轉發效能

F、SDPA硬體交換機中實現網路功能鏈效能 vs SDPA軟體交換機中實現網路功能鏈效能

VI 相關工作


VII 討論

A SDPA流遷移

當一個交換機過載,操作員需要將交換機的一些流遷移到其他的交換機上。對於帶狀態應用比如帶狀態防火牆,遷移流意味著遷移ST,STT和AT表項。我們可以參考OpenNF [15]並增強SDPA資料平面和控制平面,以實現SDPA交換機之間的無損和保序狀態遷移。如上介紹,SDPA硬體交換機的軟體層負責與控制器通訊。因此,軟體和硬體交換機在反應狀態遷移時會是一致的。

B SDPA 的限制

SDPA可以高效的支援可以抽象為有限狀態機和無限狀態機的應用。因此,SDPA的能力等價於Finite Automation的自動化理論。然而,SDPA的帶狀態概念可以代表更大數量的普通網路功能,包括帶狀態防火牆,heavy hitter detection等。SDPA可以高效能的支援軟、硬體實現。


**個人: 有限狀態機和無限狀態機的區別
有限狀態機的輸出取決於當前的輸入和當前的狀態,當前的狀態構成的集合是有限的,相對應的,無限狀態機就是當前狀態構成的集合是無限的(不確定的)。