網絡層介紹
網絡層服務:網絡層為傳輸層提供主機到主機的通信服務
每一臺主機和路由器都運行網絡層協議
- 發送終端:將傳輸層報文段封裝到網絡層分組中,發送給邊緣路由器
- 路由器:將分組從輸入鏈路轉發到輸出鏈路
- 接收終端:從邊緣路由器接收分組,取出報文段交付給傳輸層
網絡層的功能
- 選路:確定去往目的路由器的路由
- 轉發:路由器根據選定的路由,將分組從輸入端口轉移到輸出端口
選路和轉發的關系
- 轉發表:記錄分組頭中某個字段與路由器輸出端口之間的映射關系
- 選路:計算轉發表
- 轉發:根據轉發表轉運分組
數據面和控制面
數據面(Data plane)
- 執行數據傳輸的功能屬于數據面
- 轉發是數據面功能,在路由器內部實施分組轉運
- 是路由器本地功能
控制面(Control plane)
- 控制數據傳輸的功能屬于數據面于控制面
- 選路是控制面功能,確定分組如何去往目的節點
- 是網絡范圍的功能
兩種控制面實現方法
- 傳統尋路算法:在路由器中實現
- 軟件定義網絡:在服務器中實現
網絡服務模型:
定義了分組在發送終端與接收終端之間的傳輸特性
可能的網絡服務:
- 保證交付
- 具有時延上界的保證交付
- 有序分組交付
- 保證最小帶寬
- 安全性
不同架構的網絡提供的網絡層服務可能不同
同一個網絡也可以提供不同的網絡層服務
路由器的組成
路由器的兩個主要功能:
- 選路:運行選路協議,計算轉發表
- 轉發:依據轉發表,從輸入鏈路到輸出鏈路轉發數據報
輸入端口功能
- 物理接口:負責連接到物理鏈路(例如,以太網端口、光纖端口等),通過物理媒體(如電纜、光纖)接收數據。
- 數據鏈路層處理:負責接收并處理從數據鏈路層(如以太網幀)接收到的數據包,檢查是否有差錯、解析MAC地址等。
- 接收緩存:當數據包進入路由器時,它們首先會存儲在輸入端口的緩存中,以待進一步處理。
交換結構
路由器中的互聯網絡,用于在輸入端口、輸出端口和選路處理器之間轉運分組
交換速率:通常是輸入/輸出鏈路速率的若干倍
三種類型的交換結構
通過內存交換
- 傳統計算機,在CPU的直接控制下完成交換
- 數據包拷貝到系統內存中進行交換
- 交換速率受限于內存帶寬:每個數據包穿過系統總線2次
通過總線交換
- 數據包通過一條共享總線,從輸入端口緩存轉移到輸出端口緩存
- 每個輸入和輸出端口通過一個接口硬件連接到總線上,每個端口被分配一個內部標簽
- 交換速率受限于總線帶寬
- 總線競爭
- 總線協議防止多個端口同時傳輸,比如,采用時分多路復用的方法
- 各個輸入端口在總線上輪流廣播分組,每個輸出端口根據分組攜帶的內部標簽接收發給本端口的分組
通過互聯網絡交換
- 交換結構控制器通過控制交叉點的開、閉,在輸入端口與輸出端口間建立內部專用電路
- 多對端口間可以并行傳輸
- 分阻塞型與非阻塞型,阻塞型互聯網絡會產生阻塞
輸出端口功能
- 物理接口:負責將數據通過物理鏈路發送到目標設備。
- 數據鏈路層處理:在數據包從路由器發送到目標時,處理數據鏈路層的相關操作(例如,封裝數據包、添加校驗和等)。
- 發送緩存:在將數據包發送到目標設備之前,輸出端口會將數據包存儲在緩存中,以確保數據順利傳輸。
網絡層處理:
- 組裝:若需要,將交換結構輸出的信元組裝成分組
- 排隊:若輸出端口來不及發送,分組在此排隊
- 調度:輸出端口每次選擇一個分組發送
鏈路層處理:執行鏈路層協議,封裝
物理層處理:將比特流轉換成物理信號
輸入端口排隊與丟包
當交換結構不能及時將輸入端口的分組轉移到輸出端口時,輸入端口處形成排隊
排隊帶來的問題:
- 隊頭阻塞: 隊頭分組阻塞其后分組的轉發
- 丟包:當輸入隊列溢出時,發生丟包
當交換結構速率至少為端口速率的n倍時(n為輸入端口數),可以消除輸入端口的排隊,但路由器成本提高了
輸出端口排隊與丟包
多個輸入端口同時向一個輸出端口發送時,在輸出端口形成排隊
當輸出隊列滿時,發生丟包
輸出端口排隊是不可避免的,設置多大的輸出隊列是一個問題:
- 增大輸出隊列:可以減少丟包的發生,但會增加內存消耗,并增大分組延遲,延遲太大的分組最終被重傳,浪費資源
- 輸出隊列并不是越長越好!
分組丟棄
分組丟棄策略:當隊列滿時丟棄哪個分組?
- 棄尾:丟棄到來的分組
- 按照優先級丟棄:低優先級分組
- 隨機丟棄:隨機選擇一個分組丟棄,如Ramdom Early Detection (RED)
隨機早期檢測(RED,Random Early Detection)
RED 是一種基于隊列長度的主動丟包策略,旨在避免擁塞的發生,并且在網絡負載增加時及時做出反應。
工作原理:
- 當隊列的長度超過某個預設的閾值時,RED 會開始以隨機的方式丟棄一些進入隊列的數據包,而不是等到隊列滿了才丟棄。
- RED 會根據隊列的當前長度和網絡的負載動態調整丟包的概率,隊列長度越長,丟包的概率就越高。
- 該策略通過在網絡出現擁塞之前丟棄一些包,來減少網絡的整體負載,從而避免網絡進入嚴重擁塞的狀態。