云原生數(shù)據(jù)中心網(wǎng)絡(luò)
定 價(jià):128 元
Clos拓?fù)浣Y(jié)構(gòu)。
網(wǎng)絡(luò)解耦。
網(wǎng)絡(luò)操作系統(tǒng)選擇。
路由協(xié)議選擇。
容器網(wǎng)絡(luò)。
網(wǎng)絡(luò)虛擬化和EVPN。
網(wǎng)絡(luò)自動(dòng)化。
前言云飄進(jìn)我的生活,沒有帶來雨水或迎來暴風(fēng)雨,但為落日天空增添了顏色。—RabindranathTagore,流浪鳥無論是對于本書的讀者,還是作為這本書的作者來說,云原生數(shù)據(jù)中心網(wǎng)絡(luò)都是一個(gè)相當(dāng)大的話題,因此讓我們先從一些容易的內(nèi)容開始。這是一本為數(shù)據(jù)中心構(gòu)建一個(gè)健壯的、可擴(kuò)展的網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的書。如果你是網(wǎng)絡(luò)架構(gòu)師或網(wǎng)絡(luò)運(yùn)營人員,想要了解、構(gòu)建或驗(yàn)證數(shù)據(jù)中心的想法,那么這本書適合你。如果你是數(shù)據(jù)中心運(yùn)營人員,不僅負(fù)責(zé)網(wǎng)絡(luò),還負(fù)責(zé)計(jì)算和存儲,并且希望了解最新的數(shù)據(jù)中心網(wǎng)絡(luò)設(shè)計(jì)思想,這本書也適合你。如果你是網(wǎng)絡(luò)開發(fā)人員,希望查找一些網(wǎng)絡(luò)相關(guān)的零碎信息或口頭知識,這本書同樣適合你。更準(zhǔn)確地說,這是一本關(guān)于云原生類型的數(shù)據(jù)中心網(wǎng)絡(luò)設(shè)計(jì)的書。如果搜索“云原生”,你會(huì)發(fā)現(xiàn)它通常與微服務(wù)應(yīng)用程序設(shè)計(jì)以及Linux操作系統(tǒng)相關(guān)聯(lián),并且依賴許多開源代碼,這些只是實(shí)現(xiàn)云原生的方法而已。云原生的最終目的是構(gòu)建健壯、敏捷、可擴(kuò)展的應(yīng)用程序,使企業(yè)能夠和這個(gè)瞬息萬變的世界保持同步。當(dāng)云原生的理念應(yīng)用于網(wǎng)絡(luò)時(shí),則意味著以健壯、靈活、可擴(kuò)展和高效的操作方式來構(gòu)建符合應(yīng)用程序和業(yè)務(wù)需求的網(wǎng)絡(luò)。我選擇“云原生”這個(gè)詞是為了強(qiáng)調(diào)將云原生理念應(yīng)用于創(chuàng)建網(wǎng)絡(luò)上。即使你構(gòu)建的網(wǎng)絡(luò)規(guī)模達(dá)不到Amazon或Google的網(wǎng)絡(luò)規(guī)模,在創(chuàng)建網(wǎng)絡(luò)時(shí)你也需要考慮以下一些特征:價(jià)格合理、高性能、易于管理、敏捷且可靠。本書將涉及所有這些特征。本書不僅適合部署微服務(wù)應(yīng)用程序的人們。無論你使用的是容器、虛擬機(jī),還是裸金屬服務(wù)器,都喜歡使用Kubernetes部署微服務(wù)應(yīng)用,構(gòu)建一個(gè)可靠且可預(yù)測的網(wǎng)絡(luò)是每個(gè)人都渴望的事情。不管過去我是否為廠商工作,我都不想借此書達(dá)到推動(dòng)任何廠商發(fā)布新功能的目的。如果你看到反映廠商的示例或文字,那僅僅是因?yàn)槲覍S商或工具熟悉,而不是打廣告。偏見總是容易蔓延開來,如果你發(fā)現(xiàn)書中哪些地方會(huì)產(chǎn)生此類異議,請告訴我,我會(huì)糾正它們。我很坦率地承認(rèn)我是開源工具的擁護(hù)者,我相信可以通過開源的方式構(gòu)建更好的系統(tǒng)。讀者對象如前所述,本書不僅面對網(wǎng)絡(luò)架構(gòu)師、網(wǎng)絡(luò)運(yùn)維人員,而且面向網(wǎng)絡(luò)應(yīng)用的應(yīng)用開發(fā)人員。閱讀本書所需的基礎(chǔ)知識并不多,只需要知道什么是TCP/IP和什么是套接字。本書理論結(jié)合實(shí)踐,將理論應(yīng)用于搭建數(shù)據(jù)中心。本書重點(diǎn)不僅是像教科書那樣只介紹技術(shù)信息,而是始終關(guān)注于設(shè)計(jì)數(shù)據(jù)中心的技術(shù)的應(yīng)用。本書不會(huì)涵蓋與數(shù)據(jù)中心網(wǎng)絡(luò)無關(guān)的方面,例如,物理位置選擇、電源和散熱選擇、物理布局等。本書結(jié)構(gòu)本書分為三個(gè)部分:架構(gòu)前兩章介紹體系架構(gòu)。開始將描述新的架構(gòu)的需求以及新的網(wǎng)絡(luò)架構(gòu)。技術(shù)接下的九章將涵蓋各種技術(shù),體系架構(gòu)就好比“骨骼”,這些技術(shù)共同為架構(gòu)添加“血和肉”。這些技術(shù)可以指導(dǎo)我們選擇采用的協(xié)議以及架構(gòu)設(shè)計(jì),從而構(gòu)建真實(shí)的網(wǎng)絡(luò)。實(shí)踐其余的章節(jié)將涵蓋體系結(jié)構(gòu)中使用的技術(shù)的實(shí)踐。在很大程度上,涵蓋了網(wǎng)絡(luò)配置和驗(yàn)證,包括將“少而精”的理念應(yīng)用于網(wǎng)絡(luò)配置。這些章節(jié)的另一個(gè)重點(diǎn)是我希望能將計(jì)算和網(wǎng)絡(luò)兩個(gè)不同的領(lǐng)域結(jié)合起來,兩者的結(jié)合使得數(shù)據(jù)中心工程師和架構(gòu)師成為“文藝復(fù)興時(shí)期的男女”,文藝復(fù)興時(shí)期的人們知識淵博又有深度,可以從紛繁復(fù)雜的信息中找到有價(jià)值的內(nèi)容。隨著網(wǎng)絡(luò)解耦的出現(xiàn),Linux操作系統(tǒng)(OS)開始具有強(qiáng)大網(wǎng)絡(luò)功能,應(yīng)用程序也更加趨于采用分布式架構(gòu)。隨著高質(zhì)量的開源路由套件的出現(xiàn),網(wǎng)絡(luò)和計(jì)算人為的隔離不再存在。我們可以設(shè)計(jì)更新的解決方案,使計(jì)算和網(wǎng)絡(luò)更優(yōu)雅地結(jié)合在一起并有效運(yùn)行。本書章節(jié)有限,很多內(nèi)容沒有涉及,包括安全性、IS-IS(IntermediateSystemtoIntermediateSystem)、新的路由協(xié)議(我們真的需要這些新的協(xié)議嗎),以及一些高級的主題,例如:數(shù)據(jù)中心互連,網(wǎng)絡(luò)分析等。對此我深表歉意,因?yàn)槲业臅r(shí)間、精力以及本書篇幅有限。同時(shí),我擔(dān)心太多內(nèi)容可能會(huì)使你失去耐心。本書使用的軟件為了保持“云原生”關(guān)鍵原則,本書的示例,配置片段等都將使用受人擁護(hù)且廣泛使用的開源軟件。這樣也可以使本書做到與供應(yīng)商無關(guān)。本書主要使用以下四個(gè)開源軟件:??Linux內(nèi)核,作為網(wǎng)絡(luò)操作系統(tǒng),版本為4.18或更高。??FRR,IP路由協(xié)議組件,主要版本為7.1。??Ansible,自動(dòng)化工具,版本為2.8。??Vagrant,用于在筆記本電腦上模擬網(wǎng)絡(luò)拓?fù)洌@示運(yùn)行代碼,版本為v2.2.5。同時(shí),我會(huì)使用Vagrant的libvirt庫擴(kuò)展,快速搭建大型網(wǎng)絡(luò)。我已經(jīng)將自己筆記本電腦上運(yùn)行的軟件提交到GitHub上,我的筆記本電腦配置是Intel的i7-8550U處理器,16GB內(nèi)存和16GBswap空間。包括Vagrant用來模擬Clos網(wǎng)絡(luò)拓?fù)洌有Ansible等。這些軟件通常運(yùn)行正常,但是有時(shí)在打開某些瀏覽器選項(xiàng)時(shí),軟件運(yùn)行會(huì)變慢。如果書中的代碼與GitHub庫中的代碼之間存在差異,以能正常工作的代碼為準(zhǔn)。我使用CumulusLinux發(fā)行版作路由器。我使用Ubuntu版本16.04作服務(wù)器。我還提供了Arista的EOS(ExtensibleOperatingSystem)一些配置,主要是因?yàn)锳rista提供了Vagrant,可以使用EOS和Vagrant構(gòu)建網(wǎng)絡(luò),但遺憾的是在Arista4.20.0F版本之后才提供。歡迎隨時(shí)提供你真實(shí)的反饋。所有的示例都可以從GitHub上下載,這些代碼采用GPLv2許可認(rèn)證。排版約定本書使用以下排版約定:斜體(Italic)表示新術(shù)語、URL、Email、文件名及文件擴(kuò)展名。等寬字體(ConstantWidth)表示程序片段,以及正文中出現(xiàn)的變量、函數(shù)名、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句和關(guān)鍵字等。粗體等寬字體(Constantwidthbold)表示命令或其他由用戶直接輸入的文本。斜體等寬字體(ConstantWidthItalic)表示應(yīng)當(dāng)被用戶提供的值,或上下文決定的值所替換的文本。使用示例代碼本書的示例代碼、練習(xí)等補(bǔ)充材料可以到https://github.com/ddutt/cloud-native-datacenter-networking下載。本書的目的是幫助你的工作。一般來說,你可以在自己的程序或者文檔中使用本書提供的示例代碼。除非你要復(fù)制大量的代碼,你不必聯(lián)系我們獲得使用許可。例如,從書中摘抄幾行代碼編寫程序就不需要獲得許可。銷售或分銷O'Reilly書中的示例代碼則需要獲得許可。引用本書中的示例代碼回答問題無需要獲得許可。將本書中的大量示例代碼附加到你的產(chǎn)品文檔中則需要獲得許可。代碼引用不要求注明出處,但如果你這么做,我們深表感激。出處格式一般包括標(biāo)題、作者,出版社和ISBN。例如:“CloudNativeDataCenterNetworkingbyDineshG.Dutt(O’Reilly).Copyright2020DineshG.Dutt,978-1-492-04560-1”。如果你覺得代碼示例的使用不合理或不符合許可權(quán)限,請隨時(shí)聯(lián)系我們:permissions@oreilly.com。O’Reilly在線學(xué)習(xí)平臺(O’ReillyOnlineLearning)近40年來,O’ReillyMedia致力于提供技術(shù)和商業(yè)培訓(xùn)、知識和卓越見解,來幫助眾多公司取得成功。我們有一群獨(dú)家專家和創(chuàng)新者,他們通過圖書、文章、會(huì)議和在線學(xué)習(xí)平臺分享知識和技術(shù)。O’Reilly的在線學(xué)習(xí)平臺提供按需訪問的直播培訓(xùn)課程、詳細(xì)的學(xué)習(xí)路徑、交互式編程環(huán)境,以及由O’Reilly和其他200多家出版社出版的書籍和視頻。詳情請?jiān)L問http://oreilly.com。聯(lián)系我們任何有關(guān)本書的意見或疑問,請按照以下地址聯(lián)系出版社。美國:O’ReillyMedia,Inc.1005GravensteinHighwayNorthSebastopol,CA95472中國:北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035)奧萊利技術(shù)咨詢(北京)有限公司O’Reilly的每一本書都有專屬網(wǎng)頁,你可以在那里找到關(guān)于本書的相關(guān)信息,包括勘誤表、示例代碼及其他信息。本書的網(wǎng)址是:https://oreil.ly/cloud-native-data-center-networking對于本書的評論或技術(shù)性問題,請發(fā)送電子郵件到:bookquestions@oreilly.com要了解O’Reilly圖書、培訓(xùn)課程、會(huì)議和新聞的信息,請?jiān)L問以下網(wǎng)站:http://www.oreilly.com我們的Facebook:http://facebook.com/oreilly。我們的Twitter:http://twitter.com/oreillymedia。我們的YouTube:http://www.youtube.com/oreillymedia。致謝寫這本書比我想象的要難。跑馬拉松并不像跑10公里那樣容易,類似地,寫幾百頁的書也不像寫幾十頁的書那樣簡單。我曾有過兩次寫幾十頁書的經(jīng)歷,與這次相差甚遠(yuǎn)。我非常感謝在撰寫本書過程中得到眾多互動(dòng)和反饋。本書的編輯AndyOram,也是我前兩本書的合作伙伴。如果沒有你編輯潤色工作,本書讀起來不會(huì)像現(xiàn)在這樣有趣。你的批注總會(huì)給我的寫作帶來意想不到的樂趣。你一直伴隨著我完成這本書的寫作。無論是周末還是晚上,當(dāng)我需要你的幫助時(shí),你總會(huì)立刻提供幫助,推敲出正確的詞或刪除一些啰嗦的地方。讓我印象最深的是,即使在午夜發(fā)送的電子郵件,你也幾乎總會(huì)立即回復(fù)。并且,本書包括一首你創(chuàng)作的網(wǎng)絡(luò)的詩,我深感榮幸和心懷感激。感謝對本書進(jìn)行審閱的伙伴AnthonyMiloslavsky,感謝你對整本書廣度而周到的反饋,使這本書變得更好。DonaldSharp,感謝你對許多章節(jié)的反饋,如果沒有你,多播這一章根本不可能完成。SeanCavanaugh,由于你的審閱和建議,自動(dòng)化這一章變得比之前更好。CurtBrune,感謝你對ONIE(開放網(wǎng)絡(luò)安裝環(huán)境)部分的寶貴反饋。我親愛的朋友SilvanoGai,也是我職業(yè)上唯一的榜樣,感謝你對書中部分章節(jié)做的詳細(xì)討論以及對許多章節(jié)初稿的審閱。Grazieditutto,miocaroamico,欣賞你們的知識和人品。RoopaPrabhu,DavidAhern,VivekVenkataraman,DanielWalton,WilsonKok,PurnaBendale,RamaDarbha和EricPulvino,感謝大家在這本書編寫過程中解答我的許多問題,感謝在Cumulus中與你們共事,曾經(jīng)的笑聲、眼淚以及共同的經(jīng)歷讓我難忘。PeteLumbis,感謝你和我心靈共鳴,雖然也會(huì)與我開玩笑,但總會(huì)鼓勵(lì)我繼續(xù)前進(jìn)。ChristianFranke和DonSlice,感謝你們幫助我解答有關(guān)IS-IS和OSPF的問題。我的摯友Shrijeet,我時(shí)刻會(huì)想起你,我要感謝你的地方太多。同時(shí),非常感謝Microsoft的BartDworak,感謝SeanCavanaugh花了很多時(shí)間跟我介紹你在網(wǎng)絡(luò)自動(dòng)化方面的經(jīng)驗(yàn),讓我完成了自動(dòng)化這一章的內(nèi)容。感謝BarakGafni對我之前《數(shù)據(jù)中心EVPN》一書提供了反饋,用于幫助修正和闡明EVPN和網(wǎng)絡(luò)虛擬化這些章的一些要點(diǎn)。LincolnDale,感謝你對Arista問題的回復(fù)。感謝Narayan,如果沒有NarayanDesai邀請我出席SRECon2016,并做網(wǎng)絡(luò)入門演講,我將不會(huì)編寫這本書。演講得到積極的反饋,所以O(shè)’Reilly出版社邀請我撰寫本書。在Cisco和Cumulus工作期間,我學(xué)習(xí)了很多網(wǎng)絡(luò)、數(shù)據(jù)包的知識和如何與人相處,并且有機(jī)會(huì)與一些最聰明的人一起工作。我特別感謝的兩個(gè)人是Cisco的TomEdsall和Cumulus的JRRivers。感謝開源社區(qū)所做的所有出色工作。Emacs,我使用的開源編輯器軟件,已有25年以上的歷史,我曾經(jīng)用它寫了整本書。Linux社區(qū),我從Linux0.99版本起,就把Linux作為我主要的桌面系統(tǒng),我記得我曾經(jīng)花了整整一天的時(shí)間來下載SlackwareLinux軟盤。這是很久之前的事情了,Ubuntu已經(jīng)使Linux的使用體驗(yàn)變得流暢。除此以外,我還使用了HashiCorp的Vagrant和Ansible團(tuán)隊(duì)的Ansible。感謝我的父母一直對我的寫作以及其他方面的鼓勵(lì)和支持。感謝Shanthala使我無后顧之憂。Maya,感謝你耐心等待我完成這本書。我期待有一天可以將你的漫畫加入我的書中。是的,這將很吸引眼球。
作者介紹
Dinesh G. Dutt有二十年網(wǎng)絡(luò)行業(yè)經(jīng)驗(yàn),在思科公司從事企業(yè)和數(shù)據(jù)中心網(wǎng)絡(luò)工作期間,他曾經(jīng)為思科的大型交換機(jī)設(shè)計(jì)過許多ASIC芯片。他最近的工作是Cumulus Networks公司的首席科學(xué)家。
[美] 迪內(nèi)希·G. 杜特(Dinesh G. Dutt) 著
趙化冰 范彬 丁亮 譯
資深解決方案工程師秦軍作推薦序
秦軍,從事網(wǎng)絡(luò)技術(shù)領(lǐng)域多年,在物理交換機(jī)產(chǎn)品、SDN解決方案、云數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)方向有豐富的技術(shù)積累。
譯者介紹
趙化冰,騰訊云工程師,主要從事云原生相關(guān)的產(chǎn)品研發(fā)和開源相關(guān)工作。
范彬,從事云計(jì)算、容器產(chǎn)品研發(fā)多年。對最Z新的內(nèi)核和網(wǎng)絡(luò)技術(shù)一直保有學(xué)習(xí)熱情。
丁亮,從事云計(jì)算開源網(wǎng)絡(luò)項(xiàng)目,智能網(wǎng)卡和GPU等加速硬件的集成和開發(fā)工作。
目錄前言1第1章為什么需要一個(gè)新的網(wǎng)絡(luò)架構(gòu)9應(yīng)用程序網(wǎng)絡(luò)的洗牌10世紀(jì)之交的網(wǎng)絡(luò)設(shè)計(jì)13橋接的魅力15構(gòu)建可擴(kuò)展的橋接網(wǎng)絡(luò)18接入–匯聚–核心網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)帶來的問題22不可擴(kuò)展性23復(fù)雜性24失效域25不可預(yù)測性25缺乏靈活性26缺乏敏捷26背后的故事27小結(jié)28第2章Clos:新世界的網(wǎng)絡(luò)拓?fù)?9Clos拓?fù)浣榻B30深入探討Clos拓?fù)?2同類設(shè)備的使用32路由作為基本的互連模式33Clos拓?fù)渲械氖諗勘?5互連鏈路速率36一些現(xiàn)實(shí)的限制37細(xì)粒度的故障域39擴(kuò)展Clos拓?fù)?0比較兩種三層模型43應(yīng)用與網(wǎng)絡(luò)模型的匹配43數(shù)據(jù)中心擴(kuò)建44Clos拓?fù)涞挠绊?4重新思考故障和排錯(cuò)45布線45簡化的庫存管理45網(wǎng)絡(luò)自動(dòng)化45Clos網(wǎng)絡(luò)的一些最佳實(shí)踐46交換機(jī)之間使用多鏈路46spine交換機(jī)只用于連接47使用框式交換機(jī)作為spine交換機(jī)48主機(jī)連接模式49小結(jié)50參考文獻(xiàn)50第3章網(wǎng)絡(luò)的解耦51網(wǎng)絡(luò)解耦52為什么網(wǎng)絡(luò)解耦如此重要54成本控制55避免供應(yīng)商鎖定55特性標(biāo)準(zhǔn)化55網(wǎng)絡(luò)解耦可行的原因56網(wǎng)絡(luò)解耦之后網(wǎng)絡(luò)操作的差異57采購與支持57首次啟動(dòng)58開放網(wǎng)絡(luò)安裝程序環(huán)境58網(wǎng)絡(luò)解耦領(lǐng)域中的廠商:硬件廠商61轉(zhuǎn)發(fā)芯片61ODM廠家62CPU63各種標(biāo)準(zhǔn)組織63關(guān)于網(wǎng)絡(luò)解耦的一些常見的不實(shí)說法63網(wǎng)絡(luò)解耦領(lǐng)域的一些最佳實(shí)踐65小結(jié)66參考文獻(xiàn)66第4章網(wǎng)絡(luò)操作系統(tǒng)的選擇67網(wǎng)絡(luò)設(shè)備的新需求68軟件定義網(wǎng)絡(luò)和OpenFlow的興起69SDN和OpenFlow更多詳細(xì)信息70OpenFlow面臨的問題72OVS74SDN和OpenFlow對網(wǎng)絡(luò)解耦的影響75NOS設(shè)計(jì)模型76交換機(jī)網(wǎng)絡(luò)狀態(tài)的存儲位置78交換芯片的編程80API85不同答案背后的原因85用戶接口86NOS模型與云原生NOS需求進(jìn)行比較88NOS還能做什么93小結(jié)93參考文獻(xiàn)93第5章路由協(xié)議的選擇95路由概述96路由表查找的原理97如何選擇路由99路由表?xiàng)l目的類型100RIB和FIB101路由協(xié)議概述105距離矢量協(xié)議與鏈路狀態(tài)協(xié)議106距離矢量協(xié)議解析106鏈路狀態(tài)協(xié)議解析108總結(jié)距離矢量與鏈路狀態(tài)路由交換110比較距離矢量和鏈路狀態(tài)協(xié)議110鏈路狀態(tài)和距離矢量協(xié)議的擴(kuò)展110距離矢量和鏈路狀態(tài)協(xié)議中的多路徑111沒有消息就是好消息112鏈路狀態(tài)和距離矢量協(xié)議中的傳播延遲112多協(xié)議支持113無編號接口114路由配置的復(fù)雜度115Clos網(wǎng)絡(luò)中的路由協(xié)議117鏈路或節(jié)點(diǎn)失效時(shí)的鏈路狀態(tài)與距離矢量協(xié)議118Clos網(wǎng)絡(luò)中的路由匯總121安全與保障122雙向轉(zhuǎn)發(fā)檢測123數(shù)據(jù)中心對路由協(xié)議的需求124基本需求124進(jìn)階需求125一些少見的或前瞻性的需求125為你的網(wǎng)絡(luò)選擇路由協(xié)議126小結(jié)127參考文獻(xiàn)127第6章網(wǎng)絡(luò)虛擬化129什么是網(wǎng)絡(luò)虛擬化130網(wǎng)絡(luò)虛擬化在數(shù)據(jù)中心的應(yīng)用131強(qiáng)制將流量路由到特定路徑上131需要二層網(wǎng)絡(luò)互聯(lián)的應(yīng)用程序133云133交換機(jī)的管理網(wǎng)絡(luò)和數(shù)據(jù)網(wǎng)絡(luò)的分離133網(wǎng)絡(luò)虛擬化模型134服務(wù)抽象:二層或者三層134內(nèi)嵌虛擬網(wǎng)絡(luò)與Overlay虛擬網(wǎng)絡(luò)135網(wǎng)絡(luò)隧道:構(gòu)建Overlay虛擬網(wǎng)絡(luò)的基礎(chǔ)136網(wǎng)絡(luò)隧道的優(yōu)點(diǎn)138網(wǎng)絡(luò)隧道的缺點(diǎn)139數(shù)據(jù)中心的網(wǎng)絡(luò)虛擬化141VLAN141VRF142VXLAN142其他網(wǎng)絡(luò)虛擬化解決方案144虛擬網(wǎng)絡(luò)數(shù)量的實(shí)際限制145包頭中虛擬網(wǎng)絡(luò)ID字段的大小145硬件限制145控制面和軟件的可擴(kuò)展性146部署模式146網(wǎng)絡(luò)虛擬化的控制協(xié)議147虛擬控制面和物理控制面之間的關(guān)系148