第1章 OpenFlow概要 1
1.1 OpenFlow的發展曆程 2
1.1.1 OpenFlow的曆史 2
1.1.2 ONF 2
1.2 有效運用現有硬件,實現高效設計 4
1.3 所謂OpenFlow,具體是指什麼 5
1.3.1 OpenFlow的網絡構成示例 5
1.3.2 控製麵和數據麵的分離 5
1.3.3 控製麵的構建方法 6
1.3.4 數據麵的構建方法 7
1.3.5 OpenFlow控製器和OpenFlow通道 9
1.3.6 流錶 10
1.4 控製器和交換機的基本動作 11
1.4.1 OpenFlow交換機的初始動作 11
1.4.2 Proactive模式設置 11
1.4.3 Reactive模式設置 11
1.5 OpenFlow的動作示例 14
1.5.1 動作示例1 14
1.5.2 動作示例2 15
1.5.3 動作示例3 15
1.5.4 其他動作示例 16
1.6 不斷變化的OpenFlow規範 17
1.6.1 OpenFlow 1.0版本以後快速變化的規範 17
1.6.2 實現OpenFlow 1.3標準化後 17
1.6.3 本書中對OpenFlow 1.1以上版本的說明 18
第2章 OpenFlow 1.0的機製 19
2.1 OpenFlow 1.0中的流錶和流錶項 20
2.2 流錶項 22
2.2.1 頭字段 22
2.2.2 計數器 25
2.2.3 行動 26
2.3 行動 27
2.3.1 Forward行動 27
2.3.2 Drop行動 28
2.3.3 Enqueue行動(可選) 29
2.3.4 Modify-Field行動(可選) 29
2.4 控製器和交換機之間的消息 32
2.4.1 安全通道的建立 32
2.4.2 消息格式 32
2.4.3 安全通道的建立和初始設置 33
2.4.4 握手 35
2.4.5 Flow-Mod消息 39
2.4.6 Packet-In消息 45
2.4.7 Packet-Out消息 46
2.4.8 Port-Status消息 47
2.4.9 Flow-Removed消息 48
2.4.10 Error消息 49
2.4.11 Barrier消息 50
2.4.12 Echo消息 51
2.5 OpenFlow Switch Errata Version 1.0.1 53
2.6 新規範變化很大,需要注意 54
第3章 LLDP 和OpenFlow 55
3.1 LLDP和OpenFlow 56
3.2 LLDP的機製 58
3.2.1 在LLDP中使用的目標以太網地址 58
3.2.2 LLDP中使用的3 種組播以太網地址 59
3.2.3 LLDPDU格式 60
3.3 OpenFlow中有效使用LLDP的方法示例 62
3.3.1 事先準備 62
3.3.2 通過Packet-Out消息發送LLDP幀 63
3.3.3 通過Packet-In消息將LLDP幀發送至OpenFlow控製器 64
3.4 基於迪傑斯特拉算法的路徑計算 66
第4章 通過實現L2交換機的功能來學習OpenFlow 69
4.1 通過具體網絡設備的實現理解OpenFlow 70
4.2 中繼器HUB 71
4.2.1 該示例中的網絡構成 71
4.2.2 通過Proactive模式設置實現 71
4.2.3 將所有數據包Packet-In至OpenFlow控製器的方法 73
4.3 自學習橋接器 77
4.3.1 該示例中的網絡構成 77
4.3.2 使用OpenFlow 1.0挑戰自學習橋接器 78
4.3.3 監控ARP 並創建流錶項 83
4.3.4 如果將PC A和PC B對調,結果會怎樣 89
4.3.5 通過發送源和目標以太網地址的配對進行管理的方法 90
4.3.6 在OpenFlow 1.1以上版本中實現自學習橋接器的方法 90
4.4 Tagged VLAN 92
4.4.1 該示例中的網絡構成 92
4.4.2 實現Tagged VLAN的設置(OpenFlow交換機1) 93
4.4.3 實現Tagged VLAN的設置(OpenFlow交換機2) 96
4.4.4 該示例中的注意事項 98
第5章 OpenFlow與虛擬化 99
5.1 服務器虛擬化和網絡虛擬化 100
5.1.1 服務器虛擬化 100
5.1.2 動態遷移 101
5.1.3 多租戶 102
5.1.4 網絡虛擬化 103
5.2 基於OpenFlow的網絡虛擬化的實現方法示例 105
5.2.1 使用VLAN ID的方法 105
5.2.2 使用物理端口/邏輯端口的方法 105
5.2.3 OpenFlow控製器的實現要點 106
5.2.4 其他方法 106
5.3 FlowVisor 107
5.3.1 FlowVisor概要 107
5.3.2 FlowVisor和OpenFlow控製器之間的OpenFlow通道 107
5.3.3 FlowVisor的串聯 108
5.3.4 FlowVisor和虛擬網絡 109
5.3.5 設置FlowVisor時的注意事項 110
第6章 通過用例考察OpenFlow 111
6.1 使用以太網地址的用戶管理 112
6.2 ECMP 114
6.2.1 該示例中的網絡構成 114
6.2.2 通過發送源地址區分時 115
6.2.3 通過TCP端口號區分時 116
6.2.4 輪詢方式 116
6.3 簡易負載均衡 117
6.4 選擇性端口映射 118
6.4.1 單純的端口映射 118
6.4.2 僅映射特定的TCP端口 119
6.4.3 OpenFlow 1.1的“組”和映射 120
6.4.4 從多個OpenFlow交換機持續進行選擇性映射並轉發至監控設備 120
6.5 重定嚮至安全産品 121
6.6 與虛擬路由近似的動作(多層交換機) 122
6.6.1 該示例中的網絡構成 122
6.6.2 同一子網內的數據包轉發處理 123
6.6.3 經過路由器的數據包轉發處理 123
6.6.4 作為虛擬路由器響應ARP請求 124
6.6.5 虛擬路由器使用ARP解決以太網地址 125
6.6.6 TTL 的處理 126
第7章 OpenFlow1.1 127
7.1 OpenFlow 1.1中的變更要點 128
7.2 匹配字段的變更 129
7.3 多流錶規範的變更(流水綫處理) 130
7.3.1 流水綫處理 130
7.3.2 元數據 134
7.3.3 OpenFlow 1.1中的自學習橋接器的實現手法 135
7.4 指令 136
7.4.1 何謂指令 136
7.4.2 行動、行動集、行動列錶、指令的區彆 136
7.4.3 對行動的變更 137
7.5 組 139
7.5.1 組錶 139
7.5.2 組錶項 139
7.5.3 組類型 140
7.5.4 組的組 144
7.6 虛擬端口的擴展 145
7.7 TTL 字段操作 146
7.7.1 copy TTL inwards/copy TTL outwards 146
7.7.2 接收到包含非法TTL 值的數據包時的處理 147
7.7.3 不能實施TTL 的匹配 148
7.8 OpenFlow 1.1中其他的變更 149
7.8.1 支持MPLS標簽和VLAN 標簽的Push/Pop 149
7.8.2 OpenFlow混閤交換機 149
7.8.3 支持SCTP 149
7.8.4 支持ECN 150
7.8.5 OpenFlow交換機和控製器之間連接名稱的變更 150
7.8.6 緊急事態流緩存的取消 151
7.8.7 Vendor消息名稱的變更 151
第8章 OpenFlow 1.2 153
8.1 OpenFlow 1.2中的變更點 154
8.2 OpenFlow eXtensible Match(OXM) 155
8.2.1 OXM TLV 的基本結構 155
8.2.2 匹配字段解析規範的取消和Pre-requisite 157
8.2.3 OXM匹配字段 158
8.2.4 OXM中的通配符 159
8.2.5 OXM TLV示例 160
8.2.6 基於OXM的Set-Field 162
8.2.7 取消TCP、UDP、SCTP、ICMP重載使用相同字段 162
8.3 支持基本的IPv6 163
8.4 支持多颱控製器(故障轉移和負載均衡) 164
8.4.1 Role 164
8.4.2 Role變更 165
8.4.3 OpenFlow控製器之間的協作 165
8.5 OpenFlow 1.2中的其他變化 167
8.5.1 將虛擬端口分離為邏輯端口和保留端口 167
8.5.2 Flow-Mod的MODIFY/MODIFY_STRICT的規範變更 167
8.5.3 對實驗性擴展的支持 167
8.5.4 變更曆史記錄的添加 168
第9章 OpenFlow 1.3 169
9.1 OpenFlow 1.3中的變更要點 170
9.2 計量錶(QoS支持) 171
9.3 Table-miss的默認動作改為Drop 173
9.3.1 Table-miss流錶項 173
9.3.2 流錶匹配流程的變更 173
9.4 OpenFlow 1.3中的其他變更 175
9.4.1 OpenFlow控製器和OpenFlow交換機之間的輔助連接 175
9.4.2 可以通過UDP、DTLS等與OpenFlow控製器進行通信 175
9.4.3 支持IPv6擴展頭 176
9.4.4 OXM 匹配字段的添加 176
9.4.5 支持PBB 176
9.4.6 多框架 177
9.4.7 從握手時的Features響應消息中刪除端口號 178
9.4.8 流錶項構成要素的變更 178
9.5 OpenFlow 1.3.1和1.3.2 179
9.5.1 OpenFlow通道中版本協商的變更 179
9.5.2 建立與OpenFlow控製器之間的OpenFlow 通道 179
第10章 OpenFlow的注意事項 181
10.1 Packet-In消息的處理負載 182
10.1.1 控製麵帶寬較窄導緻的故障 183
10.1.2 Packet-In導緻的消息延遲 183
10.2 匹配和流相關的注意事項 184
10.2.1 未發現TCP標誌 184
10.2.2 並非數據包及幀的任意字段都可進行匹配 184
10.2.3 匹配字段的依賴關係 185
10.3 取決於實現的事項 187
10.3.1 流錶項數量的上限 187
10.3.2 OpenFlow控製器可同時控製的OpenFlow交換機數量的上限 187
10.3.3 通過buffer_id錶示的數據包未必保存著 187
10.3.4 OpenFlow通道斷開時的重新連接計時器 188
10.4 從下流發送Flow-Mod 189
10.5 Barrier消息和錯誤 190
10.5.1 Flow-Mod之後的Packet-Out 190
10.5.2 嚮不同的OpenFlow交換機發送Flow-Mod 消息和Packet-Out
消息時 192
10.6 沒有檢測Packet-Out失敗的方法 194
10.7 IP 碎片處理 195
第11章 OpenFlow的未來 197
11.1 互通性驗證 198
11.1.1 OF-Test 198
11.1.2 PlugFest 198
11.1.3 2012 年進行的第1次PlugFest 198
11.1.4 第2次、第3次PlugFest 199
11.1.5 今後的課題 199
11.2 Northbound API 201
11.3 OF-CONFIG 202
附錄 203
附錄1 各版本的行動一覽 204
附錄1.1 OpenFlow 1.0的行動 204
附錄1.2 OpenFlow 1.1的行動 205
附錄1.3 OpenFlow 1.2的行動 206
附錄1.4 OpenFlow 1.3的行動 207
附錄2 各版本的消息一覽 209
附錄 2.1 OpenFlow 1.0的消息 209
附錄2.2 OpenFlow 1.1的消息 210
附錄2.3 OpenFlow 1.2的消息 211
附錄2.4 OpenFlow 1.3的消息 212
附錄3 OpenFlow 從1.0到1.3.2的變更之處 213
附錄3.1 行動集 213
附錄3.2 指令 213
附錄3.3 行動列錶 213
附錄3.4 組錶 214
附錄3.5 計量錶 214
附錄3.6 行動 214
附錄4 參考文獻及URL 215
· · · · · · (
收起)