【計算機網路】第四章 網路層(5)
八.路由演算法
1. 路由與轉發
(1)路由演算法(協議)確定去往目的網路的最佳路徑
(2)轉發表確定在本路由器如何轉發分組
2. 網路抽象:圖
(1)應用:如P2P,N是peers集合,E是TCP連線集合
(2)費用
·c(x, x’) = 鏈路(x, x’)的費用
·每段鏈路的費用可以總是1,或者是頻寬的倒數、擁塞程度等
·路徑費用:(x1, x2,..., xp) = c(x1, x2) + c(x2, x3) +...+c(xp-1, xp)
·關鍵問題:求源到目的的最小費用路徑(路由演算法)
3. 路由演算法分類
(1)靜態 vs
·靜態路由:手工配置、路由更新慢、優先順序高
·動態路由:路由更新快、定期更新、及時響應鏈路費用或網路拓撲變化
(2)全域性 vs 分散
·全域性資訊:所有路由器掌握完整的網路拓撲和鏈路費用資訊(如鏈路狀態路由演算法)
·分散資訊:路由器只掌握物理相連的鄰居及鏈路費用,在此基礎上進行鄰居間資訊交換、迭代運算(如距離向量路由演算法)
4. 鏈路狀態路由演算法(LS):Dijkstra演算法
(1)所有結點掌握網路拓撲和鏈路費用:通過“鏈路狀態廣播”,所有結點擁有相同資訊
(2)計算從一個結點到所有其他結點的最短路徑:獲得該結點的轉發表
(3)迭代:
(4)符號
·c(x, y)為結點x和y的鏈路費用,如果xy不相連則為正無窮
·D(v):從源到目的v的當前路徑費用值
·p(v):沿從源到目的v的當前路徑,v的前序結點
·N’:已經找到最小費用路徑的結點集合
(5)演算法描述:
(6)舉例:
·u的最終最短路徑樹
·u的最終轉發表
(7)討論
·演算法複雜性
- n個結點,每次迭代需要檢測所有不在集合N’中的結點w
- n(n+1)/2次比較,複雜度為O(n²)
- 更高效的實現為
·存在震盪的可能性:假設鏈路費用是該鏈路承載的通訊量
5. 距離向量路由演算法(DV):Bellman-Ford動態規劃方程
(1)令dx(y) := 從x到y最短路徑的費用(距離),則:
(2)舉例
(3)重點:結點獲得最短路徑的下一跳,該資訊用於轉發表中
(4)x維護向量(DV):Dx = [Dx(y): y ϵ N],Dx(y) = 從結點x到結點y的最小費用估計
(5)核心思想
·每個結點不定時地將其自身的DV估計傳送給其鄰居
·當x接收到鄰居的新DV估計時,即依據B-F更新其自身的距離向量估計:Dx(y) <- minv{c(x, v) + Dv(y)} for each node y ϵ N
·Dx(y)將最終收斂於實際的最小費用dx(y)
(6)特點
·非同步迭代:區域性鏈路費用改變和來自鄰居的DV更新引發區域性迭代
·分散式:每個結點的DV發生變化時才通告給鄰居
(7)演算法描述:每個結點迴圈等待 -> 重新計算 -> 通告
(8)舉例
(9)鏈路費用變化
(10)無窮計數問題
·毒性逆轉:如果一個結點z到達目的x的最小費用路徑通過某個鄰居,則通告給該鄰居結點到達目的的距離為無窮大
·定義最大度量:若有效費用值為15跳,那麼16跳錶示正無窮
6. 層次路由
(1)提出理由
·大規模網路抽象成圖,路由器計算的資訊交換量巨大,會淹沒鏈路
·每個網路的管理期望自治其網內路由
(2)什麼是層次路由
·聚合路由器為一個區域:自治系統AS
·同一AS內的路由器執行相同的路由協議(演算法):自治系統內部路由協議
·閘道器路由器:位於AS邊緣,通過鏈路連線其他AS閘道器路由器
(3)互連的AS:轉發表由AS內部路由演算法與AS間路由演算法共同配置
(4)自治系統間路由任務:假設AS1內某路由收到一個目的地址在AS1外的資料報
·學習到哪些目的網路可以通過AS2到達,哪些可以通過AS3到達
·將這些網路可達性資訊傳播給AS1內部路由器
·例:1d的轉發表設定
·熱土豆路由:將分組傳送給最近的閘道器路由器