目錄

簡介

必要條件

需求

採用元件

慣例

問題

解決方案

相關資訊

簡介

本技術說明解釋當撥號器介面配置為點對點鏈路時，形成OSPF鄰接關係的問題。

必要條件

需求

本文件沒有特定需求。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

問題

主速率介面(PRI)、基本速率介面(BRI)和撥號器介面上的OSPF網路型別為點對點，這意味著一個介面無法與多個鄰居形成鄰接關係。當PRI、BRI或撥號器介面嘗試建立OSPF鄰接關係時，鄰居在exstart/exchange過程中停滯是一個常見問題。我們來看一個例子。

使用show ip ospf neighbor命令，我們可以看到鄰居狀態停滯在「EXSTART」中。

RTR-A# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface

3.3.3.3           1   EXSTART/  -     00:00:37    3.3.3.3         Serial6/0:23

3.3.3.4           1   EXSTART/  -     00:00:39    3.3.3.4         Serial6/0:23

RTR-B# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface

3.3.3.2           1   EXSTART/  -     00:00:36    3.3.3.2         BRI0

RTR-C# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface

3.3.3.2           1   EXSTART/  -     00:00:35    3.3.3.2         BRI0

RTR-Bs配置顯示network-type is point-to-point:

RTR-B# show ip ospf interface bri0

BRI0 is up, line protocol is up (spoofing)

Internet Address 3.3.3.3/24, Area 2

Process ID 1, Router ID 3.3.3.3, Network Type POINT_TO_POINT, Cost: 1562

Transmit Delay is 1 sec, State POINT_TO_POINT,

Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

Hello due in 00:00:06

Index 1/1, flood queue length 0

Next 0x0(0)/0x0(0)

Last flood scan length is 1, maximum is 1

Last flood scan time is 0 msec, maximum is 0 msec

Neighbor Count is 1, Adjacent neighbor count is 0

Suppress hello for 0 neighbor(s)

可以使用debug ip ospf adj指令對此情況進行偵錯。讓我們看一下在上圖中的RTR-B上運行此命令時拍攝的一些輸出示例：

1: Send DBD to 3.3.3.2 on BRI0 seq 0xB41 opt 0x42 flag 0x7 len 32

2: Rcv DBD from 3.3.3.2 on BRI0 seq 0x1D06 opt 0x42 flag 0x7 len 32

mtu 1500 state EXSTART

3: First DBD and we are not SLAVE

4: Rcv DBD from 3.3.3.2 on BRI0 seq 0xB41 opt 0x42 flag 0x2 len 92 mtu

1500 state EXSTART

5: NBR Negotiation Done. We are the MASTER

6: Send DBD to 3.3.3.2 on BRI0 seq 0xB42 opt 0x42 flag 0x3 len 92

7: Database request to 3.3.3.2

8: sent LS REQ packet to 3.3.3.2, length 12

9: Rcv DBD from 3.3.3.2 on BRI0 seq 0x250 opt 0x42 flag 0x7 len 32

mtu 1500 state EXCHANGE

10: EXCHANGE - inconsistent in MASTER/SLAVE

11: Bad seq received from 3.3.3.2 on BRI0

12: Send DBD to 3.3.3.2 on BRI0 seq 0x2441 opt 0x42 flag 0x7 len 32

13: Rcv DBD from 3.3.3.2 on BRI0 seq 0x152C opt 0x42 flag 0x2 len 92

mtu 1500 state EXSTART

14: Unrecognized dbd for EXSTART

15: Rcv DBD from 3.3.3.2 on BRI0 seq 0xB42 opt 0x42 flag 0x0 len 32

mtu 1500 state EXSTART

16: Unrecognized dbd for EXSTART

第1 - 3行：RTR-B將第一個DBD傳送到3.3.3.2(RTR-A)，其序列號為0xB41，並從3.3.3.2(RTR-A)接收第一個DBD，其序列號為0x1D06。鄰居協商仍然未完成。

