訊框中繼是一個相當重要的網路協定,在這篇文章之中將講解訊框中繼網路的專有名詞解釋、訊框中繼網路的網路架構,以及訊框中繼網路所可能造成的問題。
與之前的範例相同,所以圖6顯示出這三台Router設備目前的Routing Table資料情況。現在假設10.4.0.0的網路區段連線發生問題,如圖7所示:
|
▲圖7 10.4.0.0網段開始發生問題。 |
因為Router C設備與10.4.0.0的網路區段是直接連接的,所以Router C設備能夠在第一時間內先發現無法到達10.4.0.0網路區段,因此Router C設備會更新自己的Routing Table,標示10.4.0.0網段為無法到達,並不再發送任何網路封包透過E0介面前往10.4.0.0的網路區段。
但是,這個時候Router A和Router B兩台設備都還不知道10.4.0.0網段發生問題,所以還是相信10.4.0.0網段是可以到達的。接著,當Router B設備準備要發送它的定期對外更新資料的動作時,它會發送自己的Routing Table資料給Router C設備,如圖8所示。
|
▲圖8 Router C收到關於10.4.0.0的錯誤資料。 |
這個時候,因為Router C會從自己的S0介面收到由Router B設備所送過來的Routing Table資料,而此時資料內顯示10.4.0.0網段是可以到達的,所以Router C設備以為原來可以透過自己的S0介面出去,經過Router B設備可以到達10.4.0.0網段,而且必須經過兩台網路設備(直接把Router B設備的Routing Table中針對10.4.0.0網段的距離加一),於是Router C就會更新自己的Routing Table。此時, Routing Table內就已經有錯誤資料的狀況發生了,但更慘的還在後頭。
|
▲圖9 Router C把錯誤資料發送出去。 |
若此時,Router C設備也到了應該對其他設備做Routing Table同步的動作,如圖9所示,Router C設備會先發送自己的Routing Table給Router B設備。
此時與上面的情況類似,Router B設備會以為原來可以從自己的S1介面出去,透過Router C設備而到達10.4.0.0網段,所以Router B設備就會乖乖地更新自己的Routing Table,並記錄下來前往10.4.0.0網段的Hops Count為3。
同樣地,Router A設備也會更新10.4.0.0網段的Hops Count為4。這個時候,錯誤已經到了難以彌補的地步,因為現在所有的網路設備對於10.4.0.0網段的資訊全部都是錯誤的,事實上10.4.0.0網段根本就沒有辦法到達。
接著,Router A設備會一直傳送這樣的錯誤訊息給大家,所以各個Router設備對於10.4.0.0網段的Hops Count值可能會趨近於無限大(Count to infinity),這就是第二個可能造成的問題。
而且,若這個時候有任何封包是要送往10.4.0.0網段,那這個封包是根本不可能成功送到目的地,而是會在各個Router之間傳遞著,也就是Routing Loop問題。下面就來看看如何解決Count to infinity和Routing Loop問題。
Count to infinity解決方案
Count to infinity所指的就是,Router設備嘗試不斷地增加Hops Count,而其所要到達的網段根本就無法到達。這個問題的解決方案比較簡單,就是去定義一個Hops Count的最大值,RIP協定預設的最大值為16,所以當Hops Count增加到16之後,就不會再繼續增加。
這同時也代表,當發現Routing Table中有Hops Count到達16這樣的最大值,即表示這條路徑是無法到達的,因此也就不會繼續把這樣的資料分送給其他Router設備。
所以像剛剛之前範例,若套用這樣的解決方案,其各個Router設備的Routing Table就會變成圖10這個樣子。
|
▲圖10 Count to infinity解決方案。 |
Routing Loop解決方案
Routing Loop問題的詳細情況前面都已經提過了,而解決Routing Loop問題有很多種方法,包含Split Horizon、Route Poisoning、Poison Reverse、Hold-Down Timer以及Triggered Update。
而要注意的是,這五種解決方案是要一起使用的,並不是其中一種就可以完整地解決Routing Loop問題。不過由於篇幅有限,這裡將只介紹與訊框中繼網路有關的Split Horizon的解決方案。
Split Horizon
這個解決方案的精神就是,絕對不向這筆資訊的來源端發送與這筆資料相關的更新動作。這個方法可以有效避免Routing Loop問題,也能夠加速Routing Table的資料收斂過程。
所謂的收斂過程代表的是,當網路發生變化時,網路上各個網路設備的Routing Table從發生變化開始到真正把變化反應到Routing Table的過程,就叫做Routing Table的收斂過程。接著繼續使用上面所提到的範例做說明,如圖11所示。
|
▲圖11 Split Horizon解決方案。 |
以圖11的網路圖為例,對Router B設備而言,10.4.0.0網段可以從S1介面出去,透過Router C設備而到達,而這樣的訊息是Router C設備告訴Router B設備。
所以Router B設備才知道可以透過Router C設備而到達,所以往後根本沒有理由透過Router B設備來告訴Router C設備,Router B設備是可以到達10.4.0.0網段。因為,事實上,Router C設備應該比Router B設備還要了解10.4.0.0網段。
同樣的道理,Router B設備也不應該從S0介面發送有關10.1.0.0網段的更新資料給Router A設備,S0介面對Router B設備而言,就是這筆資料的來源端,除了這個來源端外,這筆資料可以從其他的介面和其他Router設備做更新的動作。