八.路由算法node
1. 路由與轉發算法
(1)路由算法(協議)肯定去往目的網絡的最佳路徑網絡
(2)轉發表肯定在本路由器如何轉發分組異步
2. 網絡抽象:圖分佈式
(1)應用:如P2P,N是peers集合,E是TCP鏈接集合學習
(2)費用spa
·c(x, x’) = 鏈路(x, x’)的費用3d
·每段鏈路的費用能夠老是1,或者是帶寬的倒數、擁塞程度等blog
·路徑費用:(x1, x2,..., xp) = c(x1, x2) + c(x2, x3) +...+c(xp-1, xp)路由
·關鍵問題:求源到目的的最小費用路徑(路由算法)
3. 路由算法分類
(1)靜態 vs 動態
·靜態路由:手工配置、路由更新慢、優先級高
·動態路由:路由更新快、按期更新、及時響應鏈路費用或網絡拓撲變化
(2)全局 vs 分散
·全局信息:全部路由器掌握完整的網絡拓撲和鏈路費用信息(如鏈路狀態路由算法)
·分散信息:路由器只掌握物理相連的鄰居及鏈路費用,在此基礎上進行鄰居間信息交換、迭代運算(如距離向量路由算法)
4. 鏈路狀態路由算法(LS):Dijkstra算法
(1)全部結點掌握網絡拓撲和鏈路費用:經過「鏈路狀態廣播」,全部結點擁有相同信息
(2)計算從一個結點到全部其餘結點的最短路徑:得到該結點的轉發表
(3)迭代:k次迭代後獲得到達k個目的結點的最短路徑
(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²)
- 更高效的實現爲O(nlogn)
·存在震盪的可能性:假設鏈路費用是該鏈路承載的通訊量
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的轉發表設置
·熱土豆路由:將分組發送給最近的網關路由器