以下內容摘自剛剛上市,已被納入全國高校教材系統,
並在全國熱銷、
好評如潮
的《深入理解計算機網路
》新書。
現代計算機網路通常使用動態路由演算法,因為這類演算法能夠適應網路的拓撲和流量變化,其中最流行的兩種動態路由演算法是「距離向量路由演算法」和「鏈路狀態路由演算法」。
距離向量路由演算法(distance vector routing
,dv)是
arpanet
網路上最早使用的路由演算法,也稱bellman-ford路由演算法和ford-fulkerson演算法,主要在
rip(
route information protocol
)協議中使用。
cisco
的igrp
和eigrp
路由協議也是採用
dv這種路由演算法的。
「距離向量路由演算法」的基本思想如下:每個路由器維護乙個距離向量(通常是以延時是作變數的)表,然後通過相鄰路由器之間的距離向量通告進行距離向量表的更新。每個距離向量表項包括兩部分:到達目的結點的最佳輸出線路,和到達目的結點所需時間或距離,通訊子網中的其它每個路由器在表中佔據乙個表項,並作為該表項的索引。每隔一段時間,路由器會向所有鄰居結點傳送它到每個目的結點的距離表,同時它也接收每個鄰居結點發來的距離表。這樣以此類推,經過一段時間後便可將網路中各路由器所獲得的距離向量資訊在各路由器上統一起來,這樣各路由器只需要檢視這個距離向量表就可以為不同**分組找到一條最佳的路由。
現假定用延時作為距離的度量,舉乙個簡單的例子,如圖
7-37
所示。假設某個時候路由器
y收到其鄰居路由器
x的距離向量,其中m是
y估計到達路由器
x的延時。若
y路由器知道它到鄰居
z的延時為
n,那麼它可以得知z通過
y到達x需要花費時間m+
n。如果
z路由器還有其他相鄰路由器,則對於從其他每個鄰居那兒收到的距離向量,該路由器執行同樣的計算,最後從中選擇費時最小的路由作為z去往
x的最佳路由,然後更新其路由表,並通告給其鄰居路由器。
圖7-37
距離向量路由演算法簡單例項
現以乙個如圖
7-38
所示的示例介紹距離向量演算法中的路由的確定流程,各段鏈路的延時均已在圖中標註。a、
b、c、
d、e代表五個路由器,假設路由表的傳遞方向為:
a → b → c → d → e
(這與路由器啟動的先後次序有關)。下面具體的流程。 (
1)初始狀態下,各路由器都只收集直接相連的鏈路的延時資訊,各路由器結點得出各自的初始向量表如圖
7-39
所示。因為各結點間還沒有交換路由資訊,所以它們的初始狀態的路由表也如它們的向量表。
圖7-38 距離向量演算法路由確定示例
圖7-39 初始狀態下各結點的向量表 (
2) 現在路由器
a把它的路由表發給路由器
b。此時它會綜合從
a路由器發來的路由表和它自己的初始路由表,更新為乙個新的向量表,如圖
7-40
左圖所示(最終的向量表如圖中深顏色部分)。從圖中可以看出,從
b結點到達
e結點此時存在兩條路徑,一條是直達的,一條是通過
a結點到達的。而且這兩條線的開銷不同,經過
a結點到達
e結點的開銷(
7)比直達線路的開銷(
8)更低,所以最終在形成的路由表中,把到達
e結點的線路改為經由
a結點這條線路,如圖
7-40
右圖所示。
圖7-40 b結點新的向量表和路由表 (
3)b再把最終形成的路由表發給路由器
c。同樣,路由器
c也要把它原來的初始路由表與從
b路由器發來的路由表進行綜合,形成新的向量表,如圖
7-41
左圖所示(最終的向量表如圖中深顏色部分)。在新的向量表中,除了最初的直接連線的b和
d結點間的向量外,還新收集了到達a和
e結點的向量資訊。因為
c結點沒有與a和
e結點的直接連線,在初始路由表中並沒有到達這兩個結點的路由資訊,所以現在只有採用從
b路由器發來的路由表中,經過
b結點到達a、
e結點的路徑。
這裡要注意一點,因為在
b結點路由表中就已識別了直接通過
b結點到達
e結點的開銷(
8)還比依次通過b、
a結點到達
e結點的開銷(
7)大,所以在
c結點路由表中是採用依次通過b、
a結點到達
e結點這條路徑。最終形成的路由表如圖
7-41
右圖所示。
圖7-41 c結點新的向量表和路由表 (
4)路由器
c再把它的最終路由表發給路由器
d。同樣,路由器
d也要把它原來的初始路由表與從
c路由器發來的路由表進行綜合,形成新的向量表,如圖
7-42
左圖所示(最終的向量表如圖中深顏色部分)。在新的向量表中,除了最初的直接連線的c和
e結點間的向量資訊外,還新收集了到達a和
b結點的向量資訊。因為
d結點沒有與a和
b結點的直接連線,所以在其最初的路由表中並沒有到達這兩個結點的向量資訊,此時仍採用經過
c結點到達a和
b結點的路徑。
在這裡同樣要注意一點,從
d結點到達
e結點也有兩條路徑:一是直接到達,二是依次通過c、
b、a結點到達,經過比較發現直接連線到達的開銷(
2)要比通過c、
b、a結點到達
e結點路徑的開銷(
10)要小,所以在
d結點中,到達
e結點是採用直接連線這條線路。最終形成的路由表如圖
7-42
右圖所示。 (
5)路由器
d再把它的最終路由表發給路由器
e。同樣,路由器
e也要把它原來的初始路由表與從
d路由器發來的路由表進行綜合,形成新的向量表,如圖
7-43
左圖所示(最終的向量表如圖中深顏色部分)。在新的向量表中,除了最初的直接連線的a、
b和d結點間的向量外,還新收集了到達
c結點的向量資訊,因為
e結點沒有與
c結點的直接連線。此時仍採用經過
d結點到達
c結點的路徑。
圖7-42 d結點新的向量表和路由表
在這裡有兩個要注意的地方:一是從
e結點到達
a結點的路徑問題,因為此時
e結點與
a結點是直接連線的,而且其開銷(
1)要比原來從
d路由口器發來的路由表中提供的通過d、
c、b結點到達
a結點路徑開銷(
11)要小,所以在最終的
e結點路由表中,到達
a結點是採用直接連線這條線路。二是
e結點雖然也是與
b結點直接連線,但它的開銷(
8)還要比原來從
d路由器發來的路由表中提供的依次經過d、
c這兩個結點到達
b結點的開銷(
5)大,所以在最終的
e結點路由表中,到達
b結點是採用依次經過d、
c兩個結點這條路徑。最終形成的路由表如圖
7-43
右圖所示。
圖7-43 e結點新的向量表和路由表
通過以上步驟,網路中各路由器就完整了整個路由表的確定,當然在拓撲結構發生變化時,各路由器的路由表又會發生變化,重新進行更新。
理解距離向量路由
1 常用的距離向量路由 ip rip igrp等等 2 距離向量演算法讓路由器向每個鄰居週期性的傳送完整的路由表,包括每個網路或者子網的資訊,相關的度量值等等 3 專業術語 術語 描述毒化路由 以前有效的路由,現在變成了無窮大的度量值。毒性反轉 以前因為水平分割不通告,但是現在以無窮大通告的路由 水...
距離向量演算法
距離向量路由演算法要求,每個結點都參與定期交換整個路由表,即把路由表傳遞給自己與之相連的結點。這裡以 rip 演算法 距離向量演算法的一種 為例。從相鄰的 x 路由器接收傳送過來的 rip routing information protocol 報文 對每個專案執行如下步驟 a.若原路由表沒有 r...
距離向量演算法
最近在學習計算機網路原理,覺得這個演算法很好玩,於是便決定來研究研究它。什麼叫距離向量演算法?路由表中最重要的資訊是 到每個網路的距離 即最短距離 以及應經過的下一跳位址。路由表更新的原則是找出到每個目的網路的最短距離。這種更新演算法就又稱為距離向量演算法。下面來具體解釋 對每乙個相鄰路由器傳送過來...