路由器工做原理

路由器工做原理

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



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

    


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

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

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

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

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

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

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

路由器的功能

  下面咱們較深刻地介紹下路由器的具體功能。這裏,假定一個數據報網絡中的轉發決定是基於分組的目的地址。操作系統

輸入端口

    

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

在輸入端口處,路由器使用轉發表查找輸出端口,使到達的分組可以經過轉發結構到該輸出端口。
計算機網絡

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

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

若是轉發表已經存在,那咱們須要關注快速查找的算法和對內存的訪問時間。

交換結構

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

經內存交換

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

經總線交換

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

經互聯網絡交換

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

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

例如,若一個分組從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中已實現。


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

相關文章
相關標籤/搜索