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