0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

圖解路由器處理報文過程

jf_HnAzBl9o ? 來源:華為運營商客戶服務(wù)中心 ? 2023-06-30 09:46 ? 次閱讀

只要有網(wǎng)絡(luò)的地方,你很難不看到路由器的身影,各種低、中、高端的,種類繁多,所具備的功能和內(nèi)部實現(xiàn)不完全一樣。

要知道,路由器不斷的在吞吐通信數(shù)據(jù),就像魚吐泡泡一樣,通信數(shù)據(jù)像是路由器的“食物”。

那么,路由器“吃”進去的數(shù)據(jù),上哪去了呢?

“魚兒”吃進去的“食物”,有的會被吸收了,進入血液,最終轉(zhuǎn)換成能量或變?yōu)樯眢w的一部分;沒被吸收的經(jīng)過腸道排泄到體外。

“魚兒”吞進去的大部分是水,這些水基本都吐出來了,并沒有被吸收。

同樣的,進入路由器的數(shù)據(jù),大部分從一個接口進去,從另一個接口出來,它們只是“過路”的業(yè)務(wù)報文,也有人稱之為“過路”報文。

有一小部分?jǐn)?shù)據(jù)被“吸收”了,被上送CPU處理,或者因為各種原因中途被丟棄。

今天,就和你分享一篇關(guān)于報文在路由器中的處理全過程,幫助你更好的了解路由器內(nèi)部的原理。

01在路由器中

報文度過了怎樣的一生?

這張圖,是路由器收到的業(yè)務(wù)報文和協(xié)議報文在轉(zhuǎn)發(fā)層面的處理流程。

7251152e-16d9-11ee-962d-dac502259ad0.jpg

這張圖,是路由器CPU發(fā)送的協(xié)議報文的在轉(zhuǎn)發(fā)層面的處理流程。

7261f36c-16d9-11ee-962d-dac502259ad0.jpg

是不是覺得上圖太復(fù)雜、概念太多,看不懂?

上述圖片只是給一個總的概念,以便下面更好的理解。

下面我們先從“交換”談起:

數(shù)據(jù)。是通過接口板接收和發(fā)送,通信線纜都要插接到接口板的接口上。

那么,把某一個接口來的數(shù)據(jù)包送到另一個接口發(fā)出去,這兩個接口需要連起來。

但實際上,數(shù)據(jù)包可能從任意接口進來,從任意接口出去,都這么點到點連接的話,則需要N*(N-1)/2根線互聯(lián),太多了。

72b185c6-16d9-11ee-962d-dac502259ad0.jpg

為了解決這種大量連接的問題,接口板和接口板之間需要通過交換網(wǎng)(Switch Fabric)板銜接起來,接口板只要通過若干連線跟交換網(wǎng)板連接,就能完成任意接口的互通。

72bc9b3c-16d9-11ee-962d-dac502259ad0.jpg

交換網(wǎng)屬于“三無”部件,即與設(shè)備配置無關(guān)、與協(xié)議無關(guān)、與數(shù)據(jù)包類型無關(guān)。交換網(wǎng)專注于在入接口和出接口之間建立連接,完成數(shù)據(jù)的交換。

01上行和下行

以交換網(wǎng)為中心,可將報文在路由器的行程一分為二,前半程稱為“上行”,下半程稱為“下行”。

72d2f116-16d9-11ee-962d-dac502259ad0.png

02尋址轉(zhuǎn)發(fā)

可能有人會問,報文從一個接口進來,經(jīng)過“交換”,從另一個接口出去,這個交換機也會做啊,何必用路由器?

是的,交換機也有交換功能。但是,在互聯(lián)網(wǎng)中,從一個節(jié)點到另一個節(jié)點,有許許多多的路徑。

路由器可以選擇通暢的最短的路徑,從而提高通信速度,減輕網(wǎng)絡(luò)負(fù)荷,節(jié)約網(wǎng)絡(luò)資源,這是交換機所不具備的能力。

為數(shù)據(jù)包選擇一條合適的(通常指最短的)傳輸路徑,然后從對應(yīng)的接口發(fā)送,這個過程就稱為“尋址轉(zhuǎn)發(fā)”。

路由器所在的網(wǎng)絡(luò)幾乎都是遵循TCP/IP體系的,路由器是工作在該體系的第三層,即網(wǎng)絡(luò)層。

72e23ff4-16d9-11ee-962d-dac502259ad0.jpg

所以,剛才提到的“尋址”的”址“是指根據(jù)數(shù)據(jù)包的網(wǎng)絡(luò)層地址——IP地址。為了尋址,路由器需要一張“地圖”,以目的IP地址為索引的“地圖”,也就是路由表。每個路由器中都有一張路由表。

