RIP是距離矢量路由協議。它有兩個版本:
RIPv1 是有類路由選擇協議
RIPv2 是無類路由選擇協議
RIP是基於UDP 520端口來操作的。所有的RIP消息都被封裝在UDP用戶數據報中,源端口和目的值被設置爲520。
RIP定義了兩種消息類型:
1.請求消息(Request messages)
2.響應消息(Response messages)
請求消息用來向鄰居路由器發送一個更新(Update)
響應消息用來傳送路由更新。
RIP的度量是基於“跳”數(Hop count)的,1跳錶示是與發出通告的路由器相直連的網絡,16跳錶示網絡不可達。
RIP信息更新的過程:
1.RIP從每個啓用RIP協議的接口廣播出帶有請請求消息的數據包。
2.RIP程序進入一個循環狀態,不斷的偵聽來自其他路由器的RIP請求或響應消息,而接受請求的鄰居路由器則回送包含它們的路由表的響應消息。
3.當發出請求的路由器收到響應消息的時候,它將開始處理附加在響應消息中的路由更新信息。如果路由更新中的路由條目是新的。路由器則將新的路由連同通告路由器的地址一起加入到自己的路由表中。這裏通告路由器的地址可以從更新數據包的的源地址字段讀取。如果網絡中的RIP路由已經存在路由表中。那麼只有在新的路由擁有更小的跳數的時候才能替換原來存在的路由條目。如果更新通告的跳數大於路由表已經記錄的跳數,並且更新來自於已記錄條目的下一跳路由器,那麼該路由器將在一個指定的抑制時間段(Holddown period)內被標記爲不可達。如果在抑制時間段超時後,同一鄰居路由器仍然通告這個有較大跳數的路由,路由器則接受改路由新的度量值。
RIPv1的消息格式
Command:取值1或2,1表示該消息是請求消息,2表示該消息是響應消息。其他的取值都不被使用或保留用作私有用途。
Version : 對於RIPv1,該字段的值設置爲1。
Address Family Identifier,AFI:對於IP該項設置爲2.只有一個另外情況,該消息是路由器(或主機)整個路由表的請求。
IP Address:路由的目的地址。這一項可以是主網絡地址、子網地址或主機路由地址。
Metric:在RIP中指跳數,該字段的取值範圍在1-16之間。
RIPV1的報文
從上面的圖中能看出RIPv1使用廣播(255.255.255.255)發送路由更新,RIPv1更新不帶掩碼
RIP的請求消息:(Request Message)RIP的請求消息可以請求整個路由表,也可以僅請求某些具體路由的信息。
RIPv1的特點:
1. 以廣播255.255.255.255發送更新
2.不支持VLSM,更新的時候不帶掩碼信息
3.在主類網絡邊界自動彙總,無法避免
解決DV路由環路辦法:
1.水平分隔
2.最大跳數
3.毒性逆轉
4.保持失效定時器
5.觸發更新
RIP單個的更新時25.5-30s
默認的值Invalid after 180 seconds, hold down 180,flushed after 240
Timers basic {update invalid holddownflush} 修改四個計時器
Passive-interface 配置被動接口
解決不連續子網的辦法:
interface fastEthernet 0/1
ip address 192.168.1.1 255.255.255.0 secondary 配置輔助地方,一個接口可以配置多個輔助地主。
降低RIP的路由選擇流量:
1.調整路由選擇的計時器以便降低更新的頻率,但是這在主要鏈路發生故障的時候會引起較長的收斂時間。
2.配置觸發擴展特性來消除週期性的RIP更新。
interface fastEthernet 0/1
iprip triggered
使用偏移列表(Offset-list)控制RIP的度量
offset-list {access-list-number | name } { in | out } offset {typenumber} (偏移列表)
Example:
access-list1 permit 10.33.0.0 0.0.0.0
router rip
network192.168.12.0
offset-list1 in 2 Serial0
訪問控制列表的配置確定了關於子網10.33.0.0 的路由,偏移列表的語法含義是“"先檢查從S0接口接收進來的RIP通告,如果存在和訪問列表1指定的地址相匹配的路由條目,那麼就把該路由條目的度量值加大2跳。"
R1:
access-list 1 permit 10.33.32.0 0.0.0.0
router rip
network192.168.83.0
network10.0.0.0
offset-list 1 in 2 serial 0/0
R3:
access-list1 permit 10.33.0.0 0.0.0.0
network192.168.12.0
network10.0.0.0
offset-list1 in 2 serial 0/0
路由器也可以通過修改想歪通告的出站(Outgoing)路由更新的度量。替代上面兩臺路由器對從鏈路接收的入展(Incoming)路由更新的度量的修改。
R1:
access-list7 permit 10.33.0.0 0.0.0
router rip
network10.0.0.0
network192.168.83.0
offset-list7 out 2 serial 0/0
R3:
access-list3 permit 10.33.32.0 0.0.0.0
router rip
network192.168.12.0
network10.0.0.0
offset-list3 out 2 serial 0/0
注意:
偏移列表的其他幾個選擇在配置的時候也是有用的。如果不指定使用偏移列表的接口,那麼偏移列表將在所有與訪問列表匹配的接口上修改所有的入站更新或出站更新。如果不調用訪問列表來進行匹配,偏移列表將修改所有的入展更新或出站更新。
當在入站或者出站更新的通告上選擇是否使用偏移列表的時候,有些需要注意的地方。例如:在一個多於兩臺路由器的廣播網絡上面,到底是需要某臺單獨的路由器向所有的鄰居路由器廣播偏移修改後的通告,還是需要某臺單獨的路由器接受偏移修改後的通告,這一點必須要考慮清楚。
在運行的路由上面實施偏移列表的時候需要特別注意。當一個偏移列表引起下一跳路由通告的度量值比它在通告的路由更新的度量值更高的時候,直到抑制計時器(holdown timer)超時前,這條路由都會被標記不可達。
RIPv2
RIPv2的消息格式
Command:取值1和2,1表示爲請求消息,2表示響應消息。
Version:對於RIPv2,該字段爲2.
Address Family Identifier:對於IPv4,該項總是設置爲2。
Route tag:提供這個字段用來標記外部路由或重新分配到RIPv2協議中的路由。默認情況是使用這個16位的字段來攜帶外部路由選擇協議注入到RIP中的路由的自主系統號。
IP Address:路由條目的IPv4地主,它可以是主網絡地址、子網地址或主機路由。
Subnet Mask:是一個32位的掩碼,用來表示IPv4地址的網絡和子網部分。
Next Hop:如果存在的話。它表示一個比通告路由器的地址更好的下一跳地址。
Metric:是一個在1-16之間的跳數
RIPv2 報文
RIPv2使用組播(224.0.0.9)發送路由更新,RIPv2更新帶掩碼。
超時計時器(Timeout timer):當有一跳路由被建立,超時計時器會被初始化爲180S,而每當接受這條路由的更新消息的時候,超時計時器就會被重置。如果一跳路由在180S內還沒收到更新,那麼這條路由的跳數將會變爲16,標記爲路由不可達。
RIPv2的特點:
1.使用組播224.0.0.9 發送更新。更新中攜帶子網掩碼
2.支持VLSM。
3.默認情況下面在跨主類網絡邊界彙總,可以使用no auto-summary 關閉自動彙總。
RIPv2與v1的兼容:
RIPv1如果更新消息的版本字段指出RIP版本1,但是所有未使用的字段的所有位都被設置爲1,那麼這個更新消息將會被丟棄;如果版本字段設置大於1,在版本1中定義爲未使用的字段將被忽略,但會處理這個消息。
RIPv2可以向後兼容RIPv1
RIPv1:只有RIPv1的消息被傳送。
RIPv1兼容性:RIPv2使用廣播方式代替多播方式來通告消息。以便RIPv1可以接受它們。
RIP2:RIP2使用多播方式消息通告到目的地址224.0.0.9.
None: 不發送更新。
在Cisco IOS中可以通過命令ip rip send version ,ip rip receive version 來實現。
RIP 認證(Authentication)
Authentication 報文