本書首先闡述了SDN的產(chǎn)生背景、體系架構(gòu)和發(fā)展概況,其次對SDN的控制平面和以OpenFlow為代表的南向接口協(xié)議進行了重點分析,接著闡述了數(shù)據(jù)轉(zhuǎn)發(fā)平面的交換機類型和特點以及SDN中的網(wǎng)絡虛擬化技術,最后通過搭建模擬網(wǎng)絡環(huán)境,給出了SDN在實際應用中的基礎實踐和應用開發(fā)實踐過程。
本書對理論分析和實踐開發(fā)都進行了詳細的講解,對相關專業(yè)高校學生、從事SDN技術研發(fā)的專業(yè)人員、網(wǎng)絡運營服務從業(yè)人員以及對SDN技術感興趣的讀者,都具有一定的參考價值。
隨著云計算、大數(shù)據(jù)、虛擬化等技術的發(fā)展以及它們在數(shù)據(jù)中心的廣泛應用,網(wǎng)絡流量急劇增加,業(yè)務種類不斷豐富,為了滿足不同業(yè)務對帶寬、時延和可靠性等方面的需求,網(wǎng)絡拓撲結(jié)構(gòu)也越來越復雜。軟件定義網(wǎng)絡(SDN)是一種對傳統(tǒng)網(wǎng)絡進行變革的技術,它打破了傳統(tǒng)網(wǎng)絡的技術壁壘,讓網(wǎng)絡技術更開放、更便于管理和使用,也有利于網(wǎng)絡技術不斷創(chuàng)新。
SDN是一種新型的網(wǎng)絡體系結(jié)構(gòu),通過將網(wǎng)絡控制與網(wǎng)絡轉(zhuǎn)發(fā)解耦來構(gòu)建開放可編程的網(wǎng)絡體系結(jié)構(gòu)。與傳統(tǒng)網(wǎng)絡相比,SDN提高了組建網(wǎng)絡的靈活性和管理水平,網(wǎng)絡運營商在部署和維護網(wǎng)絡方面也更便捷,尤其是近年來SDWAN的發(fā)展,能夠大大降低網(wǎng)絡的運營成本。
SDN正在不斷地得到實際應用,其是否可以替代現(xiàn)有網(wǎng)絡, 或是僅能對現(xiàn)有網(wǎng)絡進行完善和補充,其對現(xiàn)有網(wǎng)絡的影響又如何,都還有待觀察,但SDN已經(jīng)引起了人們的廣泛關注和期待,在數(shù)據(jù)中心和廣域網(wǎng)應用領域已有不少商業(yè)運營案例。
本書共7章,各章的主要內(nèi)容為:
第1章為SDN概述,主要介紹了SDN的體系架構(gòu)、 SDN交換機、 SDN控制器、OpenFlow協(xié)議、 SDN發(fā)展歷史和應用領域等基礎知識;
第2章為SDN控制器,主要介紹了SDN控制器的體系結(jié)構(gòu)、關鍵要素以及控制器群技術,對開源的SDN控制器也進行了解析, 最后討論了SDWAN技術形成的原因和相應的技術要求;
第3章為SDN南向接口協(xié)議,主要介紹了基于OpenFlow協(xié)議的交換機、端口類型,并詳細解析了流表的操作,對OF-CONFIG協(xié)議也進行了介紹;
第4章為SDN交換機,解析了傳統(tǒng)交換機和SDN交換機的區(qū)別,主要介紹了多個廠家的SDN硬件交換機和軟件交換機;
第5章為網(wǎng)絡虛擬化,主要介紹了SDN接口的可編程性和網(wǎng)絡虛擬化技術及其在SDN中的應用;
第6章為SDN實戰(zhàn)基礎案例,通過搭建SDN網(wǎng)絡環(huán)境,進行SDN協(xié)議分析工具使用、流表下發(fā)及網(wǎng)絡均衡、SDN網(wǎng)關功能、OpenDaylight集群等實驗,有助于開發(fā)人員掌握SDN網(wǎng)絡架構(gòu)和網(wǎng)絡配置方法;
第7章為SDN應用編程案例,詳細介紹了ARP代理服務器、防DDoS網(wǎng)絡攻擊和基于OpenDaylight的REST API的應用與開發(fā),同時對源碼進行了分析。
本書第1章、第2章、第6章和第7章由毛其林編寫,第3章和第4章由譚振建編寫,第5章由吳海濤編寫。 周陸寧、徐相娟、杜靜茹參與了部分章節(jié)的資料整理工作, 黃韜教授認真審閱了全書,并提出了許多寶貴意見,在此一并表示感謝。
由于SDN技術發(fā)展迅速,內(nèi)容更新快,加上編者水平有限,書中疏漏和不當之處在所難免,懇請各位讀者不吝指正。
編 者
2022年2月于南京
第1章 SDN概述 1
1.1 計算機網(wǎng)絡概述 1
1.2 軟件定義網(wǎng)絡 2
1.3 SDN交換機 5
1.4 SDN控制器 8
1.5 OpenFlow協(xié)議 9
1.6 SDN發(fā)展歷史 11
1.7 SDN的應用領域 14
1.8 小結(jié) 16
復習思考題 17
第2章 SDN控制器 18
2.1 概述 18
2.2 SDN控制器的體系結(jié)構(gòu) 20
2.3 SDN控制器的關鍵要素 21
2.3.1 支持OpenFlow協(xié)議 22
2.3.2 網(wǎng)絡虛擬化 22
2.3.3 網(wǎng)絡功能化 23
2.3.4 可擴展性 23
2.3.5 網(wǎng)絡性能 25
2.3.6 網(wǎng)絡可編程性 25
2.3.7 網(wǎng)絡可靠性 26
2.3.8 網(wǎng)絡安全性 26
2.3.9 網(wǎng)絡的集中管理和可視化 26
2.3.10 SDN控制器供應商 27
2.4 SDN控制器集群 27
2.4.1 SDN控制器集群的關鍵技術 27
2.4.2 SDN控制器集群的現(xiàn)有方案 30
2.5 SDN控制器的編程接口模式 32
2.5.1 本地API調(diào)用 33
2.5.2 REST API遠程調(diào)用 33
2.6 SDN開源控制器 34
2.6.1 SDN開源控制器簡介 34
2.6.2 OpenDaylight控制器 36
2.6.3 ONOS控制器 44
2.7 SDWAN 47
2.7.1 SDWAN的定義 47
2.7.2 SDWAN關鍵性能 49
2.7.3 SDWAN架構(gòu) 50
2.8 小結(jié) 54
復習思考題 54
第3章 SDN南向接口協(xié)議 56
3.1 OpenFlow協(xié)議概述 56
3.2 OpenFlow交換機 58
3.3 OpenFlow端口 59
3.4 OpenFlow流表與組表 60
3.4.1 流水線處理 60
3.4.2 流表及刪除 61
3.4.3 匹配 62
3.4.4 漏表 63
3.4.5 組表 64
3.4.6 計量表 65
3.4.7 計數(shù)器 65
3.4.8 指令 66
3.4.9 動作集 66
3.4.10 動作列表 66
3.4.11 動作 67
3.5 OpenFlow通道 68
3.6 OpenFlow消息 70
3.6.1 OpenFlow消息簡介 70
3.6.2 消息處理 72
3.6.3 消息事件 72
3.7 OF-CONFIG協(xié)議 80
3.7.1 OF-CONFIG1.2版本概述 81
3.7.2 數(shù)據(jù)模型 83
3.8 其他SDN南向接口協(xié)議 83
3.8.1 XMPP 83
3.8.2 PCEP 85
3.8.3 NETCONF 86
3.8.4 OpFlex 87
3.9 小結(jié) 88
復習思考題 88
第4章 SDN交換機 89
4.1 概述 89
4.1.1 傳統(tǒng)交換機架構(gòu) 89
4.1.2 SDN交換機架構(gòu) 91
4.1.3 SDN交換機實現(xiàn)技術 92
4.1.4 傳統(tǒng)交換機和OpenFlow交換機的比較 94
4.2 SDN硬件交換機 97
4.2.1 基于ASIC的SDN品牌交換機 98
4.2.2 基于ASIC芯片的SDN白盒交換機 104
4.2.3 基于NP的SDN交換機 108
4.2.4 基于NetFPGA的SDN交換機 110
4.3 SDN軟件交換機 112
4.3.1 OpenvSwitch交換機 112
4.3.2 基于P4的交換機 114
4.3.3 其他軟件交換機 117
4.4 小結(jié) 117
復習思考題 118
第5章 網(wǎng)絡虛擬化 119
5.1 虛擬化技術簡介 119
5.2 服務器虛擬化 120
5.3 存儲虛擬化 120
5.4 網(wǎng)絡虛擬化 122
5.5 基于SDN技術的網(wǎng)絡虛擬化方案 127
5.5.1 FlowVisor簡介 127
5.5.2 FlowVisor常用命令 130
5.5.3 FlowVisor工作流程 131
5.6 網(wǎng)絡功能虛擬化與SDN 132
5.7 小結(jié) 133
復習思考題 133
第6章 SDN實戰(zhàn)基礎案例 135
6.1 概述 135
6.2 使用Wireshark抓取OpenFlow消息及相關內(nèi)容分析 139
6.2.1 OpenFlow消息 139
6.2.2 Wireshark工具簡介 141
6.2.3 Wireshark抓包過程及消息分析 143
6.3 利用OpenDaylight Yang UI工具下發(fā)流表 150
6.3.1 Yang模型工具簡介 150
6.3.2 下發(fā)流表前的網(wǎng)絡配置 150
6.3.3 利用OpenDaylight Yang UI下發(fā)流表的實現(xiàn)過程 151
6.3.4 使用go-to-table指令下發(fā)流表 156
6.4 使用OpenFlow流表實現(xiàn)網(wǎng)絡負載均衡 158
6.4.1 網(wǎng)絡負載均衡原理 158
6.4.2 基于SDN的負載均衡 158
6.4.3 OpenDaylight Web界面 159
6.4.4 實現(xiàn)網(wǎng)絡負載均衡的網(wǎng)絡設置 160
6.4.5 通過下發(fā)流表改變網(wǎng)絡訪問路徑 161
6.5 基于OpenFlow1.3組表的驗證性實驗 166
6.5.1 組表的基本概念及主要作用 166
6.5.2 實驗網(wǎng)絡環(huán)境配置 166
6.5.3 利用OpenDaylight Yang UI工具實現(xiàn)簡單的組表下發(fā) 167
6.5.4 類型為all的組表的使用 170
6.5.5 類型為select的組表的使用 172
6.6 SDN網(wǎng)關功能的實現(xiàn) 173
6.6.1 SDN中的網(wǎng)關 173
6.6.2 網(wǎng)關服務器參數(shù)配置 174
6.7 OpenDaylight集群實驗 176
6.7.1 OpenFlow協(xié)議中的多控制器 176
6.7.2 集群實驗網(wǎng)絡環(huán)境配置 177
6.7.3 多節(jié)點集群配置 177
6.7.4 多節(jié)點集群驗證 179
6.7.5 多節(jié)點集群抓包分析 187
6.8 小結(jié) 190
復習思考題 190
第7章 SDN應用編程案例 191
7.1 基于SDN的ARP代理服務器 191
7.1.1 基于SDN的ARP代理服務器實現(xiàn)原理 192
7.1.2 基于SDN的ARP代理服務器網(wǎng)絡設置 193
7.1.3 ARP代理服務器的源碼分析 196
7.2 基于SDN的防DDoS網(wǎng)絡攻擊 201
7.2.1 DDoS防御實現(xiàn)原理 201
7.2.2 基于SDN的DDoS 防御網(wǎng)絡配置 204
7.2.3 基于SDN的DDoS 防御源碼分析 206
7.2.4 基于SDN的DDoS 防御實驗數(shù)據(jù)分析 208
7.3 基于OpenDaylight REST API的應用與開發(fā) 210
7.3.1 OpenDaylight REST API簡介 210
7.3.2 使用Postman調(diào)用RESTCONF接口進行流表操作 210
7.3.3 Java應用程序中調(diào)用OpenDaylight REST API 215
7.4 小結(jié) 220
復習思考題 220
參考文獻 221