毒性逆轉
情景描述: 例如路由器 R1使用RIP作爲路由協議, 預設每30秒發送一次路由表更新, 把其路由表向外廣播, 而R1的鄰接路由器R2, 正常每30秒會收到從A發送過來的更新。 設想若R1連接的其中一個網絡(假設網絡X)中斷, 網絡X會消失於R1中的路由表, 當路由器 R1下次發送更新時, 會不包括X在內, 而路由器 R2因爲沒有收到關於X的更新, 在一定時間內(RIP失效計時器的時間 invalid time爲180秒)會誤認爲網絡X還存在, 並向外告知X的存在, 直至經過180秒後, 路由器 R2才認爲網絡 X出現問題, 在這180秒內整個網絡處於一個不正確狀態, 除路由器外, 其他路由器都不清楚網絡 X的問題, 會形成很多傳輸錯誤的發生, 亦會因此引起路由環路的產生
毒性逆轉的作用:
利用毒性逆轉,可以清除對方路由表中的無用路由。
實現情況:
配置毒性逆轉後,R2在接收到從R1發來的路由10.0.0.0/8後,向R1發送一個這條路由不可達的消息(將該路由的開銷設置爲16),這樣R1就不會再利用從R2學到的路由10.0.0.0/8,因此就可以避免路由環路的產生。
現實情況:
缺省情況下不使能毒性逆轉。一般情況下,在華爲設備中均使能水平分割(除NBMA網絡外)而禁用毒性逆轉。
水平分割和毒性逆轉的差別:
水平分割和毒性逆轉都是爲了防止RIP中的路由環路而設計的,但是水平分割是不將收到路由條目再按“原路返回”來避免環路,而毒性逆轉遵循“壞消息比沒消息好”的原則,即將路由條目按“原路返回”,但是該路由條目被標記爲不可達(度量值爲16)。如果同時配置了毒性逆轉和水平分割,則只使用毒性逆轉功能。
RIP毒性逆轉觀察實驗
在不關閉水平分割的情況下,可以看到如下的debug信息
R3
R2
從s0/1收到的不可達的信息,又從s0/1發了回去
再看R1
從s0/0收到的不可達的信息,又從s0/0發了回去
這就是毒性逆轉!