03路由表長什么樣?

這張圖是一張實際的地鐵出口地圖。

實際的路由表跟上圖有些相似。

路由表的索引是目的IP地址/掩碼,每個表項中都有對應(yīng)的下一跳IP地址和出接口信息,如下圖。

72feafe0-16d9-11ee-962d-dac502259ad0.png

有了這張表,路由器接在收到數(shù)據(jù)包時就能做到心中有數(shù)了。

比如,收到一個目的地址為10.0.0.1的報文,路由器就可以查表得知需要將該報文發(fā)送到GE1/0/0這個接口。

04這個路由表怎么得來的?

一種辦法是手工制作,對路由器進行手工設(shè)置固定的路由。但是這種路由不能對網(wǎng)絡(luò)的改變作出反映,如果網(wǎng)絡(luò)拓?fù)渥兓?,需要人工去修改設(shè)置。

還有一種辦法,就是運行動態(tài)路由協(xié)議,讓路由器之間相互傳遞路由信息,利用收集到的路由信息進行計算,生成路由表,這樣就可以讓路由表實時跟進網(wǎng)絡(luò)拓?fù)涞淖兓?/p>

在實際應(yīng)用中,這兩個辦法都用上了,當(dāng)動態(tài)路由與靜態(tài)路由發(fā)生沖突時,以靜態(tài)路由為準(zhǔn)。

當(dāng)然,路由表還有一類路由,不是人工配置的,也不是路由協(xié)議的學(xué)習(xí),而是由鏈路層協(xié)議發(fā)現(xiàn)的,稱為直連路由。

05路由表放在哪?

有了路由表,接下來要考慮的是,路由表放哪合適呢?

前面說過,數(shù)據(jù)包是從某個接口進來,經(jīng)過交換網(wǎng),再從另一個接口出去。

那路由表能不能放交換網(wǎng)?答案肯定不行,因為交換網(wǎng)要完成整個設(shè)備所有報文的交換,為了讓交換網(wǎng)完成高速交換,不成為瓶頸,不能再讓交換網(wǎng)去運行路由協(xié)議、維護路由表、做尋址轉(zhuǎn)發(fā)。

那路由表能不能放下行接口板?

答案也是不行,交換網(wǎng)做交換的時候,就需要知道要送往哪塊目的單板,所以尋址轉(zhuǎn)發(fā)需要在上行完成。然而,如果把路由表放上行接口板,由于報文可能從任意接口板進來,那么所有的接口板都需要放一個路由表。其實,還有更好的辦法,就是將路由表放在一個公共的地方,比如主控板上,由主控板的CPU運行路由協(xié)議,計算路由,生成和維護路由表。

06轉(zhuǎn)發(fā)表與路由表

如果路由器采用的是“硬轉(zhuǎn)發(fā)”,業(yè)務(wù)報文不經(jīng)過主控板CPU處理,不能直接用主控板上的路由表,接口板上也需要有供尋址轉(zhuǎn)發(fā)的信息。

所以,主控板CPU生成路由表之后,還要將相關(guān)信息下發(fā)給各個接口板。

這些相關(guān)的信息就是轉(zhuǎn)發(fā)信息,存放在各個接口板的轉(zhuǎn)發(fā)信息表FIB(Forwarding Information Base)中。

各個接口板上的轉(zhuǎn)發(fā)信息都是相同的,因為它們具有相同的來源,都來自主控板。

實際上,現(xiàn)代高性能路由器在架構(gòu)上都是轉(zhuǎn)發(fā)和控制分離:

把轉(zhuǎn)發(fā)層面和控制層面分配在不同的組件,控制層面運行路由協(xié)議,維護路由表,并下發(fā)轉(zhuǎn)發(fā)表FIB到轉(zhuǎn)發(fā)層面,由轉(zhuǎn)發(fā)層面負(fù)責(zé)數(shù)據(jù)包轉(zhuǎn)發(fā)。

這樣做的最基本的好處就是不會相互影響。

如果流量很高導(dǎo)致轉(zhuǎn)發(fā)層面高負(fù)荷,但是其不會影響控制層面進行正常的路由學(xué)習(xí);相反的,如果控制層面對路由信息的處理比較繁忙,也不會影響轉(zhuǎn)發(fā)層面進行其高速的數(shù)據(jù)包轉(zhuǎn)發(fā)。

7348dd40-16d9-11ee-962d-dac502259ad0.png

細(xì)心的讀者會發(fā)現(xiàn),路由表和轉(zhuǎn)發(fā)表看起來差不多,都有目的IP地址/掩碼、下一跳、出接口這三個信息。

實際上,轉(zhuǎn)發(fā)表是根據(jù)路由表生成的。路由表中可能包含到達目的地址的多條路由,但是轉(zhuǎn)發(fā)表里面只取其中的最優(yōu)路由。

