为响应OSPF RFC 1793,在Cisco IOS®软件版本11.2中引入了开放最短路径优先(OSPF)的需求电路选项 。OSPF每10秒发送一次hello消息,并每30分钟刷新一次其链路状态通告(LSA)。这些功能可保持邻居关系,并确保链路状态数据库准确,并且使用的带宽比路由信息协议(RIP)和内部网关路由协议(IGRP)中的类似功能少得多。 不过,这种流量对于需求电路来说仍太大。使用OSPF需求电路选项可抑制Hello和LSA刷新功能。OSPF可以建立需求链路以形成邻接关系并执行初始数据库同步,即使需求电路的第2层断开,邻接关系仍保持活动状态。
Cisco IOS版本12.1(2)T引入了OSPF的泛洪减少功能。此功能旨在最大限度地减少因定期刷新具有大量LSA的OSPF域中的LSA而创建的流量。与OSPF需求电路功能不同,泛洪减少通常在租用线路上配置。泛洪减少使用与需求电路相同的技术来抑制周期性LSA刷新。此功能已提交以标准化到IETF OSPF工作组。
本文档的读者应掌握以下这些主题的相关知识:
OSPF
IGRP
RIP
本文档中的信息基于以下软件和硬件版本:
思科IOS版本12.1(2)T及更高版本
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
OSPF按需电路有两个主要功能,使其与普通电路不同。
抑制定期Hello
抑制定期 LSA 刷新
在链路上配置OSPF需求电路时,会抑制定期OSPF问询。定期问询仅在点对点和点对多点网络类型上被抑制。在任何其他网络类型上,OSPF问询仍通过接口发送。
OSPF需求电路不会定期刷新每30分钟一次的LSA。当建立需求电路链路时,相邻路由器之间会交换一个唯一的选项位(DC位)。如果两台路由器成功协商DC位,则会记录该位,并在LSA时代中设置一个称为DoNotAge位(DNA)的特定位。 DNA位是LS年龄字段中最有意义的位。通过设置此位,LSA将停止老化,并且不会发送定期更新。
使用OSPF需求电路功能时,只有两种情况会定期刷新LSA:
如果网络拓扑发生变化
如果OSPF域中有路由器无法理解需求电路
首先,由于路由器必须发送新的LSA信息来更新邻居的拓扑更改,因此在停止LSA刷新时,无法做太多。
但是,有一种特殊的方法来处理第二种情况。区域边界路由器(ABR)是下面网络图中的路由器D,它知道路由器C无法理解DNA LSA,因为它发现DC位在路由器C发起的LSA的选项字段中是清晰的。在这种情况下,ABR(路由器D)通知能够请求电路的路由器不要使用DNA位设置来发起LSA,因为路由器不理解DNA位。
此网络图显示了定期LSA刷新通过需求电路发送的场景:
ABR(路由器D)在主干中发出指示LSA,告知主干中的所有路由器不要发起任何DNA LSA。当路由器A(另一个ABR)看到此指示LSA时,它会将指示LSA发送到其他区域,不包括主干区域和任何末节区域或非末节区域(NSSA)区域。路由器D的此指示LSA如下所示。指示LSA是第4类汇总LSA,其中链路状态ID是ABR本身,而不是自治系统边界路由器(ASBR)。 换句话说,链路状态ID和通告路由器字段是相同的,如下所示:
RouterD# show ip ospf database asbr-summary Adv Router is not-reachable LS age: 971 Options: (No TOS-capability, No DC) LS Type: Summary Links(AS Boundary Router) Link State ID: 141.108.1.129 (AS Boundary Router address) Advertising Router: 141.108.1.129 LS Seq Number: 80000004 Checksum: 0xA287 Length: 28 Network Mask: /0 TOS: 0 Metric: 16777215
指示LSA的度量设置为无穷大。链路状态ID和通告路由器字段始终是发起指示LSA的ABR的路由器ID。在上述网络图中,路由器A和路由器B之间的链路配置为需求电路,但由于区域1中的路由器无法理解DNA LSA,因此不会有任何源自区域1的DNA LSA。因此,源于区域1的定期LSA更新会通过需求电路发送。
只有两种情况会导致OSPF ABR生成指示LSA:
网络中有一台路由器运行IOS 11.2或更低版本。
网络中有一台非Cisco路由器不支持需求电路。
将区域2配置为末节或NSSA区域。这可以防止路由器D发起的指示LSA由路由器A发送到区域2,因为区域2是末节区域,而且指示LSA(第4类汇总LSA)不能泛洪到末节区域。现在,由于区域2没有看到任何指示LSA,因此它会继续在区域2内生成DNA LSA,并且路由器A和路由器B之间的链路不会启动,因为定期LSA刷新被抑制。
思科建议您在非主干区域配置OSPF需求电路,并将这些区域设置为NSSA、末节或完全末节(后者更可取)。 这是为了最小化从其他区域注入到包含需求电路的区域的信息。因此,您可以最小化更改范围,这可以启动OSPF需求电路。有关OSPF需求电路功能的故障排除方案,请参阅“为什么OSPF需求电路不断启动链路”。
如果您的情况类似于上图所示,并且需求电路也是主干的一部分,则无法使用此解决方案,因为主干区域不能配置为末节或NSSA。
本节中的配置任务示例显示创建需求电路所需的配置。只需一端在接口下拥有需求电路命令,因为如果另一端能够理解需求电路,它会在hello数据包中自动协商此功能。如果它不能理解需求电路,它会忽略此选项。
RouterA# show run interface Serial0 interface Serial 0 encapsulation frame-relay ip address 141.108.1.1 255.255.255.0 ip ospf network-type point-to-mutipoint ip ospf demand-circuit !
注意:尽管需求电路仅在点对点或点对多点网络类型上使用,但可以对任何网络类型使用需求电路来抑制问询。
OSPF泛洪减少功能是对需求电路的细微修改,旨在减少因定期LSA刷新而引起的链路上的额外流量。它使用相同的机制来消除对定期LSA刷新的需求。通常,路由器不会立即连接到链路,并且无法识别它是配置为需求电路还是泛洪减少链路 — 这两种链路的数据库表示是相同的。
泛洪减少与需求电路的主要区别在于前者仅抑制周期性LSA刷新;它不会抑制定期hello数据包。因此,泛洪减少功能不会影响邻居路由器发生故障的检测。
泛洪减少链路的限制与需求电路相同。特别是,区域内的所有路由器必须支持需求电路功能,才能减少泛洪。需求电路和泛洪减少链路的故障排除技术也很常见。
此示例显示OSPF泛洪减少功能配置:
interface POS 0/0 ip address 192.168.122.1 255.255.255.0 ip ospf flood-reduction
如上所述,路由器的接口POS 0/0已配置为减少OSPF泛洪。链路上不发送定期LSA刷新,但会发送问询。