不知道路由器工做原理?不要緊,來這看看!看不懂你捶我 | 原力計劃

做者 | 北海以北沒有小王php

頭圖 | CSDN付費下載自視覺中國算法

來源 | CSDN博客後端

路由器概述
緩存

首先咱們先大體瞭解一下路由器的大體結構以及工做方式。安全

路由器體系結構服務器

路由器體系結構以下圖:網絡

其中四個重要組成部分依次以下:架構

1. 接入端口dom

  • 將一條輸入的物理鏈路與路由器相鏈接的物理層功能分佈式

  • 須要與位於人鏈路遠端的數據鏈路層交互的數據鏈路層功能

  • 在輸入端口還要完成查找功能

2. 交換結構

  • 交換結構將路由器的輸入端口與輸出端口相鏈接

  • 這種交換結構徹底包含在路由器中,即它是一個網絡路由器中的網絡!

3. 輸出端口

  • 輸出端口存儲從交換結構接收的分組

  • 執行必要的鏈路層和物理層功能在輸入鏈路上傳輸這些分組

  • 當一條鏈路是雙向的(即承載兩個方向的流量)時,輸出端口一般是與該鏈路的輸入端口在同 一線路卡(一個包含一個或多個輸入端口的印刷電路,它與交換結構相連)上成對出現的 。

4. 路由選擇處理器

  • 執行路由選擇協議

  • 維護路由選擇表以及鏈接的鏈路狀態信息

  • 爲路由器計算轉發表

  • 執行網絡管理功能

什麼是路由器轉發平面?

  • 一臺路由器的輸人端口、輸出端口和交換結構共同實現了這種轉發功能,而且老是用硬件實現,將這種轉發功能總稱爲路由器轉發平面

  • 若是 N 個端口結合在一塊線路卡上(由於實踐中經常這樣作) .數據報處理流水線必須以 N 倍速率運行,這遠快過軟件實現的速率

  • 實現方式:轉發平面硬件既可以使用廠商向己的硬件設計來實現,也可以使用購買的商用硅芯片(例如英特爾和 Broadcom 公司所出售的)來實現 。

  • 當轉發平面以納秒時間尺度運行時,路由器的控制功能(即執行路由選擇協議、對上線或下線的鏈接鏈路進行響應) 在毫秒或秒時間尺度上運行 。

  • 這些路由器控制平面( router conLrol plane) 一般用軟件實現並在路由選擇處理器上執行(一般是一種傳統的 CPU) 。

輸入端口

輸入端口的詳細視圖:

輸入端口的功能:

  • 輸入端口的線路端接功能與鏈路層處理實現了用於各個輸入鏈路的物理層和鏈路層

  • 在這個地方,路由器使用轉發表來查找輸出端口.使獲得達的分組將能通過交換結構轉發到該輸出端口 。

轉發表的更新與使用

  • 轉發表是由路由選擇處理器計算和更新的,但轉發表的一份影子副本一般會被存放在每一個輸入端口。

  • 轉發表從路由選擇處理器通過獨立總線(例如一個 PCI總線)複製到線路卡

影子副本

  • 有了影子副本,轉發決策能在每一個輸入端口本地作出,無須調用中央路由選擇處理器,所以避免了集中式處理的瓶頸 。

快速查找算法

  • 在概念上查找表是簡單的,可是在實際應用中須要在很是短(例如幾納秒)的時間內完成查詢,所以除了硬件設計外還須要一些對大型轉發表使用的超出簡單線性搜索的技術(快速查找算法的綜述可以在[ Gupta 2001 , Ru臥 Sanchez 2011 ]中找到)

  • 同時也須要對內存訪問時間尤其關注

    • 嵌人式片上 DRAM

    • 更快的 SRAM (用做一種 DR燦4 緩存)內存

  • 三態內容可尋址存儲器 (Tenary Contenl Aclclress Memory 1 TCAM) 也常常被用於查找

輸出端口阻塞

  • 一旦分組通過查詢肯定了輸出端口就可以發送進入交換結構

  • 在一些設計中,若是來自其餘輸入端口的分組正在使用該交換結構,則該分組被阻塞,須要在輸入端口處排隊,等待調度

輸入端口的動做

  • 查找

  • 經過本身的影子副本肯定分組輸出端口

  • 最重要的功能

  • 出現物理層和鏈路層處理

  • 檢查分組的版本號、檢驗和以及壽命字段 ,而且重寫後兩個字段

  • 更新用於網絡管理的計數器(如接收到的 IP 數據報的數目) 。

"匹配加動做"的抽象

  • 注意到輸入端口查找IP地址而後發送該分組進人交換結構( 「動做」 )的步驟是一種更爲通常的"匹配加動做"抽象的特定狀況。

  • 這種抽象執行在許多網絡設備中。

    • 在鏈路層交換機中,除了發送幀進入交換結構去往輸出端口外,還要查找鏈路層目的地址,並採起幾個動做 。

    • 在防火牆中,肯部匹配給定準則(例如源/目的IP地址和運輸層端口號的某種組合)的入分組可能被阻止轉發,而防火牆是一種過濾所選擇的人分組的設備 。

    • 在網絡地址轉換 (NAT )中,一個運輸層端口號匹配某給定值的人分組,在轉發(動做)前其端口號將被重寫 。

交換結構

交換結構概述

  • 交換結構位於一臺路由器的核心部位 。

  • 正是經過這種交換結構,分組才能實際地從一個輸入端口交換(即轉發)到一個輸出端口中 。

  • 交換能夠用許多方式完成

三種交換技術

