1. OSPF的鄰居(Neighbors)
同一個網段上的路由器可以成為鄰居。鄰居是通過Hello報文來選擇的,Hello 報文使用ip多播方式在每個端口定期發送。路由器一旦在其相鄰路由器的Hello 報文中發現他們自己,則他們就成為鄰居關系了,在這種方式中,需要通信的雙方確認。鄰居的協商只在主地址(PRimary address) 間協商。
兩個路由器之間假如他們不滿足下列條件,則他們就不能成為鄰居:
1、Area-id:兩個路由器必須有共同的網段上,它們的端口必須屬于該網段上的同一個區,當然這些端口必須屬于同一個子網。
2 驗證(Authentication OSPF)答應給每一個區域配置一個密碼來進行互相驗證。路由器必須交換相同的密碼,才能成為鄰居。
3、Hello Interval和Dead Interval: OSPF協議在每個網段上交換Hello 報文,這是Keeplive的一種形式,路由器用它來確認該網段上存在哪些路由器,并且選定一個指定路由器DR(Designated Router)。Hello Interval定義了路由器上OSPF端口上發送Hello 報文時間間隔長度(秒為單位)。Dead Interval是指鄰居路由器公布其狀態為DOWN之前,沒有收到其Hello報文的時間。
OSPF協議需要兩個鄰居路由器的這些時間間隔相同,假如這些時間間隔不同,這些路由器就不能成為鄰居路由器。可在路由器的端口模式下設置這些定時器:
ip ospf hello-interval <seconds>
ip ospf dead-interval <seconds>
4 Stub區標記:兩個路由器為了成為鄰居還可以在Hello報文中通過協商Stub區的標記來達到。Stub區的定義會影響鄰居選擇的過程。
2. 鄰接(Adjacencies)
鄰居關系形成后路由器之間就會進行鄰接關系的形成。成為鄰接關系的路由器之間,不僅僅是進行簡單的Hello報文的交換,而是進行數據庫的交換/為了減少特定網段上的交換信息。OSPF協議在每一個多址可達的網段上選擇一個路由器作為指定路由器(DR Designated Router), 選擇另外一個路由器作為備份的指定路由器BDR (Backup Designated Router), BDR作為DR的備份。這種設計的考慮是讓DR或BDR成為信息交換的中心,而不是讓每個路由器與該網段上其它路由器兩兩做更新信息的交換。路由器首先與DR、 BDR交換更新信息,然后DR 、BDR將這些更新信息轉發給該網段上的其他路由器。這樣信息交換的復雜度就會從O (n*n)降到O (n),其中n是多址可達網段上的路由器的數量。如圖1, 顯示了DR和BDR的關系。
在上圖中,所有的路由器在同一個多址可達網段上,通過相互交換Hello報文來選擇DR和BDR。 在該網段上的每個路由器(他們之間已經成為Neighbor)會進一步與DR和BDR建立鄰接(Adjacency) 關系。
2.1 DR 的選擇
DR與BDR的選擇是通過Hello報文來進行的,而Hello報文又是通過每個網段上IP多播報文來進行交換的。在一個網段上,OSPF優先級最高的那臺路由器將成為DR, OSPF優先級次高的那臺路由器將成為BDR。 若OSPF的優先級相同,則路由器的Router ID大者將成為DR。 默認情況下,OSPF的優先級為1。 一定要記住DR和BDR的概念只在每個多址可達的網段上才有,如Point to Point, Point to MultiPoint等網絡上沒有這個概念。
可以在端口模式下使用下面的命令來設置路由器端口的OSPF優先級:
ip ospf priority <value>
可用在特權模式下使用下面的命令查看端口的OSPF優先級:
show ip ospf interface Ethernet 0
假如端口的OSPF優先級為0 則表示該端口永遠不會被選擇為DR或BDR。
OSPF端口優先級為0時,端口狀態為DROTHER。 如圖2,顯示了DR選擇過程。
在上圖Segment 1中,RTA與RTB的端口OSPF優先級相同,都為1 (默認值),但是RTB的RID (4.4.4.4) 比RTA的RID (3.3.3.3)大,則RTB將成為那個網段的DR。 在Segment 2中,RTC比RTB相應OSPF端口的優先級高,則RTC是該網段的DR。
2.2 建立鄰接關系(Adjacency)
鄰接關系的建立過程由多個步驟組成,成為鄰接關系的路由器會保留一份精確的鏈路狀態數據庫。下面是路由器之間在形成鄰接關系過程中端口狀態變化的一個簡單總結:
1、DOWN狀態,表示在多址可達網絡中沒有收到任何信息。
2、Attempt狀態,在Frame Relay和X.25等NBMA網絡中,這種狀態表示路由器沒有從其鄰居路由器上接收任何信息。
3、Init,狀態端口檢測到從鄰居路由器上來的Hello報文,但還沒有建立起雙向通信。
4、Two-way 狀態,路由器與其鄰居路由器建立起雙向通信,路由器會在其鄰居路由器發送過來的Hello報文中看到自己。在這個狀態的末段,將進行DR和BDR的選擇,鄰居路由器間決定是否建立鄰接關系。
5、Exstart狀態,在該狀態中路由器會產生一個初始序列號,用來交換信息報文,這個序列號能確保路由器收到的是最新的報文信息,一個路由器將成為主,另一個路由器則成為輔,主路由器會獲得輔路由器的信息。
6、Exchang狀態,路由器通過發送DD報文(Database Description Packects)來建立他們的整個鏈路狀態數據庫。在這個狀態過程中,報文會通過泛洪(Fooding) 到路由器的其他端口上。
7、Loading狀態,在這個狀態中,路由器將結束信息的交換,路由器會建立一個鏈路狀態請求列表(Link-state Request List) 和一個鏈路狀態轉發列表(Link-state Retransmission List)。所有的不完整的或廢棄的信息都將放到請求列表,中所有的更新報文將被送到轉發列表中,直到該報文得到回應。
8、Full狀態,在這個狀態過程中,鄰接關系已經形成,鄰居路由器完全鄰接,鄰接路由器具有相同的鏈路狀態數據庫。
如圖3 RTA、RTB、RTD和RTF的以太口0在同一個區域0.0.0.0 中。下面是RTA和RTF的配置,RTB、RTD的配置類似,在這里就不一一列出。
RTA#
hostname RTA
interface Loopback0
ip address 203.250.13.41 255.255.255.0
interface Ethernet0
ip address 203.250.14.1 255.255.255.0
router ospf
network 203.250.13.41 0.0.0.0 area 1
network 203.250.0.0 0.0.255.255 area 0.0.0.0
RTF#
hostname RTF
interface Ethernet0
ip address 203.250.14.2 255.255.255.0
router ospf 10
network 203.250.0.0 0.0.255.255 area 0.0.0.0
可以用show ip ospf interface <interface> 來快速檢查各個端口屬于那個區域。尤其OSPF 網絡配置命令的順序非常重要。如RTA配置中的斜體部分,假如"network 203.250.0.0 0.0.255.255 area 0.0.0.0" 語句放在"network 203.250.13.410.0.0.0 area 1"之前,所有的端口都會將屬于區域0, 這會有問題的,因為Loopback端口被劃在區域1中。讓我們看一看RTA、 RTB、 RTD、 RTF的show ip
ospf interface e 0的輸出:
RTA#sh ip ospf interface e 0
Ethernet0 is up, line protocol is up
Internet Address 203.250.14.1 255.255.255.0, Area 0.0.0.0
Router ID 203.250.13.41, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State BDR, Priority 1
Designated Router (ID) 203.250.15.1, Interface address 203.250.14.2
Backup Designated router (ID) 203.250.13.41, Interface address 203.250.14.1
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in
0:00:02
Neighbor Count is 3, Adjacent neighbor count is 3
Adjacent with neighbor 203.250.15.1 (Designated Router)
Loopback0 is up, line protocol is up
Internet Address 203.250.13.41 255.255.255.255, Area 1
Router ID 203.250.13.41, Network Type LOOPBACK, Cost: 1
Loopback interface is treated as a stub Host
RTF#sh ip o int e 0
Ethernet0 is up, line protocol is up
Internet Address 203.250.14.2 255.255.255.0, Area 0.0.0.0
Router ID 203.250.15.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 203.250.15.1, Interface address 203.250.14.2
Backup Designated router (ID) 203.250.13.41, Interface address 203.250.14.1
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in
0:00:08
Neighbor Count is 3, Adjacent neighbor count is 3
Adjacent with neighbor 203.250.13.41 (Backup Designated Router)
RTD#sh ip ospf interface e 0
Ethernet0 is up, line protocol is up
Internet Address 203.250.14.4 255.255.255.0, Area 0.0.0.0
Router ID 192.208.10.174, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DROTHER, Priority 1
Designated Router (ID) 203.250.15.1, Interface address 203.250.14.2
Backup Designated router (ID) 203.250.13.41, Interface address 203.250.14.1
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in
0:00:03
Neighbor Count is 3, Adjacent neighbor count is 2
Adjacent with neighbor 203.250.15.1 (Designated Router)
Adjacent with neighbor 203.250.13.41 (Backup Designated Router)
RTB#sh ip o int e 0
Ethernet0 is up, line protocol is up
Internet Address 203.250.14.3 255.255.255.0, Area 0.0.0.0
Process ID 10, Router ID 203.250.12.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DROTHER, Priority 1
Designated Router (ID) 203.250.15.1, Interface address 203.250.14.2
Backup Designated router (ID) 203.250.13.41, Interface address 203.250.14.1
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in
0:00:03
Neighbor Count is 3, Adjacent neighbor count is 2
Adjacent with neighbor 203.250.15.1 (Designated Router)
Adjacent with neighbor 203.250.13.41 (Backup Designated Router)
上面的輸出信息非常重要,讓我們看一看RTA的輸出信息,以太口0屬于區域0, RID為203.250.13.41, RID是路由器上所有端口中IP地址最大者,假如有Loopback地址,則為最大的Loopback地址。RID的選擇只是在路由器啟動時或OSPF進程重啟時進行。RTA以太口的狀態是BDR, 由于所有的路由器OSPF端口的優先級都相同(Priority) 1, 所以要根據RID來選擇DR, RTF的RID最大,則其以太口成為DR。 通過同樣的過程,RTA的以太口成為BDR, RTB和RTD的以太口狀態為DROTHER。
同樣要注重鄰居數目和鄰接數目。RTD有三個鄰居,而鄰接路由器只有兩個,一個為DR, 另一個為BDR, RTF有三個鄰居,三個鄰接路由器 ,因為他自己為DR。
網絡類型也是一個非常重要的概念,它將決定端口的狀態。在如以太網的廣播型的網絡中DR、 BDR的選擇與最終用戶沒有關系。誰是DR, 誰是BDR, 似乎沒有多大關系。但在其他的情況下,如幀中繼、X.25等NBMA網絡中,DR、BDR 將影響OSPF 的功能是否正常。很幸運,在介紹point-to-point 和point-to-multipoint 子接口時,DR的選擇不再是個問題了。OSPF協議在NBMA網絡中的應用將在下一章介紹。
我們看一看另外一個命令:
show ip ospf neighbor
RTD#sh ip o nei
Neighbor ID Pri State Dead Time Address Interface
203.250.12.1 1 2WAY/DROTHER 0:00:37 203.250.14.3 Ethernet0
203.250.15.1 1 FULL/DR 0:00:36 203.250.14.2 Ethernet0
203.250.13.41 1 FULL/BDR 0:00:34 203.250.14.1 Ethernet0
上述命令顯示的是一個特定網段上路由器與所有鄰居的狀態關系。“NeighborID” 就是RID 。RTD與RTB只是鄰居關系,狀態為2WAY/DROTHER, RTD與RTA、 RTF的狀態關系為FULL/BDR、 FULL/DR。
2.3 點到點端口的鄰接關系
在點到點串行鏈路上,OSPF協議會始終保持兩端的鄰居成為鄰接關系,在這種鏈路上沒有DR或BDR的概念。串口的網絡狀態為Point to Point。
2.4 NBMA網絡中的鄰接關系
在Frame Relay、 X.25、 ATM等NBMA網絡中配置OSPF協議時需要非凡小心。
OSPF協議會把這些網絡與其他廣播型網絡如(以太網)同等看待。一般PVC和SVC提供的只是部分連接,而達不到完全網狀連接;不能提供多址可達的物理網絡。在這樣的網絡中,DR和BDR的選擇將會有問題,因為DR和BDR的選擇要求網絡中的路由器進行全網連接(Full Mesh)。由于NBMA網絡沒有廣播功能,DR和BDR與網絡中其他路由器也可以通過靜態列表來指定。用下面的命令:
neigbhor ip-address [priority number] [poll-interval seconds]
其中"ip-address" 和"priotity" 是鄰居路由器的端口IP地址和優先級。
“poll-interval” 是NBMA端口發送Hello報文測試鄰居路由器狀態的時間間隔。
這個命令一般用在有可能成為DR或BDR的路由器上(端口的OSPF優先級一定不能為0)。 下面這個網絡中DR的選擇非常重要。

在圖4, RTA具備成為DR的條件,它的一個端口與網絡中其他的路由器是全鏈接的。DR的選擇可通過設置端口的OSPF優先級來決定。Neighbor命令在這里只講這些,另外一種方法,可以定置OSPF端口的網絡類型,這樣就不用考慮底層的物理介質是什么了。
新聞熱點
疑難解答