SDN環境部署與OpenDaylight開發入門
第一篇 理論篇 SDN概述、OpenDaylight簡介、Controller項目總述
1 什么是SDN
1.1 SDN的誕生
1.2 SDN的標准及組織機構
1.3 SDN的一些典型應用場景
1.3.1 SDN在數據中心的應用:Cisco的ACI和VMware的NSX
1.3.2 SDN在廣域網的應用(SD-WAN):谷歌的B4
1.3.3 SDN與安全——一種基於SDN的雲計算安全保護系統及方法
1.4 SDN的一些重要學習資源
1.5 本章總結
2 SDN架構簡析
2.1 SDN架構總述
2.2 SDN控制器
2.3 SDN交換機
2.4 南向接口協議
2.4.1 OpenFlow 1.0
2.4.2 OpenFlow 1.3
2.5 北向接口協議
2.6 本章總結
3 現有SDN交換機簡介
3.1 OVS簡介
3.1.1 認識OVS
3.1.2 OVS常用的命令
3.1.3 OVS的學習參考
3.2 SDN硬件交換機簡介
3.2.1 思科
3.2.2 博科
3.2.3 華為
3.2.4 瞻博網絡
3.2.5 NEC
3.2.6 戴爾
3.2.7 Arista
3.2.8 新華三
3.2.9 銳捷網絡
3.2.10 xNET網銳科技
3.2.11 盛科網絡
3.3 本章總結
4 現有SDN控制器簡述
4.1 OpenDaylight控制器
4.2 ONOS控制器
4.3 Floodlight控制器
4.4 Ryu控制器
4.5 思科的APIC控制器和Open SDN控制器
4.5.1 思科APIC控制器
4.5.2 思科Open SDN控制器
4.5.3 思科SDN控制器的學習參考資源
4.6 OpenContrail控制器
4.7 NOX控制器
4.8 POX控制器
4.9 Beacon控制器
4.10 Big Network控制器
4.11 博科的Brocade SDN控制器
4.12 Maestro控制器
4.13 IRIS控制器
4.14 Extreme公司的OneController控制器
4.15 本章總結
5 OpenDaylight綜述
5.1 OpenDaylight項目介紹
5.2 OpenDaylight版本介紹
5.2.1 氫版本簡介
5.2.2 氦版本簡介
5.2.3 鋰版本簡介
5.2.4 鈹版本簡介
5.2.5 硼版本簡介
5.3 OpenDaylight的子項目簡介
5.3.1 子項目AAA(認證、授權、審計項目)簡介
5.3.2 子項目Federation(聯合體項目)簡介
5.3.3 子項目Infrastructure Utilities(基礎設施項目)簡介
5.3.4 子項目MD-SAL(模塊驅動項目)簡介
5.3.5 子項目ODL Root Parent(父項目)簡介
5.3.6 子項目OpenDaylight Controller(控制器項目)簡介
5.3.7 子項目YANG Tools(YANG工具項目)簡介
5.3.8 子項目BGP LS PCEP(BGP和PCEP項目)簡介
5.3.9 NETCONF(NETCONF項目)子項目簡介
5.3.10 子項目ODL Lisp Flow Mapping(LISP流映射項目)簡介
5.3.11 子項目ODL OpenFlow Plugin(OpenFlow插件項目)簡介
5.3.12 子項目OpenFlow Protocol Library(OpenFlow協議庫項目)簡介
5.3.13 子項目OVSDB Integration(OVSDB集成項目)簡介
5.3.14 子項目USC(統一安全通道項目)簡介
5.3.15 子項目FaaS(網絡構造即服務項目)簡介
5.3.16 子項目NeutronNorthbound(Neutron北向項目)簡介
5.3.17 子項目ALTO(應用層流量優化項目)簡介
5.3.18 子項目CAPWAP(無線接入點的控制和提供)簡介
5.3.19 子項目Controller Core Functionality Tutorials(控制器核心功能向導項目)簡介
5.3.20 子項目Controller Shield(控制器盾項目)簡介
5.3.21 子項目DIDM(設備認證和驅動管理項目)簡介
5.3.22 子項目Group Based Policy(GBP)/Project Facts(GBP項目)簡介
5.3.23 子項目L2 Switch(L2層交換機項目)簡介
5.3.24 子項目LACP(鏈接聚合控制協議項目)簡介
5.3.25 子項目OF-CONFIG(OF-CONFIG項目)簡介
5.3.26 子項目OpenDaylight DLUX(ODL的DLUX項目)簡介
5.3.27 子項目Service Function Chaining(服務功能鏈項目)簡介
5.3.28 子項目VTN(VTN項目)簡介
5.4 OpenDaylight學習參考
5.5 本章總結
6 OpenDaylight的Controller項目綜述
6.1 Controller簡介
6.1.1 OpenDaylight項目的控制器能滿足當今網絡發展的需求
6.1.2 OpenDaylight項目的控制器及技術關鍵組成介紹
6.2 Controller架構
6.3 Controller項目的服務抽象層SAL
6.3.1 MD-SAL
6.3.2 AD-SAL
6.4 Controller項目的學習參考
6.5 本章總結
第二篇 實操篇 控制器的安裝指南、操作指南、開發環境准備
7 SDN底層架構的搭建指南
7.1 OVS安裝指南
7.1.1 使用系統內置命令直接安裝OVS
7.1.2 下載包並手動安裝OVS
7.2 仿真環境Mininet安裝指南
7.2.1 Mininet的介紹
7.2.2 下載Mininet虛擬機文件進行安裝
7.2.3 在本地下載源代碼以安裝Mininet
7.2.4 使用包安裝Mininet
7.2.5 Mininet的升級
7.2.6 升級Mininet的OVS版本
7.2.7 Mininet常用命令
7.3 Xen環境部署SDN網絡的安裝指南
7.3.1 安裝Xen
7.3.2 安裝OVS
7.3.3 創建虛擬機
7.3.4 對虛擬機文件進行修改
7.3.5 啟動虛擬機
7.4 KVM環境部署SDN網絡的安裝指南
7.4.1 安裝KVM
7.4.2 安裝OVS
7.4.3 在KVM上進行相關的配置
7.4.4 創建虛擬機並將其連接到OVS網橋上
7.5 OpenStack環境部署SDN網絡的安裝指南
7.5.1 在現有的OpenStack的基礎上安裝OpenDaylight
7.5.2 使用DevStack以同時安裝OpenStack和OpenDaylight
7.6 硬件環境部署SDN網絡的安裝指南
7.6.1 配置硬件交換機
7.6.2 配置硬件交換機所連接的控制器
7.7 本章總結
8 控制器OpenDaylight安裝指南、操作指南和開發環境准備
8.1 Controller項目的源碼安裝指南
8.1.1 基礎安裝環境要求
8.1.2 項目編譯和運行的軟件環境要求
8.1.3 下載Controller項目的源碼
8.1.4 編譯Controller子項目的源碼
8.1.5 Controller項目更新
8.1.6 啟動運行Controller項目
8.1.7 安裝參考
8.2 Controller項目的快速安裝指南
8.3 OpenDaylight的Controller項目的開發環境准備
8.3.1 設置Gerrit賬戶
8.3.2 Eclipse的安裝和設置
8.3.3 參考鏈接
8.4 OpenDaylight的Controller項目的使用指南
8.4.1 使用Controller和Mininet搭建一個簡單的SDN環境
8.4.2 控制器OpenDaylight之Controller控制台界面介紹
8.4.3 通過Postman下發、刪除、更新流表的操作
8.4.4 相關參考
8.5 OpenDaylight的通用項目源碼安裝指南
8.5.1 下載OpenDaylight子項目的源碼
8.5.2 編譯OpenDaylight子項目的源碼
8.5.3 編譯OpenDaylight子項目更新
8.5.4 啟動運行OpenDaylight子項目
8.5.5 安裝參考
8.6 OpenDaylight的通用項目快速安裝指南
8.7 OpenDaylight的通用開發環境准備
8.8 控制器OpenDaylight的學習參考
8.9 本章總結
9 控制器ONOS安裝指南
9.1 控制器ONOS簡介
9.1.1 ONOS簡述
9.1.2 ONOS的使命
9.1.3 ONOS創建組織簡介
9.2 控制器ONOS源碼安裝指南
9.2.1 安裝前提環境的准備
9.2.2 ONOS源碼的下載和安裝
9.2.3 在本地的開發機器上運行控制器ONOS
9.2.4 安裝參考
9.3 控制器ONOS下載包的安裝指南
9.4 控制器ONOS通過下載虛擬機進行部署的安裝指南
9.5 控制器ONOS的使用指南
9.5.1 控制器ONOS的控制台界面介紹
9.5.2 使用ONOS和Mininet搭建一個簡單的SDN環境
9.6 控制器ONOS的學習參考
9.7 本章總結
10 控制器Floodlight安裝指南
10.1 控制器Floodlight源碼安裝指南
10.1.1 安裝前提環境的准備
10.1.2 安裝Floodlight
10.1.3 Floodlight的更新升級
10.2 控制器Floodlight通過下載虛擬機進行部署的安裝指南
10.3 控制器Floodlight的使用指南
10.3.1 控制器Floodlight的常用命令介紹
10.3.2 控制器Floodlight的啟動
10.3.3 控制器Floodlight的界面介紹
10.3.4 使用Floodlight和Mininet搭建一個簡單的SDN環境
10.3.5 使用Floodlight和硬件交換機連接以搭建一個簡單的SDN環境
10.4 控制器Floodlight的學習參考
10.5 本章總結
11 控制器Ryu安裝指南
11.1 控制器Ryu源碼安裝指南
11.1.1 安裝前提環境的准備
11.1.2 安裝Ryu
11.1.3 安裝參考
11.2 使用系統內置命令直接安裝控制器的安裝指南
11.2.1 安裝前提環境的准備
11.2.2 使用系統內置命令直接安裝Ryu
11.2.3 安裝參考
11.3 控制器Ryu通過下載虛擬機進行部署的安裝指南
11.4 控制器Ryu連接Mininet的實驗
11.4.1 實驗環境設計
11.4.2 控制器Ryu的啟動
11.4.3 啟動Mininet創建仿真網絡
11.5 控制器Ryu的學習參考
11.6 本章總結
第三篇 實操篇 OpenDaylight之MD-SAL開發指南
12 MD-SAL開發的一些必備知識
12.1 OSGi
12.2 Karaf
12.3 Maven
12.3.1 Maven的安裝和配置
12.3.2 Maven常用的命令
12.3.3 POM及pom.xml文件的簡要介紹
12.3.4 Maven項目的配置文件settings.xml介紹
12.3.5 Maven的學習參考
12.4 MD-SAL
12.4.1 MD-SAL的基本概念
12.4.2 MD-SAL的消息類型
12.4.3 MD-SAL的數據事務
12.4.4 MD-SAL的RPC路由
12.4.5 OpenDaylight控制器MD-SAL:RESTCONF
12.4.6 WebSocket變化事件通知訂閱
12.4.7 配置子系統
12.4.8 MD-SAL的學習參考
12.5 YANG
12.5.1 YANG的重要術語說明
12.5.2 YANG的語法規則
12.5.3 YANG的聲明介紹
12.5.4 YANG Java Binding:映射規則
12.5.5 YANG的學習參考
12.6 本章總結
13 從簡單的Hello World開始
13.1 項目開發環境准備
13.2 使用Maven原型opendaylight-startup-archetype創建項目
13.3 實現Hello World功能
13.3.1 在API目錄下編寫YANG模型
13.3.2 在impl目錄下寫實現功能代碼——實現HelloService接口
13.3.3 注冊RPC
13.4 項目hello的測試
13.4.1 使用HTTP協議通過API瀏覽器進行測試
13.4.2 使用OpenDaylight自帶的YANG UI工具進行測試
13.4.3 使用REST客戶端工具Postman進行測試
13.4.4 使用REST客戶端curl命令行工具進行測試
13.5 本章總結
14 創建一個簡單的項目:myproject
14.1 創建項目
14.1.1 使用Maven原型創建項目
14.1.2 編譯項目
14.1.3 將項目導入IDE中
14.2 項目創建的關鍵目錄和文件介紹
14.2.1 子項目myproject-api介紹
14.2.2 子項目myproject-artifacts介紹
14.2.3 子項目myproject-features介紹
14.2.4 子項目myproject-impl介紹
14.2.5 子項目myproject-it介紹
14.2.6 子項目myproject-karaf介紹
14.3 YANG常用的定義及其自動轉化的Java代碼
14.3.1 identity聲明實例及其生成的Java文件
14.3.2 container聲明實例及其生成的Java文件
14.3.3 typedef聲明實例及其生成的Java文件
14.3.4 leaf聲明實例及其生成的Java文件
14.3.5 leaf-list聲明實例及其生成的Java文件
14.3.6 list聲明實例及其生成的Java文件
14.3.7 choice聲明和case聲明實例及它們生成的Java文件
14.3.8 grouping聲明實例及其生成的Java文件
14.3.9 uses聲明實例及其生成的Java文件
14.3.10 augment聲明實例及其生成的Java文件
14.3.11 YANG創建模型的一些實驗
14.4 本章總結
15 RPC的開發
15.1 RPC開發過程的簡要說明
15.2 RPC的YANG文件定義
15.2.1 RPC的YANG文件示例
15.2.2 RPC的YANG文件映射的包和Java文件
15.2.3 運行測試
15.3 RPC的實現
15.4 注冊RPC並處理相應的關閉工作
15.4.1 MyprojectProvider.java的初始代碼
15.4.2 在MyprojectProvider類中完成注冊工作
15.4.3 編譯
15.5 項目測試
15.5.1 啟動myproject項目測試
15.5.2 my-rpc0功能測試
15.5.3 my-rpc1功能測試
15.5.4 my-rpc2功能測試
15.5.5 my-rpc3功能測試
15.5.6 my-rpc4功能測試
15.6 本章總結
16 DataStore相關的開發
16.1 DataStore相關開發過程的簡要說明
16.1.1 使用DataBroker實現對DataStore的操作
16.1.2 完成Data Change事件的實現
16.2 利用DataBroker實現對DataStore的操作
16.2.1 實現對DataStore的異步讀寫操作
16.2.2 傳遞DataBroker參數
16.2.3 測試驗證
16.3 Data Change事件的實現
16.3.1 實現DataChangeListener接口完成onDataChange函數
16.3.2 將數據樹變動的監聽注冊到MD-SAL
16.3.3 測試驗證
16.4 本章總結
17 Notification的開發
17.1 Notification開發過程的簡要說明
17.1.1 通知提供的實現
17.1.2 通知接收處理的實現
17.2 在Yang Model中實現定義
17.2.1 notification的YANG文件示例
17.2.2 notification的YANG文件映射的包和Java文件
17.3 通知提供的實現
17.3.1 實現通知的提供
17.3.2 注冊提供通知並傳遞NotificationProviderService參數
17.4 通知接收處理的實現
17.4.1 實現通知的接收
17.4.2 注冊接收通知
17.5 項目測試
17.6 本章總結
18 使用Eclipse進行項目開發的介紹
18.1 使用Eclipse創建項目
18.2 使用Eclipse導入項目
18.3 使用Eclipse編輯項目
18.3.1 使用Eclipse編輯YANG文件
18.3.2 使用Eclipse編輯其他普通文件
18.3.3 在Eclipse工具之外對項目進行修改后的處理
18.4 使用Eclipse調試運行項目
18.4.1 使用Eclipse調試在其中編輯的項目
18.4.2 使用其他工具調試在Eclipse中編輯的項目
18.5 一些可能出現的錯誤及其解決方法
18.5.1 新建項目中出現mavenarchiver相關錯誤及解決方法
18.5.2 Maven的Lifecycle Mapping相關問題的解決方法
18.5.3 項目導入Eclipse后無法顯示的解決方案
18.4.4 其他的一些錯誤和解決方法
18.6 本章總結
第四篇 實操篇 OpenDaylight之北向開發指南
19 OpenDaylight北向開發的基礎知識
19.1 RestConf協議簡介
掛載點
URI parameters/RestConf的操作格式
可能返回的狀態碼及其代表的意思
19.1.1 RestConf的HTTP方法
1.OPTIONS/restconf
2.GET/restconf/config/
3.GET/restconf/operational/
4.PUT/restconf/config/
5.POST/restconf/config
7.POST/restconf/operations/
:
8.DELETE/restconf/config/
19.1.2 RestConf的工作原理
1.GET操作
2.PUT操作
19.2 NetConf協議簡介
19.2.1 NetConf的協議層
19.2.2 NetConf的內容層
19.2.3 NetConf的操作層
19.2.4 NetConf的消息層
19.2.5 NetConf的安全傳輸層
19.2.6 NetConf的參考資料
1.NetConf的wiki
2.NetConf協議內容層相關RPC參考
3.NetConf協議操作層相關RPC參考
4.NetConf協議消息層相關RPC參考
5.NetConf協議安全傳輸層相關RPC參考
19.3 OpenDaylight主要的北向接口
19.4 北向開發的官方參考資料
1.官方wiki參考鏈接
2.控制器自帶的參考資料
19.5 本章總結
20 利用Java實現OpenDaylight北向下發流表的功能
20.1 OpenDaylight北向下發流表開發的基礎依據
20.1.1 模塊opendaylight-action-types介紹
20.1.2 模塊opendaylight-match-types介紹
20.2 獲取流表的功能實現
20.2.1 代碼展示
20.2.2 實驗驗證
20.3 添加流表的功能實現
20.3.1 代碼展示
20.3.2 實驗驗證
20.4 刪除流表的功能實現
20.4.1 代碼展示
20.4.2 實驗驗證
20.5 本章總結
21 使用OpenDaylight北向接口的通用應用
21.1 獲取北向接口的信息並進行開發
21.2 使用API進行北向編程
21.3 本章總結
參考資料
推薦閱讀
思維導圖
防止博客圖床圖片失效,防止圖片源站外鏈:
http://www.processon.com/chart_image/5e5b2f3ce4b0cb56dab11400.png)
思維導圖在線編輯鏈接: