1.OpenFlow交換機的基本構成
1.1 流表
OpenFlow流表由流表項構成,流表項的結構隨着OpenFlow版本的不斷演進不斷變化,不同協議所包含的流表項結構不同,具體各版本如下表所示:
版本 | 包含內容 |
---|---|
1.0 | 頭字段(Header Filed)、計數器(Counters)、行動(Actions) |
1.1 | 匹配字段(Match Filed)、計數器)(Counters)、指令(Instruction) |
1.2 | 同OpenFlow1.1 |
1.3 | 匹配字段(Match Filed)、優先級(Priority)、計數器(Counters)、指令(Instruction)、超時(Timeouts)、Cookies |
1.4 | 同OpenFlow1.3 |
1.5 | 同OpenFlow1.5 |
1.2 組表
OpenFlow交換機只含有一個組表,組表中包含許多組表項,每條組表項的結構如下:
組ID(Group identier) | 組類型(Group Type) | 計數器(Counters) | 動作桶(Action Buckets) |
---|---|---|---|
1.3 Meter表
Meter表項用於關聯流表項,對匹配流表項的報文實施QOS策略
Meter identifier | Meter Bands | Counters |
---|---|---|
其中Meter帶又有如下組成:
Bands Type | Rate | Counters| | Type Specific arguments |
---|---|---|---|
1.4 匹配字段
OpenFlow流表項的匹配域支持豐富的匹配字段,OpenFlow1.0支持匹配的數據包頭的12個字段,到OpenFlow1.3,已經擴展到39個字段,並規定了OpenFlow交換機必須實現的13個字段(之後補充)
OpenFlow1.0的12個字段如下:
Ingress Port | Ether Source | Ether Des | Ether Type | VLAN ID | VLAN Priority | IP Source | IP Des | IP Protocol | IP TOS | TCP/UDP Source Port | TCP/UDP Des Port |
---|---|---|---|---|---|---|---|---|---|---|---|
1.5 指令集
當報文匹配上流表項時,執行表項包含的指令集,指令集類型如下所示:
指令 | 說明 | 可選/必選 |
---|---|---|
Write-Action | 添加指定動作到動作集 | 必選 |
GoTo-Table | 轉到另一個流表處理 | 必選 |
Meter | 指示報文關聯指定的Meter流表項 | 可選 |
Apply-Actions | 應用動作列表中的動作 | 可選 |
Clear-Actions | 清空動作集 | 可選 |
Write-Metadata | 寫入元數據 | 可選 |
1.6 動作集
當流表項的指令集中不包含GoTo-Table時,立即執行相關聯的動作集,動作類型如下表所示:
動作類型 | 說明 | 可選/必選 |
---|---|---|
Output | 將報文轉發到特性的OpenFlow端口 | 必選 |
Drop | 滿足條件時丟棄 | 必選 |
Group | 將報文轉交組表處理,動作由組表類型定義 | 必選 |
Set-Queue | 將報文指定隊列ID,用於實施QOS | 可選 |
Push-Tag/Pop-Tag | 適用於對VLAN頭,MPLS頭,PBB頭進行操作 | 可選 |
Set-Field | 識別匹配字段類型並修改字段的值 | 可選 |
Change-TTL | 修改IPV4,IPV6,MPLS中的TTL | 可選 |
1.7 動作列表
動作列表存在於特定協議報文中,它與動作集的區別在於,動作列表中的動作按照列表順序依次執行,且可以包含多個同類型動作,這些動作的執行效果可以疊加。
1.8 OpenFlow端口
OpenFlow端口分爲三類:物理端口,邏輯端口,保留端口
- 物理端口爲OpenFlow交換機的硬件接口
- 邏輯端口通常由協議設置,如聚合口,隧道口
- 保留端口由轉發動作定義,例如轉發到控制器
1.9 OpenFlow報文的處理流程
OpenFlow流水線將交換機內的一組流表串聯起來,定義了每個流表怎樣用於報文處理。
1.10 安全信道
安全信道是控制器和其管理的每一臺OpenFlow交換機間的可靠連接,具體流程如圖所示:
1.11 協議報文
1.同步消息
-
可由交換機或控制器主動發起,並需要接受對方的應答。主要用於建立檢測對方是否在線等。
-
包括Hello、Echo、Vendo三種子消息
2.異步消息
-
由OpenFlow交換機發起,用來通知交換機上發生的某些異步事件。消息是單向的,不需要控制器應答。主要用於交換機向控制器通知收到報文、狀態變化、出現錯誤等事件信息
-
包括Packet-In、Flow-removed、Port-status、Error四種子消息
3.控制器向交換機連接
-
由控制器發起,對OpenFlow交換機進行狀態查詢和修改配置等操作;OpenFlow交換機接收並處理可能發送或不需要發送的應答消息
-
包括Modify-state、Read-state、Packet-Out、Barrier request/reply等四類子消息
2.OpenFlow演進
2.1 OpenFlow協議的功能演進
OpenFlow各個協議版本之間的主要區別
版本 | 主要功能 |
---|---|
OF 1.0 | 單表、IPV4 |
OF 1.1 | 多級流表、組表、MPLS、VLAN |
OF 1.2 | 多控制器、IPV6 |
OF 1.3 | Meter表、版本協商能力 |
OF 1.4 | 流表同步、協議消息完善 |
OF 1.5 | 數據包類型識別流程(以太網數據包、PPP數據包)egress Table |