目录

简介

先决条件

要求

使用的组件

规则

示例网络

Reason 1:网络拓扑变化

解决方案

Reason 2:定义为广播的网络类型

解决方案

Reason 3:一个或多个路由器不理解需求电路

Reason 4:主机路由重分发到OSPF数据库

解决方案 1：使用no peer neighbor-route命令

解决方案 2：使用route-map命令

解决方案 3：使用不同的主网

Reason 5:OSPF需求电路在异步接口上配置

解决方案

Reason 6:通过多链路PPP配置OSPF需求电路

解决方案

相关信息

简介

当开放最短路径优先(OSPF)链路配置为需求电路时，OSPF Hello会被抑制，且定期LSA刷新不会在链路上泛洪。这些数据包仅在首次交换链路或其包含的信息发生更改时启动链路。这样，当网络拓扑稳定时，底层数据链路层便可关闭。上下行的需求电路表示需要调查的问题。本文档演示了一些可能的原因并提供了解决方案。

有关按需电路的详细信息，请参阅OSPF需求电路功能。

先决条件

要求

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

使用的组件

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

规则

有关文档规则的详细信息，请参阅 Cisco 技术提示规则。

示例网络

以下网络图和配置描述了上述问题。

路由器 1

路由器 2

interface BRI1/1

ip address 192.158.254.13 255.255.255.252

ip ospf demand-circuit

router ospf 20

network 192.158.254.0 0.0.0.255 area 0

interface BRI1/0

ip address 192.158.254.14 255.255.255.252

router ospf 20

network 192.158.254.0 0.0.0.255 area 0

注意：您只需在链路的一端配置需求电路。但是，如果在两端配置此命令，则不会造成任何损害。

在上图中，路由器1和2在ISDN链路上运行OSPF需求电路。路由器1和2之间的链路不断出现，这使OSPF需求电路的用途落空。show dialer命令的输出显示，由于OSPF组播Hello数据包，链路已接通。

Router1# show dialer

BRI1/1:1 - dialer type = ISDN

Idle timer (120 secs), Fast idle timer (20 secs)

Wait for carrier (30 secs), Re-enable (2 secs)

Dialer state is data link layer up

Dial reason: ip (s=192.168.254.13, d=224.0.0.5)

链路可能会启动，原因有多。下面，我们将探讨几个常见案例并提供解决方案。

Reason 1:网络拓扑变化

每当OSPF网络拓扑发生变化时，都必须通知OSPF路由器。在这种情况下，应启动OSPF需求电路，以便邻居交换新信息。交换新数据库后，链路可能再次关闭，邻接关系将保持FULL状态。

解决方案

要确定链路是否因网络拓扑变化而启动，请使用debug ip ospf monitor命令。它显示了哪些LSA正在更改，如下所示：

Router1# debug ip ospf monitor

OSPF: Schedule SPF in area 0.0.0.0

Change in LS ID 192.168.246.41, LSA type R,

OSPF: schedule SPF: spf_time 1620348064ms wait_interval 10s

以上输出显示路由器LSA中路由器ID为192.168.246.41的更改导致数据库重新同步。如果网络稳定，则此调试输出不显示任何内容。

要减少链路抖动对需求电路的影响，请将包含需求电路的区域配置为完全末节区域。如果这不可行，并且网络中存在持续的链路抖动，则需求电路可能不是您的理想选择。

Reason 2:定义为广播的网络类型

在链路上配置需求电路时，链路类型必须定义为点对点或点对多点。任何其他链路类型都可能导致链路不必要地启动，因为如果网络类型不是点对点或点对多点，则不会抑制OSPF Hello。以下是在路由器1和2上说明此问题的示例配置。

路由器 1

路由器 2

interface BRI1/1

ip address 192.158.254.13 255.255.255.252

ip ospf network broadcast

router ospf 20

network 192.158.254.0 0.0.0.255 area 0

interface BRI1/0

ip address 192.158.254.14 255.255.255.252

ip ospf network broadcast

router ospf 20

network 192.158.254.0 0.0.0.255 area 0

将网络类型定义为广播时，OSPF Hello会以每个Hello间隔打开链路。show dialer输出显示，上次启动链路时是由于OSPF Hello。

Router1# show dialer

BRI1/1:1 - dialer type = ISDN

Idle timer (120 secs), Fast idle timer (20 secs)

Wait for carrier (30 secs), Re-enable (2 secs)

Dialer state is data link layer up

Dial reason: ip (s=192.168.254.13, d=224.0.0.5)

Interface bound to profile Di1

Current call connected 00:00:08

Connected to 57654 (R2)

解决方案

要解决此问题，请将网络类型更改为点对点或点对多点。此处我们删除了网络类型广播，因此默认情况下它配置为点对点广播。

