「聽說就拿出來講?」這是前一陣子筆者同事和世界某知名智慧型手機製造商洽談時,所聽到的用語。到底「聽說」來的資訊,是否可以拿出來講?這可能要看情況,以網路路由器來說,把聽說來的資訊(也就是可能不準確的資訊)拿出來與其他路由器設備分享,可能就會造成很大的問題,因為出現了「路由?圈」。
而在Hold-Down Timers時間內,當路由器B設備收到要送往10.4.0.0網段的網路封包時,路由器B設備還是會把這個網路封包送往10.4.0.0網段,因為此時路由器B設備對於10.4.0.0網段還是有信心的。
Triggered Updates
在之前的範例中,之所以會造成路由資訊不一致或是造成路由迴圈(Routing Loop)的情況,都是因為更新速度太慢所導致,因為唯一能收到由其他Router設備所傳過來的路由路徑更新資訊的時機,只有當其他設備的路由資訊定期更新動作啟動,才有辦法收到這些資訊,但是那樣總是慢了一步。這個時候,就需要最後一個解決方案,也就是Triggered Updates。
當Router設備的Routing Table產生更新時,就會啟動Triggered Updates,也就是立即將自己的Routing Table向鄰近的設備發出更新的動作,而收到更新的Router設備也會啟動它們的Triggered Updates,所以一旦網路有任何異常情況,就會在最快的時間內讓所有的Router設備知道。而剛剛Hold-Down Timers中提到,在Hold-Down Timers時間內可以允許更好的路由資訊來更新自己的Routing Table,所以更需要Triggered Updates來即時送出更新的路由資訊。
路由迴圈解決方案運作範例
以下用一個簡單的範例來說明如何結合剛剛提到的五種路由迴圈解決方案:Split Horizon、Route Poisoning、Poison Reverse、Hold-Down Timers以及Triggered Updates。先來看看圖11這個網路架構圖。
|
▲圖11 路由迴圈解決方案運作範例1。 |
假設現在有五台Router設備,分別為路由器A、B、C、D以及E,連接拓撲圖如圖11所示,而其中路由器B與路由器A之間的網路出現問題,於是路由器B設備會馬上發現這個問題,接著路由器B設備會做以下幾件事情,如圖12所示:
|
▲圖12 路由迴圈解決方案運作範例2。 |
- 1.在自己的Routing Table中,將這網段的資訊改成DOWN。
- 2.啟動Triggered Updates,將更新馬上傳送給其他設備。
- 3.使用Route Poisoning將這個網路失常的情況告知其他設備。
接下來,等到路由器C與路由器D兩台設備收到這個消息之後,會做以下的事情,如圖13所示:
|
▲圖13 路由迴圈解決方案運作範例3。 |
- 1.在Routing Table中將10.4.0.0網段標示為Possibly Down。
- 2.啟動Hold-Down Timers,以便等待有沒有更好的路由訊息。
- 3.啟動Triggered Updates,將更新馬上傳送給其他設備。
- 4.使用Route Poisoning將這個網路失常的情況告知其他設備。
- 5.發送Poison Reverse給來源端的路由設備。
接著,等到路由器E設備收到由路由器C或是路由器D設備所傳來的壞消息後,路由器E設備會做的事情如下:
- 1.在Routing Table中將10.4.0.0網段標示為Possibly Down。
- 2.啟動Hold-Down Timers,以便等待有沒有更好的路由訊息。
- 3.啟動Triggered Updates,將更新馬上傳送給其他設備。
- 4.使用Route Poisoning將這個網路失常的情況告知其他設備。
- 5.發送Poison Reverse給來源端的路由設備。
所以在這個時候,訊息傳遞的過程就會如圖14所示一般。
|
▲圖14 路由迴圈解決方案運作範例4。 |
這個時候,路由器C、D及E三台設備的Hold-Down Timers會持續進行,直到發生下列三種事情的其中一種為止:
- 1. 從其他Router設備收到更好的路由路徑資訊。
- 2. Hold-Down Timers時間已到。
- 3. 這筆路由資訊被移除。
假設Hold-Down Timers時間還沒有結束,這個時候如果路由器E設備收到一個要送往10.4.0.0網段的封包,路由器E設備會把這個封包轉送給路由器C或路由器D設備,因為這個時候路由器E設備中只是把10.4.0.0網段標示為Possibly Down而已。
路由器C或路由器D設備也會轉送給路由器B設備,而當路由器B設備收到這個要送往10.4.0.0網段的網路封包後,因為知道10.4.0.0網段是無法到達的,於是會把這個網路封包丟棄,並且發送「Network Unreachable」的ICMP網路封包給路由器C與路由器D設備。
結語
這篇文章介紹了最經典的Distance Vector路由演算法的運作過程,對於要赴考CCNA認證的朋友,筆者建議至少要記得Distance Vector路由演算法的特點、與其他種路由演算法的比較,以及哪些路由協定是屬於Distance Vector路由演算法,接下來還要記得Distance Vector路由演算法的設計會造成怎樣的問題,而又有哪些解決方法。希望這篇文章的範例說明,更能讓讀者了解整個運作過程。
<本文作者:胡凱智,目前在美商Mozilla擔任資深全球專案經理,曾於趨勢科技任職七年多,有兩年美國矽谷工作經驗,在美國專利局擁有軟體專利。讀者可在其部落格獲取更多網路知識及交流建議:http://tw.myblog.yahoo.com/kaichih-hu>