現(xiàn)在三個路由器的路由表分別為下圖:
現(xiàn)在當(dāng)我們把IP地址都設(shè)置好之后,各個路由器的路由表就如上表所示,但一旦選擇使用距離適量的路由協(xié)議之后,每個路由器就定期將路由表自己的路由表復(fù)制給相鄰的路由器并且進行矢量累加!我們繼續(xù)來分析,每個路由器如何學(xué)得其他的路由條目,上表中的路由條目大家已經(jīng)發(fā)現(xiàn)了,都是每個路由器的直連路由,但很明顯這些路由信息還不完整,如route1就不知道如何到達10.10.30.0和10.10.40.0網(wǎng)段同理Router2也不知道如何到達10.10.10.0以及10.10.40.0,Router3也不知道如何到達10.10.10.10以及10.10.20.0,那么它們之間就需要利用DV算法來把路由表補充完整。比如說它們之間使用的就是RIP協(xié)議:
如果此時配置好了RIP協(xié)議,那么它們之間開始以廣播的方式開始發(fā)布路由更新,我們以中間的Router2開始分析,它會把自己的兩個直連路由分別發(fā)給Router1和Router3,Router1收到Router2發(fā)過來的20.0以及30.0的路由信息,然后再和自己的比較,發(fā)現(xiàn)原來自己已經(jīng)有一個到達20.0的路由了,并且距離為0,因為是直連的,所以你發(fā)過來的我就不用了,但是30.0我沒有,我就加到我的路由表中,并且距離應(yīng)該是1,因為不是直連的,中間要經(jīng)過一個路由器,對于Router3來說也是一樣的分析,30.0我有了,我就不要了,但是20.0我沒有,我就加到自己的路由表中,并且距離為1。同樣Router2也會收到Router1和Router3的更新路由表,只不過,它只會留下它以前沒有的10.10.10.0和10.10.40.0的信息。這樣經(jīng)過一輪之后,每個路由器的路由表就變成了下面:
然后戰(zhàn)爭沒有結(jié)束,愛情仍在繼續(xù),Router2仍然會將自己收到的更新內(nèi)容分別發(fā)給Router1以及Router3,那么Router1收到后10.10.10.0網(wǎng)段我已經(jīng)有了,并且是直連的,就不要了,但是10.10.40.0我沒有,我就加到我的路由表中并且原來的距離已經(jīng)是1了,那么我還要在原來的基礎(chǔ)上再加1,我也要再賺一個!嘻。。。。。那這個時間距離就變成了2,也就意味著如果到達10.10.40.0網(wǎng)段從我這兒出去還要再經(jīng)過兩個路由器。同理Router3也是一樣,會把10.10.10.0加到自己的路由表中,并且距離也是2。那么這個時候路由表又變了:
那么到了此時,它們之間的路由條目就已經(jīng)都一樣了,分別都是10.0;20.0;30.0;40.0術(shù)語就叫做收斂!在一個網(wǎng)絡(luò)中,如果網(wǎng)絡(luò)發(fā)生了變化,那么運行同一個路由協(xié)議的路由表必須全部收斂完成,網(wǎng)絡(luò)才可用,否則數(shù)據(jù)包是不能被路由的,所以收斂的速度也是路由協(xié)議中比較重要的一個元素!如果一個網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生了變化,收斂的速度快,那么網(wǎng)絡(luò)恢復(fù)可用性的速度就快,收斂的慢,那么網(wǎng)絡(luò)恢復(fù)可用性的速度就慢!
也就是說從網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化到網(wǎng)絡(luò)中所有的路由器都知道這個路由表變化的時間就是我們所說的收斂時間!所以這個收斂時間肯定是越小越好!注意一定要是所有的路由器的路由表都同步!
那么每個路由器經(jīng)過一系列的學(xué)習(xí)之后路由條目就一樣的了,但是不一樣的是什么呢,是距離,有的是0,有的是1,有的是2,這分別代表什么意思呢,其實大家已經(jīng)知道了,這就是咱們前面所介紹的metric值,度量值,也就是在同一個路由協(xié)議里評價一個路由條目好壞的一個標(biāo)準(zhǔn)!成本越小,數(shù)字就越小!我們?nèi)粘I钪幸彩遣徽撟鍪裁词露际浅杀驹降驮胶?,這里也是一樣,明白人不用細說!嘻。。。。。
大家通過剛才的分析過程也看到了路由表的更新過程是通過其他路由器一步一步實現(xiàn)。而且一旦網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生改變就要將改路由表的再次更新,這是肯定的,因為網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化了就意味著可能是網(wǎng)絡(luò)路徑發(fā)生改變了,可能有的路不通了,必須要更新大家的路由器,那么其中一個路由器收到更新后,要在下一個周期后再把這個更新傳給其他的路由器,直至每個路由器都更新完畢。因為是定期發(fā)送更新數(shù)據(jù)包,所以動態(tài)路由會占用一定的網(wǎng)絡(luò)帶寬。那么其他路由器收到這個更新后開始用它來更新自己的路由表。這里大家也可以看到,路由器不會自己去發(fā)現(xiàn)網(wǎng)絡(luò)發(fā)生變化,必須要由其他路由器來告訴它,它再來進行更新!這樣有什么問題嗎?有!就是容易產(chǎn)生路由環(huán)路的問題,這又是什么東西?大家一聽肯定就知道這不是一個好東西,就像我們以前所說的死循環(huán)呀,網(wǎng)絡(luò)環(huán)路呀差不多,都是一個意思,路由環(huán)路大體意思是說一個數(shù)據(jù)包想發(fā)給目標(biāo)主機,但因為產(chǎn)生了環(huán)路,就在幾個路由器之間游蕩,就是到不了目標(biāo)主機!那么在這里又是怎么回事?聽我慢慢道來:
我們還是從上面的那個圖開始分析:
現(xiàn)在路由已經(jīng)收斂成功,也就是說每個路由器的路由表都已經(jīng)同步了,開始正常工作了,但是這個時候Router3所連接的10.10.40.0斷開了,發(fā)生故障,不能通訊了!那么這個時候Router3的路由表應(yīng)該就如下所示了
也就是說10.10.40.0不可用了,也就意思著10.10.40.0不能通訊了,但是咱們講了動態(tài)路由有路由學(xué)習(xí)功能。當(dāng)了一個周期后,Router2會將自己的路由信息發(fā)給Router1以及Roter3,至于Router1的死活咱們就不管了,我們來分析一下Router3;Router3收到之后發(fā)現(xiàn)我到達10.10.40.0是不可用了,你可以到,那么我就把你的路由信息加到我的路由表中,這樣路由表就發(fā)現(xiàn)改變了,如表所示:
學(xué)習(xí)過來后還將距離改為2,為什么呀?因為Router2原來的距離是1,復(fù)制過來以后肯定要再加1!然后如果要真正發(fā)數(shù)據(jù)包給10.10.40.0時,就通過自己的S0口發(fā)出去了,發(fā)給誰了,發(fā)給Router2了,那Router2收到這個數(shù)據(jù)包后也查一下自己的路由表發(fā)現(xiàn)通過自己的S1口可以出去,大家通過看圖可以發(fā)現(xiàn),S1連接的是誰?是Router3,所以又交給了Router3,那么Router3再交給Router2……
那么這樣的話,就進行了死循環(huán),無限的循環(huán)下去,所以必須要有一個機制來解決這個問題。