網(wǎng)絡(luò)的可靠性、冗余性自從網(wǎng)絡(luò)誕生以來就是一個不曾停止過討論的話題,最近阿里云發(fā)布了云骨干網(wǎng)這一產(chǎn)品,引起了業(yè)界的廣泛討論,突然覺得在廣域網(wǎng)領(lǐng)域有一些事情發(fā)生,比如基于阿里云骨干網(wǎng)的SD-WAN的StartUP就是一個不錯的想法。說到SD-WAN,感覺其就是在網(wǎng)絡(luò)可靠性與建設(shè)成本之間的Trade off,當(dāng)然也會有一些靈活性在里面。
本文主要和大家分享的是從分層角度HACK網(wǎng)絡(luò),首先跟隨小編一起來了解一下什么是網(wǎng)絡(luò)分層。
網(wǎng)絡(luò)分層簡介
網(wǎng)絡(luò)分層就是將網(wǎng)絡(luò)節(jié)點所要完成的數(shù)據(jù)的發(fā)送或轉(zhuǎn)發(fā)、打包或拆包,控制信息的加載或拆出等工作,分別由不同的硬件和軟件模塊去完成。這樣可以將往來通信和網(wǎng)絡(luò)互連這一復(fù)雜的問題變得較為簡單。
網(wǎng)絡(luò)層次介紹
七層模型
OSI(Open System Interconnection,開放系統(tǒng)互連)七層網(wǎng)絡(luò)模型稱為開放式系統(tǒng)互聯(lián)參考模型 ,是一個邏輯上的定義,一個規(guī)范,它把網(wǎng)絡(luò)從邏輯上分為了7層。每一層都有相關(guān)、相對應(yīng)的物理設(shè)備,比如路由器(網(wǎng)絡(luò)層),交換機(數(shù)據(jù)鏈路層)。OSI 七層模型是一種框架性的設(shè)計方法 ,建立七層模型的主要目的是為解決異種網(wǎng)絡(luò)互連時所遇到的兼容性問題,其最主要的功能就是幫助不同類型的主機實現(xiàn)數(shù)據(jù)傳輸。它的最大優(yōu)點是將服務(wù)、接口和協(xié)議這三個概念明確地區(qū)分開來,通過七個層次化的結(jié)構(gòu)模型使不同的系統(tǒng)不同的網(wǎng)絡(luò)之間實現(xiàn)可靠的通訊。
分層的益處
建立七層模型的主要目的是為解決異種網(wǎng)絡(luò)互連時所遇到的兼容性問題。它的最大優(yōu)點是將服務(wù)、接口和協(xié)議這三個概念明確地區(qū)分開來:服務(wù)說明某一層為上一層提供一些什么功能,接口說明上一層如何使用下層的服務(wù),而協(xié)議涉及如何實現(xiàn)本層的服務(wù);這樣各層之間具有很強的獨立性,互連網(wǎng)絡(luò)中各實體采用什么樣的協(xié)議是沒有限制的,只要向上提供相同的服務(wù)并且不改變相鄰層的接口就可以了。網(wǎng)絡(luò)七層的劃分也是為了使網(wǎng)絡(luò)的不同功能模塊(不同層次)分擔(dān)起不同的職責(zé),益處如下:
1、減輕問題的復(fù)雜程度,一旦網(wǎng)絡(luò)發(fā)生故障,可迅速定位故障所處層次,便于查找和糾錯。
2、在各層分別定義標(biāo)準(zhǔn)接口,使具備相同對等層的不同網(wǎng)絡(luò)設(shè)備能實現(xiàn)互操作,各層之間則相對獨立,一種高層協(xié)議可放在多種低層協(xié)議上運行
3、能有效刺激網(wǎng)絡(luò)技術(shù)革新,因為每次更新都可以在小范圍內(nèi)進行,不需對整個網(wǎng)絡(luò)動大手術(shù)
從分層角度HACK網(wǎng)絡(luò)
1、地溝
首先我們的討論的網(wǎng)絡(luò)的負一層:地溝,一般運營商做網(wǎng)絡(luò)可靠性保護時都要求主備鏈路不能同溝同纜,這里的同溝就是指的這一層,千萬不要小看這一層,這可是黨的特權(quán),不是你想挖就能挖的,一般也是最耗時的一層。站在這一層去看可靠性的一般都是土豪,比如我們做城域網(wǎng)或者長傳波分的環(huán)路保護,在兩個節(jié)點之間至少要挖兩條溝,導(dǎo)致成本直接是Double的。作為普通的用戶,在這一層能做的事情也就有限了,甚至可以忽略。0X01物理層
這里的物理層主要就是光纖了,光纖都是放在地溝里面的,受限于上面地溝這一層,因此用戶能做的事情類似。
2、數(shù)據(jù)鏈路層
這里拿以太網(wǎng)舉例,從最初HUB的工作原理來講直接就是廣播(當(dāng)然還有輔助的CSMA/CD),看上去像一個粗人的玩法,但是在特殊的場景也是一種比較有效的方法,比如在電信領(lǐng)域,有些廠家為了滿足50ms的倒換時間,也是簡單粗暴的直接把數(shù)據(jù)包發(fā)送兩份通過不同的路徑傳送到核心網(wǎng)來保證切換時的低延時,個人認為這也是對廣播的一次應(yīng)用,當(dāng)然你也可以說這是一種帶寬換時間的做法。
還有就是在VR游戲領(lǐng)域,為了獲取實時性的低延時,現(xiàn)場攝像頭采集的畫面信息、各個背包機的位置更新、手柄的信息等都是通過廣播來通信的,一方面是有多對一或者一對多的互通需求,另一方面就是通過廣播來提高網(wǎng)絡(luò)的可靠性。當(dāng)然這里提到應(yīng)用場景,可能網(wǎng)工覺得這是瞎搞,不符合網(wǎng)絡(luò)的規(guī)則,可是我想說的是誰讓業(yè)務(wù)需求這么奇葩呢,網(wǎng)絡(luò)本來就是為應(yīng)用服務(wù)的,只能是不管白貓黑貓,能夠抓住老鼠的貓就是好貓。
這里說的主要是思路,如果你有這樣的業(yè)務(wù)需求,可以往這個方向去考慮。
3、網(wǎng)絡(luò)層
網(wǎng)絡(luò)主要是IP,這里也是網(wǎng)工的主戰(zhàn)場,大部分的網(wǎng)絡(luò)冗余性都是在這里實現(xiàn),那些牛X的動態(tài)路由協(xié)議也在這里施展拳腳。除了路由協(xié)議自己實現(xiàn)的主備或者負載的冗余技術(shù),這里簡單提幾個小的TIPs。比如大家都知道路由是遞歸查詢的,利用遞歸我們可以解決一些棘手的問題,比如有些廠家的PBR僅支持多個下一跳的負載或者主備,我們可以把下一跳遞歸到靜態(tài)路由,通過調(diào)用靜態(tài)路由的特性來實現(xiàn)相關(guān)功能(負載或者主備或者BFD檢測等)。
還有在163類似的骨干網(wǎng)中使用的虛擬下一跳技術(shù),也是使用了路由的遞歸查詢來實現(xiàn)網(wǎng)絡(luò)冗余。還有就是上層對下層的復(fù)用,比如多個IP網(wǎng)絡(luò)復(fù)用同一個以太網(wǎng)網(wǎng)絡(luò),具體到端口就是一個物理端口配置使用多個IP地址,再擴展一下就是同一個以太網(wǎng)段使用不同的IP地址網(wǎng)段來滿足特定的需求。
4、傳輸層
這里就是”類F5”的天下了,通過前置負載均衡調(diào)度來實現(xiàn)應(yīng)用級別的網(wǎng)絡(luò)可靠性。當(dāng)然“類F5”還有其他的功能,舉個例子,大家玩Openstack的都知道Neutron模塊所實現(xiàn)的Floating IP僅支持IP級別的公私網(wǎng)映射,但是大家都知道IPv4是很珍貴的,特別是在天朝,一般公司很少有幾個C以上級別的地址。但是我們可以通過在Horizon配置負載均衡來實現(xiàn)端口級別的映射,只需添加一臺Real Server來代替內(nèi)網(wǎng)主機就可以了,這也算是一個Trade off吧,風(fēng)險自行評估,各位新老司機量力而行。
當(dāng)然傳輸層對網(wǎng)絡(luò)層的復(fù)用應(yīng)該就是端口級別的復(fù)用了,應(yīng)用比較廣泛的就是NAT映射,這個大家應(yīng)該都玩的比較溜,不再展開。各種OVERLAY的技術(shù)也在此應(yīng)用,大部分都是UDP封裝IP或UDP直接封裝以太網(wǎng)(VXALN),這應(yīng)該算是下層對上層的復(fù)用?
這里從網(wǎng)絡(luò)分層的角度列舉了每層可以Hack的技術(shù),可以每層單獨使用,也可以組合使用,比如網(wǎng)絡(luò)層無法解決的問題可以轉(zhuǎn)嫁到傳輸層或者數(shù)據(jù)鏈路層,物理層無法解決的問題也可以轉(zhuǎn)網(wǎng)絡(luò)層。
-
網(wǎng)絡(luò)分層
+關(guān)注
關(guān)注
1文章
6瀏覽量
9004
發(fā)布評論請先 登錄
相關(guān)推薦
評論