OpenFlow Flow Table

軟體定義網路 - OpenFlow 中 Flow Table 介紹

reference:

  1. OpenFlow Switch: What Is It and How Does it Work?
  2. 圖 : Flow Table Packet Processing Pipeline
  3. 2-2 FlowTables
  4. OpenFlow Switch Specification
  5. 圖 : 各版本openflow 的 header 長相
  6. OpenFlow 交換器規範 1.3.0 (1)
  7. Ryubook 1.0 說明文件

目錄:

  1. Open Flow 的架構
  2. Flow Table 和 Flow Entry
  3. Flow Table 欄位
  4. Action Set 中 Action 的執行順序

1. Open Flow 的架構

圖1 : OpenFlow 架構示意圖

  • 在 OpenFlow 的交換器中,最主要的結構就是 Flow Table。
  • Flow Table 彼此具有順序性,封包也被規定不能由後往前傳遞。

1.1 Flow Table 的 Pipeline

圖2: OpenFlow Pipeline 簡易流程圖

圖3: OpenFlow Pipeline 詳細流程圖

2. Flow Table 和 Flow Entry

※此 Flow Table為 OpenFlow 1.3 的樣式,1.0~1.2 版本可以參考 1 2 3

Match FieldsPriorityCounterInstructionsTimeoutsCookieFlags
  • 整個表會稱為 Flow Table,裡面的每個 row 稱為 Flow Entry。

3 Flow Table 的欄位

3.1 各個欄位的作用:

名稱解釋
Match Fields要去比對 packet 有沒有符合 flow entry,比對的內容至少有以下:
  • ingress port
  • packet header
  • optional metadate from previous table
Priorityflow entry 的優先程度,數字越高越優先,最小為零。
Counter紀錄以下資訊(當封包mtach時就更新):
  • Received Packet
  • Received Data
  • Duration(秒數,一定要紀錄,指的是 flow entry 存在多久)
  • Duration(奈秒)
Instruction當封包符合 flow entry 的條件時,所要做的動作,包括以下:
  • Meter : 要去看符合此 Flow Table 的封包量是否已經太多。
  • Apply Actions : 馬上對封包進行動作。例如把封包的header改掉,但不改變 Action set 的內容。
  • Clear/Write Actions (必須):修改封包中 Action set 的內容。
  • Write Metadata : 加入一些 metadata 給後面的 flow table 比對用。
  • Goto_Table(必須):指示封包之後要往哪一個 flow table 前進。
  • flood : 將接收到的封包廣播(除了輸入的 port 以外)
Timeouts標記此 flow entry 甚麼時候要被消除,包含以下兩種形式:
  • idle-timeout : 在閒置多久之後要被消除。
  • hard-timeout : 在經過多少時間之後,不管有沒有閒置都要被消除。
Cookie
  • 在處理封包的時候不會使用到此欄位。
  • opaque data value chosen by the controller. May be used by the controller to filter flow entries affected by flow statistics, flow modification and flow deletion requests.
Flags用來改變 flow entry 的管理方式,例如 OFPFF_SEND_FLOW_REM 會觸發到刪除此 flow entry 的 message。

3.2 Flow Table 管線處理流程

圖4: Flow Table 管線處理流程

  • 封包一定要從 table 0 開始比對。
  • 由 priority 高的開始比對

3.3 Table Miss Entry

以下是某個 Flow Table :

Match FieldsPriorityCounterInstructionsTimeoutsCookieFlags
ANY0

由上表可以看到,Table Miss Entry 所使用的 Match Feild 是 ANY,且因為是最後比的,因此 Priority 是最低的 0 。

4. Action Set 中 Action 的執行順序

順位名稱功能
1.copy TTL inwards
2.pop
3.push-MPLS
4.push-PBB
5.push-VLAN
6.copy TTL
7.decrement TTLTTL-=1
8.set (set-field)修改封包內的某些欄位
9.qos (set-queue)寫入一個 queue id 進到指定封包內
10.group如果有指定 group action ,就依照 group table 內的指令做
11.output如果沒有指定 group action,則在 output action 指定的 port 轉發 packet。
  • TTL : Time To Live 指一個封包在經過一個路由器時,可傳遞的最長距離(躍點數)。目的是防止封包因不正確的路由表等原因造成的無限循環而無法送達及耗盡網路資源。
tags: SDN
Licensed under CC BY-NC-SA 4.0