路由器 1

路由器 2

interface BRI1/1

ip address 192.158.254.13 255.255.255.252

router ospf 20

network 192.158.254.0 0.0.0.255 area 0

interface BRI1/0

ip address 192.158.254.14 255.255.255.252

router ospf 20

network 192.158.254.0 0.0.0.255 area 0

通过将网络类型更改为点对点或点对多点，OSPF Hello在链路上被抑制，而需求电路链路将停止抖动。

Reason 3:一个或多个路由器不理解需求电路

当OSPF域中的一个或多个路由器不理解需求电路时，会定期刷新LSA。请参阅何时通过OSPF需求电路发送定期LSA刷新？部分，了解如何解决此问题。

Reason 4:主机路由重分发到OSPF数据库

我们以下网络图为例：

路由器1和2之间的链路为131.108.1.0/24，需求电路在路由器1和2之间配置。路由器1将路由信息协议(RIP)路由重分发到OSPF。

路由器 1

router ospf 1

redistribute rip subnets

network 131.108.1.0 0.0.0.255 area 1

!

router rip

network 131.108.0.0

由于链路封装类型是PPP，因此两台路由器都会为链路的另一端安装主机路由，如下所示。

Router1# show ip route 131.108.1.2

Routing entry for 131.108.1.2/32

Known via "connected", distance 0, metric 0 (connected, via interface)

Routing Descriptor Blocks:

* directly connected, via BRI1/1

Route metric is 0, traffic share count is 1

内部网关路由协议(IGRP)和RIP是有类路由协议，因此配置中的network语句是用于有类网络131.108.0.0。因此，131.108.1.2/32的主机路由被视为由RIP发起，并重新分发到OSPF中，作为外部路由，如下所示。

Router1# show ip ospf database external 131.108.1.2

OSPF Router with ID (131.108.3.1) (Process ID 1)

Type-5 AS External Link States

LS age: 298

Options: (No TOS-capability, DC)

LS Type: AS External Link

Link State ID: 131.108.1.2 (External Network Number )

Advertising Router: 131.108.3.1

LS Seq Number: 80000001

Checksum: 0xDC2B

Length: 36

Network Mask: /32

Metric Type: 2 (Larger than any link state path)

TOS: 0

Metric: 20

Forward Address: 0.0.0.0

External Route Tag: 0

当链路断开时，/32消失，OSPF将其理解为拓扑的变化。需求电路将链路重新打开，以将/32掩码的MAXAGE版本传播到其邻居。当链路接通时，/32掩码将再次生效，因此LSA老化时间将重置。然后，当链路的Dead计时器启动后，链路再次断开。此过程会重复，而需求电路链路会不断抖动。解决此问题的方法有三种，如下所示。

解决方案 1：使用no peer neighbor-route命令

在运行需求电路的BRI接口下，配置no peer neighbor-route。这会阻止安装/32掩码。您只能在路由器1上使用如下所示的配置，但我们建议在两端配置此命令以保持一致。

R1# configure terminal

R1(config)# interface BRI1/1

R1(config-if)# no peer neighbor-route

解决方案 2：使用route-map命令

当从RIP重分发到OSPF时，请使用route-map命令并拒绝/32，以便不会将其注入OSPF数据库。此配置命令仅在执行重分发的路由器上是必需的，在本例中为Router 1。

首先，我们必须创建访问列表以匹配/32掩码。然后，我们将此访问列表应用到路由映射，并在应用redistribution命令时使用路由映射，如下所示。

R1# configure terminal

R1(config)# access-list 1 deny host 131.108.1.2

R1(config)# access-list 1 permit any

R1# configure terminal

R1(config)# route-map rip-ospf

R1(config-route-map)# match ip address 1

R1(config)# router ospf 1

R1(config-router)# redistribute rip subnets route-map rip-ospf

解决方案 3：使用不同的主网

对RIP或OSPF域使用不同的主网。其思想是在需求电路链路上设置不同的主网，这样当链路以PPP封装启动时，它会为链路的另一端安装主机路由。如果主机路由与RIP中使用的主网不同，则RIP不拥有此安装了PPP的主机路由，因为它没有主网的network语句。以下网络图显示了一个示例。

RIP域现在位于141.108.0.0网络下，而OSPF域（和需求电路链路）位于131.108.0.0网络下。

Reason 5:OSPF需求电路在异步接口上配置

当您在异步（异步）接口上配置需求电路时，当第2层关闭时，实际物理接口关闭。这会触发OSPF数据库的更改，并且异步接口再次恢复以交换数据库。第2层再次关闭，这将再次触发数据库更改，因此此过程会不断重复。

以下场景用于重现上述问题。

以下配置用于上述场景。

路由器 1

路由器 2

interface Async 1