而且,路由表的下一跳是原始的下一跳,不一定是直接可達的,F(xiàn)IB是用于指導(dǎo)轉(zhuǎn)發(fā)的,它的下一跳必須是直接可達。根據(jù)“原始下一跳”找到“直接下一跳”的過程就稱為“路由迭代”。

路由器上電啟動之后,就會運行路由協(xié)議學(xué)習(xí)網(wǎng)絡(luò)拓?fù)洌陕酚杀?,如果接口板注冊成功,主控板就可以根?jù)路由表生成轉(zhuǎn)發(fā)表項并下發(fā)給接口板,這樣路由器就可以根據(jù)轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)數(shù)據(jù)包了。

執(zhí)行數(shù)據(jù)包轉(zhuǎn)發(fā)的部件是位于接口板上的一個被稱為包轉(zhuǎn)發(fā)引擎PFE(Packet Forwarding Engine)部件,通常是NP或ASIC芯片。

7358282c-16d9-11ee-962d-dac502259ad0.png

07找不到路怎么辦?

上述這種在轉(zhuǎn)發(fā)報文前,提前準(zhǔn)備好轉(zhuǎn)發(fā)表,待收到報文時再查表轉(zhuǎn)發(fā)的方式稱為“預(yù)路由”,“先鋪路,后通車”?,F(xiàn)在路由器都采用這種方式進行IP單播轉(zhuǎn)發(fā)。

在這種方式中,查表轉(zhuǎn)發(fā)時,如果沒有匹配上(如果有默認(rèn)路由,最終會匹配上默認(rèn)路由,默認(rèn)路由不存在“不匹配”的情況),意味著這臺路由器沒有到這個目的地址的路由(或者還沒有學(xué)習(xí)到這個路由),也就是找不到路,迷路了。

數(shù)據(jù)包迷路了怎么辦,原路返回?

想象下,如果迷路了就被原路返回給源端,那源端重發(fā)的還是同樣的目的地址,那這個報文還是會在同一個地方迷路,再原路返回,死循環(huán)了。

所以,數(shù)據(jù)包迷路了只能被丟棄。出于可維護方面的考慮,包轉(zhuǎn)發(fā)引擎PFE會記錄丟棄原因和統(tǒng)計丟棄的報文數(shù)。

08預(yù)路由與流觸發(fā)

剛才說到路由器都采用“先鋪路,后通車”的預(yù)路由方式。相對的,“先通車,后鋪路”的方式,被稱為“流觸發(fā)”。

流觸發(fā)方式中,設(shè)備收到報文,查轉(zhuǎn)發(fā)表,如果轉(zhuǎn)發(fā)表中不存在對應(yīng)的表項,就根據(jù)這個報文生成一個轉(zhuǎn)發(fā)表項。

這樣,該用戶流的下一個報文就可以命中轉(zhuǎn)發(fā)表進行轉(zhuǎn)發(fā)了。

目前,路由器和交換機在進行二層轉(zhuǎn)發(fā)時所使用的MAC表,就是采用MAC地址學(xué)習(xí)方式,類似于“流觸發(fā)”方式。

從安全性角度上,流觸發(fā)顯然容易造成流量攻擊,為攻擊者提供了一個合理合法的攻擊路徑。

攻擊者可以使用各種未知目的報文對系統(tǒng)進行遍歷掃描攻擊,形成對路由器的流量攻擊。

所以,在高端路由器上,除了有MAC學(xué)習(xí)方式機制外,為了預(yù)防流量攻擊,還提供了限制MAC地址學(xué)習(xí)的功能,即限制最多允許學(xué)習(xí)多少個MAC地址,并限制每次學(xué)習(xí)的時間間隔;

