本文档介绍运行开放最短路径优先(OSPF)的路由器如何选择路由器ID、发送此值的数据包,以及如何对报告重复ID的路由器日志消息进行故障排除。
Cisco 建议您了解以下主题:
IP 路由协议
OSPF路由协议
本文档中的信息基于Cisco IOS®软件版本12.2。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
此配置也可用于以下硬件和软件版本:
所有路由器,例如2500和2600系列
第 3 层交换
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
默认情况下,当OSPF进程初始化时,它会选择路由器上最高的IP地址作为OSPF进程的路由器ID。路由器ID唯一标识OSPF域内的路由器。
如配置OSPF中所述,OSPF使用接口上配置的最大IP地址作为其路由器ID。如果与此IP地址关联的接口发生故障,或者该地址被删除,OSPF进程必须重新计算新的路由器ID,并从其接口重新发送其所有路由信息。
如果环回接口配置了IP地址,Cisco IOS软件将使用此IP地址作为其路由器ID,即使其他接口的IP地址更大。由于环回接口从不关闭,因此路由表实现了更高的稳定性。
OSPF自动优先选择环回接口,而不是其他任何类型的接口,并选择所有环回接口中的最高IP地址。如果没有环回接口,则选择路由器中的最高IP地址。不能将OSPF定向为使用任何特定接口。一旦路由器ID被选举出来,它将保持不变,除非OSPF进程重新启动或重新加载路由器。
注意:如果启动时没有具有有效IP地址的接口处于up/up状态,则OSPF报告无法将路由器ID错误消息分配给日志。
这些命令用于查看路由器ID。
R2-AGS#show ip ospf interface e0 Ethernet0 is up, line protocol is up Internet Address 1.1.1.2 255.255.255.0, Area 0 Process ID 1, Router ID 5.5.5.5, Network Type BROADCAST, Cost: 10 Transmit Delay is 1 sec, State BDR, Priority 1 Designated Router (ID) 6.6.6.6, Interface address 1.1.1.1 Backup Designated router (ID) 5.5.5.5, Interface address 1.1.1.2 Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in 0:00:07 Neighbor Count is 1, Adjacent neighbor count is 1 Adjacent with neighbor 6.6.6.6 (Designated Router)
使用Cisco IOS软件版本12.0(1)T中引入的router-id OSPF命令可以更改选择路由器上的最高IP地址作为路由器ID的默认行为。有关详细信息,请参阅Cisco Bug ID CSCdi38380(仅限注册客户)。使用OSPF router-id命令时,OSPF进程的路由器ID是手动选择的路由器ID。在本示例中,OSPF进程的路由器ID是10.10.10.10。
! router ospf 100 router-id 10.10.10.10
show ip ospf database命令也可用于检查路由器ID:
Router#show ip ospf database OSPF Router with ID (10.10.10.10) (Process ID 100)
在解释使用OSPF的重复路由器ID的解析之前,您需要了解五种OSPF数据包类型。以下是数据包类型:
hello
数据库说明(DD)
链路状态请求
链路状态更新
链路状态确认
所有OSPF数据包都以标准的24个二进制八位数报头开始。请注意,报头包含路由器ID字段,该字段指示始发OSPF数据包的路由的唯一ID。
version |类型 |数据包长度 |
路由器 ID |
区域 id |
校验和 | AuType |
身份验证 |
身份验证 |
数据包数据 |
通常,OSPF数据包传输链路状态通告(LSA),其中描述路由器的所有链路或接口以及链路的状态。虽然所有LSA以同一报头开始,但以下三个字段标识单个LSA:
类型
链路状态ID
通告路由器
OSPF使用链路状态更新数据包泛洪LSA并发送LSA以响应链路状态请求。OSPF邻居负责将相应的LSA重新封装到新的更新数据包中,以便进一步泛洪,从而将OSPF LSA传播到其源网络之外。因此,多个路由器可以检测并传播重复的路由器ID。
完成以下步骤以确定是否存在重复的路由器ID:
对应该具有此ID的路由器执行show ip ospf database router x.x.x.x命令。此命令显示路由器LSA(第1类)的内容,该路由器通告路由器及其所有直连接口。了解路由器的接口列表和分配的IP地址。
在报告重复数据的路由器上多次执行show ip ospf database router x.x.x.x命令。最短路径优先(SPF)算法可以每10秒运行一次。
如果捕获这些命令,您应该能够捕获更改的信息。本示例是show ip ospf database router命令的输出。
r2.2.2.2#show ip ospf database router 1.1.1.1 OSPF Router with ID (2.2.2.2) (Process ID 2) Router Link States (Area 0) LS age: 279 Options: (No TOS-capability, DC) LS Type: Router Links Link State ID: 1.1.1.1 !--- For router links, the Link State ID is always the same as the !--- advertising router (next line). Advertising Router: 1.1.1.1 !--- This is the router ID of the router which created !--- this LSA. LS Seq Number: 8000001A Checksum: 0xA6FA Length: 48 Number of Links: 2 Link connected to: another Router (point-to-point) !--- This line shows that this router (1.1.1.1) is a neighbor !--- with 2.2.2.2. (Link ID) Neighboring Router ID: 2.2.2.2 (Link Data) Router Interface address: 0.0.0.12 !--- In case of an unnumbered link, use the Management Information !--- Base (MIB) II IfIndex value, which usually starts with 0. Number of TOS metrics: 0 TOS 0 Metrics: 64 !--- This is the OSPF cost of the link that connects the two routers. Link connected to: a Stub Network !--- This entry represents the Ethernet segment 4.0.0.0/8. (Link ID) Network/subnet number: 4.0.0.0 (Link Data) Network Mask: 255.0.0.0 Number of TOS metrics: 0 TOS 0 Metrics: 10 !--- This is the OSPF cost of the Ethernet segment.
当两台路由器在OSPF域中使用相同的路由器ID时,路由可能无法正常工作。Cisco bug IDs CSCdr61598(仅限注册客户)和CSCdu08678(仅限注册客户)增强了重复路由器ID的检测和报告机制。访问Bug Toolkit(仅限注册客户)以查看有关这些Cisco Bug ID的其他信息。有两种重复的路由器ID类型:
区域重复路由器ID
%OSPF-4-DUP_RTRID1: Detected router with duplicate router ID 100.0.0.2 in area 0
解释- OSPF检测到该区域中具有相同路由器ID的路由器。
建议的操作 — OSPF路由器ID应该是唯一的。确保该区域中的所有路由器都具有唯一的路由器ID。
第4类LSA
%OSPF-4-DUP_RTRID2: Detected router with duplicate router ID 100.0.0.2 in Type-4 LSA advertised by 100.0.0.1
解释- OSPF检测到另一个区域中路由器ID相同的路由器。此路由器在第4类LSA中通告。
建议的操作 — OSPF路由器ID应该是唯一的。确保远程区域中的所有自治系统边界路由器(ASBR)都具有唯一的路由器ID。
当路由器同时充当OSPF域中的区域边界路由器(ABR)和ASBR时,可能会出现重复路由器ID的错误报告,如本示例日志消息所示。
OSPF-4-DUP_RTRID_AS Detected router with duplicate router ID 10.97.10.2 in Type-4 LSA advertised by 10.97.20.2
Cisco Bug ID CSCdu71404(仅限注册客户)解决了OSPF域范围的检测问题。
如果路由器收到第4类LSA,并且链路状态ID等于路由器ID,而路由器不是ABR,则会发生远程区域有效的路由器ID重复,并且应记录错误消息。
如果路由器不是ABR,它可以接收第4类LSA,该LSA从另一个ABR告知路由器。这种情况不代表路由器ID重复问题,因此不应记录错误消息。
第4类LSA也称为ASBR汇总LSA。发出show ip ospf database asbr-summary命令以观察这些LSA,如本示例所示。
ABR创建(第4类)ASBR汇总LSA以将ASBR的可达性通告到其他区域。
r2.2.2.2#show ip ospf database asbr-summary 1.1.1.1 OSPF Router with ID (2.2.2.2) (Process ID 2) Summary ASB Link States (Area 0) LS age: 266 Options: (No TOS-capability, DC) LS Type: Summary Links(AS Boundary Router) Link State ID: 1.1.1.1 (AS Boundary Router address) !--- ABR (Router 2.2.2.2) advertises that it knows how !--- to reach the ASBR (Router 1.1.1.1). Advertising Router: 2.2.2.2 LS Seq Number: 80000001 Checksum: 0x935C Length: 28 Network Mask: /0 TOS: 0 Metric: 64 !--- This is the cost of ABR to reach the ASBR.
如果LSA是第4类,则链路状态ID是所通告的ASBR的路由器ID。有关详细信息,请参阅OSPF如何将外部路由传播到多个区域。
故障排除是在集成Cisco Bug ID CSCdr61598(仅限注册客户)和Cisco Bug ID CSCdu08678(仅限注册客户)之前发布的Cisco IOS软件版本中完成的。
此映像是这些步骤中描述的单一区域网络的表示。
发出show proc cpu | include OSPF命令。这样您就可以看到利用CPU的OSPF进程。
r4#show proc cpu | include OSPF 3 4704 473 9945 1.38% 0.81% 0.68% 0 OSPF Hello 71 9956 1012 9837 1.47% 1.62% 1.41% 0 OSPF Router
如上例所示,OSPF的CPU使用率较高。这表明,链路稳定性或路由器ID重复肯定存在问题。
发出show ip ospf statistics命令。这允许您查看SPF算法是否比普通算法运行。
r4#show ip ospf statistics Area 0: SPF algorithm executed 46 times SPF calculation time Delta T Intra D-Intra Summ D-Summ Ext D-Ext Total Reason 00:01:36 0 0 0 0 0 0 0 N, 00:01:26 0 0 0 0 0 0 0 R, N, 00:01:16 0 0 0 0 0 0 0 R, N, 00:01:06 0 0 0 0 0 0 0 R, N, 00:00:56 0 0 0 0 0 0 0 R, N, 00:00:46 0 0 0 0 0 0 0 R, N, 00:00:36 0 0 0 0 0 0 0 R, N, kmbgvc 00:00:26 0 0 0 0 0 0 0 R, N, 00:00:16 0 0 0 0 0 0 0 R, N, 00:00:06 0 0 0 0 0 0 0 R, N,
show ip ospf statistics命令显示每10秒重新计算SPF,如上例所示。由路由器和网络LSA触发。当前路由器所在的区域存在问题。
发出show ip ospf database命令。
r4#show ip ospf database OSPF Router with ID (50.0.0.4) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 50.0.0.1 50.0.0.1 681 0x80000002 0x7E9D 3 50.0.0.2 50.0.0.2 674 0x80000004 0x2414 5 50.0.0.4 50.0.0.4 705 0x80000003 0x83D 4 50.0.0.5 50.0.0.5 706 0x80000003 0x5C24 6 50.0.0.6 50.0.0.6 16 0x80000095 0xAF63 6 50.0.0.7 50.0.0.7 577 0x80000005 0x86D5 8 Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 192.168.2.6 50.0.0.6 6 0x8000007A 0xABC7
show ip ospf database命令显示一个LSA较新(16岁),其序列号比同一OSPF数据库中的其他LSA高得多。您需要找出发送此LSA的路由器。由于通告路由器ID位于同一区域,因此它是已知的(50.0.0.6)。 此路由器ID很可能重复。您需要找出哪些其它路由器具有相同的路由器ID。
本示例显示了show ip ospf database命令的多个实例。
r4#show ip ospf database router adv-router 50.0.0.6 OSPF Router with ID (50.0.0.4) (Process ID 1) Router Link States (Area 0) LS age: 11 Options: (No TOS-capability, DC) LS Type: Router Links Link State ID: 50.0.0.6 Advertising Router: 50.0.0.6 LS Seq Number: 800000C0 Checksum: 0x6498 Length: 72 Number of Links: 4 Link connected to: a Transit Network (Link ID) Designated Router address: 192.168.2.6 (Link Data) Router Interface address: 192.168.2.6 Number of TOS metrics: 0 TOS 0 Metrics: 10 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 50.0.0.7 (Link Data) Router Interface address: 192.168.0.21 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 192.168.0.20 (Link Data) Network Mask: 255.255.255.252 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 50.0.0.6 (Link Data) Network Mask: 255.255.255.255 Number of TOS metrics: 0 TOS 0 Metrics: 1 r4#show ip ospf database router adv-router 50.0.0.6 OSPF Router with ID (50.0.0.4) (Process ID 1) Router Link States (Area 0) LS age: 7 Options: (No TOS-capability, DC) LS Type: Router Links Link State ID: 50.0.0.6 Advertising Router: 50.0.0.6 LS Seq Number: 800000C7 !--- The sequence number has increased. Checksum: 0x4B95 Length: 96 Number of Links: 6 !--- The number of links has increased although the network has been stable. Link connected to: a Stub Network (Link ID) Network/subnet number: 192.168.3.0 (Link Data) Network Mask: 255.255.255.0 Number of TOS metrics: 0 TOS 0 Metrics: 10 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 50.0.0.5 (Link Data) Router Interface address: 192.168.0.9 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 192.168.0.8 (Link Data) Network Mask: 255.255.255.252 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 50.0.0.2 (Link Data) Router Interface address: 192.168.0.2 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 192.168.0.0 (Link Data) Network Mask: 255.255.255.252 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 50.0.0.6 (Link Data) Network Mask: 255.255.255.255 Number of TOS metrics: 0 TOS 0 Metrics: 1
如果您知道自己的网络,您可以找到通告这些链路的路由器。前一个输出显示LSA由具有OSPF邻居50.0.0.7的路由器发送,而第二个输出显示邻居50.0.0.5和50.0.0.6。发出show ip ospf命令查找这些路由器并访问它们,以验证它们的OSPF路由器ID。在本例设置中,它们是R6和R3。
3>show ip ospf Routing Process "ospf 1" with ID 50.0.0.6 Supports only single TOS(TOS0) routes Supports opaque LSA r6#show ip ospf Routing Process "ospf 1" with ID 50.0.0.6 Supports only single TOS(TOS0) routes Supports opaque LSA
发出show run | beg router ospf命令以检查从OSPF配置开始的配置。
R6#show run | include router ospf router ospf 1 router-id 50.0.0.6 log-adjacency-changes network 50.0.0.0 0.0.0.255 area 0 network 192.168.0.0 0.0.0.255 area 0 network 192.168.2.0 0.0.0.255 area 0 r3#show run | begin router ospf router ospf 1 log-adjacency-changes network 50.0.0.0 0.0.0.255 area 0 network 192.168.0.0 0.0.0.255 area 0 network 192.168.3.0 0.0.0.255 area 0
在上一个示例中,删除了router-id命令,并且OSPF进程未重新启动。在其它位置删除和配置的环回接口也可能导致同样的问题。
发出clear ip ospf 1 process命令和show ip ospf命令以清除该进程。
r3#clear ip ospf 1 process Reset OSPF process? [no]: y r3#show ip ospf Routing Process "ospf 1" with ID 50.0.0.6 Supports only single TOS(TOS0) routes Supports opaque LSA
如上例所示,仍然显示错误的IP地址。
发出show ip int brie命令以检查接口。
r3#show ip int brie Interface IP-Address OK? Method Status Protocol Ethernet0/0 192.168.3.1 YES NVRAM up up Serial1/0 192.168.0.2 YES NVRAM up up Serial2/0 192.168.0.9 YES NVRAM up up Loopback0 unassigned YES NVRAM up up Loopback1 50.0.0.6 YES NVRAM up up !--- The highest Loopback IP address
为了纠正该问题,请确保路由器上配置的最高环回在OSPF网络中是唯一的,或在OSPF路由器配置模式下使用router-id <ip address>命令静态配置router-id。
这些问题的症状是,外部路由(通过R6从静态重分发到OSPF进程获知)从OSPF区域0内所有路由器的路由表中摆动。外部路由是120.0.0.0/16,在区域0的路由器5上发现问题。从那里开始排除故障。
连续多次发出show ip route命令以查看症状。
r5#show ip route 120.0.0.0 Routing entry for 120.0.0.0/16, 1 known subnets O E2 120.0.0.0 [110/20] via 192.168.0.9, 00:00:03, Serial2/0 r5#show ip route 120.0.0.0 % Network not in table r5#
查看OSPF数据库以检查是否收到LSA。如果连续多次发出show ip ospf database命令,您会注意到LSA是由两个路由器(50.0.0.6和50.0.0.7)接收的。如果查看第二个条目的存在时间,您会发现它的值发生了显着变化。
r5#show ip ospf database | begin Type-5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 120.0.0.0 50.0.0.6 2598 0x80000001 0xE10E 0 120.0.0.0 50.0.0.7 13 0x80000105 0xD019 0 r5#show ip ospf database | begin Type-5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 120.0.0.0 50.0.0.6 2599 0x80000001 0xE10E 0 120.0.0.0 50.0.0.7 14 0x80000105 0xD019 0 r5#show ip ospf database | begin Type-5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 120.0.0.0 50.0.0.6 2600 0x80000001 0xE10E 0 120.0.0.0 50.0.0.7 3601 0x80000106 0x6F6 0 r5#show ip ospf database | begin Type-5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 120.0.0.0 50.0.0.6 2602 0x80000001 0xE10E 0 r5#show ip ospf database | begin Type-5 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 120.0.0.0 50.0.0.6 2603 0x80000001 0xE10E 0 r5#
如果您查看从50.0.07(即通告路由器)收到的LSA的序列号,您还会发现奇怪的行为。复习从50.0.0.7收到的其他LSA。如果连续多次发出show ip ospf database adv-router 50.0.0.7命令,则条目变化很快,如本例所示。
r5#show ip ospf database adv-router 50.0.0.7 OSPF Router with ID (50.0.0.5) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 50.0.0.7 50.0.0.7 307 0x8000000D 0xDF45 6 Type-5 AS External Link States Link ID ADV Router Age Seq# Checksum Tag 120.0.0.0 50.0.0.7 9 0x8000011B 0xA42F 0 r5#show ip ospf database network adv-router 50.0.0.7 OSPF Router with ID (50.0.0.5) (Process ID 1) r5#show ip ospf database network adv-router 50.0.0.7 OSPF Router with ID (50.0.0.5) (Process ID 1)
此最后输出未显示任何内容。路由出现摆动或存在其他类型的问题,很可能是OSPF域内的路由器ID重复。
发出show ip ospf database命令以查看由50.0.0.7通告的外部LSA。
r5#show ip ospf database external adv-router 50.0.0.7 OSPF Router with ID (50.0.0.5) (Process ID 1) Type-5 AS External Link States Delete flag is set for this LSA LS age: MAXAGE(3600) Options: (No TOS-capability, DC) LS Type: AS External Link Link State ID: 120.0.0.0 (External Network Number ) Advertising Router: 50.0.0.7 LS Seq Number: 80000136 Checksum: 0xA527 Length: 36 Network Mask: /16 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 16777215 Forward Address: 0.0.0.0 External Route Tag: 0 r5#show ip ospf database external adv-router 50.0.0.7 OSPF Router with ID (50.0.0.5) (Process ID 1) r5#
查看SPF计算原因以验证这一点。X表示SPF由于外部LSA(第5类)抖动而每10秒运行一次,您会看到SPF正在运行。
r5#show ip ospf statistic Area 0: SPF algorithm executed 2 times SPF calculation time Delta T Intra D-Intra Summ D-Summ Ext D-Ext Total Reason 00:47:23 0 0 0 0 0 0 0 X 00:46:33 0 0 0 0 0 0 0 X 00:33:21 0 0 0 0 0 0 0 X 00:32:05 0 0 0 0 0 0 0 X 00:10:13 0 0 0 0 0 0 0 R, SN, X 00:10:03 0 0 0 0 0 0 0 R, SN, X 00:09:53 0 0 0 0 0 0 0 R, 00:09:43 0 0 0 0 0 0 0 R, SN, X 00:09:33 0 0 0 0 0 0 0 X 00:09:23 0 0 0 0 0 0 0 X
已知问题出在当前区域之外。将注意力转向ABR。通过Telnet连接到ABR路由器2,以便在OSPF区域0以外的其他区域获得更高的可视性。发出show ip ospf border-routers和show ip ospf database network adv-router命令。
r2#show ip ospf border-routers OSPF Process 1 internal Routing Table Codes: i - Intra-area route, I - Inter-area route i 50.0.0.7 [20] via 192.168.2.1, Ethernet0/0, ASBR, Area 1, SPF 25 r2#show ip ospf database network adv-router 50.0.0.7 OSPF Router with ID (50.0.0.2) (Process ID 1) Net Link States (Area 1) Routing Bit Set on this LSA LS age: 701 Options: (No TOS-capability, DC) LS Type: Network Links Link State ID: 192.168.1.2 (address of Designated Router) Advertising Router: 50.0.0.7 LS Seq Number: 80000001 Checksum: 0xBC6B Length: 32 Network Mask: /24 Attached Router: 50.0.0.7 Attached Router: 50.0.0.1
有故障的路由器与50.0.0.1位于同一LAN中。它必须是路由器6。发出show ip ospf命令。
r6#show ip ospf Routing Process "ospf 1" with ID 50.0.0.7 Supports only single TOS(TOS0) routes Supports opaque LSA It is an autonomous system boundary router.
找到故障路由器后,请参阅本文档的单区域网络部分以纠正问题。
%OSPF-4-FLOOD_WAR:收到区域10.40.0.0中的Process 60500 flushes LSA ID 10.35.70.4 type-5 adv-rtr 10.40.0.105错误消息。
此错误消息表明路由器以高速率启动或刷新LSA。网络中的典型场景可能是网络中的一台路由器发起LSA,而另一台路由器则刷新该LSA。下面提供了此错误消息的详细说明:
Process 60500 — 报告错误的OSPF进程。在本示例中,进程 ID 是 60500。
re-originates或flushes(关键字) — 指示路由器是发出LSA还是刷新。在此错误消息中,路由器将刷新LSA。
LSA ID 10.35.70.4 -检测到泛洪攻击的链路状态ID。本例中为 10.35.70.4。
类型–5 - LSA类型。此示例具有第5类LSA。
注意:泛洪战争对每个LSA都有不同的根本原因。
adv-rtr — 产生LSA的路由器(即10.40.0.105)。
Area - LSA所属的区域。在本示例中,LSA属于10.40.0.0。
解决方案
请注意此错误的Type详细信息;在本例中,type-5。此标识表示位于不同区域的两台路由器上有重复的路由器ID。因此,有必要更改其中一台路由器上的路由器ID。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
22-May-2002
|
初始版本 |