網(wǎng)絡(luò)是云計(jì)算最關(guān)鍵的技術(shù),網(wǎng)絡(luò)系統(tǒng)非常復(fù)雜,通常都是通過(guò)分層的結(jié)構(gòu)實(shí)現(xiàn)。虛擬網(wǎng)絡(luò)是云計(jì)算核心的網(wǎng)絡(luò)功能,基于基礎(chǔ)物理網(wǎng)絡(luò)構(gòu)建。軟件定義網(wǎng)絡(luò),則用于動(dòng)態(tài)網(wǎng)絡(luò)變更以及網(wǎng)絡(luò)功能創(chuàng)新。
1 基礎(chǔ)網(wǎng)絡(luò):分層和拓?fù)?/strong>
基礎(chǔ)的物理網(wǎng)絡(luò)有兩個(gè)核心的概念:
分層的協(xié)議棧。在接收協(xié)議棧的基礎(chǔ)上,通過(guò)泛化網(wǎng)絡(luò)分層,來(lái)理解復(fù)雜系統(tǒng)的組成——復(fù)雜系統(tǒng)必然是分層的。
網(wǎng)絡(luò)拓?fù)洹4砹藬?shù)據(jù)中心基本的服務(wù)器組織方式,從小到大依次為:服務(wù)器、機(jī)架、POD、數(shù)據(jù)中心等。
1.1 網(wǎng)絡(luò)分層協(xié)議棧
為了降低網(wǎng)絡(luò)設(shè)計(jì)的復(fù)雜度,絕大部分網(wǎng)絡(luò)都是分層的結(jié)構(gòu),構(gòu)成一個(gè)層次棧。每一層都建立在下面一層的基礎(chǔ)之上,層的數(shù)量、每一層的名稱、功能在不同的網(wǎng)絡(luò)中不盡相同。每一層的目的都是向上一層提供特定的服務(wù),而把如何實(shí)現(xiàn)這些服務(wù)的具體細(xì)節(jié)封裝起來(lái),對(duì)上一層屏蔽。 分層的概念大家并不陌生,它廣泛的應(yīng)用于計(jì)算機(jī)科學(xué)各個(gè)領(lǐng)域,只是在不同的領(lǐng)域有不同的稱謂,例如細(xì)節(jié)屏蔽、抽象數(shù)據(jù)類型,數(shù)據(jù)封裝以及面向?qū)ο蟮某绦蛟O(shè)計(jì)等。其基本思想是一個(gè)特定的軟件(或硬件)向其用戶提供某種服務(wù),但是把內(nèi)部狀態(tài)和算法及實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái)。 如圖1,顯示了一個(gè)5層的網(wǎng)絡(luò),不同機(jī)器上的同一層相互對(duì)應(yīng),這樣構(gòu)成相對(duì)應(yīng)的實(shí)體一般稱為對(duì)等體(Peer)。這些對(duì)等體可以是軟件進(jìn)程、硬件設(shè)備,或者其他交互實(shí)體。一臺(tái)機(jī)器上第n層與另一臺(tái)機(jī)器上第n層進(jìn)行對(duì)話,該對(duì)話中使用的規(guī)則和約定統(tǒng)稱為第n層協(xié)議。
圖1 網(wǎng)絡(luò)的層級(jí)、協(xié)議和接口 實(shí)際上,數(shù)據(jù)并不是從一臺(tái)機(jī)器的第n層直接傳遞到另一臺(tái)機(jī)器的第n層。相反,每一層都將數(shù)據(jù)和控制信息傳遞給下一層,一直傳遞到最底層,然后通過(guò)物理傳輸介質(zhì)進(jìn)行實(shí)際的通信。圖1中的實(shí)線表示實(shí)際的物理通信,而虛線則表示虛擬通信。 每一對(duì)相鄰層次間的連線是接口,接口定義了下層往上層提供哪些原語(yǔ)操作和服務(wù)。當(dāng)網(wǎng)絡(luò)設(shè)計(jì)者在決定一個(gè)網(wǎng)絡(luò)中應(yīng)該包括多少層,以及每一層應(yīng)該提供什么功能時(shí),其中最重要的就是必須定義清楚層與層之間的接口。
1.2 五層參考模型
OSI參考模型具有七層,分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層。TCP/IP參考模型精簡(jiǎn)了OSI模型,只有鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層。OSI參考模型的影響力在于模型本身(去掉會(huì)話層和表示層),它已被證明對(duì)于討論計(jì)算機(jī)網(wǎng)絡(luò)非常有價(jià)值;而TCP/IP參考模型的優(yōu)勢(shì)體現(xiàn)在協(xié)議,這些協(xié)議已經(jīng)被廣泛應(yīng)用許多年,證明了自身在各種復(fù)雜網(wǎng)絡(luò)條件下的穩(wěn)定性。 結(jié)合二者的特點(diǎn),現(xiàn)在大家討論的網(wǎng)絡(luò)分層模型如圖2所示的五層參考模型:
物理層:規(guī)定了如何在不同的介質(zhì)上以電氣(或其他模擬)信號(hào)傳輸比特。
鏈路層:關(guān)注的是如何在兩臺(tái)相連的計(jì)算機(jī)之間發(fā)送有限長(zhǎng)度的消息,并具有指定級(jí)別的可靠性。以太網(wǎng)和802.11就是鏈路層協(xié)議。
網(wǎng)絡(luò)層:主要處理如何把多條鏈路結(jié)合到網(wǎng)絡(luò)中,以及如何把網(wǎng)絡(luò)與網(wǎng)絡(luò)連接成互聯(lián)網(wǎng)絡(luò),使我們可以在兩個(gè)相隔遙遠(yuǎn)的計(jì)算機(jī)之間發(fā)送數(shù)據(jù)包。網(wǎng)絡(luò)層的任務(wù)包括找到傳遞數(shù)據(jù)包所走的路徑。IP是網(wǎng)絡(luò)層主要的協(xié)議。
傳輸層:傳輸層增強(qiáng)了網(wǎng)絡(luò)層的傳輸,通常有更高的可靠性,提供滿足不同應(yīng)用需求的可靠字節(jié)流。TCP和UDP是傳輸層主要的協(xié)議。
應(yīng)用層:應(yīng)用層包含了使用網(wǎng)絡(luò)的應(yīng)用程序。例如HTTP和DNS等。
如圖2,一般情況下,網(wǎng)絡(luò)協(xié)議棧各層分別實(shí)現(xiàn)在硬件、內(nèi)核態(tài)軟件和用戶態(tài)軟件。物理層和網(wǎng)絡(luò)鏈路層是由以太網(wǎng)和802.11標(biāo)準(zhǔn)所定義的,比較穩(wěn)定,因此物理層和網(wǎng)絡(luò)鏈路層一般實(shí)現(xiàn)在硬件里;網(wǎng)絡(luò)層和傳輸層作為系統(tǒng)共用的組件,一般是作為TCP/IP協(xié)議棧集成在操作系統(tǒng)內(nèi)核里;而應(yīng)用層的任務(wù)則一般交給用戶態(tài)的程序去實(shí)現(xiàn)。
圖2 TCP/IP網(wǎng)絡(luò)協(xié)議棧
1.3 數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)?/strong>
物理網(wǎng)絡(luò)是一切網(wǎng)絡(luò)系統(tǒng)的基礎(chǔ),承載著各種網(wǎng)絡(luò)流量的傳輸。大型數(shù)據(jù)中心物理網(wǎng)絡(luò),很多采用經(jīng)典的三層連接,即Cisco定義的分層互連網(wǎng)絡(luò)模型(Hierarchical Internetworking Model)。如圖3(a)所示,分層互連網(wǎng)絡(luò)模型包含了以下三層:
接入層(Access Layer):接入交換機(jī)通常位于機(jī)架頂部,所以它們也被稱為ToR(Top of Rack)交換機(jī),它們物理連接服務(wù)器。
匯聚層(Aggregation Layer):匯聚交換機(jī)連接Access交換機(jī),同時(shí)提供其他的服務(wù),例如防火墻,SSL offload,入侵檢測(cè),網(wǎng)絡(luò)分析等。
核心層(Core Layer):核心交換機(jī)為進(jìn)出數(shù)據(jù)中心的包提供高速的轉(zhuǎn)發(fā),為多個(gè)匯聚層提供連接性。
(a) 傳統(tǒng)的3層結(jié)構(gòu)
(b) Clos Spine/Leaf兩層結(jié)構(gòu) 圖3 常見(jiàn)的數(shù)據(jù)中心網(wǎng)絡(luò)互聯(lián)結(jié)構(gòu) 2008年,美國(guó)加州大學(xué)圣迭戈分校的研究學(xué)者提出了將Clos架構(gòu)用于數(shù)據(jù)中心中。現(xiàn)在流行的Clos網(wǎng)絡(luò)架構(gòu)是一個(gè)二層的spine/leaf架構(gòu),如圖3(b)所示。spine交換機(jī)之間或者leaf交換機(jī)之間不需要鏈接同步數(shù)據(jù)。每個(gè)leaf交換機(jī)的上行鏈路數(shù)等于spine交換機(jī)數(shù)量,同樣的每個(gè)spine交換機(jī)的下行鏈路數(shù)等于leaf交換機(jī)的數(shù)量。可以這樣說(shuō),spine交換機(jī)和leaf交換機(jī)之間是以full-mesh方式連接。在Clos spine/leaf架構(gòu)中,每一層的作用分別是:
葉子交換機(jī)(leaf switch):相當(dāng)于傳統(tǒng)三層架構(gòu)中的接入交換機(jī),作為TOR直接連接物理服務(wù)器。
主干交換機(jī)(spine switch):相當(dāng)于核心交換機(jī)。spine和leaf交換機(jī)之間通過(guò)ECMP(Equal Cost Multi Path)動(dòng)態(tài)選擇多條路徑。
對(duì)比spine/leaf網(wǎng)絡(luò)架構(gòu)和傳統(tǒng)三層網(wǎng)絡(luò)架構(gòu),可以看出傳統(tǒng)的三層網(wǎng)絡(luò)架構(gòu)是垂直的結(jié)構(gòu),而spine/leaf網(wǎng)絡(luò)架構(gòu)是扁平的結(jié)構(gòu),從結(jié)構(gòu)上看,spine/leaf架構(gòu)更易于水平擴(kuò)展。
2 虛擬網(wǎng)絡(luò):VLAN和VxLAN
虛擬網(wǎng)絡(luò)是云計(jì)算多租戶共存的基礎(chǔ),通過(guò)可動(dòng)態(tài)配置的虛擬網(wǎng)絡(luò),構(gòu)建足夠多的私有網(wǎng)絡(luò)域,承載多租戶的安全訪問(wèn)隔離。VLAN是一種underlay網(wǎng)絡(luò),而VxLAN則是基于underlay網(wǎng)絡(luò)隧道實(shí)現(xiàn)的Overlay網(wǎng)絡(luò)。
2.1 虛擬局域網(wǎng)VLAN
VLAN(Virtual Local Area Network,虛擬局域網(wǎng))是同一廣播域中設(shè)備的邏輯分組。通常,通過(guò)在交換機(jī)上配置一些VLAN,將某些接口置于一個(gè)廣播域中,而將某些接口置于另一廣播域中。VLAN可以分布在多個(gè)交換機(jī)上,每個(gè)VLAN被當(dāng)作自己的子網(wǎng)或廣播域。這意味著廣播到網(wǎng)絡(luò)上的幀將僅在同一VLAN內(nèi)的端口之間傳遞。 VLAN的作用類似于物理LAN,但是即使主機(jī)未連接到同一交換機(jī),它也可以將主機(jī)在同一廣播域中分組在一起。在網(wǎng)絡(luò)中使用VLAN的主要原因是:
VLAN增加了廣播域的數(shù)量,同時(shí)減小了廣播域的大小;
VLAN通過(guò)減少接收交換機(jī)泛洪幀副本的主機(jī)數(shù)量來(lái)降低安全風(fēng)險(xiǎn);
可以將保存敏感數(shù)據(jù)的主機(jī)保留在單獨(dú)的VLAN上,以提高安全性;
可以創(chuàng)建更靈活的網(wǎng)絡(luò)設(shè)計(jì),以便按部門而不是按地理位置將用戶分組;
只需將端口配置到適當(dāng)?shù)腣LAN,即可輕松實(shí)現(xiàn)網(wǎng)絡(luò)更改。
如圖4(a)所示,拓?fù)滹@示了一個(gè)網(wǎng)絡(luò),其中所有主機(jī)都位于同一VLAN中。如果沒(méi)有VLAN,則從主機(jī)A發(fā)送的廣播將到達(dá)網(wǎng)絡(luò)上的所有設(shè)備。如圖4(b)所示,通過(guò)將兩個(gè)交換機(jī)上的接口Fa0/0和Fa0/1放置在單獨(dú)的VLAN中,來(lái)自主機(jī)A的廣播將僅到達(dá)主機(jī)B,因?yàn)槊總€(gè)VLAN是一個(gè)單獨(dú)的廣播域,并且只有主機(jī)B與主機(jī)A處于同一VLAN內(nèi)。VLAN 3和VLAN 5中的主機(jī)甚至都不知道發(fā)生了通信。
? (a) 未設(shè)置VLAN的局域網(wǎng)
(b) 設(shè)置VLAN的局域網(wǎng) 圖4 VLAN示意圖 VLAN的幀格式是在802.1Q協(xié)議里規(guī)定的,如圖5所示,相比傳統(tǒng)的802.3協(xié)議包,增加了4字節(jié)的字段。第一個(gè)16bits字段是VLAN協(xié)議標(biāo)識(shí)符,值為0x8100。第二個(gè)字段包括優(yōu)先級(jí)Pri(3bits)、規(guī)范格式指示器CFI(1bit)、VLAN ID(12bit)。
圖5 傳統(tǒng)的802.3和802.1Q幀格式對(duì)比
2.2 虛擬擴(kuò)展局域網(wǎng)VxLAN
VxLAN(Virtual Extensible LAN,虛擬擴(kuò)展局域網(wǎng)),或許是目前最熱門的網(wǎng)絡(luò)虛擬化技術(shù)。VxLAN由RFC7348定義,這是2014年定稿的一個(gè)協(xié)議,VxLAN協(xié)議將Ethernet幀封裝在UDP內(nèi),再加上8個(gè)字節(jié)的VxLAN header,用來(lái)標(biāo)識(shí)不同的二層網(wǎng)絡(luò)。 如圖6所示,除了常規(guī)的各層的包頭之外,VxLAN協(xié)議還定義了8個(gè)字節(jié)的VxLAN包頭。其中的24bit用來(lái)標(biāo)識(shí)不同的二層網(wǎng)絡(luò),這樣總共可以標(biāo)識(shí)1600多萬(wàn)個(gè)不同的二層網(wǎng)絡(luò)。一般的傳輸層端口號(hào)用來(lái)標(biāo)識(shí)進(jìn)程或者應(yīng)用,但是在VxLAN協(xié)議里面的,以太網(wǎng)幀封裝在UDP里面,UDP的源端口被用來(lái)在ECMP或者LACP做負(fù)載均衡;目的端口被用來(lái)標(biāo)識(shí)VxLAN數(shù)據(jù),分配給VxLAN的端口號(hào)是4789。VxLAN數(shù)據(jù)是經(jīng)過(guò)VTEP(VxLAN Tunnel EndPoint,VxLAN隧道終端)封裝和解封裝的,相應(yīng)的VxLAN數(shù)據(jù)的外層IP地址就是VTEP的IP地址。最外層的MAC地址用來(lái)實(shí)現(xiàn)VTEP之間的數(shù)據(jù)傳遞
圖6 VxLAN包格式 VxLAN與VLAN的最大區(qū)別在于,VLAN只是修改了原始的以太網(wǎng)包頭,但是整個(gè)網(wǎng)絡(luò)數(shù)據(jù)包還是原來(lái)那個(gè)數(shù)據(jù)包,而VxLAN是將原始的以太網(wǎng)幀隱藏在UDP數(shù)據(jù)里面。經(jīng)過(guò)VTEP封裝之后,在網(wǎng)絡(luò)線路上看起來(lái)只有VTEP之間的UDP數(shù)據(jù)傳遞,原始的網(wǎng)絡(luò)數(shù)據(jù)包被掩蓋了。 相比VLAN,VxLAN要復(fù)雜很多。加上VLAN的先發(fā)優(yōu)勢(shì),已經(jīng)在交換機(jī)硬件中得到了廣泛的支持。那為什么還要VxLAN?原因主要是:
VLAN ID數(shù)量限制。首先是VLAN能支持的二層網(wǎng)絡(luò)數(shù)量有限。VLAN有12bit用來(lái)標(biāo)識(shí)不同的二層網(wǎng)絡(luò),這樣總共是4096個(gè)。當(dāng)前大型數(shù)據(jù)中心數(shù)以十萬(wàn)計(jì)的節(jié)點(diǎn)數(shù)量,4096個(gè)虛擬網(wǎng)絡(luò)域捉襟見(jiàn)肘。而VxLAN有24bit用來(lái)標(biāo)識(shí)不同的二層網(wǎng)絡(luò),這樣總共是1600多萬(wàn)個(gè)虛擬網(wǎng)絡(luò)域,完全可以滿足大型數(shù)據(jù)中心的需求。
交換機(jī)MAC地址表限制。之前交換機(jī)的一個(gè)端口連接一個(gè)物理主機(jī)對(duì)應(yīng)一個(gè)MAC地址,但現(xiàn)在交換機(jī)的一個(gè)端口雖然還是連接一個(gè)物理主機(jī)但是可能連接幾十個(gè)虛擬機(jī)和相應(yīng)數(shù)量的MAC地址。交換機(jī)是根據(jù)MAC地址表實(shí)現(xiàn)二層轉(zhuǎn)發(fā)。交換機(jī)的內(nèi)存比較寶貴,所以MAC地址表的大小通常是有限的。如果使用VxLAN,虛擬機(jī)的以太網(wǎng)幀被VTEP封裝在UDP里面,一個(gè)物理主機(jī)對(duì)應(yīng)一個(gè)VTEP,所以交換機(jī)的MAC地址表,只需要記錄與物理主機(jī)數(shù)量相當(dāng)條目就可以了,虛擬化帶來(lái)的MAC地址表暴增的問(wèn)題也不存在了。
靈活的虛機(jī)部署。采用VLAN網(wǎng)絡(luò)的虛擬環(huán)境,不存在overlay網(wǎng)絡(luò)。虛擬機(jī)的網(wǎng)絡(luò)數(shù)據(jù),被打上VLAN Tag之后,直接在物理網(wǎng)絡(luò)上傳輸,與物理網(wǎng)絡(luò)上的VLAN是融合在一起的。這樣的好處是虛擬機(jī)能直接訪問(wèn)到物理網(wǎng)絡(luò)的設(shè)備,但是壞處是,虛擬網(wǎng)絡(luò)現(xiàn)在不能打破物理網(wǎng)絡(luò)的限制。如果使用VxLAN,因?yàn)閂xLAN通過(guò)UDP傳輸以太網(wǎng)幀,那相應(yīng)的可以在一個(gè)L3網(wǎng)絡(luò)上,傳遞L2的數(shù)據(jù)。物理網(wǎng)絡(luò)的二層邊界還存在,但是現(xiàn)在虛機(jī)的網(wǎng)絡(luò)數(shù)據(jù)在三層網(wǎng)絡(luò)傳輸,可以跨越物理二層網(wǎng)絡(luò)的限制。不管物理網(wǎng)絡(luò)的二層還是三層,虛擬機(jī)現(xiàn)在已經(jīng)感知不到了。通過(guò)VxLAN的封裝,虛擬機(jī)現(xiàn)在走的是一套獨(dú)立于物理網(wǎng)絡(luò)(underlay network)的overlay網(wǎng)絡(luò)。這樣的話,在物理網(wǎng)絡(luò)上,就不必把所有的交換機(jī)連起來(lái),還是可以保持一個(gè)個(gè)小的L2 Pod。但是同時(shí),虛擬機(jī)的部署和遷移,又不用受物理網(wǎng)絡(luò)的限制,整個(gè)數(shù)據(jù)中心可以保持一個(gè)平均的利用率。這是又一個(gè)VxLAN能解決,但是VLAN無(wú)法回避的問(wèn)題。
更好的利用多條網(wǎng)絡(luò)鏈路。VLAN協(xié)議使用STP(Spanning Tree Protocol)來(lái)管理多條線路,STP根據(jù)優(yōu)先級(jí)和cost,只會(huì)選出一條線路來(lái)工作,這樣可以避免數(shù)據(jù)傳遞的環(huán)路。當(dāng)網(wǎng)絡(luò)流量較大的時(shí),也不能通過(guò)增加線路來(lái)提升性能。而VxLAN因?yàn)槭峭ㄟ^(guò)UDP封裝,在三層網(wǎng)絡(luò)上傳輸。雖然傳遞的還是二層的以太網(wǎng)幀,但是VxLAN可以利用一些基于三層的協(xié)議來(lái)實(shí)現(xiàn)多條線路共同工作,以實(shí)現(xiàn)負(fù)載均衡,例如ECMP和LACP等。當(dāng)網(wǎng)絡(luò)流量較大時(shí),可以通過(guò)增加線路來(lái)減輕現(xiàn)有線路的負(fù)擔(dān)。這在提升數(shù)據(jù)中心網(wǎng)絡(luò)性能,尤其是東西向流量的性能時(shí),尤其重要。
編輯:黃飛
?
評(píng)論