ip address 192.158.254.13 255.255.255.252

encapsulation ppp

ip ospf demand-circuit

dialer in-band

async default routing

async mode dedicated

ppp authentication chap

ppp chap hostname Router1

ppp chap password 7 13061E010803

!

router ospf 20

network 192.158.254.0 0.0.0.255 area 1

interface Async 1

ip address 192.158.254.14 255.255.255.252

encapsulation ppp

ip ospf demand-circuit

dialer in-band

dialer map ip 192.158.254.13 broadcast 12345

dialer-group 2

async default routing

async mode dedicated

ppp authentication chap callin

!

dialer-list 2 protocol ip permit

!

router ospf 20

network 192.158.254.0 0.0.0.255 area 1

OSPF默认网络类型是异步接口上的点对点，但需求电路仍会继续接通链路。

Rouer1# show ip ospf interface Async1

Async1 is up, line protocol is up (spoofing)

Internet Address 192.158.254.13/32, Area 1

Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost:869

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:02

Index 1/2, flood queue length 0

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

Last flood scan length is 0, maximum is 1

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

Neighbor Count is 0, Adjacent neighbor count is 0

Suppress hello for 0 neighbor(s)

解决方案

需求电路不断启动链路的原因是，当第2层在空闲超时过期后关闭时，整个接口会断开。但是，在BRI或PRI的情况下，当其中一个信道断开时，接口仍保持打开状态（在欺骗模式下）。 要解决该问题，必须配置拨号器接口，因为该接口从不关闭。拨号器接口保持打开状态（在欺骗模式下）。

路由器 1

路由器 2

interface Async 1

no ip address

encapsulation ppp

async default routing

async mode dedicated

dialer in-band

dialer rotary-group 0

!

interface Dialer0

ip address 192.158.254.13 255.255.255.252

encapsulation ppp

ip ospf demand-circuit

ppp authentication chap

ppp chap hostname Router1

ppp chap password 7 13061E010803

!

router ospf 20

network 192.158.254.0 0.0.0.255 area 0

interface Async 1

no ip address

encapsulation ppp

async default routing

async mode dedicated

dialer in-band

dialer rotary-group 0

!

interface Dialer0

ip address 192.158.254.14 255.255.255.252

encapsulation ppp

ip ospf demand-circuit

dialer map ip 192.158.254.13 broadcast 12345

dialer-group 2

ppp authentication callin

!

dialer-list 2 protocol ip permit

!

router ospf 20

network 192.158.254.0 0.0.0.255 area 0

由于拨号器接口从不关闭，因此不会在异步接口关闭时造成问题。

Reason 6:通过多链路PPP配置OSPF需求电路

多链路PPP功能可在存在多个WAN链路时用于负载均衡。在OSPF方面，需要记住的一个重要事项是多链路PPP的带宽。当组合多条链路时，多链路接口的带宽将发生变化。

以下场景用于重现上述问题。

以下配置用于上述场景。

路由器 1

路由器 2

interface Multilink1

ip address 192.158.254.1 255.255.255.0

no cdp enable

ppp multilink

no ppp multilink fragmentation

multilink-group 1

!

interface Serial0/1/0:0

no ip address

ip route-cache distributed

encapsulation ppp

tx-queue-limit 26

no fair-queue

ppp multilink

multilink-group 1

!

interface Serial0/1/1:0

no ip address

ip route-cache distributed

encapsulation ppp

tx-queue-limit 26

no fair-queue

ppp multilink

multilink-group 1

!

interface Serial0/1/2:0

no ip address

ip route-cache distributed

encapsulation ppp

tx-queue-limit 26

no fair-queue

ppp multilink

multilink-group 1

!

router ospf 20

network 192.158.254.0 0.0.0.255 area 1

interface Multilink1

ip address 192.158.254.2 255.255.255.0

no cdp enable

ppp multilink

no ppp multilink fragmentation

multilink-group 1

!

interface Serial0/1/0:0

no ip address

ip route-cache distributed

encapsulation ppp

tx-queue-limit 26

no fair-queue

ppp multilink

multilink-group 1

!

interface Serial0/1/1:0

no ip address

ip route-cache distributed

encapsulation ppp

tx-queue-limit 26

no fair-queue

ppp multilink

multilink-group 1

!

interface Serial0/1/2:0

no ip address

ip route-cache distributed

encapsulation ppp

tx-queue-limit 26

no fair-queue

ppp multilink

multilink-group 1

!

router ospf 20

network 192.158.254.0 0.0.0.255 area 1

以下输出显示，多链路PPP中有三个串行接口捆绑在一起。

Router1# show ppp multilink

Multilink1, bundle name is Router2

Bundle up for 00:05:35

Bundle is Distributed

0 lost fragments, 0 reordered, 0 unassigned