第4 - 6行：RTR-B從3.3.3.2(RTR-A)接收響應，該響應指示RTR-A接收到RTR-B的第一DBD。由於RTR-B具有更高的路由器ID，因此RTR-A選擇自己從屬。在接收到來自RTR-A的確認後，RTR-B宣告自己為主裝置，並傳送第一個DBD及其中的資料。請注意序列號，其值為0xB42。由於RTR-B是主裝置，因此只有它才能增加序列號。

第7行：RTR-B從RTR-A請求資料，因為RTR-A指示它有更多資料要傳送（在從RTR-A接收的最後DBD中標誌設定為0x2）。

第8行：RTR-B將鏈路狀態請求資料包傳送到3.3.3.2(RTR-A)。 這是第3類OSPF資料包。此資料包通常傳送到鄰居的IP地址。在這種情況下，鄰居的IP地址是其路由器ID。

第9 - 11行：RTR-B接收來自從裝置(RTR-A)的回覆，該回覆具有完全不同的序列號和標誌0x7，該標誌是初始標誌。此DBD用於另一台路由器（最有可能是RTR-C），但RTR-B錯誤地收到了它。RTR-B宣告存在差異，因為0x7標誌表示在鄰接交換期間，通過設定MS（主/從）位，從裝置已將其狀態更改為主裝置。RTR-B也抱怨序列號順序錯誤。從屬裝置應始終遵循主裝置的序列號。

第12行：RTR-B將第一個DBD傳送到3.3.3.2以重新選擇主從裝置，從而重新初始化鄰接關係。

第13 - 14行：RTR-B收到來自3.3.3.2(RTR-A)的DBD，表示它是從裝置，而不識別RTR-B的序列號。RTR-B宣告它無法識別此DBD，因為主從協商尚未完成。此DBD資料包用於另一台路由器。

第15行：RTR-B收到來自舊DBD的3.3.3.2(RTR-A)的回覆，但為時已晚，因為RTR-B已重新初始化鄰接過程。

第16行：RTR-B無法識別此DBD，因為它是「舊」鄰接關係，而RTR-B已斷開此鄰接關係。

這個過程將無休止地重複。

解決方案

根據RFC 2328 第8.1節，即使介面達到雙向狀態，OSPF也會傳送點對點網路型別的多點傳送封包。由於RTR-A試圖與RTR-B和RTR-C形成鄰接關係，RTR-B接收用於RTR-C的DBD分組，RTR-C接收用於RTR-B的DBD分組。

要解決此問題，請將所有路由器的網路型別更改為點對多點。這會將OSPF的行為更改為在2路狀態後傳送單播資料包。現在RTR-B只接收發往它自己的資料包，RTR-C接收發往它自己的資料包。以這種方式更改網路型別可以確保OSPF路由器在PRI、BRI或撥號器介面上形成鄰接關係。

要更改網路型別，請輸入以下配置命令，按ENTER鍵結束每行。以變更RTR-B為例。

RTR-B# configure terminal

RTR-B(config)# int bri 0

RTR-B(config-if)# ip ospf network point-to-multipoint

RTR-B(config-if)# end

現在，如果我們檢視RTR-B的show命令，可以檢驗network-type是點對多點的，並且狀態是full。

RTR-B# show ip ospf interface bri0

BRI0 is up, line protocol is up (spoofing)

Internet Address 3.3.3.3/24, Area 2

Process ID 1, Router ID 3.3.3.3, Network Type POINT_TO_MULTIPOINT, Cost: 1562

Transmit Delay is 1 sec, State POINT_TO_MULTIPOINT,

Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5

Hello due in 00:00:16

Index 1/1, flood queue length 0

Next 0x0(0)/0x0(0)

Last flood scan length is 1, maximum is 1

Last flood scan time is 0 msec, maximum is 0 msec

Neighbor Count is 1, Adjacent neighbor count is 1

Adjacent with neighbor 172.16.141.10

Suppress hello for 0 neighbor(s)

RTR-B# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface

172.16.141.10     1   FULL/  -        00:01:36    3.3.3.2         BRI0

相關資訊

- 使用DDR撥號器對映配置BRI到BRI撥號

- OSPF支援頁

- 技術支援 - Cisco Systems