EIGRP Features and Operation
EIGRP是1種無分類(classless),增強的距離向量路由協議,和IGRP類似,EIGRP也使用AS,但是和IGRP不同的是,EIGRP在它的路由更新信息中要包含子網掩碼的信息.這樣,在我們設計的網絡的時候,就允許我們使用VLSM和summarization.EIGRP有時候也算是混合型路由協議,因爲它同時具有了距離向量路和鏈路狀態的一些特徵:比如它不像OSPF那樣發送鏈路狀態包而發送傳統的距離向量更新;EIGRP也有鏈路狀態協議的特徵比如它在相鄰router啓動的時候同步路由表,然後只在拓撲結構發生變化的時候發送1些更新.這樣就使得EIGRP能夠很好的在
1個大型網絡中工作.EIGRP支持的跳數多達255.EIGRP的主要特點如下:
1.通過PDMs(Protocol-Dependent Module)來支持IP,IPX和AppleTalk
2.有效的鄰router的發現
3.通過可靠傳輸協議(Reliable Transport Protocol,RTP)進行通訊
4.通過擴散更新算法(Diffusing Update Algorithm,DUAL)來選擇最佳路徑
Protocol-Dependent Module
EIGRP的1大特點是它可以支持幾種網絡層協議:IP,IPX和AppleTalk等.能像EIGRP那樣支持數種網絡層協議的還有Intermediate System-to-Intermediate System(IS-IS)協議,但是這個協議只支持IP和Connectionless Network Service(CLNS).EIGRP通過PDMs來支持不同的網絡層協議.每個EIGRP的PDM保持1個單獨的路由信息表來裝載某種協議(比如IP)的路由信息.也就是有IP/EIGRP表,IPX/EIGRP的表和AppleTalk/EIGRP表
Neighbor Discovery
在運行了EIGRP的router彼此進行交換信息之前,它們首先必須成爲鄰居(neighbor).建立鄰居關係必須滿足以下3個條件:
1.Hello信息或接受收ACK
2.AS號匹配
3.K值
鏈路狀態協議趨向於使用Hello信息來建立鄰居關係,它不會像距離向量那樣週期性的發送路由更新.爲了保持鄰居關係,運行了EIGRP的router必須持續從鄰居那裏收到Hellos
如果不在1個AS內,router之間是不會共享路由信息的,也不會建立鄰居關係.這樣做的優點是在大型網絡中可以減少特定某個AS內路由信息的傳播
當EIGRP發現新鄰居的時候,就開始通告整個路由表給別的router,當所有的router都知道新成員的加入,學習到新的路徑以後,從那開始,路由表中有變動的部分纔會傳播給別的router.當router接收到鄰居的更新以後,把它們保存在本地數據庫表裏
看下幾個術語:
1.可行距離(feasible distance):到達一個目的地的最短路由的度
2.後繼(successor):後繼是一個直接連接的鄰居router,通過它具有到達目的地的最短路由.通過後繼router將包轉發到目的地
3.通告距離(reported distance):相鄰router所通告的相鄰router自己到達某個目的地的最短路由的度
4.可行後繼(feasible successor):可行後繼是一個鄰居router,通過它可以到達目的地,不使用這個router是因爲通過它到達目的地的路由的度比其他router高,但它的通告距離小於可行距離,因而被保存在拓撲表中,用做備擇路由
Reliable Transport Protocol(RTP)
EIGRP使用一種叫做RTP的私有協議,來管理使用了EIGRP的router之間的通信,如RTP的名字,可靠(reliable)即爲這個協議的關鍵.RTP負責EIGRP數據包到所有鄰居的有保證和按順序的傳輸.它支持多目組播或單點傳送數據包的混合傳輸/出於對效率的考慮.只有某些E IGRP數據包被保證可靠傳輸.RTP確保在相鄰router間正在進行的通信能夠被維持.因此,它爲鄰居維護了一張重傳表.該表指示還沒有被鄰居確認的數據包.未確認的可靠數據包最多可以被重傳1 6次或直到保持時間超時,以它們當中時間更長的那個爲限.EIGRP所使用的多目組播地址是224.0.0.10 Diffusing Update Algorithm(DUAL)
EIGRP使用DUAL來選擇和保持到遠端的最佳路徑.它能使router判決某鄰居通告的一個路徑是否處於循環狀態,並允許router找到替代路徑而無須等待來自其他router的更新.這樣做有助於加快網絡的匯聚.這個算法顧及以下幾點:
1.備份的路由線路
2.支持VLSM
3.動態路由恢復
4.沒有發現線路的話發送查詢尋找新路線
Using EIGRP to Support Large Networks
EIGRP在大型網絡中能夠工作的很好,包含了很多優點比如:
1.在1個單獨的router上可以支持多個AS
2.支持VLSM和summarization
3.路由發現和保持
Multiple AS
只有AS號相同的router才能共享路由信息.把大型網絡分成不同的AS,可以有效的加快匯聚.EIGRP的AD爲90,而外部EIGRP(external EIGRP)的AD爲170
VLSM Support and Summarization
之前說過EIGRP支持VLSM,也支持不連續子網.什麼是不連續子網?,如下圖:
如圖可以看到,2個子網172.16.10.0/24和172.16.20.0/24由10.3.1.0/24來連接,但是routerA和B認爲它們只有網絡172.16.0.0
EIGRP支持在任何運行EIGRP的router上summary的手動創建,這樣可以減少路由表的體積.EIGRP自動把網絡summarize到等級邊界,如下圖:
?
Route Discovery and Maintenance
類似一些鏈路狀態的協議,EIGRP通過Hello信息來發現鄰居;而它又和距離向量類似,使用傳聞路由的機制,即不主動去發現,而是聽從別人的信息.EIGRP使用一系列的表來存儲信息:
1.鄰居表,記錄了鄰居的一些信息
2.拓撲表,記錄了網絡中的拓撲狀態
3.路由表,根據這個來做路由決定
EIGRP Metrics
EIGRP使用混合度,包含到4個方面:
1.帶寬
2.延遲(delay)
3.負載(load)
4.可靠性(reliability)
5.最大傳輸單元(maximum transmission unix,MTU)
默認情況下EIGRP使用帶寬和延遲來決定最佳路徑
Configuration EIGRP
配置EIGRP,首先在全局配置模式下使用router eigrp [AS號]命令.接下來再使用network命令定義直接相連的網絡.仍然可以像配置IGRP那樣使用passive-interface命令來禁止某個接口接收或發送Hello信息.並且記住EIGRP的AD是90
來看1個配置實例,如圖:
Router Network Address Interface Address
RouterA 192.168.10.0 fa0/0 192.168.10.1
192.168.20.0 s0/0 192.168.20.1
RouterB 192.168.20.0 s0/0 192.168.20.2
192.168.40.0 s0/1 192.168.40.1
192.168.30.0 fa0/0 192.168.30.1
RouterC 192.168.40.0 s0/0 192.168.40.2
192.168.50.0 fa0/0 192.168.50.1
配置RouterA:
RouterA(config)#router eigrp 10
RouterA(config-router)#network 192.168.10.0
RouterA(config-router)#network 192.168.20.0
RouterA(config-router)#^Z
RouterA#
記住配置EIGRP和配置IGRP十分類似,唯一不同的是EIGRP是無分類路由(classless routing)
配置RouterB:
RouterB(config)#router eigrp 10
RouterB(config-router)#network 192.168.20.0
RouterB(config-router)#network 192.168.30.0
RouterB(config-router)#network 192.168.40.0
RouterB(config-router)#^Z
RouterB#
配置RouterC:
RouterC(config)#router eigrp 10
RouterC(config-router)#network 192.168.40.0
RouterC(config-router)#network 192.168.50.0
RouterC(config-router)#^Z
RouterC#
這樣配置看上去好象沒什麼問題,EIGRP的AD比之前配置的RIPv1和IGRP的低,但是有個問題就是:增加了CPU的負擔,而且佔用了額外的帶寬
還有1點要注意的是自動summarization,router默認會向分級邊界進行summarize.如下圖:
A的配置如下:
A(config)#router eigrp 100
A(config-router)#netw 172.16.0.0
A(config-router)#netw 10.0.0.0
A(config-router)#no auto-summary
B的配置如下:
B(config)#router eigrp 100
B(config-router)#netw 172.16.0.0
B(config-router)#netw 10.0.0.0
B(config-router)#no auto-summary
使用no auto-summary命令後,運行了EIGRP的router就不會相互進行通告
Verifying EIGRP
在剛纔配置好的情況下使用show ip route命令查看路由信息,如下:
RouterA#sh ip route
(略)
D 192.168.30.0/24 [90/2172416] via 192.168.20.2, 00:04:36, Serial0/0
(略)
注意字母D代表DUAL,即代表EIGRP,AD爲90
show ip route eigrp命令只顯示路由表中的EIGRP選項
show ip eigrp neighbors:顯示所有的EIGRP鄰居
show ip eigrp topology:顯示EIGRP拓撲表條目,如下:
RouterC#sh ip eigrp topology
(略)
P 192.168.40.0/24, 1 successors, FD is 21469856
Via Connected, Serial0
(略)
注意前面的P代表passive狀態,這樣的狀態是正常的如果看見的是A即active狀態而不是P,說明router失去了到這個網絡的路徑並且在尋找替代路徑
Open Shortest Path First(OSPF) Basics
在1個大型網絡中,假如不是所有的設備都是Cisco的,EIGRP明顯就不行,因爲它是私有的.所以就可以使用OSPF協議或者路由redistribution(路由協議之間的翻譯服務).OSPF使用Dijkstra算法,是1種鏈路狀態協議.OSPF匯聚快速,支持多個耗費相同的路徑.和EIGRP不同的是,OSPF只支持IP路由.OSPF也能夠設計網絡爲層次化的,這樣就把1個大的網絡分割成幾個小的網絡,叫做區域(area).這是OSPF最好的設計方法.把OSPF設計成層次化的好處是:
1.減少路由成本(overhead)
2.加速匯聚
3.把大網絡分割成小的區域
下面是1個典型的OSPF設計圖,如下:
注意這個圖,BR爲骨幹router(backbone router,BR),連接到這個骨幹的爲區域0或者骨幹區域(backbone area),OSPF必須要有個區域0所有的router應該儘可能的連接到這個區域.連接其他區域到骨幹區域的爲區域邊界router(area border router,ABR),ABR必須至少有1個接口位於區域0中.OSPF運行在1個AS中,而且能夠連接多個AS,連接多個AS的router爲自治系統邊界router(autonomous system boundary router,ASBR)
OSPF Terminology
來看一些OSPF的術語:
1.link:網絡或分配給網絡的router的接口.當接口被加到OSPF的進程中以後,OSPF把它認爲成是1條連接(link)
2.Router ID(RID):用來鑑別router的IP地址,Cisco通過使用迴環(loopback)接口的最高的IP地址來鑑別router.如果迴環接口沒有配置IP地址,OSPF將選擇所有物理接口中最高的IP地址
3.neighbors:2個或多個擁有連接到某個網絡的接口的router
4.adjacency:允許直接進行路由更新的運行了OSPF的2個router的關係.不像EIGRP,OSPF直接和建立了adjacency關係的鄰居共享路由信息.並不是所有的鄰居都是adjacency關係,這個取決於網絡類型和router的配置
5.neighborship database:所有運行OSPF的能夠接收Hello信息的router的名單列表.各種信息,包括RID和狀態等,都保持在每個router的neighborship database中
6.topology database:包含了從鏈路狀態通告(link state advertisement,LSA)包得來的信息.router把它輸入到Dijkstra算法中算出最短路徑
7.link state advertisement:共享在運行了OSPF的router之間的鏈路狀態和路由信息.router和與它建立了adjacency關係的交換LSA包
8.designated router(DR):多路訪問網絡中爲避免router間建立完全相鄰關係而引起大量開銷,OSPF在區域中選舉一個DR,每個router都與之建立完全相鄰關係.router用Hello信息選舉一個DR.在廣播型網絡裏Hello信息使用多播地址224.0.0.5週期性廣播,並發現鄰居.在非廣播型多路訪問網絡中,DR負責向其他router逐一發送Hello信息
9.backup designated router(BDR):多路訪問網絡中DR的備用router,BDR從擁有adjacency關係的router接收路由更新,但是不會轉發LSA更新
10.OSPF areas:連續的網絡和router的分組.在相同區域的router共享相同的area ID.因爲1個router1次可以成爲1個以上的區域的成員, area ID和接口產生關聯,這就允許了某些接口可以屬於區域1,而其他的屬於區域0.在相同的區域的router擁有相同的拓撲表.當你配置OSPF的時候,記住必須要有個區域0,而且這個一般配置在連接到骨幹的那個router上.區域扮演着層次話網絡的角色
11.boradcast(multi-access):廣播型(多路訪問)網絡.比如以太網,允許多個設備連接,訪問相同的網絡;而且提供廣播的能力.在這樣的網絡中必須要有1個DR和BDR
12.nonbroadcast multi-access(NBMA):這類網絡類型有幀中繼(Frame Relay),X.25和異步傳輸模式(Asynchronous Transfer Mode,ATM),這類網絡允許多路訪問,但是不提供廣播能力
13.point-to-point:點對點網絡.一個物理上的串行電路連接或者是邏輯上的,不需要DR和 BDR,鄰居是自動發現的
14.point-to-multipoint:點對多點網絡.不需要DR和BDR
SPF Tree Calculation
在1個區域內,每個router計算最佳最短的路徑,這個計算是基於拓撲數據庫裏的信息和最短路徑優先(shortest path first,SPF)算法的
SPF算法是OSPF的基礎.當router啓動後,它就初始化路由協議數據結構,然後等待下層協議關於接口已可用的通知信息.當router確認接口已準備好,就用OSPF Hello信息來獲取鄰居信息,即具有在共同的網絡上接口的router.router向鄰居發送Hello包並接收它們的Hello包.除了幫助學習鄰居外,Hello包也有keep-alive的功能
在多路訪問網絡中,Hello選出一個DR和一個BDR.DR負責爲整個網絡生成LSA,它可以減少網絡通信量和拓撲數據庫的大小
當兩個相鄰router的鏈接狀態數據庫同步後,就稱爲鄰接.在多路訪問網絡中,DR決定哪些router應該相鄰接,拓撲數據庫在鄰接router間進行同步.鄰接控制路由協議包的分發,只在鄰接點間交換
每個router週期性地發送LSA,提供其鄰接點的信息或當其狀態改變時通知其它router.通過對已建立的鄰接關係和鏈接狀態進行比較,失效的router可以很快被檢測出來,網絡拓撲相應地更動.從LSA生成的拓撲數據庫中,每個router計算最短路徑樹,以自己爲根.這個最短路徑樹就生成了路由表
Cisco使用基於帶寬的度,而其他廠商是用不同的標準來痕量度的.Cisco痕量度的公式爲100,000,000/帶寬(bps).比如100Mbps的快速以太網接口的耗費就爲1,10Mbps的就爲10,64Kbps的耗費爲1563.可以使用ip ospf cost命令來修改耗費,值的範圍是1到65535
Configuring OSPF
在CCNA的認證課程裏,我們只討論單域(single area)的OSPF配置.配置OSPF的2個要素:
1.啓用OSPF
2.配置OSPF的區域
Enabling OSPF
啓用OSPF在全局配置模式下使用router ospf [進程ID]命令,進程ID範圍是1到65535.可以在同1個router上使用不止1個的OSPF進程,但是這並不等於多域(multi-area)的OSPF.第二個進程保持完整的拓撲數據庫的拷貝,而且獨立於第一個進程進行管理通信 Configuring OSPF Areas
OSPF使用wildmask來進行配置,如下:
RouterA(config)#router ospf 1
RouterA(config-router)#network 10.0.0.0 0.255.255.255 area 0
如上,0.255.255.255爲wildmask,0的部分表示必須精確匹配,255表示爲任意匹配.network 10.0.0.0 0.255.255.255 area 0這個命令的作用是:鑑定OSPF操作的接口,而且也會加進OSPF LSA通告的範圍呢.OSPF使用這個命令查找所有處在10.0.0.0的網絡裏的接口,然後把它們放進區域0
來看1個配置實例,如圖:
Router Network Address Interface Address
RouterA 192.168.10.0 fa0/0 192.168.10.1
192.168.20.0 s0/0 192.168.20.1
RouterB 192.168.20.0 s0/0 192.168.20.2
192.168.40.0 s0/1 192.168.40.1
192.168.30.0 fa0/0 192.168.30.1
RouterC 192.168.40.0 s0/0 192.168.40.2
192.168.50.0 fa0/0 192.168.50.1
由於OSPF的AD爲110,IGRP的爲100,EIGRP的爲90.所以要先去掉之前所配置的協議,RouterA配置如下:
RouterA(config)#no router eigrp 10
RouterA(config)#no router igrp 10
RouterA(config)#no router rip
RouterA(config)#router ospf 132
RouterA(config-router)#network 192.168.10.1 0.0.0.0 area 0
RouterA(config-router)#network 192.168.20.1 0.0.0.0 area 0
RouterA(config-router)#^Z
RouterA#
RouterB的配置如下:
RouterB(config)#no router eigrp 10
RouterB(config)#no router igrp 10
RouterB(config)#no router rip
RouterB(config)#router ospf 1
RouterB(config-router)#network 192.168.0.0 0.0.255.255 area 0
RouterB(config-router)#^Z
RouterB#
注意這裏的參數192.168.0.0 0.0.255.255;代表查找192.168.0.0裏的任何接口,並把它們放到區域0裏
RouterC的配置如下:
RouterC(config)#no router eigrp 10
RouterC(config)#no router igrp 10
RouterC(config)#no router rip
RouterC(config)#router ospf 64999
RouterC(config-router)#network 192.168.4.0 0.0.0.255 area 0
RouterC(config-router)#network 192.168.5.0 0.0.0.255 area 0
RouterC(config-router)#^Z
RouterC#
Verifying OSPF Configuration
使用show ip route命令來驗證下,如下:
RouterA#sh ip route
(略)
O 192.168.30.0/24 [110/65] via 192.168.20.2, 00:01:07, Serial0/0
(略)
注意上面的O代表OSPF,AD爲110,度爲65
其他的一些驗證命令:
show ip ospf:顯示每條或所有ODPF進程的相關信息,包括RID,區域信息,SPF信息和LAS計時器信息等,如下:
RouterA#sh ip ospf
Routing Process “ospf 132” with ID 192.168.20.1
(略)
如上可知道RID爲192.168.20.1.即router的最高的那個IP地址
show ip ospf database:顯示拓撲數據庫信息,如下:
RouterA#sh ip ospf database
OSPF Router with ID (192.168.20.1) (Process ID 132)
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
192.168.20.1 192.168.20.1 648 0x80000003 0x005E2B 3
(略)
show ip ospf interface:
1.接口IP地址信息
2.區域的分配信息
3.進程ID
4.RID
5.網絡類型
6.耗費(cost)
7.優先級(priority)
8.DR/BDR
9.計時器間隔(timer intervals)
10.鄰接的鄰居信息
show ip ospf neighbor:顯示鄰居的信息,如果DR和BDR存在的話,它們的信息也會被顯示出來
show ip protocols:顯示配置了的所有路由協議的相關信息
OSPF and Loopback Interfaces
在配置OSPF路由協議的時候配置迴環(loopback)接口是很重要的1件事.Cisco建議你配置OSPF的時候順便配置迴環接口.所謂迴環接口,是邏輯接口而非物理接口,即不是你觸摸的到的router上的真正的接口.作用是作爲診斷OSPF而用.如果router的某一個接口由於故障down 掉而不可用了,此時你怎麼通過telnet來連接並進行管理用呢?所以就引入了迴環接口是概念,迴環接口永遠不會down掉,你就可以通過連上回環接口來進行管理
Configuring Loopback Interfaces
配置迴環接口前先使用show ip ospf命令查看RID,接下來對接口進行配置,如下:
RouterA的配置:
RouterA(config)#int loopback0
RouterA(config-if)#ip address 172.16.10.1 255.255.255.0
RouterA(config-if)#no shut
RouterA(config-if)#^Z
RouterA#
RouterB的配置:
RouterB(config)#int lo0
RouterB(config-if)#ip address 172.16.20.1 255.255.255.0
RouterB(config-if)#no shut
RouterB(config-if)#^Z
RouterB#
RouterC的配置:
RouterC(config)#int lo0
RouterC(config-if)#ip address 172.16.30.1 255.255.255.0
RouterC(config-if)#no shut
RouterC(config-if)#^Z
RouterC#
注意2個迴環接口的IP地址配置機制爲任意配置,但是IP地址必須處於不同的子網內
Verifying Loopbacks and RIDs
驗證迴環接口的地址,可以使用show running-config的命令查看,如下:
RouterC#sh run
(略)
!
interface Loopback0
ip address 172.16.30.1 255.255.255.0
!
(略)
可以使用show ip ospf database命令,show ip ospf interface命令和show ip ospf命令查看RID信息.記住在你重新啓動router前,新的RID是不會顯示出來的,如下,啓動後的RID信息:
RouterC#sh ip ospf
Routing Process “ospf 64999” with ID 172.16.30.1 and Domain ID 0.0.253.231
(略)
如上可以看出假如迴環接口IP地址高於物理接口IP地址,將以迴環接口的IP地址作爲新的RID