1. 程式人生 > >RIP、OSPF、EIGRP 區別(學習帖)

RIP、OSPF、EIGRP 區別(學習帖)

三種類型的動態路由協議演算法分別是距離向量演算法,鏈路狀態演算法以及平衡混合演算法,這幾種演算法的型別代表:RIP、OSPF、EIGRP。而且它們都是內部閘道器協議(IGP),也就是說它們都執行在一個自治系統內部,什麼是自治系統,我們來簡單看一下:

自治系統:就是使用相同路由準則的網路集合,一般是一個ISP,或者是一個大型的行政機構。大家剛聽到這個術語時會感到有點模糊,有點抽象,在CCNP的課程中會有詳細的介紹,我們CCNA部分很少會用到自治系統間的協議,使用的基本上都是自治系統內的協議。所以如果按照在自動系統內執行還是用於連線不同的自治系統,路由協議又分為兩種:

IGP:內部閘道器協議,在一個自治系統內執行。比如:RIP、OSPF、IS-IS、EIGRP等。

EGP:外部閘道器協議,用於連線不同的自治系統。比如:BGP

RIP:路由資訊協議

在CCNA部門主要介紹的是內部閘道器協議,那麼我們先從RIP開刀。RIP是一個典型的距離向量路由協議,全稱是Routing information protocol(路由資訊協議)。它使用的是資料包所經過的閘道器來做為距離的單位,最大跳數為15跳,超過15跳便無法到達,大家從這個數中就可以看出 來,RIP是一個元老級的路由協議,正是因為受到15跳的限制,所以現在使用的是越來越少。它只適合於一些規模不大的網路,路由器的數量不多的網路中。因 為它評價網路的好處就是依靠跳數,但是這個跳數並不一定說就能代表最佳路徑。如圖所示:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

PC1希望到達PC2,按照RIP協議來說肯定是經過Router3,再轉交給Router4就到達PC2,因為這 樣的話相對於Router3來說,它只要經過兩跳,就可以到達PC2所在的網段。跳數最少。但是這條線路的頻寬是19.2Kbps,而另一條路雖然跳線 多,但它是T1線路,頻寬大,延遲小。肯定會比第一條路要優。但是RIP是以跳數計算最佳路徑,所以它就選擇了第一條路。所以大家也感覺到了,RIP有點 笨笨的感覺,以至於現在用的不多了!當啟用RIP協議時,RIP會從RIP的相關介面上向外發廣播包。這裡使用的是520/UDP埠。廣播包的內容主要 是請求資訊,偵聽來自其他路由器的請求資訊和應答資訊,當鄰居收到請求資訊以後,就傳送應答息給該路由器。在RIP啟動成功之後,平均每30秒,注意這裡 是平均每30稱,不是正好是30秒。就會發送應答資訊,又稱為update包。這個update包中包含了路由器完整的路由表。這裡應該還有路由無效值, 路由重新整理時間等引數,這一部分應該是CCNP的內容,在此簡單介紹一下,詳細內容大家可以參考NP部分。我們來看下圖

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

如果Router3所連線的40網段斷開了。那麼相對於Router2來說,如果在180秒內,沒有得到關於40網段的路由訊息,就會認為它失效了,但僅 僅是失效而已,將Router2上關於40網段的路由設定為holddown狀態,預設時間為180秒。如果在這180秒裡,Router2接收到40網 段可行路由後會中止計時,並將原來關於40網段的路由改為可用路由;如果經過240秒,仍沒有得到關於40網段的確認,就認為這個網段直的“死悄悄”了, 那就把它從路由表中刪除。

