本文轉自:http://blog.sina.com.cn/s/blog_14ecb57b30102xa17.html
一、OSPF協議
OSPF協議使用最短路徑優先(SPF)算法,典型的鏈路狀態路由協議;將網絡划分為多個區域,並使單個區域內的每個路由器都維護同一個數據庫,不同區域間不交換路由信息,區域間支持路由匯總;不需要定期更新、收斂速度快;支持變長子網掩碼(VLSM)。
運行OSPF的路由器需要一個能夠唯一標示自己的Router ID。一台路由器如果要運行OSPF協議,就必須存在Router ID。因為OSPF協議以Router ID識別鄰居路由器。
如果沒有配置ID號,系統會從當前接口的IP地址中自動選一個作為路由器的ID號。一般Router ID手動配置較好。
1.1、概述DR和BDR
DR,即指Designated Rouer,指派路由
比如,在一個以太網環境中這五台路由器之間希望交換同步路由信息,它們之間使用的是網狀的邏輯拓撲。如下圖所示:
圖22-1
這時如果希望它們之間能夠迅速同步,需要多條鏈路,這樣維護成本是比較大的。我們可以在網絡上選擇一個路由器出來,讓它來當"老大",然后規定其他的路由器如果希望與另一個路由器通訊,那么只要經過這個"老大"就可以了。所以如果我們把C當成"老大",則拓撲就變成了下面這樣:
圖22-2
這樣所有的路由器之間通訊都通過C路由器,就減少了路由信息在網絡上的洪泛。節約了網絡帶寬。那么這個路由器C就是咱們所說的DR,指派路由器(Designated Rouer)。
那關鍵是如果有一天這個路由器C壞了,怎么辦?
為了實現冗余,我們再來指定一個BDR(Backup DR),如我們在這里再指定路由器D作為BDR,那么這個拓撲圖又變了,如下圖所示:
圖22-3
網絡上有這么多路由器,到底哪一個是DR,哪一個是BDR?
在OSPF中默認每10秒中發一次Hello報文! 里面就包含了Router ID,如果40秒還沒有收到的話,則宣稱該鄰居死亡。那么當選舉DR/BDR的時候就先比較Hello包中的優先級(priority)優先級最高的為DR,次高的為BDR,但是默認優先級都為1,所以這個意義不大!那么在優先級相同的情況下就開始比較我們剛剛介紹的一個東西了Router ID,RID值最高的為DR,次高的為BDR。
修改優先級可以使用命令: (config-if)#ip ospf cost 0-255 255最高
當你把優先級設置為0以后,該路由器就不能成為DR或者是BDR,只能是DROther。
DROther只和DR/BDR形成鄰接關系,所有的路由器將組播Hello包到地址224.0.0.5以便它們能跟蹤其他鄰居的信息,即DR將洪泛LSU到224.0.0.5這個組播地址上;DROther 只能能過組播地址224.0.0.6將LSU(鏈路狀態更新)到所有的DR上。只有DR/BDR監聽這個組播地址。
#定義使用OSPF路由協議
Router(config)#router ospf process-id
說明:其中這個進程ID,用於區分不同的OSPF協議,這只是一個本地進程ID,隨便取,也就是說只是區分一個路由器上的多個OSPF協議,跟別的路由器沒有關系可以不同。
#分配網絡到特定的區域
Router(config-router)#network address mask area area-id
說明:注意這里區域號必須要求一樣
1.2、具體配置實例
圖22-4
上實驗拓撲圖為三台Cisco系統路由器。配置如下:
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.255.0
RB(config-if)#no shutdown
RB(config-if)#exit
RB(config)#interface s3/0
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)#exit
RB(config)#router ospf 1
RB(config-router)#network 192.168.0.0 0.0.0.255 area 0
RB(config-router)#network 192.168.1.0 0.0.0.255 area 0
Router3的配置:
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface s2/0
Router(config-if)#ip address 192.168.1.2 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface fa 0/0
Router(config-if)#ip address 20.20.20.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#router ospf 1
Router(config-router)#network 192.168.1.0 0.0.0.255 area 0
Router(config-router)#network 20.20.20.0 0.0.0.255 area 0
Router(config-router)#exit
1.3、驗證OSPF配置
show ip protocols可以顯示路由協議的配置情況
show ip route可以顯示當前的路由表,路由條目帶有"O"標記的就是OSPF協議所生成的路由。
show ip route ospf只顯示由OSPF協議所生成的路由。
show ip ospf interface核實接口是否已經被配置到目標區域了。
show ip ospf能顯示所執行過的SPF算法的次數
驗證我們在PC2上去ping PC1
1.4、OSPF的網絡類型
⑴廣播型網絡, 比如以太網,Token Ring和FDDI,這樣的網絡上會選舉一個DR和BDR,DR/BDR的發送的OSPF包的目標地址為224.0.0.5,運載這些OSPF包的幀的目標MAC地址為0100.5E00.0005;而除了DR/BDR以外的OSPF包的目標地址為224.0.0.6,這個地址叫AllDRouters。
⑵NBMA網絡, 比如X.25,Frame Relay,和ATM,不具備廣播的能力,在這樣的網絡上要選舉DR和BDR,因此鄰居要人工來指定。
⑶點到多點網絡, 是NBMA網絡的一個特殊配置,可以看成是點到點鏈路的集合. 在這樣的網絡上不選舉DR和BDR。
⑷點到點網絡, 比如T1線路,是連接單獨的一對路由器的網絡,點到點網絡上的有效鄰居總是可以形成鄰接關系的,在這種網絡上,OSPF包的目標地址使用的是224.0.0.5,這個組播地址稱為AllSPFRouters。