不知道路由器工作原理?没关系,来这看看!看不懂你捶我 | 原力计划
作者 |?北海以北沒有小王
頭圖 | CSDN付費下載自視覺中國
來源 | CSDN博客
路由器概述
首先我們先大致了解一下路由器的大致結構以及工作方式。
路由器體系結構
路由器體系結構如下圖:
其中四個重要組成部分依次如下:
1. 接入端口
將一條輸入的物理鏈路與路由器相連接的物理層功能
需要與位于人鏈路遠端的數據鏈路層交互的數據鏈路層功能
在輸入端口還要完成查找功能
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
推薦閱讀大數據Spark:利用電影觀看記錄數據,進行電影推薦| 原力計劃
我!程序猿!被銀行套路了!
數據科學產業中哪些架構最熱門?本文為你盤點了 5 款!
陸奇:疫情下的創業者,最不能缺這兩大能力
滴滴技術總監受賄 1000 萬,列入招聘黑名單,互聯網大廠反腐有多強?
用 Python 訓練自己的語音識別系統,這波操作穩了!
區塊鏈如何解決食品安全問題?
真香,朕在看了!
總結
以上是生活随笔為你收集整理的不知道路由器工作原理?没关系,来这看看!看不懂你捶我 | 原力计划的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三探云原生全景图,这次聊聊运行时层
- 下一篇: 出道50年+!乘风破浪的编程语言们,能二