關於RIP還要提到一點是RIP分為RIP1與RIP2兩個版本,區別在於RIP1是一個有類路由協議,即所有的更新包中不含子網掩碼,不支援VLSM, 所以就要求網路中所有裝置必須使用相同的子網掩碼,否則就會出錯,而RIP2是一個無類的路由協議,它使用子網掩碼;第二個不同的地方是RIP1是傳送更 新包的時候使用的是廣播包,而RIP2使用的是組播224.0.0.9這樣相對於RIP1來說就節省了一部分網路頻寬。第三個就是RIP2支援明文或者是 MD5驗證,要求兩臺路由器在同步路由表的時候必須進行驗證,通過才可以進行路由同步,這樣可以加強安全性。(rip1和 rip2 的區別

下面咱們來看一個RIP協議的具體配置:

相對來說RIP的配置還是很簡單的,下面咱們就以實驗來結束RIP的討論,我們在此做兩個實驗,一個使用RIP1來完成,一個使用RIP2來完成。其實它們的配置大同小異,我們先來看RIP1。

Lab1:動態路由協議RIP,使用RIP1協議使得網路中達到全網互通的目的

實驗目的:通過設定RIP1路由協議達到全網通的效果

實驗裝置:三臺Cisco系列路由器

拓撲圖:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

RA上的配置:

Router>enable

Router#conf t

RA(config)#interface s0/0

RA(config-if)#ip address 192.168.0.1 255.255.255.0

RA(config-if)#clock rate 64000

RA(config-if)#no shutdown

RA(config-if)#exit

RA(config)#interface loopback 1

RA(config-if)#ip address 10.10.10.10 255.255.255.0

RA(config-if)#exit

RA(config-router)#network 192.168.0.0

RA(config-router)#network 10.10.10.0

RA配置完畢!

RB的配置:

Router>en

Router#conf t

Router(config)#hostname RB

RB(config)#interface s0/0

RB(config-if)#ip address 192.168.0.2 255.255.255.0

RB(config-if)#no shutdown

RB(config-if)#interface s0/1

RB(config-if)#ip address 192.168.1.1 255.255.255.0

RB(config-if)#clock rate 64000

RB(config-if)#no shutdown

RB(config-if)#end

RB(config)#router rip

RB(config-router)#network 192.168.0.0

RB(config-router)#network 192.168.1.0

RC上的配置

Router>en

Router#config t

Router(config)#hostname RC

RC(config-if)#ip address 192.168.1.2 255.255.255.0

RC(config-if)#no shutdown

RC(config)#interface loopback 1

RC(config-if)#ip address 20.20.20.20 255.255.255.0

RC(config)#router rip

RC(config-router)#network 192.168.1.0

RC(config-router)#network 20.20.20.0

大家可以看到其實RIP的真正配置命令就兩個

Router rip 啟用RIP協議

Network network-number 選擇需要啟用介面所在的網段

驗證配置:

我們在此沒有使用PC,就使用擴充套件ping來測試我們的配置是否正確。我們先來驗證網路的連通性。

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

OK!網路是通的,說明RIP已經生效了!

那麼我們接下來就可以通過show ip router檢視路由器的路由表

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

在此我們可以看到RA這個路由器上的路由表資訊:兩個直連路由,兩個是通過RIP學習到的動態路由,其中[ 120/2] 120代表管理距離,2代表到達對方的跳數。至於其他兩個路由器上的路由表我們在此不再檢視!

也可以使用show ip protocols來檢視當前執行的協議,如圖所示:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

這裡可以看到正在執行的協議,更新時間,失效時間,重新整理時間,還可以檢視到啟用的網路號和預設距離值等資訊。還可以使用Debug ip rip 來檢視RIP協議的學習過程:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

只是大家在選擇網段的時候一定要注意:如下圖路由器B上network10.0.0.0就把10.1.1.0和10.2.2.0都包含了!

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

Lab2:和實驗1相同,只是RIP2來實現

注意:RIP2與RIP1相比配置命令差不多,只是多了一個命令version 2 因為你不指定,會預設是RIP1

最好執行命令關閉自動聚合:no auto-summary

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

Router>enable

Router#configure terminal

RA(config-if)#interface serial 0

RA(config-if)#ip address 192.168.0.1 255.255.255.0

RA(config-if)#no shutdown

RA(config-if)#clock rate 64000

RA(config-if)#exit

RA(config)#interface looback 1

RA(config-if)#ip address 10.10.10.10 255.255.255.0

RA(config-if)#exit

RA(config)#router rip

RA(config-router)#version 2

RA(config-router)#no auto-summary

RA(config-router)#network 192.168.0.1

RA(config-router)#network 10.10.10.0

RB的配置:

Router>en

Router#conf t

Router(config)#interface s0

Router(config-if)#ip address 192.168.0.2 255.255.255.0

Router(config-if)#no shutdown

Router(config-if)#clock rate 64000

Router(config-if)#interface s1

Router(config-if)#ip address 192.168.1.1 255.255.255.0

Router(config-if)#clock rate 64000

Router(config-if)#no shutdown

Router(config-if)#exit

Router(config)#router rip

Router(config-router)#ver 2

Router(config-router)#no auto-summary

Router(config-router)#network 192.168.0.0

Router(config-router)#network 192.168.1.0

RC的配置:

Router>enable

Router#configure terminal

Router(config)#interface s0

Router(config-if)#ip address 192.168.1.2 255.255.255.0

Router(config-if)#no shutdown

Router(config-if)#interface loopback 1

Router(config-if)#ip address 20.20.20.20 255.255.255.0

Router(config-if)#end

Router#configure t

Router(config)#router rip

Router(config-router)#ver 2

Router(config-router)#no auto-summary

Router(config-router)#network 192.168.1.0

Router(config-router)#network 20.20.20.0

到時為止,配置全部完成,我們還是首先來驗證網路的連通性

RA上PING

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

還是使用show ip route來檢視路由資訊

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

也可以通過命令 show ip protocols 檢視當前的協議資訊。可以看到現在的版本已經是2。

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

還可以通過 defub ip rip 檢視RIP的學習過程:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

再給出一個思科官方的一個關於RIP2的配置例項,供大家學習使用:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

在這個例子中要注意:

1、B使用是RIP2,而C使用的是RIP1,所以需要在B的S3口上定義RIP1版本,目的是為了和C路由器結合,一般最好是都使用同一個版本的RIP。

2、no auto-summary 關閉自動彙總,當路由更新經過主類網路時,會自動向主燈網路號進行彙總,這樣就會造成配置不正確,所以我們需要先關閉彙總,再手動開啟彙總,再手動開啟時就可以指定子網掩碼!

關於RIP協議就介紹這麼多了,下面咱們看一個鏈路狀態協議的代表:OSPF

OSPF:Open Shortest Path First

開放最短路徑優先協議,它是IETF組織開發的一個基於鏈路狀態的內部閘道器協議。大家從Open這個詞就可以看出來,這個協議是公開的,可以支援不同廠家 的裝置,而我們下面要講到的EIGRP就是思科所獨有的。OSPF目前使用的是版本2,可適應大規模網路,因為OSPF沒有RIP的跳數限制,並且由於引 進了區域的概念也比EIGRP支援的網路規模大。OSPF已經被廣泛的用在網路、企業網路、電力網路、金融網路、是一個支援大規模網路的IGP路由協議, 最多可支援幾百臺路由器的網路規模。

下面咱們來看一下OSPF的優點:

路由變化收斂速度快:OSPF的路由是經過路由器儲存在本地的資料庫計算出來的,當發生網路更新的時候不需要被動的詢問鄰居路由器,所以OSPF相對來說收斂速度比較快。

無路由環路:OSPF路由協議採用的是最短路徑優先演算法(SPF),而且路由器 用Router ID來表示,所以可以保證在一個區域內沒有環路,由於 使用直連骨幹區域的設計,所以可以保證即使在多載的情況下無環路出現。注意,這裡所說的無環路的意思是當網路僅使用OSPF路由協議時沒有環路,如果出現 其他路由協議或靜態路由的參與,就不能保證沒有環路了。

支援CIDR和VLSM:我們前面所講的RIP路由協議不支援CIDR和VLSM,這被認為是RIP路由不適用於大型網路的又一個重要原因,採用CIDR和VLSM可以在最大限度上節約IP地址。

層次區域劃分:在OSPF中,一個網路可以被劃分為很多個區域Area,其中分 為兩種:骨區域(area 0)和常規區域,其中常規區域可以支援42億個,2的32次方個區域,絕對夠用。但是要求所有的常規區域必須與骨幹區域相連,一個區域通過OSPF邊界路 由器相連,區域間可以通過路由彙總(Summary)來減少路由資訊,減小路由表,提高路由器的運算速度。

組播地址傳送協議報文:使用專用的組播地址傳送協議報文,因為是在小範圍內通訊,所以可以減少對網路中非OSPF裝置的影響。

下面咱們要介紹OSPF中一個重要但是很不算複雜的概念:Router ID(RID)

一臺路由器如果要執行OSPF協議,就必須存在Router ID。Router ID的作用其實很簡單,就是唯一標示一臺OSPF路由器,如果沒有配置ID號,系統會從當前介面的IP地址中自動選一個作為路由器的ID號。選擇順序通常 是優先從loopback地址中選擇一個作為路由器的ID號;也可以從介面地址中選擇,這時如果同時存在多個介面,則將介面中最大的IP地址作為路由器的 ID號。也就是說如果有邏輯介面也就是Loopback介面,則使用Loopback地址作為自己的RID,那如果沒有邏輯介面,只有物理介面,則會使用 物理介面IP地址比較大的那個作為自己的RIP。那麼哪些是物理介面如:Serial口,Ethernet口,ATM口等等,但是如果有兩個邏輯介面,則 也是邏輯介面中IP地址較大的那個為RID。

通常建議先Router ID再配置OSPF路由協議,否則如果先啟動了OSPF而路由器自己選舉的Router ID又不是你希望的,那麼重新重新配置Router ID就需要重啟動一次OSPF路由程序了。為什麼使用Loopback IP地址來優先配置Router ID?因為早期的路由器操作(IOS)中使用物理介面IP地址充當Router ID,如果物理接口出現問題而down了,那麼Router ID也就跟著消失了。這樣很容易OSPF路由協議的不穩定。雖然現在路由器作業系統已經改掉了這個BUG,但路由器優先考比物理介面穩定的 Loopback口IP地址成為了一個慣例。另外由於Loopback介面一般不參與路由工作,所以可以通過Loopback介面優先配置Router ID。

手動配置Router ID的好處:

因為OSPF協議以Router ID識別鄰居路由器,所以當出現各川問題的時候管理員總是看到Router ID路由器有問題。那麼在分配Router ID的時候,就可以考慮按照邏輯或物理的地址來進行分配。在Cisco路由器中還有一個特性是通過;架設DNS伺服器來解析Router ID名稱。這樣當網路管理員監視網路狀況的時候就可以直接看到對方路由器的名字了。

咱們瞭解了Router ID之後咱們就要接著來了解另外兩個概述DR和BDR:因為Router ID直接影響到DB和BDR的選舉,我們來詳細看一下,我們先從一個圖入手:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

那麼如果在一個乙太網環境中這五臺路由器之間希望交換同步路由資訊,它們之間使用的是網狀的邏輯拓撲。如下圖所示:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

這時如果希望它們之間能夠迅速同步,需要多條鏈路,這樣維護成本是比較大的。我們就想了,我們可以在網路上選擇一個路由器出來,讓它來當“老大”,然後規 定其他的路由器如果希望與另一個路由器通訊,那麼只要經過這個“老大”就可以了。所以如果我們把C當成“老大”,則拓撲就變成了下面這樣:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

這樣所有的路由器之間通訊都通過C路由器,就減少了路由資訊在網路上的洪泛。節約了網路頻寬。那麼這個路由器C就是咱們所說的DR,指定路由器(Designated Rouer)

那關鍵是如果有一天這個路由器C壞了,怎麼辦?這和WINDOWS中的DC有點類似,為了實現冗餘,我們再來指定一個BDR(Backup DR),如我們在這裡再指定路由器D作為BDR,那麼這個拓撲圖又變了:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

其實也就是咱們網路拓撲中所說的部分互連。這樣的話冗餘實現了,成本也降低了。關鍵是網路上有這麼多路由器,到底哪一個是DR,哪一個是BDR?

我們來看一下選舉過程:

當選舉DR/BDR的時候要比較hello報文中的優先順序。那麼什麼又是hello報文中,簡單來說這個hello報文中包括一些定時器的數 值,DR,BDR,以及自己已知的鄰居。也就是說每個路由器在和對方通訊時也是發hello報文,見面先打個照呼!在OSPF中預設每10秒中發一次 Hello報文!如果40秒還沒有收到的話,則宣稱該鄰居死亡。裡面就包含了Router ID,Hello報文的時間間隔和死亡時間間隔,鄰居資訊,區域資訊,路由器優先順序,DR以及BDR的資訊,驗證資訊以及根區域標記等。如圖所示:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

其中要求打*的引數必須要完全一樣,不然就不可能成為一個鄰居。

那麼當選舉DR/BDR的時候就先比較Hello包中的優先順序(priority)優先順序最高的為DR,次高的為 BDR,但是預設優先順序都為1,所以這個意義不大!那麼在優先順序相同的情況下就開始比較我們剛剛介紹的一個東西了Router ID,RID值最高的為DR,次高的為BDR,當你把優先順序設定為0以後,該路由器就不能成為DR或者是BDR,只能是DROther。

修改優先順序可以使用命令: (config-if)#ip ospf cost 0-255 255最高

當選舉完成後,DROther只和DR/BDR形成鄰接關係也就是說在它們的眼裡只有DR和BDR是它們的鄰居,所有的路由器將組播Hello包到地址 224.0.0.5以便它們能跟蹤其他鄰居的資訊,即DR將洪泛LSU到224.0.0.5這個組播地址上;DROther 只能能過組播地址224.0.0.6將LSU(鏈路狀態更新)到所有的DR上。只有DR/BDR監聽這個組播地址。

如果兩臺路由器剛剛啟動沒有配置OSPF時,則相關的埠都是DOWN的。

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

如果配置好OSPF,這個時候如果雙方開始傳送一個初始化狀態,我們以Router1為例,此時它會宣告我是192.168.10.10 這其實就是它的RID,它會告訴對方我是192.168.10.10我現在沒有任何鄰居。這個時候Router2在自己的Fa0/0中收到了 Router2 發過來的宣告資訊就是把這個資訊加到自己的鄰居表裡面並註明是通過Fa0/0中連線。,然後再反饋給Router1說我是192.168.10.20,我 有一個鄰居是192.168.10.10;此時Router1又收到Router2的宣告資訊就會把Router2的地址加到自己的路由表中並註明是通過 Fa0/0連線的。這個狀態稱為:Two-way 狀態,相對穩定狀態但是還沒有真正成為鄰居關係。接下來進行 Exstart 狀態,還沒有真正進行資訊交換呢, 只是一個選舉DR的過程:Router1會發出一個數據包說我來負責更新路由表,因為我的RID是192.168.10.10,但是Router2會說, 不行,我不認可,因為我的RID比你大。所以經過協商,Roter2應該是BDR了。再往下就是一個Exchange 狀態:交換雙方LSDB中的鏈路狀態資料庫的摘要資訊,注意僅僅是摘要資訊,為同步雙方的資料庫做準備。注意這裡使用的不再是hello報文,是DD報 文,也就是說Router1發出一個DD報文給對方,對方收到後會發出LSACK,大家一看ACK太熟悉了,好多地方我們都使用過ACK,如TCP建立連 接,通訊,拆除連線過程中,DHCP的工作過程中等等,都用到達ACK這個詞,在這裡也是一個意思就是給對方一個確認,因為如果沒有確認,對方會重傳!再 往下就進入了Load 狀態,這才是真正根據需要來調整自己的鏈路狀態資料庫,沒有的加進來,如果我已經有了,再做出比較應該不應該做更新,等等操作。最後完全結束之後進行是一 個FULL狀態,完全狀態。所有的鏈路狀態資料庫保持同步!那麼如果又有網路鏈路發生改變了,則LSU的資訊(LSU更新包中包含LSA狀態資訊)只會發 給DR,然後由DR再通過組播洪泛到本區域的其他路由器上。其他路由器再根據鏈路狀態重新計算出新的路由表出來。 這中間會用到鏈路狀態樹和最短路徑樹兩個概念,我們簡單看一下:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

在OSPF中是用頻寬作為metric的標準叫 cost,一般每個路由器都是以自己為根來計算到達對方所需要的一個開銷,用10的8次方來除以頻寬,越小說明頻寬越大,路徑最優,就放到路由表中也就是最短路徑樹中。

以上只是簡單分析了一下OSPF的工作過程。在此給出一張截圖供大家參考:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

OSFP雖然說理論知識很多,但是配置起來很簡單,我們來看一下具體的配置:

啟用 OSPF:

(Config)# router ospf 程序ID 範圍是 1-65535

其中這個程序ID,用於區分不同的OSPF協議,這只是一個本地程序ID,隨便取,也就是說只是區分一個路由器上的多個OSPF協議,跟別的路由器沒有關係可以不同。

指定網段

(config-router)network 網路號 反向掩碼 area 區域號

注意這裡區域號必須要求一樣

檢視啟用的路由協議:

Show ip protocols

檢視當前路由表:

Show ip route

查直OSPF樣關資訊

Show ip ospf interface

同樣我們還是通過一個實驗來結束OSPF的學習:

Lab:: 動態路由協議OSPF

實驗目的:通過OSPF路由協議使得網路中達到全網互通的目的

裝置:三臺Cisco系統路由器,2條V24線纜

拓撲圖:

RIP、OSPF、EIGRP 區別 - 0ldh - 愛情懶蟲

Router1上的配置:

Router>en

Router#conf t

Router(config)#hostname RA

RA(config)#interface s2/0

RA(config-if)#ip address 192.168.0.1 255.255.255.0

RA(config-if)#clock rate 64000

RA(config-if)#no shutdown

RA(config-if)#exit

RA(config)#interface fa 0/0

RA(config-if)#ip address 10.10.10.1 255.255.255.0

RA(config-if)#no shutdown

RA(config-if)#exit

RA(config)#router ospf 1

RA(config-router)#network 10.10.10.0 0.0.0.255 area 0

RA(config-router)#network 192.168.0.0 0.0.0.255 area 0

Router2的配置:

Router>enable

Router#conf t

Router(config)#hostname RB

RB(config)#interface s2/0

RB(config-if)#ip address 192.168.0.2 255.255.