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