【導(dǎo)讀】本文介紹了云計算中網(wǎng)絡(luò)的的一些重要知識和原理,以及結(jié)合實(shí)際業(yè)務(wù)分享行業(yè)云的一些架構(gòu)設(shè)計。
【作者】一力搜索,某銀行分布式數(shù)據(jù)庫架構(gòu)師,重點(diǎn)負(fù)責(zé)行內(nèi)分布式數(shù)據(jù)庫領(lǐng)域及私有云,個人微信公眾號:一力搜索。
最簡單的總結(jié)
SDN主流選擇了OverLay 。虛擬集群的規(guī)模( 非物理機(jī)所能比擬) 使得Vxlan的組播傳播( 虛擬機(jī)構(gòu)成的集群包含的 MAC 地址數(shù)量往往多一兩個數(shù)量級 MAC地址表 )對網(wǎng)絡(luò)設(shè)備性能要求巨大(你不可能每個交換機(jī)都買核心交換機(jī)一樣的配置吧)。Overlay通過隧道技術(shù)(VxLAN或GRE)和控制平面可以減少集群中MAC地址表和ARP請求( H3C VXLAN解決方案基于SDN架構(gòu),通過引入全網(wǎng)的SDN Controller來實(shí)現(xiàn)VXLAN的管理和維護(hù),使得VTEP之間的信息可以通過Controller來進(jìn)行反射。這樣,VTEP的MAC地址表映射關(guān)系不再通過組播向全網(wǎng)其他VTEP傳達(dá),而是統(tǒng)一上報給控制器,由控制器統(tǒng)一下發(fā)給需要接受此消息的其他VTEP,由具體的VTEP執(zhí)行轉(zhuǎn)發(fā)機(jī) ), VxLan中Vlan內(nèi)部只走2層網(wǎng)關(guān),只有VxLan之間(不同租戶,云主機(jī)和裸金屬之間)才需要走3層網(wǎng)關(guān)。進(jìn)而有效 降低二層核心網(wǎng)絡(luò)設(shè)備壓力。
常見網(wǎng)絡(luò)術(shù)語
普通的VLAN數(shù)量只有4096個,無法滿足大規(guī)模云計算IDC的需求,而IDC為何需求那么多VLAN呢,因為目前大部分IDC內(nèi)部結(jié)構(gòu)主要分為兩種L2,L3。
L2( 二層網(wǎng)關(guān) ) :位于同一網(wǎng)段的終端用戶通信,L2網(wǎng)關(guān)收到用戶報文后,根據(jù)報文中包含的目的MAC類型 進(jìn)行轉(zhuǎn)發(fā)。
L2網(wǎng)關(guān)主要解決的就是同一VNI下的VM之間的互訪 。
L3(三層網(wǎng)關(guān)):用于非同一網(wǎng)段的終端用戶通信或VXLAN和非VXLAN用戶間的通信。
L3網(wǎng)關(guān)解決的就是不同VNI(VXLAN Network Identifier)以及VXLAN和非VXLAN之間的互訪
VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端點(diǎn)) 為VXLAN隧道的端點(diǎn),封裝在NVE中,用于VXLAN報文的封裝和解封裝。VTEP與物理網(wǎng)絡(luò)相連,分配的地址為物理網(wǎng)絡(luò)IP地址。VXLAN報文中源IP地址為本節(jié)點(diǎn)的VTEP地址,VXLAN報文中目的IP地址為對端節(jié)點(diǎn)的VTEP地址,一對VTEP地址就對應(yīng)著一個VXLAN隧道。
L2結(jié)構(gòu)里面,所有的服務(wù)器都在一個大的局域網(wǎng)里面,TOR透明L2,不同交換機(jī)上的服務(wù)器互通靠MAC地址,通信隔離和廣播隔離靠的vlan,網(wǎng)關(guān)在內(nèi)網(wǎng)核心上。而L3結(jié)構(gòu)這是從TOR級別上就開始用協(xié)議進(jìn)行互聯(lián),網(wǎng)關(guān)在TOR上,不同交換機(jī)之間的互通靠IP地址。
ToR(Top of Rack):接入方式就是在服務(wù)器機(jī)柜的最上面安裝接入交換機(jī)。
EoR(End of Row):接入交換機(jī)集中安裝在一列機(jī)柜端部的機(jī)柜內(nèi),通過水平纜線以永久鏈路方式連接設(shè)備柜內(nèi)的主機(jī)/服務(wù)器/小型機(jī)設(shè)備。EoR 對設(shè)備機(jī)柜需要敷設(shè)大量的水平纜線連接到交換機(jī)。
對比:
EOR布線方式的缺點(diǎn):從服務(wù)器機(jī)柜到網(wǎng)絡(luò)機(jī)柜的銅纜多(約有20-40根銅纜),且距網(wǎng)絡(luò)機(jī)柜越遠(yuǎn)的服務(wù)器機(jī)柜的銅纜,在機(jī)房中的布線距離越長,由此導(dǎo)致線纜管理維護(hù)工作量大、靈活性差。
TOR布線的缺點(diǎn):每個服務(wù)器機(jī)柜受電源輸出功率限制,可部署的服務(wù)器數(shù)量有限,由此導(dǎo)致機(jī)柜內(nèi)交換機(jī)的接入端口利用率不足。在幾個服務(wù)器機(jī)柜間共用1-2臺接入交換機(jī),可解決交換機(jī)端口利用率不足的問題,但這種方式增加了線纜管理工作量。
從網(wǎng)絡(luò)設(shè)計考慮,TOR布線方式的每臺接入交換機(jī)上的VLAN量不會很多,在網(wǎng)絡(luò)規(guī)劃的時候也要盡量避免使一個VLAN通過匯聚交換機(jī)跨多臺接入交換機(jī),因此采用TOR布線方式的網(wǎng)絡(luò)拓?fù)渲?,每個VLAN的范圍不會太大,包含的端口數(shù)量不會太多。但對于EOR布線方式來說,接入交換機(jī)的端口密度高,在網(wǎng)路最初設(shè)計時,就可能存在包含較多端口數(shù)的VLAN。
TOR方式的接入交換機(jī)數(shù)量多,EOR方式的接入交換機(jī)數(shù)量少,所以TOR方式的網(wǎng)絡(luò)設(shè)備管理維護(hù)工作量大。
隨著用戶數(shù)據(jù)業(yè)務(wù)需求的猛增,數(shù)據(jù)中心機(jī)房服務(wù)器密度越來越高,虛擬化和云計算等新技術(shù)趨勢日益流行,使得服務(wù)器對應(yīng)的網(wǎng)絡(luò)端口大大增加,并且增加了管理的復(fù)雜性,另外以太網(wǎng)(LAN)與光纖存儲區(qū)域網(wǎng)絡(luò)(SAN)的融合也越來越常見,這就必然要求一種新的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)與之相對應(yīng)。在云計算的大潮下,這種分布式架構(gòu)的業(yè)務(wù)擴(kuò)展性極強(qiáng),要求的服務(wù)器數(shù)量也越來越多。例如新的Apache Hadoop 0.23支持6000~10000臺服務(wù)器在一個集群內(nèi), 海量的服務(wù)器數(shù)量要求充分利用數(shù)據(jù)中心機(jī)柜空間的同時,海量的業(yè)務(wù)數(shù)據(jù)也需要更快更直接的高性能鏈路把數(shù)據(jù)傳送到網(wǎng)絡(luò)核心 。在這樣的趨勢下,顯然ToR更加適用,在業(yè)務(wù)迅速擴(kuò)展的壓力下,ToR的方式可以更好的實(shí)現(xiàn)網(wǎng)絡(luò)的更快速擴(kuò)展。
一 . SDN
在SDN解決方案中overlay與underlay是最為常見的二個網(wǎng)絡(luò)術(shù)語 .
UnderLay指的是物理網(wǎng)絡(luò),它由物理設(shè)備和物理鏈路組成。常見的物理設(shè)備有交換機(jī)、路由器、防火墻、負(fù)載均衡、入侵檢測、行為管理等,這些設(shè)備通過特定的鏈路連接起來形成了一個傳統(tǒng)的物理網(wǎng)絡(luò),這樣的物理網(wǎng)絡(luò),我們稱之為UnderLay網(wǎng)絡(luò)。
實(shí)現(xiàn) SDN的技術(shù)主要有 overlay , OpenFlow ,和思科的 onePK 。Overlay已成主流,該類方案主要思想可被歸納為解耦,獨(dú)立,控制三個方面。
OverLay其實(shí)就是一種隧道技術(shù) ,VXLAN,NVGRE及STT (都是OverLay實(shí)現(xiàn)方式之一) 是典型的三種隧道技術(shù), 它們都是通過隧道技術(shù)實(shí)現(xiàn)大二層網(wǎng)絡(luò) 。將原生態(tài)的二層數(shù)據(jù)幀報文進(jìn)行封裝后在通過隧道進(jìn)行傳輸。總之,通過OverLay技術(shù),我們在對物理網(wǎng)絡(luò)不做任何改造的情況下,通過隧道技術(shù)在現(xiàn)有的物理網(wǎng)絡(luò)上創(chuàng)建了一個或多個邏輯網(wǎng)絡(luò)即虛擬網(wǎng)絡(luò),有效解決了物理數(shù)據(jù)中心,尤其是云數(shù)據(jù)中心存在的諸多問題,實(shí)現(xiàn)了數(shù)據(jù)中心的自動化和智能化。
與UnderLay網(wǎng)絡(luò)相比,OverLay實(shí)現(xiàn)了控制與轉(zhuǎn)發(fā)的分離,這是SDN的核心理念 。
Overlay 技術(shù)與 SDN 可以說天生就是適合互相結(jié)合的技術(shù)組合。Overlay 網(wǎng)絡(luò)虛擬機(jī)物理位置無關(guān)特性就需要有一種強(qiáng)有力的集中控制技術(shù)進(jìn)行虛擬機(jī)的管理和控制。而 SDN 技術(shù)恰好可以完美的做到這一點(diǎn) 。
二 . OverLay 解決哪些痛點(diǎn)
Overlay由于其簡單、一致的解決問題方法,加上重新定義的網(wǎng)絡(luò)可以進(jìn)行軟件定義,已經(jīng)成為數(shù)據(jù)中心網(wǎng)絡(luò)最炙手可熱的技術(shù)方案。然而,它并不是一張完全由軟件定義的網(wǎng)絡(luò),Overlay網(wǎng)絡(luò)解決方案必定是一種軟硬結(jié)合的方案,無論是從接入層VTEP混合組網(wǎng)的組網(wǎng)要求、組播或SDN控制層協(xié)議的支持,還是VXLAN網(wǎng)絡(luò)與傳統(tǒng)網(wǎng)絡(luò)的互通來看,都需要硬件積極的配合和參與,必須構(gòu)建在堅實(shí)和先進(jìn)的物理網(wǎng)絡(luò)架構(gòu)基礎(chǔ)上。
考慮到服務(wù)器接入的可以是虛擬交換機(jī),也可以是物理交換機(jī),因此存在三種不同的構(gòu)建模式:
2.1 OverLay類型
2.2 Overlay 網(wǎng)絡(luò)主要解決的問題
三 . 為什么需要 Vxlan
在云計算IDC里,要求服務(wù)器做到虛擬化,原來這個服務(wù)器掛在TOR A上,我可以隨意把它遷移到TOR B上,而不需要改變IP地址,這個有點(diǎn)就是L2網(wǎng)路的特長,因為我這個虛擬服務(wù)器和外界(網(wǎng)關(guān)之外)通信還靠L3,但是我網(wǎng)關(guān)內(nèi)部互訪是走L2的,這個在L3里是無法做到的。因為L3里每個IP都是唯一的,地址也是固定位置的,除非你整網(wǎng)段物理搬遷。因此如何在L3網(wǎng)絡(luò)里傳輸L2數(shù)據(jù)呢,這就是overlay技術(shù) 。
因此VXLAN(Virtual eXtensible LAN可擴(kuò)展虛擬局域網(wǎng))誕生了,基于IP網(wǎng)絡(luò)之上,采用的是MAC in UDP技術(shù),本來OSI7層模型里就是一層疊一層的,這種和GRE/IPSEC等tunnel技術(shù)是不是很像,這種封裝技術(shù)對中間網(wǎng)絡(luò)沒有特殊要求,只要你能識別IP報文即可進(jìn)行傳送。
好了,解釋清楚了,那么現(xiàn)在總結(jié)為何需要Vxlan:
虛擬機(jī)規(guī)模受到網(wǎng)絡(luò)規(guī)格的限制,大L2網(wǎng)絡(luò)里,報文通過查詢MAC地址轉(zhuǎn)發(fā), MAC表容量限制了虛擬機(jī)的數(shù)量 。
網(wǎng)絡(luò)隔離的限制,普通的vlan和VPN配置無法滿足動態(tài)網(wǎng)絡(luò)調(diào)整的需求,同時配置復(fù)雜
虛擬器搬遷受到限制,虛擬機(jī)啟動后假如在業(yè)務(wù)不中斷基礎(chǔ)上將該虛擬機(jī)遷移到另外一臺物理機(jī)上去,需要保持虛擬機(jī)的IP地址和MAC地址等參數(shù)保持不變,這就要求業(yè)務(wù)網(wǎng)絡(luò)是一個二層的網(wǎng)絡(luò)。
3.1 報文的封裝與解封裝
VXLAN的核心在于承載于物理網(wǎng)絡(luò)上的隧道技術(shù),這就意味著要對報文進(jìn)行封裝和解封裝,因此需要硬件來加速處理。
在VXLAN網(wǎng)絡(luò)中,用于建立VXLAN隧道的端點(diǎn)設(shè)備稱為VTEP(VXLAN Tunneling End Point,VXLAN隧道終結(jié)點(diǎn) ,起到網(wǎng)關(guān)的作用 ), 封裝和解封裝在VTEP節(jié)點(diǎn)上進(jìn)行 。
在云數(shù)據(jù)中心,部分業(yè)務(wù)是不適合進(jìn)行虛擬化的(如小機(jī)服務(wù)器,高性能數(shù)據(jù)庫服務(wù)器),這些服務(wù)器會直接與物理交換機(jī)互聯(lián), 而他們又必須與對應(yīng)租戶/業(yè)務(wù)的VXLAN網(wǎng)絡(luò)互通,此時就必須要求與其互聯(lián)的硬件交換機(jī)也能支持VXLAN協(xié)議,以接入VXLAN網(wǎng)絡(luò) 。
3.2 組播協(xié)議傳播
簡單總結(jié),vxlan用組播協(xié)議傳播,每個VTEP都需要清楚源和目的MAC,新增MAC地址需要組播通知一實(shí)例下所有VTEP。另,本地VTEP 找不到目的MAC處于哪一個遠(yuǎn)程VTEP時,也需要組播報文查找目的MAC主機(jī)所屬遠(yuǎn)端VTEP。租戶很多時,組播條數(shù)指數(shù)增加,對物理網(wǎng)絡(luò)承載組播處理能力有較大要求。引入SDN Controller來實(shí)現(xiàn)VXLAN的管理和維護(hù),VTEP的MAC地址表映射關(guān)系不再通過組播向全網(wǎng)其他VTEP傳達(dá),而是統(tǒng)一上報給控制器,由控制器統(tǒng)一下發(fā)給需要接受此消息的其他VTEP,由具體的VTEP執(zhí)行轉(zhuǎn)發(fā)機(jī)制。
VXLAN網(wǎng)絡(luò)的MAC表與隧道終端的綁定關(guān)系要用組播協(xié)議傳播,而大規(guī)格組播協(xié)議離不開物理網(wǎng)絡(luò)設(shè)備的支持。
按照VXLAN的標(biāo)準(zhǔn), 每一個VTEP都需要了解其接入的終端MAC地址,同時還需要知道整網(wǎng)(該VXLAN實(shí)例中)其他VTEP下所有的終端MAC地址。只有這樣,在本地的VTEP收到報文后需要轉(zhuǎn)發(fā)時,才能根據(jù)目的MAC查詢到需要送到遠(yuǎn)端的目的VTEP那里 。
按照IETF中對VXLAN網(wǎng)絡(luò)的定義,負(fù)責(zé)在網(wǎng)絡(luò)中傳播MAC地址和VTEP對應(yīng)關(guān)系的機(jī)制,正是依托于物理網(wǎng)絡(luò)中的組播協(xié)議。VTEP將本地的MAC地址表利用組播協(xié)議在整個組播中傳播,從而使得整網(wǎng)中所有組播成員,也就是其他VTEP都知道本地的MAC地址表。當(dāng)VTEP下的終端接入情況有所更改,如新增了MAC地址或者減少了MAC地址,也需要利用組播協(xié)議通知同一個實(shí)例下的所有VTEP。另外,當(dāng)本地VTEP找不到目的MAC處于哪一個遠(yuǎn)端VTEP時,也需要發(fā)送組播報文來查找目的MAC主機(jī)所屬的遠(yuǎn)端VTEP。
實(shí)際組網(wǎng)中,VXLAN利用了物理網(wǎng)絡(luò)的組播組,在建立好的組播組中加入VXLAN中所有VTEP成員,傳遞VTEP變更信息。在多用戶多業(yè)務(wù)情況下,組播組要求與VXLAN數(shù)量息息相關(guān)。由于VXLAN網(wǎng)絡(luò)規(guī)模的不斷拓展 (最大可達(dá)到16M個VXLAN網(wǎng)絡(luò)),所需要的組播條目數(shù)會不斷增加,這實(shí)際上對于物理網(wǎng)絡(luò)承載組播處理能力和規(guī)格提出了要求。
由于標(biāo)準(zhǔn)VXLAN架構(gòu)下使用組播協(xié)議,對物理網(wǎng)絡(luò)組播數(shù)規(guī)格要求較大,因此H3C VXLAN解決方案基于SDN架構(gòu), 通過引入全網(wǎng)的SDN Controller來實(shí)現(xiàn)VXLAN的管理和維護(hù),使得VTEP之間的信息可以通過Controller來進(jìn)行反射 。這樣, VTEP的MAC地址表映射關(guān)系不再通過組播向全網(wǎng)其他VTEP傳達(dá),而是統(tǒng)一上報給控制器,由控制器統(tǒng)一下發(fā)給需要接受此消息的其他VTEP, 由具體的VTEP執(zhí)行轉(zhuǎn)發(fā)機(jī)制。
在SDN架構(gòu)下,硬件形態(tài)的VTEP需要能夠支持集中控制器下發(fā)的業(yè)務(wù)控制信息,同時基于Openflow進(jìn)行流表轉(zhuǎn)發(fā)。而傳統(tǒng)硬件交換機(jī)不能支持上述特性,必須由新硬件設(shè)備來執(zhí)行和完成的。
3.3 VXLAN網(wǎng)絡(luò)互通
在傳統(tǒng)L2網(wǎng)絡(luò)中,報文跨VLAN轉(zhuǎn)發(fā),需要借助三層設(shè)備來完成不同VLAN之間的互通問題。VXLAN網(wǎng)絡(luò)與傳統(tǒng)網(wǎng)絡(luò)、以及VXLAN網(wǎng)絡(luò)的互通,必須有網(wǎng)絡(luò)設(shè)備的支持。
VXLAN網(wǎng)絡(luò)框架中定義了兩種網(wǎng)關(guān)單元。
VXLAN三層網(wǎng)關(guān)。用于終結(jié)VXLAN網(wǎng)絡(luò),將VXLAN報文轉(zhuǎn)換成傳統(tǒng)三層報文送至IP網(wǎng)絡(luò),適用于VXLAN網(wǎng)絡(luò)內(nèi)服務(wù)器與遠(yuǎn)端終端之間的三層互訪 ;同時也用作不同VXLAN網(wǎng)絡(luò)互通 (可理解為不同VPC) 。當(dāng)服務(wù)器訪問外部網(wǎng)絡(luò)時,VXLAN三層網(wǎng)關(guān)剝離對應(yīng)VXLAN報文封裝,送入IP網(wǎng)絡(luò);當(dāng)外部終端訪問VXLAN內(nèi)的服務(wù)器時,VXLAN根據(jù)目的IP地址確定所屬VXLAN及所屬的VTEP,加上對應(yīng)的VXLAN報文頭封裝進(jìn)入VXLAN網(wǎng)絡(luò)。VXLAN之間的互訪流量與此類似,VXLAN網(wǎng)關(guān)剝離VXLAN報文頭,并基于目的IP地址確定所屬VXLAN及所屬的VTEP,重新封裝后送入另外的VXLAN網(wǎng)絡(luò)。
VXLAN二層網(wǎng)關(guān)。用于終結(jié)VXLAN網(wǎng)絡(luò),將VXLAN報文轉(zhuǎn)換成對應(yīng)的傳統(tǒng)二層網(wǎng)絡(luò)送到傳統(tǒng)以太網(wǎng)絡(luò),適用于VXLAN網(wǎng)絡(luò)內(nèi)服務(wù)器與遠(yuǎn)端終端或遠(yuǎn)端服務(wù)器的二層互聯(lián)。如在不同網(wǎng)絡(luò)中做虛擬機(jī)遷移時,當(dāng)業(yè)務(wù)需要傳統(tǒng)網(wǎng)絡(luò)中服務(wù)器與VXLAN網(wǎng)絡(luò)中服務(wù)器在同一個二層中,此時需要使用VXLAN二層網(wǎng)關(guān)打通VXLAN網(wǎng)絡(luò)和二層網(wǎng)絡(luò)。如圖7所示,VXLAN 10網(wǎng)絡(luò)中的服務(wù)器要和IP網(wǎng)絡(luò)中VLAN100的業(yè)務(wù)二層互通,此時就需要通過VXLAN的二層網(wǎng)關(guān)進(jìn)行互聯(lián)。VXLAN10的報文進(jìn)入IP網(wǎng)絡(luò)的流量,剝掉VXLAN的報文頭,根據(jù)VXLAN的標(biāo)簽查詢對應(yīng)的VLAN網(wǎng)絡(luò)(此處對應(yīng)的是VLAN100),并據(jù)此在二層報文中加入VLAN的802.1Q報文送入IP網(wǎng)絡(luò);相反VLAN100的業(yè)務(wù)流量進(jìn)入VXLAN也需要根據(jù)VLAN獲知對應(yīng)的VXLAN網(wǎng)絡(luò)編號,根據(jù)目的MAC獲知遠(yuǎn)端VTEP的IP地址,基于以上信息進(jìn)行VXLAN封裝后送入對應(yīng)的VXLAN網(wǎng)絡(luò)。
可見,無論是二層還是三層網(wǎng)關(guān),均涉及到查表轉(zhuǎn)發(fā)、VXLAN報文的解封裝和封裝操作。從轉(zhuǎn)發(fā)效率和執(zhí)行性能來看,都只能在物理網(wǎng)絡(luò)設(shè)備上實(shí)現(xiàn),并且傳統(tǒng)設(shè)備無法支持,必須通過新的硬件形式來實(shí)現(xiàn)。
四.兩層網(wǎng)絡(luò),三層網(wǎng)絡(luò)詳細(xì)區(qū)別
二層網(wǎng)絡(luò)僅僅通過MAC尋址即可實(shí)現(xiàn)通訊,但僅僅是同一個沖突域內(nèi);
三層網(wǎng)絡(luò)則需要通過IP路由實(shí)現(xiàn)跨網(wǎng)段的通訊,可以跨多個沖突域。
首先看L2鏈路層,這一層以幀(Frame)為單位組織物理信號,每個幀都需要有一個源地址和目的地址,絕大多數(shù)情況下使用的都是網(wǎng)卡MAC地址。
而交換機(jī)則具有MAC地址學(xué)習(xí)功能,能夠向各個端口準(zhǔn)確投放數(shù)據(jù)幀,這樣就大大提高了數(shù)據(jù)傳輸效率。對于L2層,交換機(jī)只能轉(zhuǎn)發(fā)一個子網(wǎng)內(nèi)的數(shù)據(jù)幀 (子網(wǎng)是通過IP地址劃分的),如果要將一個數(shù)據(jù)幀跨網(wǎng)轉(zhuǎn)發(fā),則需要借助于L3層的路徑規(guī)劃功能 ,這個一會再說。
現(xiàn)在假設(shè)有如下網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),ABCD四臺主機(jī)屬于10.0.0.0子網(wǎng),網(wǎng)關(guān)都指向路由器的10.0.0.1端口,EFGH屬于10.0.1.0子網(wǎng),網(wǎng)關(guān)指向路由器的10.0.1.1端口。
先看同一子網(wǎng)內(nèi)的通信的情況(A向C發(fā)送數(shù)據(jù),這種情況下都是通過IP地址指定的),假如所有的主機(jī)、交換機(jī)和路由器都剛剛加電,內(nèi)部沒有緩存任何MAC映射表和路由表。A在發(fā)送之前,發(fā)現(xiàn)C和A在同一個子網(wǎng)內(nèi),于是A試圖先在物理子網(wǎng)內(nèi)找一下C, 但是在同一物理子網(wǎng)內(nèi)是通過硬件MAC地址來尋址的,而A此時并不知道C的MAC地址,于是A通過ARP廣播來試圖獲取 ,發(fā)出的廣播包包括如下類似內(nèi)容:(注:廣播時用的MAC地址是ff:ff:ff:ff:ff:ff)
下面再來看跨物理網(wǎng)絡(luò)通信的情況(A向E發(fā)送數(shù)據(jù)),同樣假設(shè)設(shè)備都剛剛加電,緩存為空。A發(fā)現(xiàn)E的IP也是同一網(wǎng)段的,于是又開始廣播,但是這次BCD都沒有回應(yīng)。我們此時把視線轉(zhuǎn)到路由器1上,當(dāng)路由器1收到這個ARP廣播包后,為了避免廣播風(fēng)暴的產(chǎn)生,路由器1不會繼續(xù)廣播這個ARP包,但是路由器1會把自己的MAC告訴A,回發(fā)如下類似格式的內(nèi)容:
A在等待超時后,發(fā)現(xiàn)當(dāng)前物理子網(wǎng)內(nèi)找不到E,但是A已經(jīng)知道了網(wǎng)關(guān)路由器的MAC地址,于是便會將發(fā)給E的數(shù)據(jù)包扔給網(wǎng)關(guān)(也就是路由器1的1口),路由器1收到這個包后,發(fā)現(xiàn)E的IP在自己內(nèi)部也沒有緩存,于是路由器1也開始了尋找E的過程。相比交換機(jī)的子網(wǎng)內(nèi)“廣播找人”,路由器的選路范圍更大也更復(fù)雜,很多情況下是整個Internet,并且要夸多個運(yùn)營商,所以在L3層面路由器的路徑計算協(xié)議較多 ,包括:RIP、OSPF、IS-IS、BGP、IGRP等協(xié)議。路由器之間計算路徑時,任何一臺路由器都是無法窺探整個網(wǎng)絡(luò)的,因此每臺路由器都只是通過選路算法找到下一跳的最優(yōu)路徑,這些最優(yōu)路徑連接起來便形成了一條完整的路徑。換句話說,路由器的轉(zhuǎn)發(fā)路徑不是一個路由器選擇出來的,而是一群路由器共同選擇出來的下一跳地址序列。具體的路由選路無法一一講解,大家感興趣可以自己調(diào)查一下,這里假設(shè)路由器1直接找到了路由器2。
我們繼續(xù)往下探索,當(dāng)路由器2接到尋找主機(jī)E的廣播包后,發(fā)現(xiàn)E位于自己的網(wǎng)絡(luò)中(當(dāng)然也提前需要一個廣播學(xué)習(xí)的過程才能知道),便向前一跳路由器(即路由器1)反饋?zhàn)约弘x主機(jī)E最近,最終經(jīng)過這樣一個“A→網(wǎng)關(guān)路由器→路由器間選路→找到主機(jī)E所在子網(wǎng)”的過程A終于可以與E進(jìn)行通信了,由于A和E之間經(jīng)歷了多個物理子網(wǎng),因此需要多次的L2轉(zhuǎn)發(fā)才能實(shí)現(xiàn)數(shù)據(jù)包的到達(dá),這個過程中L3層IP包外包幀的MAC地址會不斷變換。A→B→A這個過程中,數(shù)據(jù)幀和IP包的地址經(jīng)歷過程如下(假設(shè)A使用的是本機(jī)的88端口,B使用的是本機(jī)的99端口):
在這個過程中,數(shù)據(jù)包在路由器1和2的1<-->4口之間傳遞時,由于是在一個設(shè)備內(nèi)部,因此可以直接轉(zhuǎn)發(fā),而不用變換幀頭,從而提高轉(zhuǎn)發(fā)效率。如果A要與其它子網(wǎng)的FGH主機(jī)通信,過程基本是一樣的,只不過剛開始不會先在當(dāng)前子網(wǎng)內(nèi)“廣播找人”,而是直接將數(shù)據(jù)包投遞給出口網(wǎng)關(guān)。
本文旨在向大家展示L2交換機(jī)和L3路由器在轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)時的一個主要流程,希望能給大家?guī)韼椭?/p>