路由器把數(shù)據(jù)怎樣了
一年一度的雙11網(wǎng)購盛典就要到了,不少商家推出了保價雙11的活動。作為剁手黨的我立刻開啟了買買買模式,一小波包裹已在途中。我每天都懷著迫切的心情刷幾遍物流信息,盼望著各快遞站點(diǎn)加速收發(fā),盡早將包裹送到我手中。其實,在支撐我們網(wǎng)購的Internet網(wǎng)絡(luò)中,也有收發(fā)數(shù)據(jù)包的快遞站點(diǎn)——路由器。
什么是路由器
路由器是連接兩個或多個網(wǎng)絡(luò)的硬件設(shè)備,工作在TCP/IP協(xié)議的網(wǎng)絡(luò)層,在網(wǎng)絡(luò)間扮演網(wǎng)關(guān)的角色。路由器的一個作用是連通Internet中各局域網(wǎng)、廣域網(wǎng),另一個作用是選擇數(shù)據(jù)包的最佳傳送線路。
想要深入了解路由器,要從路由器的內(nèi)部結(jié)構(gòu)講起了。
路由器由輸入接口、輸出接口、交換結(jié)構(gòu)、路由選擇處理器四個部分組成。執(zhí)行兩個最重要的基本功能:路由功能和交換(轉(zhuǎn)發(fā))功能。相應(yīng)的路由器內(nèi)部整體也分為路由選擇和分組轉(zhuǎn)發(fā)兩個部分。
路由選擇部分工作在控制層面,主要由軟件實現(xiàn)。核心組件是路由選擇處理器,通過運(yùn)行路由協(xié)議維護(hù)路由表以及連接的鏈路狀態(tài)信息,并生成轉(zhuǎn)發(fā)表。
分組轉(zhuǎn)發(fā)部分工作在數(shù)據(jù)層面,主要由硬件實現(xiàn)。核心組件是處理芯片和交換結(jié)構(gòu),交換結(jié)構(gòu)是一個路由器中的網(wǎng)絡(luò),將路由器的輸入接口和輸出接口相連接。依據(jù)轉(zhuǎn)發(fā)表來轉(zhuǎn)發(fā)分組數(shù)據(jù)包,將輸入接口的數(shù)據(jù)包移送至適當(dāng)?shù)妮敵鼋涌冢ㄔ诼酚善鲀?nèi)部進(jìn)行)。
路由表:可以是管理員手工配置的,也可以通過動態(tài)路由協(xié)議自動學(xué)習(xí)形成,通常由路由協(xié)議和路由管理模塊維護(hù),包括IP地址/IP子網(wǎng)、下一跳、路由優(yōu)先級、度量值等信息。
轉(zhuǎn)發(fā)表:是基于路由表生成的,路由?實際轉(zhuǎn)發(fā)時使用轉(zhuǎn)發(fā)表,包括IP地址/IP子網(wǎng)和下一跳/出接口信息。
路由器根據(jù)IP數(shù)據(jù)包的目的網(wǎng)段地址查找路由表決定轉(zhuǎn)發(fā)路徑,路由表記載著路由器所知的所有網(wǎng)段的路由信息。路由信息中包含要到達(dá)此目的網(wǎng)段需要將IP數(shù)據(jù)包轉(zhuǎn)發(fā)至哪一個下一跳相鄰設(shè)備地址。而轉(zhuǎn)發(fā)表記載著由哪個接口發(fā)出。
轉(zhuǎn)發(fā)表中每條轉(zhuǎn)發(fā)項都指明分組到某個網(wǎng)段或者某個主機(jī)應(yīng)該通過路由器的哪個物理接口發(fā)送,然后就可以到達(dá)該路徑的下一個路由器,或者不再經(jīng)過別的路由器而傳送到直接相連的網(wǎng)絡(luò)中的目的主機(jī)。
有了路由表和轉(zhuǎn)發(fā)表,就好比快遞站點(diǎn)根據(jù)包裹目的地查到了下一步要將包裹送到哪一個站點(diǎn),由誰來負(fù)責(zé)發(fā)出。這樣本站點(diǎn)的工作就可以順利完成了。
值得一提的是,路由表被存放在路由器的RAM上,這就意味著路由器如果要維護(hù)的路由信息較多時,必須有足夠的RAM,并且路由器重新啟動后原來的路由信息都會消失。
路由器如何傳送數(shù)據(jù)呢
數(shù)據(jù)包在網(wǎng)絡(luò)上的傳送就好像是快遞公司運(yùn)送包裹一樣,通過多個快遞站點(diǎn)的收發(fā)最終將包裹送到客戶手中。類似的,每一個路由器只負(fù)責(zé)本站數(shù)據(jù)包通過最佳路徑轉(zhuǎn)發(fā),通過多個路由器一站一站的收發(fā)將數(shù)據(jù)包通過最佳路徑轉(zhuǎn)發(fā)到目的地。
(如果實施路由策略,數(shù)據(jù)包不一定選擇最佳路徑)
每個路由器都有多個輸入接口和多個輸出接口,它的輸入接口收到數(shù)據(jù)包后去除數(shù)據(jù)鏈路層封裝,交給網(wǎng)絡(luò)層處理。網(wǎng)絡(luò)層首先檢查報文是否是送給本機(jī)的,如果是,去掉網(wǎng)絡(luò)層封裝,送給上層協(xié)議處理。如果不是,則根據(jù)報文的目的地址將報文交給相應(yīng)輸出接口的數(shù)據(jù)鏈路層,封裝接口對應(yīng)的鏈路層協(xié)議后,將報文發(fā)送給下一個路由器。下一個路由器也重復(fù)此動作,直至傳給路徑上最后的路由器,再由其將數(shù)據(jù)包送交目的主機(jī)。
怎樣實現(xiàn)數(shù)據(jù)包的最佳傳送呢
講到這里我們發(fā)現(xiàn),怎樣實現(xiàn)“最佳路徑”是個關(guān)鍵,別急,路由器是有自己的選路原則的??靵硪黄鹆私庀掳?。
我們先從了解IP數(shù)據(jù)包開始。IP數(shù)據(jù)包結(jié)構(gòu)如下:
IP數(shù)據(jù)包中的目的IP地址是IP數(shù)據(jù)包的重要字段,路由器會根據(jù)數(shù)據(jù)包中的目的IP地址查找路由表,決定數(shù)據(jù)包的轉(zhuǎn)發(fā)方向。
路由器在決定數(shù)據(jù)包轉(zhuǎn)發(fā)路徑的時候會依次按照三大規(guī)則來選擇路由,以確保實現(xiàn)“最佳路徑”。
01
最長匹配原則
最長匹配原則就是在路由查找時,使用路由表中到達(dá)同一目的地的子網(wǎng)掩碼最長的路由。如下所示,去往20.1.1.1的數(shù)據(jù)包在路由表中同時有3條路由可以為此數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),分別是20.0.0.0、20.1.0.0和20.1.1.0。由于它們依次匹配到了網(wǎng)段的前8位、16位、24位,根據(jù)最長匹配原則,去往20.1.1.1的數(shù)據(jù)包會用20.1.1.0的路由條目進(jìn)行轉(zhuǎn)發(fā),也就是從接口gei_0/1/0/3進(jìn)行轉(zhuǎn)發(fā)。
02
路由優(yōu)先級
一臺路由器上可以同時運(yùn)行多個路由協(xié)議。不同的路由協(xié)議都根據(jù)自己的標(biāo)準(zhǔn)來選擇路由,有的采用下一跳次數(shù)、有的采用帶寬,并且每個路由協(xié)議都把自己認(rèn)為是最好的路由送到路由表中。
這樣到達(dá)一個同樣的目的地址,可能由多條分別由不同路由協(xié)議學(xué)習(xí)來的路由,路由器必須選擇其中的一條路由加入到路由表中。由于這些路由的子網(wǎng)掩碼相同,最長匹配原則已無法用來挑選路由,路由器應(yīng)該如何做呢?這時該路由優(yōu)先級上場了。
路由器上的不同的路由協(xié)議默認(rèn)有自己的路由優(yōu)先級,數(shù)值小的優(yōu)先級高。當(dāng)我們有到達(dá)同一個目的地址的多條路由時,可以根據(jù)優(yōu)先級的大小,選擇優(yōu)先級數(shù)值最小的作為最優(yōu)路由,同時將這條路由寫進(jìn)路由表中。
在上圖中,一臺路由器上同時運(yùn)行兩個路由協(xié)議:RIP(優(yōu)先級120)和OSPF(優(yōu)先級110)。RIP與OSPF協(xié)議都發(fā)現(xiàn)并計算出了到達(dá)同一條網(wǎng)絡(luò)20.0.0.0/16的最佳路徑,但由于選路算法不同選擇了不同的路徑。由于OSPF具有比RIP高的路由優(yōu)先級(數(shù)值較?。月酚善鲗SPF學(xué)到的這條路由加入到路由表中。
03
Metric值
在路由器中,路由協(xié)議會學(xué)習(xí)到所有可能的路由,當(dāng)同一個路由協(xié)議學(xué)習(xí)到的路由不止一條時,路由優(yōu)先級就不管用了,路由器該如何處理呢?這時輪到Metric值出場了。路由協(xié)議根據(jù)選路算法賦予每一跳一個metric值,每條路由的metric值等于路徑上每一跳metric值的和。比較各條路由的metric值,選擇metric值最小的路由為最佳路由。
例如,R1到R4有三條路由:R1-R2-R4、R1-R4和R1-R3-R4,R1-R2-R4路由的metric值為20(10+10),其他兩條路由的metric值為30,路由器會優(yōu)先選擇R1-R2-R4作為最佳路由。
講完路由,我們再來談?wù)勣D(zhuǎn)發(fā)。傳統(tǒng)的IP轉(zhuǎn)發(fā)表已不能滿足電信骨干網(wǎng)的高速轉(zhuǎn)發(fā)需求,為了提升轉(zhuǎn)發(fā)效率,路由器采用MPLS技術(shù),在路由表的基礎(chǔ)上生成MPLS標(biāo)簽轉(zhuǎn)發(fā)表,MPLS為每個IP數(shù)據(jù)包提供一個標(biāo)簽,與IP數(shù)據(jù)包一起封裝到新的MPLS數(shù)據(jù)包,標(biāo)簽決定IP數(shù)據(jù)包的傳輸路徑以及優(yōu)先順序。通過MPLS標(biāo)簽轉(zhuǎn)發(fā)數(shù)據(jù),路由器只需讀取數(shù)據(jù)包中的MPLS標(biāo)簽,無需讀取每個IP數(shù)據(jù)包中的IP地址信息,因此數(shù)據(jù)包的轉(zhuǎn)發(fā)速度大大提升。
5G網(wǎng)絡(luò)正在如火如荼地建設(shè),網(wǎng)絡(luò)中的數(shù)據(jù)量也會越來越大。路由器將會與SR、SDN等技術(shù)結(jié)合,提供更為簡捷、高效的數(shù)據(jù)傳送。