CCNA-動態路由RIP
IGP與EGP
內部網關協議(IGP, Interior Gateway Protocol)被設計用於由一個組織控制或者管理的網路中。 IGP被設計用來發現穿越網路的最佳路徑。
外部網路協議(EGP, Exterior Gateway Protocol)被設計用於兩個不同組織所控制的網路之間。 EGP必須隔離自治系統。
自治系統(Autonomous System,簡稱AS):是處於公共管理下的網路集合,共享公共的路由選擇策略。美國Internet數字註冊機構(ARIN)負責為每個AS分配標識編號,該編號是一個16比特的數字, IGRP和EIGRP在配置中使用AS編號。自治系統將全球的互連網路分為更小的和更易管理的網路。每個AS擁有自己的規則策略集, AS編號將其與其他的自治系統分開。
動態路由選擇允許網路快速地更新和適應變化。
動態路由選擇的成功基於兩個功能:
1、路由選擇表的維護;
2、以路由選擇更新的形式,將信息適時地發布給其他路由器。
動態路由協議包括: RIP、 IGRP、 EIGRP、 OSPF等。
度量值(Metric)包括:帶寬、延遲、負載、可靠性、跳數、開銷等。
路由選擇演算法分類
路由選擇演算法可以分為以下兩類:
距離矢量(Distance Vector)
鏈路狀態(Link State)
距離矢量路由選擇協議方法確定互連網路中任何一條鏈路的方向(矢量)和距離,定期地將路由選擇表的拷貝從一個路由器發往另一個路由器。
鏈路狀態路由選擇協議方法也被稱為最短路徑優先(SPF) , 它重建整個互連網路的精確拓樸結構。
平衡混合路由選擇協議方法(如EIGRP)結合了鏈路狀態和距離矢量演算法的特點。
比較鏈路狀態路由協議和距離矢量路由協議,運行前者的路由器需要更多的內存並消耗更多的CPU資源,對路由器的性能有更高的要求。
鏈路狀態路由選擇使用以下內容:
鏈路狀態通告(LSA, Link State Advertisement)拓樸資料庫
最短路徑優先(SPF, Shortest Path First)演算法——生成SPF樹路由選擇表
鏈路狀態路由選擇的網路發現使用以下過程:
1、交換LSA;
2、每台路由器構建一個由LSA組成的拓樸資料庫;
3、通過SPF演算法計算網路的可達性,以自己為樹根生成SPF樹,使用SPF選擇路徑;
4、在路由表中列出最佳路徑和介面。
路由信息協議
路由信息協議——RIP(Routing information Protocol)是應用較早、使用較普遍的內部網關協議,適用於小型同類網路,基於V-D演算法,使用跳數來決定最佳路徑。
V-D是Vector-Distance(距離向量)的縮寫,因此V-D演算法又稱為距離向量演算法。這種演算法在Arpanet早期用於網路中路由的計算。
距離向量路由演算法將完整的路由表傳給相鄰路由器,然後這個路由器再把收到的表的選項加上自己的表來完成整個路由表,這個過程被稱為routing by rumor(流言路由),因為這個路由器是從相鄰路由器接收更新而非自己去發現網路的變化。
特點:典型的距離矢量路由選擇協議
使用跳數作為路徑選擇的度量標準,最大跳數為15跳,大於15時,丟棄使用該路由的轉發分組。默認情況下,路由選擇的更新每30秒廣播一次。
分為版本1和版本2,版本2具有以下增強特性:
能夠承載附加的分組路由選擇信息;
認證機制以確保表更新的安全;
支持子網掩碼;
RIP工作原理
運行RIP的路由器都維護一張RIP路由表。
下一跳(next hop)
介面表示本地出口
度量(metric)代表把數據包從本路由器送達目的站所需的花費(cost)。
RIP協議以跳數作為度量,最大有效度量為15,當一條路由的度量到達16後,那條路由就被認為無效,認為某目標網路不可達;
標誌位標誌此路由最近是否發生變化,以備觸發更新時用到;
年齡,定時器,用於維護每條路由。若某條路由經過180秒後仍未被刷新,則該路由被認為不再有效,將其度量置成16。
啟用RIP後,將通過介面以廣播的形式向鄰居發送請求,請求鄰居給自己發送完整的路由表。
鄰居路由器收到請求後發送路由表進行響應,即。
接收到該響應的路由器依據度量的大小來判斷路由的好壞,把度量最小的一條路由放入路由表。判斷過程如下:
(1)查看路由表中是否已有到該目的的路由;
(2)如果沒找到,則添加該路由;
(3)如果找到,只有在新度量更小時才更新路由,否則忽略。
之後兩台路由器開始周期發送並更新路由表。
當檢測到路由變化時,向鄰居發送觸發更新,通知路由變化。
RIP使用計時器來調節它的性能:
1、更新計時(update timer),路由器發送路由表副本給相鄰路由器
的周期性時間,默認時間是30秒。
2、無效計時(invalid timer),如果經過180秒,某條路由的選項都沒
有得到確認,將會認為它已失效了。
3、保持計時器(holddown timer),當路由器得知某條路由無效後,
將進入holddown狀態,默認時間是180秒。如果在這180秒里, router
接收到路由更新以後或者超過180秒,保持計時器停止計時。
4、刷新時間(route flush timer):如果經過240秒,某條路由表項仍
沒有得到確認,它就被從路由表中刪除。
rc(config-router)#network 20.0.0.0
01:22:11: RIP: sending request on Serial1 to 255.255.255.255
//RIP啟動後, RC首先通過Serial 1介面以廣播的形式向外發送請求
01:22:11: RIP: received v1 update from 20.0.0.1 on Serial1
01:22:11: 10.0.0.0 in 1 hops
//鄰居(RB)收到請求後,發送自己的路由表作為回應,響應的內容為。
//此處還可以看出,請求和回應是即時的, RC在01:22:11秒發送請求後立刻收到了鄰居的回應。
//之後,周期性每隔30秒發送路由更新。
Rc#show ip route rip //僅查看通過RIP學習到的路由
R 10.0.0.0 [120/1] via 20.0.0.1, 00:00:07, Serial1
R RIP的標識代碼
10.0.0.0 通過RIP所學習到的網路
120 管理距離
1 到達目標網路的跳數
via 經過,通過
20.0.0.1 下一跳地址,到達10.0.0.0網路需要經過的鄰居路由器的地址或者理解為學習到該條路由的來源,關於10.0.0.0這條路由表項是由20.0.0.1發送來的,通過20.0.0.1學習到。
00:00:07 所學習到的時間,即這條路由是在7秒鐘之前學習到,或者是在7秒鐘之前更新過。
serial0 本地介面,即Rc是通過自己的Serial1介面學習到
Rc#show ip protocols
Routing Protocol is "rip"
Sending updates every 30 seconds, next due in 7 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
//計時器:每30秒發送更新,下一次發送更新將是在7秒之後,無效時間180秒,抑制時間180秒,移除時間240秒。
…
Redistributing: rip //重分布
Default version control: send version 1, receive any version
Interface Send Recv Key-chain
serial1 1 1 1 2 //發送V1,接收V1和V2
Automatic network summarization is in effect
//自動網路匯總默認是生效的
Maximum path: 4 //最大路徑數為4
Routing for Networks: //路由了哪些網路
20.0.0.0
Routing Information Sources:
Gateway Distance Last Update
20.0.0.1 120 00:00:23
//網關地址為20.0.0.1,上一次更新時間在23秒之前
Distance: (default is 120) //管理距離默認為120
RIP V1是有類的(Classful)路由協議
Classful路由協議在路由更新時不攜帶掩碼
Classful路由協議只能支持定長子網掩碼(FLSM)
同一個大類網路下的子網信息當掩碼長度一致時可以相互穿越。掩碼長度不一致時子網信息不能傳遞。
Classful路由協議不支持非連續的子網(Discontiguous subnet)
子網信息穿過另外一個大類網路時將在網路邊界做自動匯總
Classless路由協議在路由更新時攜帶掩碼
Classless路由協議能支持變長子網掩碼(VLSM)
Classless路由協議可以支持非連續的子網(Discontiguous subnet)
自動匯總和版本導致的問題
在A和C路由器上分別啟用迴環介面,並重新配置RIP。
由於30屬於A類地址,子網掩碼默認為8位。 RIR版本1會分別將30.1/16
和30.2/16匯總為30/8,這將導致造成Rb錯誤的認為,通過Ra或Rc均可
到達30/8網路,且兩條路徑是等值路徑(等跳數)。 Rb認為網路拓樸
如下圖所示:
原因: RIP的Datagram裡面只有IP地址,沒有子網掩碼。
解決方法:
1、啟用RIP V 2
2、關閉自動匯總
Roc#debug ip rip
注意版本1和版本2的區別,注意關閉自動匯總前後的區別
01:01:52: RIP: sending v1 update to 255.255.255.255 via Serial1 (10.0.0.1)
01:01:52: RIP: build update entries
01:01:52: network 30.0.0.0 metric 1
版本1下,發送V1更新,地址是廣播地址,沒有攜帶子網掩碼
Roc(config-router)#version 2
01:02:19: RIP: sending v2 update to 224.0.0.9 via Serial1 (10.0.0.1)
01:02:19: RIP: build update entries
01:02:19: 30.0.0.0/8 via 0.0.0.0, metric 1, tag 0
啟用版本2後,發送V2更新,地址是組播地址,攜帶有子網掩碼,但子
網掩碼仍然為8位
Roc(config-router)#no auto-summary
01:03:09: RIP: sending v2 update to 224.0.0.9 via Serial1 (10.0.0.1)
01:03:09: RIP: build update entries
01:03:09: 30.1.0.0/16 via 0.0.0.0, metric 1, tag 0
關閉自動匯總後,發送更新時子網掩碼為16位
被動介面(Passive Interface)只接收路由更新,不發送路由更新:
router(config-router)#passive-interface serial 0
計時器:調整這些時間來適合網路的需要:
router(config-router)#timers basic update invalid holddown flushed
管理距離:
router(config-router)#distance 130 //默認為120
最大路徑數:
router(config-router)#maximum-paths 6 //默認為4
修改介面上RIP接收和發送的版本:
Router(config-if)#ip rip send/receive version 1 2
啟用無類IP子網(默認啟用) :
Router(config)#ip classless
驗證: RIP支持驗證(僅限於V2),驗證的方式包括兩種: Clear Text和MD5。
RA的主要配置
Ra(config)#key chain aaa
Ra(config-key-chain)#key 1
Ra(config-keychain-key)#key-string 1234
Ra(config)#interface serial 0
Ra(config-if)#ip rip authentication mode text
Ra(config-if)#ip rip authentication key-chain aaa
RB的主要配置
Rb(config)#key chain bbb
Rb(config-key-chain)#key 1
Rb(config-keychain-key)#key-string 1234
Rb(config)#interface serial 0
Rb(config-if)#ip rip authentication mode text
Rb(config-if)#ip rip authentication key-chain bbb
RA#debug ip rip
01:53:15: RIP: received packet with text authentication 123
01:53:15: RIP: ignored v2 packet from 10.0.0.2 (invalid authentication)
A路由器上接收到密碼為123的更新包,因密碼不匹配導致驗證失敗,丟棄更新包。
01:53:43: RIP: received packet with text authentication 123
01:53:43: RIP: received v2 update from 10.0.0.2 on Serial0
01:53:43: 20.0.0.0/8 via 0.0.0.0 in 1 hops
修改密碼後,驗證成功,能正確接收更新。
相鄰的兩台路由器,用於驗證的key chain可以不同,key編號可以不同,但用於驗證的密碼必須相同。
採用明文驗證方式時,可以查看到明文的密碼,安全性較差。
MD5驗證:
Rb(config-if)#ip rip authentication mode md5
Rb(config-if)#ip rip authentication key-chain bbb
路由環路的產生
1、兩台路由器的路由表分別為:
RA RB
C 10/8 C 10/8
C 20/8
20.0.0.1/8 X
2、設第1秒時RA啟用RIP,第2秒時RB啟用RIP,則第2秒時的路由表為:
RA RB
C 10/8 C 10/8
C 20/8 R 20/8 1
RA將在第31秒時發送更新, RB將在第32秒時發送更新。
3、第31秒時, RA正常更新,兩台路由器的路由表保持不變,如上。
4、設第31.5秒時, 20網路斷開,則此刻兩台路由器的路由表分別為:
RA RB
C 10/8 C 10/8
R 20/8 1
5、第32秒時, RB發送更新,將自己路由表中[R 20/8 1]發送給RA,同時跳數加1,變為[R 20/8 2]。而此時RA路由表中缺少到達20/8網路的路由, RA將此條路由放入路由表。此刻兩台路由器的路由表分別為:
RA RB
C 10/8 C 10/8
R 20/8 2 R 20/8 1
RA認為通過RB可以到達20/8網路,而RB又認為通過RA可以到達,錯誤產生。
網路中所有的路由器都擁有一致的認識和正確的路由選擇表,這時網路被稱為已經收斂。
路由選擇環路的產生,使得網路產生了慢收斂。
為了防止環路的產生,可採用下列方法:
定義最大跳數
水平分割(Split Horizon)
觸發更新(Triggered Update)
路由中毒(Route Poisoning)和毒性反轉(Poison Reverse)
抑制(Holddown)
定義最大跳數
在任何情況下,當度量標準值超過最大值時,網路被認為不可達。
如果環路中的路由器繼續相互交換錯誤的路由信息,跳數不斷增加,總有某一時候到達最大跳數,之後發出的路由更新將會超過允許值,被認為不可達。
RIP的最大跳數為15;
IGRP的最大跳數默認為100,可修改為255。
水平分割
按照水平分割原則,如果關於20/8網路的路由更新從RA發出,那麼RB就不能再返回給RA關於20/8網路的信息。
水平分割減少了錯誤的路由選擇信息,也減少了路由選擇開銷。
在使用水平分割時,路由器記錄下收到各路由的介面,而當這路由器通告路由時,就不會把該路由再通過那個介面送回去,即通過水平分割機制,路由器不會通過學習埠再次發送關於同一個網路的路由信息。
在該例中,路由器RB最初時由S1介面學習到20/8網路,它將不會把到達20/8網路的距離為2的錯誤路由再通告給RA。因此,一旦RA與20/8網路的連接失效, RA也不會因為RB學習到錯誤的路由。
觸發更新
即立即更新,路由器一旦檢測到拓樸發生變化就向鄰居路由器發送更新,而不等待更新定時器期滿。
本例中, RA在31秒時正常發送路由更新,在31.5秒時檢測到20/8網路斷開, RA將立即發送更新給鄰居路由器RB,而不會等到61秒時再發送。
路由中毒
一般通過將跳數設置為最大跳數加1(即不可達)來實現。
毒性反轉
一旦從一個介面學習到了一個被毒化的路由,那麼這個路由作為不可達路由從同一個介面回送。
抑制
迫使參與協議工作的路由器,在收到關於某網路不可達的信息後的一段固定時間內,忽略任何關於該網路的路由信息。
TAG:IT哥 |