【計算計網絡】路由器工作原理


路由器工作原理

  前面說過網絡層的轉發功能(forwarding function),就是將分組從一台路由器的入鏈路傳輸到出鏈路。其中是根據編址和最長前綴匹配來進行具體操作。


  下圖是通用路由器體系結構的視圖。並標識了路由器的四個組成部分:輸入端口、輸出端口、交換結構、路由選擇處理器。

    


  • 輸入端口
    輸入端口會執行幾項關鍵功能。上圖顯示了輸入端口的三個方框,代表輸入端口的三個重要功能。下面從左到右描述。

    第一個方框所表示功能的是,將一條輸入的物理鏈路與路由器相連接。

    中間方框所表示的功能是,對數據鏈路層的數據進行處理。

    第三個方框所表示的功能是,查找數據分組要轉發的輸出端口。

  • 交換結構
    將路由器的輸入端口和輸出端口相連接。這種交換結構完全被包含在路由器中,是一個路由器中的網絡。

  • 輸出端口
    存儲從交換結構接收到的分組,並通過執行必要的物理層和數據鏈路層功能在輸入鏈路上傳輸這些分組。當一條鏈路是雙向的時,輸入端口和輸出端口常在同一線路卡上成對出現。

  • 路由選擇處理器
    執行路由選擇協議維護路由選擇表以及連接的鏈路狀態信息,並為路由器計算轉發表。也可以執行網絡管理功能。

路由器的功能

  下面我們較深入地介紹下路由器的具體功能。這里,假定一個數據報網絡中的轉發決定是基於分組的目的地址。

輸入端口

    

上圖是輸入端口較為詳細的處理視圖。

在輸入端口處,路由器使用轉發表查找輸出端口,使到達的分組能夠通過轉發結構到該輸出端口。

轉發表是由路由選擇處理器計算和更新的,轉發表的一份副本會通過獨立總線(例如一個PCI接口)復制到線路卡,即放到每個輸入端口處。(總線由路由器總視圖的虛線所示)

有了副本后,轉發決策就可以在每個輸入端口做出,無需調用中央處理選擇器,也就避免可集中式處理的瓶頸!

如果轉發表已經存在,那我們需要關注快速查找的算法和對內存的訪問時間。

交換結構

交換結構位於一台路由器的核心部位。正是通過這種交換結構,分組才能實際地從一個輸入端口轉發到一個輸出端口。交換可以有多種方式,下面一一分講。

經內存交換

最簡單、最早的路由器是傳統的計算機,在輸入端口和輸出端口之間的交換是在CPU(路由選擇處理器)的直接控制下完成的直接控制下完成。
輸入與輸出端口的功能就像在傳統操作系統中的I/O設備一樣。一個分組到達輸入端口時,該端口會
先通過中斷方式向路由選擇處理器發出信號。於是,該分組從輸入端口處被復制到處理器內存中。
路由選擇處理器提取出其目的地址,然后在轉發表中查找適當的輸出端口,並將該分組復制到輸出端口的緩存中。
注意這里不能同時轉發兩個分組,因為共享系統總線一次僅能執行一個內存讀/寫.

經總線交換

在這種方法中,輸入端口經一根共享總線將分組直接傳送至輸出端口,不需要路由選擇處理器的干預。
按以下方式完成任務:
讓輸入端口為分組預先計划一個交換機內部標簽(首部),指示本地輸出端口,使該分組在總線上傳遞並傳至輸出端口。分組會被所有輸出端口所接收,但是只有標簽匹配的分組接收該分組,其余端口丟棄該分組。然后,內部標簽去去掉。
這里,一次只有一個分組跨越總線,故路由器的交換帶寬受總線速率的限制。

經互聯網絡交換

克服單一、共享式總線帶寬限制的一種方法是,使用一個更復雜的互聯網絡。

如上圖說示,是一個縱橫式的交換結構。圖中的交叉點被交換結構控制器所管理能夠在任何時候開啟或者關閉。

例如,若一個分組從A端口到達輸出到Y端口。那么A到Y上面的交叉點都會被閉合,然后分組通過這條總線到達Y。如果此時有分組到達B要輸出到X也是行的。但是,要注意,不同輸入端口的分組同時被輸出到同一輸出端口,是不行的!需要等待。

輸出端口

輸出端口處理取出存放在輸出端口內存中的分組並將其發送到輸出鏈路上。這包括選擇和取出排隊的分組進行傳輸,執行所需的鏈路層個物理層傳輸功能。下圖為輸出端口處理視圖。

      

何處出現排隊

通過對輸入端口和輸出端口的觀察,在這兒兩處都可能形成分組隊列。當然,排隊的位置和程度會取決於流量負載、交換結構的相對速率和線路速度。

一般來說在輸入端口會形成微不足道的隊列,分組會通過交換結構快速處理完畢(如果交換結構不能快速的處理的話在輸入端口會形成隊列,也可能形成線路前部阻塞(Head-Of-the-Line,HOL),多個輸入端口的分組發送到同一輸出端口,只有一個在分組在發送其余分組都要導致其余分組等待)。

在輸出端口會形成長隊列。如果眾多分組是到達同一輸出端口,那么排隊數量會增長的很快,可能導致輸出端口內容用盡,最終分組會被丟棄。

可以使用路由器緩存來吸收流量負載的波動

對緩存長度的經驗方法是:緩存數量B = 平均往返時延RTT * 鏈路容量C

這是基於流量較少的TCP流的排隊動態性分析得到。
當有大量TCP流(N)流過一條鏈路時:B = RTT * C/√N

分組調度程序選擇分組發送

輸出端口形成隊列后,就需要一個分組調度程序來選擇一個分組進行發送。這種選擇原則可以是簡單的先來先服務(FCFS)或者其他更復雜的調度原則,如加權公平排隊(WFQ)。

丟棄分組

如果沒有足夠多的緩存來接收分組,就必須要做決定,丟棄分組(已排隊的或者新到達的)騰出新的空間。

在某些情況下,在緩存填滿前丟棄(或者在分組首部加標記)一個分組,以便向發送方提供一個擁塞信號。這種丟棄分組和標記策略統稱為主動隊列管理(Active Queue Management,AQM)算法 。其中隨機早期檢測算法(Random Early Detection,RED)算法是一種得到廣泛研究和實現的AQM算法。

隨機早期檢測算法(Random Early Detection,RED)算法

在這個算法中,為輸出隊列長度維護着一個加權平均值。

  • 如果平均隊列長度小於最小閾值min,則當一個分組到達時,直接被納入隊列。

  • 如果平均隊列長度大於最大閾值max,則當一個分組到達時,該分組被標記或者被丟棄。

  • 如果平均隊列長度在[min,max],一個分組到達,該分組以某種概率被標記或丟棄,概率為平均隊列長度,min,max的某種函數。

概率/標記函數在各種版本的RED中已實現。


《計算機網絡自頂向下方法》學習筆記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM