文章目錄
CCNP1:RIP——路由信息協議(干涉選路、V1、V2的兼容性問題、V1的連續子網問題)
RIP:路由信息協議,距離矢量型協議,使用跳數作爲度量,基於UDP520端口工作,管理距離120。使用週期(30s)和觸發更新
觸發更新:用於結構突變時,進行及時的重新收斂,告訴全部路由器有一個網段發生了變化。
週期更新:用於保活、保證數據收到,解決沒有收到確認包的情況,但是佔用帶寬。
一、RIP協議講解:
RIP存在三個版本:
基於IPv4工作的:V1、V2版
基於IPv6工作的:NG版
1、V1和V2的區別:
特點\版本 | V1 | V2 |
---|---|---|
類別 | 有類別 | 無類別(攜帶掩碼) |
支持 | 支持連續性子網 | 支持VLSM、僅支持CIDR,不支持超網 |
更新方式 | 廣播更新 255.255.255.255 |
組播更新 224.0.0.9 |
是否支持認證 | 否 | 是 |
3、RIP的工作原理:
圖中總共有五個網段,1、3、5是環回,2、4是它們之間的直連路由。R1和R2都有2網段,因此R1需要把自己的 1.1.1.0/24網段告訴R2,數據包就像圖中那樣,包中的信息包含1.1.1.0/24網段,數據包包含傳輸協議,源目端口,源IP、源MAC,組播更新地址等。
R2在收到R1的包後,就知道了這個包是從自己的S0/0口進來的,R1發送的地址是12.1.1.1/24,信息中包含了到1.1.1.0/24的度量值爲1跳。就會產生一個
R 1.1.1.0/24 [120/1] S0/0 12.1.1.1的路由表
這個包再由R2轉發給R3時,源IP被修改爲23.1.1.1/24,跳數也被修改爲第2跳了。最後R3學到1.1.1.0/24的路由。同理,所有的路由都可以按照這樣的方式倒出全部的路由。當R1、R2、R3上都有5條路由時,即它們獲得了整個拓撲的路由,也就意味着它們收斂完成。
4、RIP的破環機制:
(1)毒性逆轉水平分割:
觸發更新:當有路由器斷開了某個網段時,該路由器會發送更新包,更新包中包含斷開的網段和16跳的跳數,來告訴其它路由器此網段已不可達。收到的路由器作爲迴應需要將這條更新包再發送給發給自己的路由器,來作爲確認自己收到了。這纔是破環機制的核心機制。
(2)跳數限制——15跳
(3)水平分割——從此口進,不從此口出。不能完全解決問題,因爲這個僅適用於防止直線、星形拓撲。
水平分割的核心作用:
①消除重複更新量
②在MA網絡中消除重複更新量(MA:多路訪問網絡,在一個網段中,可連接的節點數量不限制)
(4)抑制計時器——平常不工作,但是遇到跳數無徵兆增大,表示網絡已經出環,此時抑制180s後重新收斂尋找新網段。
5、RIP如果沒有破環機制會怎麼樣?
首先我們要知道RIP的週期更新時間爲30S,且每臺路由器並不是同時更新的,它們錯開了更新時間。
按照上圖:如果R3突然斷掉了3.3.3.0/24網段,在它自己的30s倒計時爲0時,它將這條消息發給了R2,此時R2距離剛更新過了13s。然後過了7秒鐘,R1發包告訴R2它可以到3.3.3.0/24網段,度量值爲3跳,這時距離R2更新的時間還剩10s。
此時R2會認爲自己去3.3.3.0/24網段下一跳是12.1.1.1,但是它不知道R1去往3.3.3.0/24網段的下一跳也是它自己。這就導致出環了,這還沒完,R2更新後,它會顯示自己有去往3.3.3.0/24的路由告訴R3,最後這個圖都陷入到了出環中。
出環的原因就是我收到的信息就是我剛剛刪除的,甚至是我剛剛共享給你的。
二、RIP的配置:
1、基本配置:
(1)RIPv1:
R1(config)#router rip
R1(config-router)#version 1
R1(config-router)#network 1.0.0.0
R1(config-router)#network 12.0.0.0
1# 啓動RIP協議
2# 選擇RIP版本爲1,若不進行版本選舉,默認爲升級版本1(注意不是普通版本)
3# 宣告的意義:
1、激活接口——使接口具有接收和發送路由信息的能力
2、路由或拓撲——不宣告某個接口,會導致該接口的信息無法傳輸給其他路由器
RIP在宣告時,只能定義主類的範圍
(2)RIPv2:
r1(config)#router rip
r1(config-router)#version 2
r1(config-router)#no auto-summary
r1(config-router)#network 172.16.0.0
r1(config-router)#network 192.168.1.0
#3關閉自動彙總——關閉後會攜帶精確掩碼,不關閉會攜帶主類掩碼
2、擴展配置:
(1)RIPV2的認證——運行於RIP協議的鄰居間,進行身份的核實。 認證≠加密
先定製keychain,再進入和鄰居相連的接口上調用
R1(config)#key chain xxx 鑰匙庫的名字爲xxx,鄰居可以不同
R1(config-keychain)#key 1 key 1第1把鑰匙,鄰居必須相同
R1(config-keychain-key)#key-string cisco123 鑰匙爲cisco123,鄰居必須相同
R1(config)#interface f0/0 進入和鄰居相連的接口上調用
R1(config-if)#ip rip authentication key-chain xxx 明文認證雙方需一致
R1(config-if)#ip rip authentication mode md5 密文認證雙方需一致
(2)RIPV2的手工彙總——在更新源路由器上所有更新發出的接口上配置
R1(config)#interface f0/0
R1(config-if)#ip summary-address rip 2.2.2.0 255.255.254.0
(3)被動接口——僅接受不發送路由協議信息,只能用於連接用戶的接口,不得用於連接鄰居的接口。
R1(config)#router rip
R1(config-router)#passive-interface lo0
(4)缺省路由——在邊界路由器上配置RIP缺省後,內部的路由器將自動生成缺省路由指向邊界路由器,邊界路由器到達ISP的缺省路由,宣告手工靜態配置
R1(config)#router rip
R1(config-router)#default-information originate
(5)加快收斂
RIP計時器 30s更新 180s失效 180s抑制 240s刷新(非cisco300s刷新)
計時器 | 註解 |
---|---|
180s失效 | 一次沒收到更新並不能判斷路由就沒有了,有可能會因爲網絡卡了,所以給了6次機會。一旦6次機會都用完了,那麼就判定這條路由失效了。緊接着會發再一條帶毒的路由給其他鄰居,告知其他鄰居該路徑已不可達。 |
180s抑制 | 平常不工作,正常情況下假設R1到達R2,跳數爲1跳。但是跳數突然無徵兆的變大,表示網絡已經出環,此時抑制180s後重新收斂尋找新網段。 |
240s刷新 | 也就是會刪除沒有的路由條目 |
適當的修改計時器,可以加快設備的收斂速度,建議修改時維持原有的倍數關係,且不易修改的過小,否則會佔用帶寬資源,全網所有設備均需要修改。
R1(config)#router rip
R1(config-router)#timers basic 15 90 90 120
以上是我的CCNA分類中複製粘貼過來的內容,如需查看請點擊這裏:CCNA3:動態路由協議、RIP——路由信息協議而接下來的3個擴展配置,是CCNP相較於CCNA需要要補充的擴展配置:
(6)干涉選路:
由於RIP使用跳數作爲度量,導致在選路的時候會出現選路不精確的現象,如下圖:
上面的路跳數大,但是帶寬好。路由器卻選擇了下面的路,這就需要我們來干涉選路了。
干涉原理:使用偏移列表的策略來實現:在控制層面流量的進或出接口上,加大流量中的度量值,然後來影響選路。在增加度量時,若多個設備均設置,度量將被疊加。
偏移列表缺陷:只能加大,不能減小,想修改其中一條路,就需要在另一條路上加大度量
控制層面是傳路由表的方向(R4把它的環回傳給R1),數據層面訪問目標的方向(R1pingR4)。
層面 | 註解 |
---|---|
控制層面 | 針對路由協議而言,路由器通過IGP協議學習路由形成路由表即 |
數據層面 | 針對發送數據而言,控制層面構建路由表,爲數據層面發送數據的提供服務,即沒有控制層面形成路由表,數據層面無任何意義。 |
配置如下:
R1(config)#access-list 1 permit 3.3.3.0 (先使用ACL抓取到對應的網絡號流量:相當於3.3.3.0 0.0.0.0)
R1(config)#router rip (再在rip中設置)
R1(config-router)#offset-list 1 in 2 serial 1/1
offset:偏移列表
1:ACL編號
2:度量再原有的基礎上增加2
in:調用接口方向爲入向
serial 1/1:入向的接口
(7)V1、V2的兼容性問題:
這裏我們要搭一個實驗環境,底層配置如下圖所示,然後R1運行RIPv1版,R2運行RIPV1+版,R3運行V2版。
宣告如下:
R1(config)#router rip
R1(config-router)#version 1
R1(config-router)#network 1.0.0.0
R1(config-router)#network 12.0.0.0
R2(config)#router rip
R2(config-router)#network 12.0.0.0
R2(config-router)#network 2.0.0.0
R2(config-router)#network 23.0.0.0
R3(config)#router rip
R3(config-router)#version 2
R3(config-router)#no auto-summary
R3(config-router)#network 23.0.0.0
R3(config-router)#network 3.0.0.0
宣告之後它們的路由表如下:
我們發現,只有R3的路由表是有問題的,沒有收到之前R1、R2的路由。
我們再看一下它們的協議運行情況:
R1只收發1版本
V1+版:發V1,V1、V2都接受V2
收發關係\版本 | 標準V1 | 升級V1 |
---|---|---|
發送 | V1 | V1 |
接收 | V1 | V1、V2 |
無論設備當下使用的什麼版本,所有接口可收發的版本信息均可修改,因此解決兼容性問題:
①可以讓V1、V1+的設備模仿發送、接收V2的路由,但是無法攜帶掩碼。
②V2可以正常發出和V1一樣的路由。
R2(config)#int s0/1
R2(config-if)#ip rip send version 1 2
R2(config-if)#ip rip receive version 1 2
(8)V1的連續子網問題:
連續性子網: 母網相同,掩碼長度一致 (只有連續子網可以進行彙總配置)。
比如下面這四個網段就是一個連續性子網。
我們以下面這個圖爲例,當這兩臺路由器均運行着V1版本的RIP的時候,就會導致R1沒有學到1.1.2.0上的網段,R2沒有學到R1上的網段。
底層配置如上圖所示,宣告如下:
R1(config)#router rip
R1(config-router)#version 1
R1(config-router)#network 1.0.0.0
R1(config-router)#network 12.0.0.0
R2(config)#router rip
R2(config-router)#version 1
R2(config-router)#network 1.0.0.0
R2(config-router)#network 12.0.0.0
我們查看它們的路由表,發現它們確實沒有學習到對方環回的網段。
原因如下:
從上面的宣告我們應該也可以看到,宣告的時候是1.0.0.0的網段,兩臺路由器之間,它們收到來自對端的路由時,發現和自己宣告的一樣,根據RIP的水平分割規則,不再接收相同的路由,這就導致了網段沒有完全學習到。
解決原理:
在V1的RIP中,若本地即將共享給鄰居的路由與本地和鄰居直連網段爲連續子網,那麼本地將攜帶主機位發送路由給鄰居,鄰居在接收到存在主機位的路由時,將使用與鄰居直連網段的掩碼來添加到這些路由中。
解決方案:
根據解決原理,我們可以將R1、R2之間的IP增加一個第2地址(或者直接覆蓋原有IP),這樣就可以與 R1、R2兩個環回構造出了連續性子網,這樣這3個網段就都處在同一個連續性子網中。
配置如下:
R1(config)#int s0/0
R1(config-if)#ip add 1.1.3.1 255.255.255.0 secondary
R2(config)#int s0/0
R2(config-if)#ip add 1.1.3.2 255.255.255.0 secondary
最後路由表全齊: