適讀人群 :相關(guān)專業(yè)技術(shù)人員,具備計算機網(wǎng)絡背景知識的學生 SDN突破了傳統(tǒng)的協(xié)議棧觀點,提出了一種新的軟件棧觀點。本書正是圍繞軟件棧展開討論的,強調(diào)將基于SDN的網(wǎng)絡看作一個運行在商業(yè)硬件上的、可擴展的分布式系統(tǒng)。五位作者均為業(yè)界引領(lǐng)者,主導了包括開放網(wǎng)絡基金會(ONF)的CORD和Aether項目在內(nèi)的多項技術(shù)創(chuàng)新。他們將實戰(zhàn)經(jīng)驗融入書中,對SDN的架構(gòu)、軟硬件組成和可編程性等進行了全面介紹,為讀者研究和實踐SDN技術(shù)奠定了良好的基礎(chǔ)。
本書特色
采用作者Larry Peterson和Bruce Davie提出的“系統(tǒng)方法”,從系統(tǒng)視角幫助讀者理解SDN的設(shè)計與實現(xiàn),關(guān)注底層概念、抽象和設(shè)計原理,并通過實例葉-脊結(jié)構(gòu)進行具體說明。
深入討論固定功能和可編程交換芯片、用于編程和控制交換的基于P4的工具鏈,以及一系列SDN用例,包括來自企業(yè)、數(shù)據(jù)中心和接入網(wǎng)絡的實例。
英文版全書開源(sdn.systemsapproach.org),書中的代碼示例和編程練習全部開源(github.com/SystemsApproach/SDN),鼓勵讀者參與學習及分享。
序 言
Software-Defined Networks: A Systems Approach
1993年,當我看到最初的Mosaic瀏覽器時,感到非常驚奇。很明顯,有大事要發(fā)生了,但當時的我并不知道這件事的影響將會有多么巨大。Internet(因特網(wǎng))的規(guī)模迅速擴大,成千上萬家新的ISP(Internet Service Provider,因特網(wǎng)服務供應商)在各地涌現(xiàn),根植于一片片新的網(wǎng)絡中。這些新的ISP需要做的只是將現(xiàn)有的商用交換機、路由器、基站和傳統(tǒng)網(wǎng)絡設(shè)備供應商銷售的接入點連接在一起,而無須獲得中央控制機構(gòu)的許可。早期的路由器簡單而精練,它們只需要支持Internet協(xié)議。這樣的分散控制促使Internet迅速發(fā)展。
路由器制造商面臨一個困境:很難通過銷售簡單而精練的設(shè)備來維持繁榮的盈利業(yè)務。再者,如果由簡單設(shè)備組成的大型網(wǎng)絡容易遠程管理,那么所有的智能(和價值)都會由網(wǎng)絡運營商而非路由器制造商提供。因此,路由器的外部API被控制在了最低限度(“網(wǎng)絡管理”被認為是一個笑話)。另外,為了使路由器具有各種用途,路由器里“擠滿”了新的功能。到了21世紀00年代中期,ISP所使用的路由器就非常復雜了,能支持數(shù)百種協(xié)議,運行的源代碼超過了一億行—具有諷刺意味的是,這比有史以來最龐大的電話交換機復雜十倍以上。Internet為這種復雜度付出了巨大的代價:路由器臃腫、耗電、不可靠、難以保證安全,而且價格貴得離譜。最糟糕的是,它們很難改進(ISP需要請求設(shè)備供應商添加新的功能),ISP無法自己添加新的功能。網(wǎng)絡所有者抱怨路由器供應商的“壟斷”行為,研究界則警告說Internet已經(jīng)“僵化”了。
這本書講述接下來發(fā)生的事情,這也是一個令人興奮的故事。Larry、Carmelo、Brian、Thomas和Bruce通過具體的示例和開源代碼清楚地記錄下這段故事:那些擁有并運營大型網(wǎng)絡的組織開始編寫自己的代碼,構(gòu)建自己的交換機和路由器。一些組織選擇用更簡單、更易于維護的國產(chǎn)設(shè)備取代路由器,另一些組織選擇將軟件從路由器中轉(zhuǎn)移到遠程的集中控制平面上。無論選擇哪條道路,開源技術(shù)都成為越來越重要的一部分。一旦開源技術(shù)在Linux、Apache、Mozilla和Kubernetes上證明了自己,它就可以被信任,也能用來運行我們的網(wǎng)絡。
這本書解釋了SDN(Software-Defined Networking,軟件定義網(wǎng)絡)運動發(fā)生的原因。它本質(zhì)上是關(guān)于控制的改變:大型網(wǎng)絡的所有者和運營商控制了網(wǎng)絡的工作方式,從設(shè)備供應商那里奪得了創(chuàng)新的主動權(quán)。SDN始于各種數(shù)據(jù)中心公司,因為這些公司無法使用現(xiàn)有的網(wǎng)絡設(shè)備構(gòu)建足夠大的、可向外擴展的網(wǎng)絡。于是它們購買了交換芯片,自己編寫了軟件。這的確幫它們省了錢(通常能夠把成本降低到1/5,或降低更多),但它們更期望的是對網(wǎng)絡的控制。這些公司雇了大量的軟件工程師,試圖激起一次網(wǎng)絡新思想的“寒武紀”大爆發(fā),使其網(wǎng)絡更加可靠,擁有更快的修復速度,并且能夠更好地控制網(wǎng)絡業(yè)務。2021年的今天,所有的大型數(shù)據(jù)中心公司都構(gòu)建了自己的網(wǎng)絡設(shè)備:這些公司下載并修改開源的控制軟件,由自己或委托他人編寫新的軟件來控制其網(wǎng)絡。這些公司已經(jīng)控制了自己的網(wǎng)絡,接下來登場的將是ISP和5G運營商?梢灶A見,在十年內(nèi),企業(yè)和校園網(wǎng)絡也將運行在開源的控制軟件上,并且通過云進行管理。
這是一個很好的變化,因為只有那些大規(guī)模網(wǎng)絡的擁有者和運營商才知道如何做到最好。
網(wǎng)絡構(gòu)建的革命將朝著網(wǎng)絡運營商開發(fā)和維護國產(chǎn)軟件的方向發(fā)展,這種變化就是軟件定義網(wǎng)絡。本書作者從一開始就參與了這場革命,他們知道這場革命如何發(fā)生以及為什么發(fā)生。
他們還幫助我們了解未來的網(wǎng)絡將是什么樣子。網(wǎng)絡系統(tǒng)將不再是一堆運行標準化互操作協(xié)議的箱子,而是一個可以自己編程的平臺。網(wǎng)絡所有者將通過對其所期望的行為編程來決定網(wǎng)絡的工作方式。網(wǎng)絡專業(yè)的學生將學習如何規(guī)劃一個分布式系統(tǒng),而不是去學習各種遺留協(xié)議中那些晦澀難懂的細節(jié)。
對于任何對編程感興趣的人來說,網(wǎng)絡又變得有趣了。這本書將會是一個很好的起點。
Nick McKeown
加利福尼亞州,斯坦福
前 言
Software-Defined Networks: A Systems Approach
Internet正在經(jīng)歷一場變革,即遠離捆綁式的專有設(shè)備,取而代之的是,將網(wǎng)絡硬件(之后將成為商品)從控制它的軟件(在云中進行擴展)中分離出來。這種變革通常被稱為SDN(Software-Defined Networking,軟件定義網(wǎng)絡),但由于它正在顛覆市場,因此很難將業(yè)務定位與技術(shù)基礎(chǔ)、短期工程決策分開。本書提供了一種分解方式,我們希望讀者從本書中學到的最重要的東西是,將基于SDN的網(wǎng)絡看作一個運行在商業(yè)硬件上的、可擴展的分布式系統(tǒng)。
任何學習過網(wǎng)絡入門課程的人都認為協(xié)議棧是描述網(wǎng)絡的規(guī)范框架。不管這個協(xié)議棧有七層還是只有三層,它塑造并限制了我們思考計算機網(wǎng)絡的方式。教科書也是據(jù)此進行組織和編寫的。SDN提出了另一種世界觀—一種由新的軟件棧產(chǎn)生的世界觀。本書就是圍繞這個新的軟件棧進行組織和編寫的,目的是呈現(xiàn)從上到下的SDN之旅,不留下任何可能會被讀者懷疑而只能用魔術(shù)或?qū)S写a來填補的明顯空白。本書末尾處,我們邀請你親自做一些編程練習,從而向自己證明這個軟件棧既是真實的,又是完整的。
實現(xiàn)這個目標的一個重要方面是使用開源代碼。我們在很大程度上是通過利用兩個先進的社區(qū)組織來做到這一點的。第一個社區(qū)組織是OCP(Open Compute Project,開放計算項目),它正在積極指定和認證運行SDN軟件棧的商業(yè)硬件(例如裸機交換機)。第二個社區(qū)組織是ONF(Open Networking Foundation,開放網(wǎng)絡基金會),它正在積極實施一套可以被集成到端到端解決方案中的軟件組件。在這個領(lǐng)域內(nèi)還有許多其他的參與者,從現(xiàn)有的供應商到網(wǎng)絡運營商、初創(chuàng)公司、標準機構(gòu)和其他開源項目,它們每一個都對SDN是什么、不是什么提供了不同的解釋。我們討論這些不同的觀點,并解釋它們將如何融入更大的計劃中,但是不會讓這些觀點阻礙我們描述SDN的全面性。只有時間會告訴我們,SDN之旅將帶我們?nèi)ハ蚝畏,但我們相信,理解“機會的范圍”是十分重要的。
本書假定讀者對Internet僅有大致了解,當然,對交換機和路由器在轉(zhuǎn)發(fā)以太網(wǎng)幀和IP(Internet Protocol,網(wǎng)際協(xié)議)數(shù)據(jù)包的過程中所起的作用有更深入的理解,將會有助于讀者閱讀本書。本書還包括指向相關(guān)背景信息的鏈接,以幫助讀者彌補知識空白。本書還有待完善,我們渴望得到你的反饋和建議。
致謝
本書中介紹的軟件源于ONF工程團隊以及與該團隊一起工作的開源社區(qū)的辛勤工作。我們感謝團隊和社區(qū)成員的貢獻,并特別感謝Yi Tseng、Max Pudelko和Charles Chan,感謝他們對本書所包含的實踐練習教程所做的貢獻。我們也要感謝Charles Chan、Jennifer Rexford和Nick McKeown對初稿的反饋。
Larry Peterson、Carmelo Cascone、Brian O扖onnor、Thomas Vachuska和 Bruce Davie
2020年12月
拉里·彼得森(Larry Peterson)
普林斯頓大學榮休教授,2003~2009年任普林斯頓大學計算機科學系主任。他的研究方向是因特網(wǎng)規(guī)模的分布式系統(tǒng)的設(shè)計、實現(xiàn)和操作,包括廣泛使用的PlanetLab和MeasurementLab平臺。他目前在開放網(wǎng)絡基金會(ONF)擔任CTO,領(lǐng)導CORD和Aether接入邊緣云項目。他是美國國家工程院院士,ACM和IEEE會士,2010年IEEE Kobayashi計算機與通信獎得主,2013年ACM SIGCOMM獎得主。
卡梅隆·卡斯克尼(Carmelo Cascone)
ONF的技術(shù)人員,目前領(lǐng)導采用可編程交換機、P4和P4Runtime的相關(guān)項目。他擁有米蘭理工學院博士學位。
布萊恩·歐康納(Brian O'Connor)
ONF的技術(shù)人員,目前領(lǐng)導采用交換機操作系統(tǒng)的相關(guān)項目。他擁有斯坦福大學計算機科學碩士學位。
托馬斯·瓦丘斯卡(Thomas Vachuska)
ONF的首席架構(gòu)師,目前領(lǐng)導ONOS項目。在加入ONF之前,他曾在惠普擔任軟件架構(gòu)師。他擁有加州州立大學薩克拉門托分校數(shù)學學士學位。
布魯斯·戴維(Bruce Davie)
知名計算機科學家,在網(wǎng)絡領(lǐng)域貢獻卓著。他曾任貝爾通信研究所首席科學家,思科系統(tǒng)公司研究員,Nicira公司首席架構(gòu)師,VMware公司亞太區(qū)副總裁兼CTO,并曾在麻省理工學院擔任客座講師。他是ACM會士,2009~2013年任ACM SIGCOMM主席。他主持設(shè)計了MPLS協(xié)議,并參與開發(fā)了多項重要的因特網(wǎng)技術(shù)。他著有多本書籍,擁有40多項美國專利。他擁有愛丁堡大學計算機科學博士學位。
目 錄
Software-Defined Networks: A Systems Approach
譯者序
序言
前言
關(guān)于本書
關(guān)于作者
第1章 緒論 1
1.1 市場概況 2
1.2 技術(shù)概況 4
1.2.1 分離控制平面和數(shù)據(jù)平面 4
1.2.2 控制平面:集中式與分布式 8
1.2.3 數(shù)據(jù)平面:可編程與固定功能 11
1.3 SDN:一種定義 13
第2章 用例 15
2.1 網(wǎng)絡虛擬化 16
2.2 交換結(jié)構(gòu) 18
2.3 廣域網(wǎng)的業(yè)務流工程 19
2.4 軟件定義廣域網(wǎng) 21
2.5 接入網(wǎng)絡 22
2.6 網(wǎng)絡遙測 24
第3章 基本架構(gòu) 27
3.1 軟件棧 27
3.2 裸機交換機 30
3.3 交換機操作系統(tǒng) 31
3.4 網(wǎng)絡操作系統(tǒng) 32
3.5 葉–脊結(jié)構(gòu) 33
第4章 裸機交換機 37
4.1 交換機示意圖 37
4.2 轉(zhuǎn)發(fā)流水線 39
4.3 流水線抽象 41
4.3.1 V1模型 44
4.3.2 TNA 46
4.4 P4程序 48
4.4.1 頭聲明和元數(shù)據(jù) 48
4.4.2 解析器 49
4.4.3 入口處理 50
4.4.4 出口處理 52
4.4.5 逆解析器 53
4.4.6 交換機的定義 54
4.5 固定功能流水線 54
4.5.1 OF-DPA 55
4.5.2 SAI 56
4.6 比較 57
第5章 交換機操作系統(tǒng) 59
5.1 瘦交換機操作系統(tǒng) 59
5.2 P4Runtime接口 61
5.3 gNMI和gNOI 64
5.4 SONiC 69
第6章 網(wǎng)絡操作系統(tǒng) 71
6.1 ONOS架構(gòu) 71
6.2 分布式內(nèi)核 74
6.2.1 Atomix原語 75
6.2.2 服務 76
6.3 北向接口 80
6.4 南向接口 83
6.4.1 供應商插件 84
6.4.2 設(shè)備驅(qū)動程序 84
6.5 可擴展的性能 85
第7章 葉–脊結(jié)構(gòu) 87
7.1 特征集 88
7.2 分段路由 89
7.3 路由和多播 91
7.4 定制的轉(zhuǎn)發(fā) 93
第8章 SDN的未來 97
8.1 可驗證網(wǎng)絡 97
8.2 SD-RAN 100
附錄 動手編程 103