rip協議有兩種更新機制:一是定期更新,二是觸發更新。「定期更新」是根據設定的更新計時器定期傳送
rip路由通告。該通告報文中攜帶了除「水平分割」機制抑制的
rip路由之外本地路由器中的所有
rip路由資訊。而「觸發更新」則是
rip路由器僅在有路由表項發生變化時傳送的
rip路由通告,僅攜帶本地路由表中有變化的路由資訊。
rip路由器一旦察覺到網路變化,就盡快甚至是立即傳送更新報文,而不等待更新週期結束。只要觸發更新的速度足夠快,就可以大大地防止「計數到無窮大」的發生,但是這一現象還是有可能發生的。
無論是定期更新,還是觸發更新,rip路由的更新規則如下:
l 如果更新的某路由表項在路由表中沒有,則直接在路由表中新增該路由表項;
l 如果路由表中已有相同目的網路的路由表項,且**埠相同,那麼無條件根據最新的路由資訊更新其路由表;
l 如果路由表中已有相同目的網路的路由表項,但**埠不同,則要比較它們的度量值,將度量值較小的乙個作為自己的路由表項;
l 如果路由表中已有相同目的網路的路由表項,且度量值相等,保留原來的路由表項。
下面主要介紹
rip路由的定期更新機制。
1.rip
路由定期更新機制
rip路由器總是會每隔
30秒(這是預設值,可以修改,而且也可能與設定值有些偏差)通過
udp 520
埠以rip
廣播應答方式向鄰居路由器傳送的乙個路由更新包,包中包括了本路由器上的完整的路由表(除了被「水平分割」機制抑制的路由表項),用來向鄰居路由器提供路由更新,同時用來向鄰居路由器證明自己的存在。
rip的路由表中主要包括「目的網路」、「下一跳位址」和「距離」這三個字段,參見圖
8-3。
如果乙個路由器在
180秒(這也是預設值,可以修改)內沒有收到某個鄰居路由器發來的路由更新,則這個路由器就會標記該鄰居路由器為不可達路由器,使這個鄰居路由器處於抑制週期。當路由器處於抑制週期內,它仍然用於向前**資料報,但網路中的其它路由器不學習到達該路由器所連網路的路由資訊,除非是一條更好的到達該路由器所連網路的路由資訊,如本來是
3跳,在抑制週期內學到了一條
2跳的路由資訊。但抑制週期過後,即使是差的路由資訊也接受。
如果在連續的
240秒(這也是預設值,可以修改)內還沒收到這個路由器的路由更新,則本地路由器會在路由表中刪除與該鄰居路由器相關的路由表項。
由此可見,這個路由更新不僅影響著整個
rip網路中的路由器上最由表的更新和所有需要到達,或者經過該路由器的資料報路由,還影響著其它鄰居路由器是否當它存在。試想一下,如果有乙個資料報是要傳送到連線某個某個
rip路由器的網路的一台主機上,但這台
rip路由器當時恰好出現了故障,沒有這個路由器更新機制的話,其它路由器也就不知道它當前出現了故障,仍按原來的路由路徑傳輸資料報,結果當然是資料報總是無法到達目的主機了,儘管可能經過多次嘗試。
2.rip
路由定期更新機制解析示例
為了更好地理解
rip協議路由表的更新機制,下面以圖
8-6所示的簡單的互連網路為例來討論圖中各個路由器中的路由表是怎樣建立的。
圖8-6 rip路由表建立網路示例 (
1)在一開始,所有路由器中的路由表只有自己所直接連線的網路的路由表項資訊。但不是
rip路由表項,是直連路由表項,無需下一跳(用「
--」表示),度量「距離」也均為
0 ,各路由器的初始路由表如圖
8-7所示,均只有兩條直連網路的路由表項。 (
2)接下來,各路由器就會按設定的週期(預設為
30秒)向鄰居路由器傳送路由更新了。具體哪個路由器會先傳送路由更新,取決於哪個路由器先開了。現假設路由器
r2先收到來自路由器r1和
r3的路由更新,然後就更新自己的路由表,如圖
8-8所示。從中可以看出,它新新增了分別通過r1和
r3到達
10.0.0
.0網路和
30.0.0.0
網路的路由表項,度量值均為
1,因為它只經過了一跳。
圖8-7 r1、r2和r3的初始路由表 (
3)r2更新自己的路由表後,會把完整的路由表發給鄰居路由器r1和
r3。路由器r1和
r3分別再進行更新。根據前面介紹的
rip路由表更新的規則可以知道,
r1首先是把從
r2上接收到的如果圖
8-8的路由表中,對每項度量進行加
1,得到的路由表如圖
8-9所示。
圖8-8 r2在路由更新後的路由表 圖8-9 r1對收到的來自r2路由表進行度量加1後形成的路由表 (
4)然後
r1再把圖
8-9所示的路由表與自己原來的路由表(圖
8-6中的左圖所示)進行比較,凡是新新增的,和度量值小於等於原來的路由表項均將更新,度量值更大的路由表項將忽略更新。經過行比較發現有兩條新的路由表項,其目的網路分別為
30.0.0.0
和40.0.0.0
,直接在路由表中新增。而原來已有的兩條
10.0.0.0和
20.0.0.0
表項,發現路由度量(「距離」)值
1比原來的
0還大,忽略更新,結果就得到
r1更新後的路由表,如圖
8-10
所示。
用同樣的方法可以得出
r3在收到
r2路由更新後的路由表如圖
8-11
所示。但
rip路由協議存在乙個問題,那就是網路收斂比較慢,當網路出現故障時,要經過比較長的時間才能將此資訊傳送到所有的路由器,而且中間有許多是無效路由更新。
圖8-10 r1在收到r2路由更新後的路由表 圖8-11 r3在收到r2路由更新後的路由表
仍以圖8-6為例,現在三個路由器都已經建立了各自的穩定路由表,假設
r1路由器和網1(
10.0.0
.0)的連線線路斷開了。此時
r1可以立即發現,並更新自己的路由表,將到
10.0.0.0
的路由表項距離改為
16(即不可達),並在
30秒後將此路由更新資訊發給
r2。但是,r2從
r3得到的路由更新是「經過
r2到達
10.0.0.0
網路的距離為
2」,明顯度量值更小,於是
r2將此路由表項更新為「經過
r3到達
10.0.0.0
的距離為
3」,然後再通過路由更新發給
r3,此時
r3的路由表中更新為「經過
r2到達
10.0.0.0
網路的距離為4」。
r3再通過路由更新發給
r2資訊,結果是「「經過
r3到達
10.0.0.0
網路的距離為
5」」,一直如此反覆,直到該路由表項的距離達到16,
r2和r3才知道
10.0.0.0
網路是不可達的。
為了解決這一不足,產生了水平分割技術,就是同一路由表項更新不再從接收該路由表項的介面傳送出去,具體將在本章後面介紹。下面再具體介紹rip路由的收斂機制。
茶鄉浪子
MFC選單命令更新機制
1 mfc當要顯示選單時,作業系統會發出wm initmenupopup訊息,然後由程式視窗的基類接管。此時會建立乙個ccmdui物件,並與程式的第乙個選單相互關聯,呼叫該物件的乙個成員函式doupdate 這個函式發出on update command ui訊息。這條訊息帶有乙個指向ccmdui物...
Oscache的強行更新機制
背景 在產品中也許不需要強行更新,但是測試的時候往往需要。part 1 當你強行更新快取時會發生如下步驟 step1 generalcacheadministrator.flushall step2 cache.flushall date date,string origin flushall的源 ...
Oscache的強行更新機制
背景 在產品中也許不需要強行更新,但是測試的時候往往需要。part 1 當你強行更新快取時會發生如下步驟 step1 generalcacheadministrator.flushall step2 cache.flushall date date,string origin flushall的源 ...