圖例

  • 經內存交換

    • 最簡單、最先的路由器是傳統的計算機,其間交換工做由CPU完成

    • 輸入與輸出端口的功能就像在傳統操做系統中的1/0 設備同樣 。

    • 內存從輸入端口接收分組並提取首部值,將其緩存到對應的輸出端口

    • 一次僅能執行一個內存讀寫因此一次只能轉發一個分組

    • 現代經由內存交換的路由器

      • 與早期路由器的一個主要差異是,目的地址的查找和將分組存儲(交換)進適當的內存存儲位置是由輸入線路卡來處理的 。

      • 在某些方面,經內存交換的路由器看起來很像共享內存的多處理機,用一個線路卡上的處理將分組交換(寫)進適當的輸出端口的內存

  • 經總線交換

    • 輸入端口經一根共享總線將分組直接傳送到輸出端口,不須要路由選擇處理器的干預 。

    • 交換方式

      • 讓輸入端口爲分組預先計劃一個交換機內部標籤(首部) ,指示本地輸出端口,使分組在總線上傳送和傳輸到輸出端口 。

      • 該分組能由全部輸出端口收到,但只有與該標籤匹配的端口才能保存該分組 。

      • 而後標籤在輸出端口被去除,由於其僅用於交換機內部來跨越總線

    • 在總線交換下,路由器中只能同時進行一個分組的轉發,由於每一個分組都會徹底佔用整個總線。

    • 但對於運行在小型局域網和企業網巾的路由器來講,經過總線交換一般是足夠的 。

  • 經互聯網絡交換

    • 經互聯網絡交換是爲了克服單一,共享式總線帶寬限制

    • 縱橫式交換機就是一種由 2N 條總線組成的互聯網絡,它鏈接 N 個輸入端口與 N 個輸出端口

    • 每條垂直的總線在交叉點與每條水平的總線交叉,交叉點經過交換結構控制器(其邏輯是交換結構自身的一部分)可以在任什麼時候候開啓和閉合 。

    • 當某分組到達端口 A ,須要轉發到端口 Y ,交換機控制器閉合總線 A 和 Y 交叉部位的交叉點,而後端口 A 在其總線上發送該分組,該分組僅由總線 Y 安排接收 。

    • 輸出端口不一樣的分組能夠同時轉發,但輸出端口相同的分組仍是須要等待

輸出端口

輸出端口處理取出存放在輸出端口內存巾的分組並將其發送到輸出鏈路上。

何處出現排隊

什麼是排隊?

  • 在輸入端口和輸出端口只要進入速度大於處理速度均可能出現排隊的狀況。

  • 排隊的位置和程度(或者在輸人端口排隊,或者在輸出端口排隊)將取決於流量負載、交換結構的相對速率和線路速率。

什麼是丟包?

當輸出端口出現排隊情況是,排隊的分組就會進入路由器的緩存空間,當緩存空間耗盡就會發生丟包

路由器緩存?

  • 該設置多少緩存空間?

    • 緩存數量 ( B ) 應當等於平均往返時延 (RTI ,好比說 250ms) 乘以鏈路的容量( C) 。

    • 所以,一條具備 250ms RTT 的 10Gbps 鏈路將須要的緩存量等於 B =RTT * C =2. 5Gb 。

  • 緩存滿了怎麼辦?

    • 若是沒有足夠的內存來緩存一我的分組,那麼必須作出決定:要麼丟棄到達的分組(一種稱爲棄尾 (drop- tail)的策略) ,要麼刪除一個或多個己排隊的分組來爲新到的分組騰出空間;

    • 這些統稱爲AQM主動隊列管理算法;

    • 隨機早期檢測。

      • 隨機旱期檢測 (Random Early Detection , RED) 算法是一種獲得最普遍研究和實現的 AQM 算法 。

      • 當平均隊列長度小於最小閾值min,新來的分組就被接納進隊列

      • 當平均隊列長度大於最大閾值max,新來的分組就會被標記或者丟棄

      • 當長度在最大與最小中間時,就會以某種機率進行接納或者接納

  • 分組調度程序

    • 輸出端口排隊的後果就是,在輸出端口上的一個分組調度程序 (packet scheduler) 必須在這些排隊的分組中選出一個來發送

    • 最簡單的原則:先來先服務

    • 更復雜的原則:加權公平排隊(WFQ)

路由選擇控制平面

  • 前面咱們已經隱含地假設路由選擇控制平面所有駐留並運行在路由器中的路由選擇處理器上 。

  • 網絡範圍的路由選擇控制平面所以是分佈式的,即不一樣部分(例如路由選擇算法)執行在不一樣的路由器上而且經過彼此發送控制報文進行交互 。

  • 新型路由器控制平面體系結構其中數據平面連同部分控制平面(例如,鏈路狀態的本地測量/報告,轉發表的安裝和維護)在路由器中實現,部分控制平面可以在路由器外部實現(例如,在可以執行路由計算的集中式服務器中實現) 。

  • 一個定義良好的 API 規定了這兩個部分彼此交互和通訊的方式 。

  • 這些研究人員爭辯說將軟件控制平面與硬件數據平面(具備最少的路由器駐留控制平面)分離,可以以集中式路由選擇計算代替分佈式路由選擇計算,從而簡化路由選擇,經過容許不一樣的用戶定製的控制平面在快速的硬件數據平面上運行,可以進行網絡創新.

版權聲明:本文爲CSDN博主「北海以北沒有小王」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連接及本聲明。

原文連接:https://blog.csdn.net/weixin_45761327/article/details/106087563

推薦閱讀

真香,朕在看了!