身處SDN發展浪潮,筆者真切地感受到了這場技術革命的到來。為了自我總結,也為了幫助他人,因此決定寫這本書。 本書首先介紹了SDN的定義、SDN出現的原因、SDN發展的歷史和標志性事件、SDN南向協議、SDN控制平面和數據平面等理論知識。然后進一步介紹了如何從零開始搭建SDN實驗環境及SDN與網絡虛擬化的結合等SDN應用案例內容。*后梳理了SDN對學術界和工業界產生的影響,探討了我們該如何應對這場SDN變革。此外,附錄中兩篇擬人化的故事還從感性的角度對SDN進行了介紹。 本書適合SDN初學者和進階者。希望本書的內容能夠給讀者帶來一些幫助,成為SDN學習者相互討論、學習的舞臺。
久立潮頭的先行者,攜數年磨礪與反思,為SDN大時代領航、解惑
業務突破迎來網絡重構的重大契機,用架構思想謀篇,用實現技術布局
架構深度與產業廣度完美聚合,技能、思路、視野、境界盡收囊中
本書宗旨:無思辨不足以明理|無案例不足以求真|無細節不足以知端詳
推薦序
如今,距離我的那本《深度解析SDN》一書出版已經過去了三年時間,在這短短的三年中,SDN領域發生了翻天覆地的變化。一大批Startup公司在這個領域嶄露頭角,甚至久已沒有新鮮血液的交換芯片領域也出現了新的身影。各個傳統巨頭也紛紛推出了形態各異的SDN產品,不僅僅是網絡設備商,還包括一些傳統的IT廠商。更重要的是,以網絡虛擬化、SDWAN等為代表的典型SDN應用紛紛落地。SDN時代已經到來!
但是對于很多人來說,很多問題仍然看不清楚,到底什么是SDN?市場上那么多SDN產品,哪些是真的,哪些是假的?SDN到底能夠解決哪些傳統網絡解決不了的問題?SDN能夠全面取代傳統網絡嗎?傳統網絡應該如何向SDN網絡逐步遷移?哪些場景是適合SDN的典型場景?這些是每一個網絡從業者和最終用戶都非常關心的市場層面的問題。而在技術層面,同樣有很多富有爭議的問題。OpenDaylight或者ONOS,甚至是其他一個什么控制器,誰會勝出?OpenFlow前途命運如何?標準南向接口是否是SDN應該追求的方向?控制是否真的應該完全從轉發面分離?可編程的P4是網絡未來的方向嗎?是否應該有及是否會有真正的SDN交換芯片出現?
我跟本書作者楊澤衛和李呈都有數面之緣并都有過交流,也看過不少他們兩個人寫的文章,兩個人都從不同的層面上對SDN做了不少卓有成效的研究和實踐工作。他們能把工作學習過程中的所見所思所做總結出來,幫助讀者來尋找上述問題的答案,不得不說是一件幸事。讀者是否能找到所有的答案并不重要,甚至他們的觀點是否全部都正確也并不重要,重要的是,讀者可以從他們的工作中系統地學習SDN相關知識,并從中得到啟發,引出更多的思考,這就是他們這本書最大的意義。
張衛峰
盛科網絡SDN白牌交換機 CTO
前言
SDN(Software-Defined Networking,軟件定義網絡)起源于斯坦福大學Nick McKeown教授的Clean Slate項目,其目標是重新定義網絡體系結構(Reinvent the Internet),誕生至今已經快十年。作為一種新的網絡體系結構,SDN已經掀起了一場網絡變革的技術浪潮,對網絡學術界和工業界的發展都產生了巨大的沖擊:OpenFlow的論文至今已經被引用4951次;開源SDN控制器平臺OpenDaylight已經發布了5個版本,擁有超過600多名開發者,完成了超過30000多次代碼更新;開源社區OSS(Open Source SDN)也已經發布了20多個來自開發者的開源SDN項目;傳統網絡設備廠商和運營商都在面向SDN重建自己的產品體系,大多數SDN初創公司都在各自領域交付成熟的產品方案。而作為學習者的我們,也需要做好準備,迎接這場技術變革。
但是學習和研究SDN絕非易事。雖然我們每天都能接觸到大量的SDN學習資料,但對于初入SDN領域的學生和工程師而言,仍然會不知所措。比如,關于SDN定義的描述就有多種解讀:開源組織ONF(開放網絡基金會)的Open SDN,業界廠商的Vendor SDN,甚至還有SDx(Software Defined Everything)的概念。這些概念哪一種才是正確的?此外,SDN發展至今誕生了眾多不同類型的開源項目:SDN網絡模擬器、SDN軟件交換機、網絡虛擬化平臺、SDN控制器測試工具和OpenFlow交換機測試工具等。如何去學習它們?如果有一本書能提供清晰的SDN學習路線:梳理SDN的定義、SDN發展歷程、SDN關鍵技術和典型應用案例,同時又介紹如何從零開始實踐SDN,這將會對SDN初學者入門和進階者學習SDN提供有效的幫助。
帶著這種想法,我們在一年多之前開始編寫這本書。本以為依靠學習SDN過程中積累的知識和書寫博客的經歷,就可以輕而易舉地完成本書,但事實卻大相徑庭。從2015年7月確定本書目錄開始,我們每周至少進行一次溝通,直至2016年5月才陸續完成本書初稿。后續又花費了大量的時間修改初稿,有些章節甚至幾經易稿,修改超過二十多次。面對SDN這樣一個新的技術領域,我們非常謹慎地去選擇合適的內容。在寫作上,我們努力引用原始技術資料,并在此基礎上進行剖析,得出觀點和結論。我們希望本書不但能幫助入門者梳理SDN領域的知識體系,而且能幫助進階者挖掘SDN領域更深層次的信息,在成為SDN專業人士之路上貢獻我們的一臂之力。
本書包括8章內容和2個小故事。第1章從SDN最初的定義出發,討論了SDN出現的原因,詳細介紹了SDN的發展歷史和標志性事件。第2章詳細介紹了現有的SDN南向協議,它是決定SDN架構可編程能力的關鍵,也是當下SDN廠商方案競爭的一個焦點。第3章從發展歷程、系統架構和使用方式3個方面詳細介紹了5個典型的開源SDN控制器。第4章從OpenFlow數據平面開始,深入討論了現有的SDN數據平面模型,并引出一個非常重要的SDN數據平面概念通用可編程數據平面。第5章介紹了從零開始實現SDN所需要掌握的諸多開源工具,幫助讀者快速入門SDN實踐。第6章討論了現有的SDN應用案例,重點介紹了SDN在數據中心網絡和WAN網絡兩個成熟市場的應用。第7章介紹了網絡虛擬化的發展現狀,以及SDN與網絡虛擬化結合的相關產品。第8章作為本書最后一章,梳理了SDN對學術界和工業界產生的影響,討論了我們應該如何應對SDN這場變革。書籍附錄部分還有《我是一個SDN控制器》和《我是一個SDN交換機》2篇擬人化的SDN文章供讀者閱讀。希望這2個小故事能讓讀者對SDN有感性的認識。
本書的1、4、6、8章由楊澤衛完成,2、3、5、7章和2個技術故事由李呈完成。本書內容是我們學習SDN過程中的總結,其目標讀者是SDN初學者和進階學習者。我們相信:一本技術書籍的生命力更加體現在后期讀者的反饋上,它不僅僅是手邊的紙質手冊,更像是一個互動交流的學習平臺,一個可以讓作者和讀者一起探討SDN的平臺。此外,由于作者水平有限,在書籍內容的編寫上難免會有疏漏,觀點難免有失偏頗,也懇請讀者批評指正。
我們衷心地感謝那些幫助我們完成本書的人們。首先我們要感謝對方,我們一起完成了一本技術書籍。在寫作的過程中,我們有過觀點探討時的針鋒相對,也有過迷茫懈怠時的相互鼓勵,也正因為如此,才能順利地完成這本書。其次我們要感謝本書的策劃編輯張春雨先生,沒有他的支持,也就沒有本書的誕生。最后我們要感謝我們的家人和師長。感謝在本書寫作過程中給予我們啟發和幫助的人。謝謝你們!
楊澤衛、李呈
2017年2月5日
楊澤衛《零存整取NetFPGA開發指南》和《深入理解計算機網絡系統設計》作者,SDN初創公司南京疊鍶聯合創始人,曾任中興微電子高級主任工程師,有豐富的SDN行業產品經驗。個人微信公眾號:SDN學習與研究(zeweiTalk)。
李呈 北京郵電大學未來網絡理論與應用實驗室在讀研究生。學習SDN三年多,掌握SDN基礎理論知識。目前在硅谷實習。
目錄
第1章 SDN重塑網絡 ......................................................................................... 1
1.1 SDN是什么 ...................................................................................................... 1
1.2 為什么需要SDN .............................................................................................. 4
1.3 網絡可編程探索之路 ....................................................................................... 6
1.4 SDN發展歷史 ................................................................................................ 10
1.5 SDN重塑網絡 ................................................................................................ 15
1.6 本章小結 ......................................................................................................... 16
參考資料.................................................................................................................. 16
第2章 SDN南向協議 ....................................................................................... 21
2.1 SDN南向協議簡介 ........................................................................................ 21
2.2 狹義SDN南向協議 ....................................................................................... 23
2.3 廣義SDN南向協議 ....................................................................................... 30
2.3.1 OF-Config ............................................................................................ 31
2.3.2 OVSDB ................................................................................................ 34
2.3.3 NETCONF ........................................................................................... 36
2.3.4 OpFlex.................................................................................................. 38
2.3.5 XMPP ................................................................................................... 39
2.3.6 PCEP .................................................................................................... 40
2.4 完全可編程南向協議 ..................................................................................... 41
2.4.1 POF ...................................................................................................... 41
2.4.2 P4 ......................................................................................................... 46
2.5 SDN南向協議標準之戰 ................................................................................ 53
2.6 本章小結 ......................................................................................................... 55
參考資料.................................................................................................................. 55
第3章 SDN控制平面 ....................................................................................... 57
3.1 SDN控制平面簡介 ........................................................................................ 57
3.2 SDN開源控制器 ............................................................................................ 59
3.2.1 NOX/POX ............................................................................................ 59
3.2.2 Ryu ....................................................................................................... 63
3.2.3 Floodlight ............................................................................................. 68
3.2.4 OpenDaylight ....................................................................................... 72
3.2.5 ONOS ................................................................................................... 78
3.3 選擇SDN控制器 ........................................................................................... 85
3.3.1 評價控制器的要素 .............................................................................. 85
3.3.2 選擇正確的控制器 .............................................................................. 89
3.4 SDN控制平面發展趨勢 ................................................................................ 91
3.5 本章小結 ......................................................................................................... 96
參考資料.................................................................................................................. 97
第4章 SDN數據平面 ....................................................................................... 99
4.1 SDN數據平面簡介 ........................................................................................ 99
4.2 通用可編程轉發模型 ................................................................................... 101
4.2.1 通用硬件模型 .................................................................................... 103
4.2.2 通用處理指令 .................................................................................... 112
4.2.3 小結 ................................................................................................... 115
4.3 探索通用可編程數據平面 ........................................................................... 116
4.4 SDN數據平面的發展趨勢 .......................................................................... 120
4.4.1 發展歷史............................................................................................ 120
4.4.2 白盒交換機 ........................................................................................ 123
4.5 本章小結 ....................................................................................................... 125
參考資料................................................................................................................ 126
第5章 從零開始實踐 ...................................................................................... 129
5.1 Mininet實踐 ................................................................................................. 129
5.1.1 Mininet簡介 ...................................................................................... 130
5.1.2 Mininet系統架構 .............................................................................. 130
5.1.3 Mininet安裝 ...................................................................................... 132
5.1.4 Mininet示例 ...................................................................................... 134
5.2 Open vSwitch實踐 ....................................................................................... 140
5.2.1 OVS簡介 ........................................................................................... 141
5.2.2 OVS架構 ........................................................................................... 141
5.2.3 OVS安裝 ........................................................................................... 142
5.2.4 OVS示例 ........................................................................................... 144
5.3 Ryu實踐 ....................................................................................................... 150
5.3.1 Ryu簡介 ............................................................................................ 150
5.3.2 Ryu架構 ............................................................................................ 151
5.3.3 Ryu安裝 ............................................................................................ 152
5.3.4 Ryu示例 ............................................................................................ 153
5.4 網絡虛擬化平臺實踐 ................................................................................... 162
5.4.1 OpenVirteX簡介 ............................................................................... 162
5.4.2 OpenVirteX架構 ..........................