深入講解RIP路由協議的慢收斂
RIP路由協議的使用,是我們接觸路由協議當中最為常見的。那么這個協議,也是眾多路由協議的根源。為了更好地掌握路由方面的知識,現在我們來遐想一個基于RIP路由協議的網絡拓撲。假若,R1直接與網絡1相連,所以在它的選路表中有一條到該網絡的距離為1的路由;在周期性的路由廣播中包括了這個路由.R2從R1處得知了這個路由,并在自己的選路表中建立了相應的路由產工將之以距離值2廣播出去.***R3從R2處得知該路由并以距離值3廣播.
現在假設R1到網絡1的連接失效了.那么R1立即更新它的選路表把該路由的距離置為16(無窮大).在下一次廣播時,R1應該通告這一信息.但是,除非協議包含了額外的機制預防此類情況,可能有其他的路由器在R1廣播之前就廣播了其路由.可能假設一個特殊的情況,即R2正好在R1與網絡1連接失效后通告其路由.因此,R1就會收到R2的報文,并對此使用通常的矢量距離算法:它注意到R2有到達網絡1的費用更低的路由,計算出現在到達網絡1需要3跳(R2通告的到網絡1費用是2跳,再加上到R2的1跳).然后在選路表中裝入新的通過R2到達網絡1的路由.這樣的話,R1和R2中的任一個收到去網絡1的數據報之后,就會把該報文在兩者之間來回傳輸直到壽命計時器超時溢出.
這兩個路由器隨后廣播的RIP路由協議不能迅速解決這個問題.在下一輪交換選路信息的過程中,R1通告它的選路表中的各個項目.而R2得知R1到網絡1的距離是3之后,計算出該路由新長度4.到第三輪的時候,R1收到從R2傳來的路由距離增加的信息,把自己的選路表中該路由的距離增到5.如此循環往復,直至距離值到達RIP的極限.
慢收斂問題的解決
可以使用分割范圍更新(split horizon update)技術來解決慢收斂問題.在使用分割范圍技術時,路由器記錄下收到各路由的接口,而當這路由器通告路由時,就不會把該路由再通過那個接口送回去.在該例中,路由器R2不會把它到網絡1的距離為2的路由再通告給R1,因此一旦R1與網絡1的連接失效,它就不會再通告該路由.經過幾輪選路更新之后,所有的機器都會知道網絡1是不可達的.但是分割范圍更新技術不能解決所有的拓撲結構中的問題.
考慮慢收斂問題的另一個方法是使用信息流的概念.如果路由器通告了到某網絡的短路由,所有接收路由器迅速地作出安裝該路由的反應.當路由器停止通告某路由,協議在判斷該路由不可達之前,要依據超時機制來工作.當超時出現時,路由器尋找替代路由并開始傳播此信息.不幸的是,路由器并不知道這個替代路由是否要依賴于剛剛消失的路由.因此,通常不應迅速地傳播否定的信息.有一條警句或謂一語破的:
好消息傳播得快,壞消息傳播得慢.
解決慢收斂問題的另一個技術使用了抑制(hold down)法.抑制法迫使參與協議工作的路由器,在收到關于某網絡不可達的信息后的一段固定時間內,忽略任何關于該網絡的路由信息.這段抑制時間的典型長度是60秒.該技術的思路是等待足夠的時間以便確信所有的機器都收到壞消息,并且不會錯誤地接受內容過時的報文.需要指出的是,所有參與RIP路由協議的機器都要遵循抑制策略,否則仍然會發生選路回路現象.抑制技術的缺點是:如果出現了選路回路,那么在抑制期間內這些選路回路仍然會維持下去.更嚴重的是,在抑制期間所有不正確的路由也保留下來了,即使是有替代路由的存在.
解決慢收斂問題的***一種技術就是毒性逆轉(poison reverse).當一條連接消失后,路由器在若干個更新周期內都有保留該路由,但是在廣播路由時則規定該路由的費用為無限長.為提高毒性逆轉法的效率,它應該與觸發更新(triggered updates)技術結合.觸發更新技術使得新信息,路由器減少了因為想信好消息而容易出錯的時間.
不幸的是,雖然觸發更新技術、毒性逆轉技術、抑制技術和分割范圍技術能夠解決一些問題,但它們又帶來了一些新的問題.例如,在許多路由器共享一個公共網絡的結構中采用觸發更新技術的情況下,一個廣播就能改變這些路由器的選路表,引發一輪新的廣播.如果第二輪廣播改變了路由表,它又會引起更多的廣播.這就產生了廣播雪崩.
使用廣播技術(這有可能產生選路回路)和使用抑制技術防止慢收斂問題,可使得RIP在廣域網上的工作效率極低.廣播要耗費大量寶貴的帶寬.即便不出現廣播雪崩現象,所有機器周期性地進行廣播也意味著網絡流量隨著路由器數目的增加而增加.而可能出現的選路回路在線路容量有限的情況下可能就是致命的問題.當兜圈子的分組使得線路的容量飽和后,路由器要交換一些選路報文來打破這種回路,就變得很困難甚至是不可能的.同樣,在廣域網中,抑制期間可能太長,使得高層協議使用的定時器超時從而中斷連接.盡管有這些熟知的問題,但還是有許多的組織在廣域網上使用RIP作為IGP.