而且還允許去使能MAC地址學(xué)習(xí),允許人們像配置靜態(tài)路由一樣去手工配置MAC表項。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7449

    瀏覽量

    88466
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3684

    瀏覽量

    113318
  • Mac
    Mac
    +關(guān)注

    關(guān)注

    0

    文章

    1089

    瀏覽量

    51285
  • 報文
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    4010
收藏 人收藏

    評論

    相關(guān)推薦

    騰達路由器設(shè)置圖解

    主要給大家介紹下騰達路由器設(shè)置的過程,騰達路由器設(shè)置為圖解過程,便于大家理解和掌握。
    發(fā)表于 12-15 14:14 ?34.1w次閱讀
    騰達<b class='flag-5'>路由器</b>設(shè)置<b class='flag-5'>圖解</b>

    TC39x的can報文過濾規(guī)則怎么設(shè)置?

    TC39x的can報文過濾規(guī)則怎么設(shè)置
    發(fā)表于 02-19 06:12

    交換機和路由器

    報的轉(zhuǎn)發(fā),包括數(shù)據(jù)報的尋徑和傳送; 2.子網(wǎng)隔離,抑制廣播風(fēng)暴; 3.維護路由表,并與其他路由器交換路由信息,這是IP報文轉(zhuǎn)發(fā)的基礎(chǔ)。 4.IP數(shù)據(jù)報的差錯
    發(fā)表于 01-08 17:42

    路由器基礎(chǔ)知識問答(二)

    的時間內(nèi)收斂。但在大型網(wǎng)絡(luò)中,發(fā)現(xiàn)一個故障路由器的時延可能很大。知道毗鄰路由器可以加速收斂,因為路由器能夠更快地知道故障路由器,因為hello報文
    發(fā)表于 11-12 21:10

    解析路由器的工作原理

    。網(wǎng)絡(luò)中的每個路由器按照這一規(guī)則動態(tài)地更新它所保持的路由表,以便保持有效的路由信息。(3)路由器在轉(zhuǎn)發(fā)報文
    發(fā)表于 01-28 13:04

    圖解路由器,你究竟把數(shù)據(jù)怎么了?

    了。路由器由輸入接口、輸出接口、交換結(jié)構(gòu)、路由選擇處理器四個部分組成。執(zhí)行兩個最重要的基本功能:路由功能和交換(轉(zhuǎn)發(fā))功能。相應(yīng)的路由器內(nèi)部
    發(fā)表于 05-25 08:23

    路由器的種類

    。通常情況下,高端路由器是模塊化結(jié)構(gòu),低端路由器是非模塊化結(jié)構(gòu)的。3、按所處網(wǎng)絡(luò)位置劃分為“邊界路由器”和“中間節(jié)點路由器”。在廣域網(wǎng)范圍內(nèi)的路由器
    發(fā)表于 03-17 12:16

    路由器處理器

    路由器處理器              與計算機一樣,路由器也包含
    發(fā)表于 01-06 11:24 ?554次閱讀

    路由器,路由器原理,路由器協(xié)議,路由器算法

    路由器,路由器原理,路由器協(xié)議,路由器算法 路由器:連接因特網(wǎng)中各局域網(wǎng)、廣域網(wǎng)的設(shè)備,它會根據(jù)信道的情況自動選擇和設(shè)定路
    發(fā)表于 03-29 17:44 ?1365次閱讀

    無線路由器設(shè)置圖解

    無線路由器設(shè)置圖解,值得收藏!
    發(fā)表于 11-10 17:39 ?834次下載
    無線<b class='flag-5'>路由器</b>設(shè)置<b class='flag-5'>圖解</b>

    讓筆記本變身路由器釋放wifi的步驟圖解

    本文檔內(nèi)容介紹了基于讓筆記本變身路由器釋放wifi的步驟圖解。
    發(fā)表于 09-20 17:57 ?7次下載
    讓筆記本變身<b class='flag-5'>路由器</b>釋放wifi的步驟<b class='flag-5'>圖解</b>

    華碩路由器中繼設(shè)置圖解

    在對華碩路由器進行無線中繼設(shè)置之前,需要先弄清楚主路由器上的無線信號名、無線信號密碼,以及主路由器的LAN口IP地址信息。這些信息在華碩路由器中設(shè)置中繼的時候需要用到。
    發(fā)表于 01-04 14:49 ?7.6w次閱讀
    華碩<b class='flag-5'>路由器</b>中繼設(shè)置<b class='flag-5'>圖解</b>

    圖解無線路由器天線制作,Router Antenna DIY

    圖解無線路由器天線制作,Router Antenna DIY 關(guān)鍵字:圖解無線路由器天線制作 刻錄光盤盒用完了就沒什么用了,
    的頭像 發(fā)表于 09-20 18:31 ?3641次閱讀

    可重構(gòu)路由器報文轉(zhuǎn)發(fā)引擎設(shè)計與實現(xiàn)

    網(wǎng)絡(luò)處理功能的時空演化特性要求可重構(gòu)路由器報文轉(zhuǎn)發(fā)引擎除具有基本報文分組交換能力外,還應(yīng)具有可重構(gòu)能力。針對上述需求,構(gòu)建了面向可重構(gòu)路由器
    發(fā)表于 01-07 08:00 ?3次下載
    可重構(gòu)<b class='flag-5'>路由器</b><b class='flag-5'>報文</b>轉(zhuǎn)發(fā)引擎設(shè)計與實現(xiàn)

    路由器處理器有什么用

    路由器處理器的作用 路由器處理器路由器中最重要的部分之一,也是路由器的核心部分。它用來
    的頭像 發(fā)表于 08-27 17:08 ?1689次閱讀