為什麼dv逐漸讓位於ls?
dv 站的不高,看得不遠
完全相信鄰居
ls 想辦法站得高,看更遠
多高、多遠?
怎麼做?
鏈路狀態路由(link state)
主要思想
發現 它的鄰居節點們,了解它們的網路位址
設定 到它的每個鄰居的成本度量
構造 乙個分組,包含它所了解到的所有資訊
傳送 這個分組給所有其他的路由器
計算 到每個路由器的最短路徑
發現鄰居節點
當乙個路由器啟動的時候,在每個點到點的線路傳送乙個特
別的hello分組
設定鏈路成本
為了決定線路的開銷,路由器傳送乙個特別的 echo 分組,
另一端立刻回送乙個應答
通過測量往返時間(round-trip time) ,傳送路由器可以獲得
乙個合理的延遲估計值
為了得到更好的結果,可多次測量,取均值
一種常用的選擇
與鏈路頻寬成反比
構造鏈路狀態分組
鏈路狀態分組構造後被傳送給其他的路由器,分組中包含這些資訊:
1 傳送方的標識(id of the sender)
2 序列號(sequence number )
3 年齡(age )
4 鄰居列表(list of neighbors )
5 到鄰居的成本/量度(delay to each neighbor )
應該什麼時候構造分組?
周期性地構造和傳送,或者有特別的事件發生時
構造,比如某條線路或鄰居down掉了
發布鏈路狀態分組
基本演算法:
每個分組都包含乙個序列號,序列號隨著新分組產生而遞增
路由器記錄下他看見的所有 (源路由器,序列號)對
當乙個的新的分組到達時,路由器根據它的記錄:
如果該分組是新的,就被從除了來線路外的所有其他線路轉
發出去 ( flooding,泛洪)
如果是重複分組,即被丟棄(喜新厭舊)
如果該分組的序列號比對應的源路由器傳送的到過此地的分
組的最大序列號還小,則該分組被當作過時的資訊而被拒絕
基本演算法遇到的問題:
序列號迴轉,引起新老分組識別混淆
解決辦法:使用 32-bit 的序列號,即使每秒產生乙個分組,也
需要137年才發生號碼迴轉
如果一台路由器崩潰,那麼他將丟失自己的序列號記錄,如果他
再從0開始,新分組將被當作舊分組被拒絕
解決上述的路由器崩潰和序列號損壞的方法是:每個分組的
序列號之後是年齡(age) ,並且每秒鐘年齡減1
當年齡為零 ( zero )時,來自該路由器的資訊被丟棄
通常地,每隔一段時間,如10秒鐘,乙個新分組就會到來,
所以,只有路由器down機才可能導致超時( 或者,連續6個
間隔因為丟失,沒有收到新的分組)
一些改進讓基本演算法更加健壯:
當乙個鏈路狀態分組到達某個路由器時,它首先被放到乙個保留
區中等待一段時間
如果來自相同路由器的另乙個分組到達了,這兩個分組的序列號
會被比較:
如果相等,是重複分組,丟棄
如果不相等,舊的那個被丟棄
為了防止路由器到路由器的線路發生錯誤,所有的鏈路狀態分組
都要被確認
當一條線路空閒的時候,路由器掃瞄保留區,以便選擇乙個分組
或確認,並將其傳送出去
計算新的路由路徑
一旦乙個路由器獲得了全部的鏈路狀態分組就可以構造出全
網路圖來了(graph)
現在,可以使用最短路徑演算法來計算路由器之間的最短路徑
計算結果是一棵樹,會形成相應的路由,安裝在路由表中,
引導資料分組的**
鏈路狀態路由選擇的基本原理
發現鄰居
設定成本
構造lsa
分發lsa
計算
s5 14 鏈路狀態路由選擇
為什麼dv逐漸讓位於ls?dv 站的不高,看得不遠 完全相信鄰居 ls 想辦法站得高,看更遠 多高 多遠?怎麼做?鏈路狀態路由 link state 主要思想 發現 它的鄰居節點們,了解它們的網路位址 設定 到它的每個鄰居的成本度量 構造 乙個分組,包含它所了解到的所有資訊 傳送 這個分組給所有其他...
鏈路狀態路由選擇
鏈路狀態路由 link state 主要思想 發現 它的鄰居節點們,了解它們的網路位址 設定 到它的每個鄰居的成本度量 構造 乙個分組,包含它所了解到的所有資訊 傳送 這個分組給所有其他的路由器 計算 到每個路由器的最短路徑 1 發現鄰居節點 當乙個路由器啟動的時候,在每個點到點的線路傳送乙個特別的...
鏈路狀態路由協議
鏈路狀態路由協議則如同使用地圖一樣,有了地圖,您就可以看到所有潛在的路徑並確定自己的首選路徑。鏈路的狀態是指與該路由器直連網路的狀態,幷包含關於網路型別以及那些網路中與該路由器相鄰的所有路由器的資訊 因此得名鏈路狀態路由協議。鏈路狀態路由協議 鏈路狀態路由協議又稱為 最短路徑優先協議,它建基於 ed...