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