0 discarded, 0 lost received, 3/255 load

0x1226 received sequence, 0x1226 sent sequence

Member links: 3 active, 0 inactive (max not set, min not set)

Serial1/0/0:0, since 00:05:35, no frags rcvd

Serial1/0/1:0, since 00:05:35, no frags rcvd

Serial1/0/2:0, since 00:05:35, no frags rcvd

接口带宽将代表链路的聚合带宽，此带宽将用于OSPF开销计算。

Router1# show interface multilink 1

Multilink1 is up, line protocol is up

Hardware is multilink group interface

Internet address is 192.168.254.1/24

MTU 1500 bytes, BW 5952 Kbit, DLY 100000 usec,

reliability 255/255, txload 3/255, rxload 3/255

Encapsulation PPP, loopback not set

Keepalive set (10 sec)

DTR is pulsed for 2 seconds on reset

LCP Open, multilink Open

Open: IPCP

Last input 00:00:00, output never, output hang never

Last clearing of "show interface" counters 00:06:39

Input queue: 1/75/0/0 (size/max/drops/flushes); Total output drops: 0

Queueing strategy: fifo

Output queue :0/40 (size/max)

5 minute input rate 241000 bits/sec, 28 packets/sec

5 minute output rate 241000 bits/sec, 28 packets/sec

6525 packets input, 9810620 bytes, 0 no buffer

Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

6526 packets output, 9796112 bytes, 0 underruns

0 output errors, 0 collisions, 0 interface resets

0 output buffer failures, 0 output buffers swapped out

0 carrier transitions

show ip ospf interface的输出显示当前OSPF开销(16)。

Router1# show ip ospf interface multilink 1

Multilink1 is up, line protocol is up

Internet Address 192.158.254.13/24, Area 1

Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost:16

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:02

Index 1/2, flood queue length 0

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

Last flood scan length is 0, maximum is 1

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

Neighbor Count is 0, Adjacent neighbor count is 0

Suppress hello for 0 neighbor(s)

现在，一条链路断开，我们可以在日志中看到：

Router1# show log | include down

%LINK-3-UPDOWN: Interface Serial1/0/0:0, changed state to down

%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0/0:0, changed state to down

如果我们再次检查带宽，它将与我们之前看到的不同。现在显示的是3968，捆绑包只有两个接口，而不是三个，因为一个接口关闭。请注意，接口下方仍为up状态：

Router1# show ppp multilink

Multilink1, bundle name is Router2

Bundle up for 00:05:35

Bundle is Distributed

0 lost fragments, 0 reordered, 0 unassigned

0 discarded, 0 lost received, 3/255 load

0x1226 received sequence, 0x1226 sent sequence

Member links: 2 active, 1 inactive (max not set, min not set)

Serial1/0/1:0, since 00:05:35, no frags rcvd

Serial1/0/2:0, since 00:05:35, no frags rcvd

Serial1/0/0:0 (inactive)

此外，PPP多链路仍然显示，但OSPF开销现在更改为25，因为一条链路断开

Router1# show ip ospf interface multilink 1

Multilink1 is up, line protocol is up

Internet Address 192.158.254.13/24, Area 1

Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost:25

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:02

Index 1/2, flood queue length 0

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

Last flood scan length is 0, maximum is 1

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

Neighbor Count is 0, Adjacent neighbor count is 0

Suppress hello for 0 neighbor(s)

这将触发SPF计算，而OSPF将启动需求电路。如果链路持续摆动，我们可能会看到需求电路持续摆动，因为每次链路加起来或从多链路PPP捆绑中删除时，开销都会更改。

解决方案

OSPF中支持PPP多链路，但只要捆绑内的所有链路保持工作状态，需求电路就会稳定。一旦链路断开，即使没有与其关联的IP地址，它也会影响OSPF开销计算，因此，OSPF将运行SPF以重新计算最佳路径。要解决此问题，唯一的解决方案是使用以下命令手动配置OSPF开销。

路由器 1

路由器 2

interface Multilink1

ip address 192.158.254.1 255.255.255.0

no cdp enable

ip ospf cost 10

ppp multilink

no ppp multilink fragmentation

multilink-group 1

!

router ospf 20

network 192.158.254.0 0.0.0.255 area 1

interface Multilink1

ip address 192.158.254.2 255.255.255.0

no cdp enable

ip ospf cost 10

ppp multilink

no ppp multilink fragmentation

multilink-group 1

!

router ospf 20

network 192.158.254.0 0.0.0.255 area 1

此命令将确保每次在多链路PPP捆绑包中添加或删除链路时，OSPF开销不会受到影响。这将稳定PPP多链路上的OSPF需求电路。

相关信息

- OSPF 支持页

- 技术支持 - Cisco Systems