本書主要介紹SDN的基礎原理,包括SDN的定義、架構、應用,涵蓋SDN主流控制器的基礎知識,包括概念、架構、主要模塊說明;介紹虛擬交換機OVS、SDN仿真環境、SDN主流控制器的安裝指南、操作指南、開發環境準備;介紹OpenDaylight的MD-SAL開發流程,以示例詳解的方式使用YANG建模語言和Java語言進行MD-SAL相關開發;介紹使用OpenDaylight北向API接口進行北向開發的過程。書中利用大量的具體示例和實際案例來說明OpenDaylight的開發步驟,讀者在閱讀學習后既能夠掌握基本的開發流程,又能夠理解其框架原理。
本書適合所有SDN的愛好者和從業者,尤其是對OpenDaylight感興趣的開發者,也適合培訓機構及大中專院校教學使用。 本書配書資源下載地址https://pan.baidu.com/s/1BMnl1lYZSvZde_ymUJh8rA
本書聯系E-mail地址:booksaga@126.com
本書聯系QQ地址:3113088@qq.com
程麗明 n
中山大學計算機軟件與理論碩士,目前就職于藍盾信息安全技術股份有限公司,擔任前沿技術高級研究員一職,主要從事軟件定義網絡、云安全、虛擬化領域的研究和產品開發工作,擁有多年的項目開發經驗,研究興趣包括SDN、虛擬化、云計算、移動辦公安全等,發表國內外專利和論文十余篇。
目 錄
目 錄
第一篇 理論篇——SDN概述、OpenDaylight簡介、Controller項目總述
第1章 什么是SDN 3
1.1 SDN的誕生 3
1.2 SDN的標準及組織機構 5
1.3 SDN的一些典型應用場景 6
1.3.1 SDN在數據中心的應用:Cisco的ACI和VMware的NSX 7
1.3.2 SDN在廣域網的應用(SD-WAN):谷歌的B4 9
1.3.3 SDN與安全——一種基于SDN的云計算安全保護系統及方法 10
1.4 SDN的一些重要學習資源 12
1.5 本章總結 15
第2章 SDN架構簡析 16
2.1 SDN架構總述 17
2.2 SDN控制器 18
2.3 SDN交換機 20
2.4 南向接口協議 21
2.4.1 OpenFlow 1.0 22
2.4.2 OpenFlow 1.3 27
2.5 北向接口協議 32
2.6 本章總結 32
第3章 現有SDN交換機簡介 33
3.1 OVS簡介 33
3.1.1 認識OVS 33
3.1.2 OVS常用的命令 35
3.1.3 OVS的學習參考 49
3.2 SDN硬件交換機簡介 50
3.2.1 思科 50
3.2.2 博科 51
3.2.3 華為 51
3.2.4 瞻博網絡 52
3.2.5 NEC 52
3.2.6 戴爾 53
3.2.7 Arista 53
3.2.8 新華三 54
3.2.9 銳捷網絡 54
3.2.10 xNET網銳科技 55
3.2.11 盛科網絡 55
3.3 本章總結 56
第4章 現有SDN控制器簡述 57
4.1 OpenDaylight控制器 58
4.2 ONOS控制器 59
4.3 Floodlight控制器 63
4.4 Ryu控制器 65
4.5 思科的APIC控制器和Open SDN控制器 66
4.5.1 思科APIC控制器 66
4.5.2 思科Open SDN控制器 67
4.5.3 思科SDN控制器的學習參考資源 67
4.6 OpenContrail控制器 67
4.7 NOX控制器 69
4.8 POX控制器 70
4.9 Beacon控制器 70
4.10 Big Network控制器 71
4.11 博科的Brocade SDN控制器 72
4.12 Maestro控制器 73
4.13 IRIS控制器 74
4.14 Extreme公司的OneController控制器 75
4.15 本章總結 76
第5章 OpenDaylight綜述 77
5.1 OpenDaylight項目介紹 77
5.2 OpenDaylight版本介紹 80
5.2.1 氫版本簡介 80
5.2.2 氦版本簡介 82
5.2.3 鋰版本簡介 83
5.2.4 鈹版本簡介 85
5.2.5 硼版本簡介 85
5.3 OpenDaylight的子項目簡介 89
5.3.1 子項目AAA(認證、授權、審計項目)簡介 93
5.3.2 子項目Federation(聯合體項目)簡介 94
5.3.3 子項目Infrastructure Utilities(基礎設施項目)簡介 94
5.3.4 子項目MD-SAL(模塊驅動項目)簡介 95
5.3.5 子項目ODL Root Parent(父項目)簡介 97
5.3.6 子項目OpenDaylight Controller(控制器項目)簡介 97
5.3.7 子項目YANG Tools(YANG工具項目)簡介 98
5.3.8 子項目BGP LS PCEP(BGP和PCEP項目)簡介 99
5.3.9 NETCONF(NETCONF項目)子項目簡介 100
5.3.10 子項目ODL Lisp Flow Mapping(LISP流映射項目)簡介 100
5.3.11 子項目ODL OpenFlow Plugin(OpenFlow插件項目)簡介 101
5.3.12 子項目OpenFlow Protocol Library(OpenFlow協議庫項目)簡介 101
5.3.13 子項目OVSDB Integration(OVSDB集成項目)簡介 101
5.3.14 子項目USC(統一安全通道項目)簡介 101
5.3.15 子項目FaaS(網絡構造即服務項目)簡介 102
5.3.16 子項目NeutronNorthbound(Neutron北向項目)簡介 102
5.3.17 子項目ALTO(應用層流量優化項目)簡介 103
5.3.18 子項目CAPWAP(無線接入點的控制和提供)簡介 103
5.3.19 子項目Controller Core Functionality Tutorials(控制器核心功能向導項目)簡介 104
5.3.20 子項目Controller Shield(控制器盾項目)簡介 104
5.3.21 子項目DIDM(設備認證和驅動管理項目)簡介 104
5.3.22 子項目Group Based Policy(GBP)/Project Facts(GBP項目)簡介 105
5.3.23 子項目L2 Switch(L2層交換機項目)簡介 106
5.3.24 子項目LACP(鏈接聚合控制協議項目)簡介 106
5.3.25 子項目OF-CONFIG(OF-CONFIG項目)簡介 106
5.3.26 子項目OpenDaylight DLUX(ODL的DLUX項目)簡介 107
5.3.27 子項目Service Function Chaining(服務功能鏈項目)簡介 107
5.3.28 子項目VTN(VTN項目)簡介 108
5.4 OpenDaylight學習參考 108
5.5 本章總結 109
第6章 OpenDaylight的Controller項目綜述 110
6.1 Controller簡介 110
6.1.1 OpenDaylight項目的控制器能滿足當今網絡發展的需求 110
6.1.2 OpenDaylight項目的控制器及技術關鍵組成介紹 111
6.2 Controller架構 113
6.3 Controller項目的服務抽象層SAL 114
6.3.1 MD-SAL 119
6.3.2 AD-SAL 120
6.4 Controller項目的學習參考 121
6.5 本章總結 121
第二篇 實操篇——控制器的安裝指南、操作指南、開發環境準備
第7章 SDN底層架構的搭建指南 124
7.1 OVS安裝指南 125
7.1.1 使用系統內置命令直接安裝OVS 125
7.1.2 下載包并手動安裝OVS 126
7.2 仿真環境Mininet安裝指南 129
7.2.1 Mininet的介紹 129
7.2.2 下載Mininet虛擬機文件進行安裝 131
7.2.3 在本地下載源代碼以安裝Mininet 133
7.2.4 使用包安裝Mininet 135
7.2.5 Mininet的升級 136
7.2.6 升級Mininet的OVS版本 137
7.2.7 Mininet常用命令 140
7.3 Xen環境部署SDN網絡的安裝指南 147
7.3.1 安裝Xen 147
7.3.2 安裝OVS 149
7.3.3 創建虛擬機 151
7.3.4 對虛擬機文件進行修改 151
7.3.5 啟動虛擬機 153
7.4 KVM環境部署SDN網絡的安裝指南 153
7.4.1 安裝KVM 153
7.4.2 安裝OVS 154
7.4.3 在KVM上進行相關的配置 156
7.4.4 創建虛擬機并將其連接到OVS網橋上 157
7.5 OpenStack環境部署SDN網絡的安裝指南 157
7.5.1 在現有的OpenStack的基礎上安裝OpenDaylight 158
7.5.2 使用DevStack以同時安裝OpenStack和OpenDaylight 164
7.6 硬件環境部署SDN網絡的安裝指南 165
7.6.1 配置硬件交換機 165
7.6.2 配置硬件交換機所連接的控制器 166
7.7 本章總結 167
第8章 控制器OpenDaylight安裝指南、操作指南和開發環境準備 169
8.1 Controller項目的源碼安裝指南 169
8.1.1 基礎安裝環境要求 170
8.1.2 項目編譯和運行的軟件環境要求 170
8.1.3 下載Controller項目的源碼 173
8.1.4 編譯Controller子項目的源碼 174
8.1.5 Controller項目更新 176
8.1.6 啟動運行Controller項目 176
8.1.7 安裝參考 177
8.2 Controller項目的快速安裝指南 177
8.3 OpenDaylight的Controller項目的開發環境準備 179
8.3.1 設置Gerrit賬戶 179
8.3.2 Eclipse的安裝和設置 183
8.3.3 參考鏈接 184
8.4 OpenDaylight的Controller項目的使用指南 185
8.4.1 使用Controller和Mininet搭建一個簡單的SDN環境 185
8.4.2 控制器OpenDaylight之Controller控制臺界面介紹 186
8.4.3 通過Postman下發、刪除、更新流表的操作 189
8.4.4 相關參考 200
8.5 OpenDaylight的通用項目源碼安裝指南 200
8.5.1 下載OpenDaylight子項目的源碼 201
8.5.2 編譯OpenDaylight子項目的源碼 202
8.5.3 編譯OpenDaylight子項目更新 203
8.5.4 啟動運行OpenDaylight子項目 203
8.5.5 安裝參考 204
8.6 OpenDaylight的通用項目快速安裝指南 204
8.7 OpenDaylight的通用開發環境準備 206
8.8 控制器OpenDaylight的學習參考 206
8.9 本章總結 206
第9章 控制器ONOS安裝指南 208
9.1 控制器ONOS簡介 208
9.1.1 ONOS簡述 208
9.1.2 ONOS的使命 210
9.1.3 ONOS創建組織簡介 211
9.2 控制器ONOS源碼安裝指南 212
9.2.1 安裝前提環境的準備 212
9.2.2 ONOS源碼的下載和安裝 216
9.2.3 在本地的開發機器上運行控制器ONOS 219
9.2.4 安裝參考 220
9.3 控制器ONOS下載包的安裝指南 221
9.4 控制器ONOS通過下載虛擬機進行部署的安裝指南 222
9.5 控制器ONOS的使用指南 225
9.5.1 控制器ONOS的控制臺界面介紹 225
9.5.2 使用ONOS和Mininet搭建一個簡單的SDN環境 227
9.6 控制器ONOS的學習參考 228
9.7 本章總結 229
第10章 控制器Floodlight安裝指南 230
10.1 控制器Floodlight源碼安裝指南 230
10.1.1 安裝前提環境的準備 230
10.1.2 安裝Floodlight 231
10.1.3 Floodlight的更新升級 231
10.2 控制器Floodlight通過下載虛擬機進行部署的安裝指南 232
10.3 控制器Floodlight的使用指南 233
10.3.1 控制器Floodlight的常用命令介紹 233
10.3.2 控制器Floodlight的啟動 235
10.3.3 控制器Floodlight的界面介紹 237
10.3.4 使用Floodlight和Mininet搭建一個簡單的SDN環境 240
10.3.5 使用Floodlight和硬件交換機連接以搭建一個簡單的SDN環境 245
10.4 控制器Floodlight的學習參考 245
10.5 本章總結 246
第11章 控制器Ryu安裝指南 247
11.1 控制器Ryu源碼安裝指南 247
11.1.1 安裝前提環境的準備 247
11.1.2 安裝Ryu 248
11.1.3 安裝參考 248
11.2 使用系統內置命令直接安裝控制器的安裝指南 249
11.2.1 安裝前提環境的準備 249
11.2.2 使用系統內置命令直接安裝Ryu 249
11.2.3 安裝參考 249
11.3 控制器Ryu通過下載虛擬機進行部署的安裝指南 249
11.4 控制器Ryu連接Mininet的實驗 250
11.4.1 實驗環境設計 250
11.4.2 控制器Ryu的啟動 251
11.4.3 啟動Mininet創建仿真網絡 251
11.5 控制器Ryu的學習參考 254
11.6 本章總結 254