下面我們就來一一講解各種解決方法的實現(xiàn)原理:
1.定義最大值:
距離矢量路由算法可以通過
ip頭中的生存時間(TTL)來糾錯,但路由環(huán)路問題可能首先要求無窮計數(shù)。為了避免這個延時問題,距離矢量協(xié)議定義了一個最大值,這個數(shù)字是指最大的度量值(如rip協(xié)議最大值為16),比如跳數(shù)。也就是說,路由更新信息可以向不可到達的網(wǎng)絡的路由中的路由器發(fā)送15次,一旦達到最大值16,就視為網(wǎng)絡不可到達,存在故障,將不再接受來自訪問該網(wǎng)絡的任何路由更新信息。
2.水平分割:
一種消除路由環(huán)路并加快網(wǎng)絡收斂的方法是通過叫做“水平分割”的技術實現(xiàn)的。其規(guī)則就是不向原始路由更新的方向再次發(fā)送路由更新信息(個人理解為單向更新,單向反饋)。比如有三臺路由器ABC,B向C學習到訪問網(wǎng)絡10.4.0.0的路徑以后,不再向C聲明自己可以通過C訪問10.4.0.0網(wǎng)絡的路徑信息,A向B學習到訪問10.4.0.0網(wǎng)絡路徑信息后,也不再向B聲明,而一旦網(wǎng)絡10.4.0.0發(fā)生故障無法訪問,C會向A和B發(fā)送該網(wǎng)絡不可達到的路由更新信息,但不會再學習A和B發(fā)送的能夠到達10.4.0.0的錯誤信息。
3.路由中毒(也稱為路由毒化):
定義最大值在一定程度上解決了路由環(huán)路問題,但并不徹底,可以看到,在達到最大值之前,路由環(huán)路還是存在的。為此,路由中毒就可以徹底解決這個問題。其原理是這樣的:假設有三臺路由器ABC,當網(wǎng)絡10.4.0.0出現(xiàn)故障無法訪問的時候,路由器C便向鄰居路由發(fā)送相關路由更新信息,并將其度量值標為無窮大,告訴它們網(wǎng)絡10.4.0.0不可到達,路由器B收到毒化消息后將該鏈路路由表項標記為無窮大,表示該路徑已經(jīng)失效,并向鄰居A路由器通告,依次毒化各個路由器,告訴鄰居10.4.0.0這個網(wǎng)絡已經(jīng)失效,不再接收更新信息,從而避免了路由環(huán)路。
4.反向中毒(也稱為毒化逆轉(zhuǎn)):結(jié)合上面的例子,當路由器B看到到達網(wǎng)絡10.4.0.0的度量值為無窮大的時候,就發(fā)送一個叫做毒化逆轉(zhuǎn)的更新信息給C路由器,說明10.4.0.0這個網(wǎng)絡不可達到,這是超越水平分割的一個特列,這樣保證所有的路由器都接受到了毒化的路由信息。
5.控制更新時間(即抑制計時器):抑制計時器用于阻止定期更新的消息在不恰當?shù)臅r間內(nèi)重置一個已經(jīng)壞掉的路由。抑制計時器告訴路由器把可能影響路由的任何改變暫時保持一段時間,抑制時間通常比更新信息發(fā)送到整個網(wǎng)絡的時間要長。當路由器從鄰居接收到以前能夠訪問的網(wǎng)絡現(xiàn)在不能訪問的更新后,就將該路由標記為不可訪問,并啟動一個抑制計時器,假如再次收到從鄰居發(fā)送來的更新信息,包含一個比原來路徑具有更好度量值的路由,就標記為可以訪問,并取消抑制計時器。假如在抑制計時器超時之前從不同鄰居收到的更新信息包含的度量值比以前的更差,更新將被忽略,這樣可以有更多的時間讓更新信息傳遍整個網(wǎng)絡。
6.觸發(fā)更新:正常情況下,路由器會定期將路由表發(fā)送給鄰居路由器。而觸發(fā)更新就是馬上發(fā)送路由更新信息,以響應某些變化。檢測到網(wǎng)絡故障的路由器會立即發(fā)送一個更新信息給鄰居路由器,并依次產(chǎn)生觸發(fā)更新通知它們的鄰居路由器,使整個網(wǎng)絡上的路由器在最短的時間內(nèi)收到更新信息,從而快速了解整個網(wǎng)絡的變化。但這樣也是有問題存在,有可能包含更新信息的數(shù)據(jù)包被某些網(wǎng)絡中的鏈路丟失或損壞,其他路由器沒能及時收到觸發(fā)更新,因此就產(chǎn)生了結(jié)合抑制的觸發(fā)更新,抑制規(guī)則要求一旦路由無效,在抑制時間內(nèi),到達同一目的地有同樣或更差度量值的路由將會被忽略,這樣觸發(fā)更新將有時間傳遍整個網(wǎng)絡,從而避免了已經(jīng)損壞的路由重新插入到已經(jīng)收到觸發(fā)更新的鄰居中,也就解決了路由環(huán)路的問題。
路由中毒:是指在路由信息在路由表中失效時,先將度量值變?yōu)闊o窮大,而不是馬上從路由表中刪掉這條路由信息。(這句話要理解,如RIP協(xié)議中,其度量值變?yōu)?6,意味著路由不可達)再將其信息發(fā)布出去,這樣相鄰的路由器就得知這條路由己無效了.....
毒性反轉(zhuǎn)與路由中毒概念是不一樣的,它是指收到路由中毒消息的路由器,不遵守水平分割原則將中毒消息轉(zhuǎn)發(fā)給所有的相鄰路由器,也包括發(fā)送中毒信息的源路由器,也就是通告相鄰路由器這條路由信息己失效了。。主要目的是達到快速收斂的目的。