目录

简介

先决条件

要求

使用的组件

规则

问题

解决方案

相关信息

简介

本技术说明解释了当拨号器接口配置为点对点链路时OSPF邻接关系的形成问题。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。

规则

有关文件规则的更多信息请参见“ Cisco技术提示规则”。

问题

主速率接口(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配置显示网络类型为点对点：

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发送到序列为0xB41的3.3.3.2(RTR-A)，并接收序列号为0x1D06的3.3.3.2(RTR-A)的第一个DBD。邻居协商仍未完成。

第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在双向状态后发送单播数据包的行为。现在，RTR-B只接收发往自身的数据包，而RTR-C接收发往自身的数据包。以这种方式更改网络类型可确保OSPF路由器在PRI、BRI或拨号器接口上形成邻接关系。

要更改network-type，请输入以下配置命令，按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命令，我们可以验证网络类型是点对多点且状态已满。

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 之间的拨号

- OSPF 支持页

- 技术支持 - Cisco Systems