01-路由故障处理指南
本章节下载 (568.31 KB)
· OSPF邻居Down
· OSPF邻居震荡
本类故障的常见原因主要包括:
· BFD会话Down,即BFD检测到链路故障。
· 对端设备故障。
· CPU利用率过高。
· 链路故障。
· OSPF接口没有Up。
· 两端IP地址不在同一网段。
· OSPF两端参数的配置不匹配:
¡ Router ID配置冲突。
¡ 两端区域类型配置不一致。
¡ 两端OSPF验证配置不匹配。
¡ 两端定时器参数配置不一致。
¡ OSPF接口的网络类型不匹配。
本类故障的诊断流程如图1-1所示。
图1-1 OSPF邻居Down的故障诊断流程图
(1) 通过命令行或日志查看OSPF邻居状态变为Down的原因。
执行display ospf event-log peer命令,显示信息中的Reason字段为邻居状态发生变化的原因,一般包含如下几种情况:
¡ DeadExpired
表示在邻居失效定时器超时前没有收到Hello报文,导致OSPF邻居状态变为Down。出现这种情况请执行步骤(2)。
¡ BFDDown
表示BFD会话Down导致OSPF邻居状态变为Down。出现这种情况请执行步骤(2)。
¡ IntVliChange或virtual link was deleted or the route it relies on was deleted
表示虚连接删除或者其依赖的路由删除导致邻居关系变为Down。出现这种情况请执行步骤(2)。
¡ 1-Way
表示对端OSPF状态首先变成Down,然后向本端发送1-way Hello报文,导致本端OSPF状态变为Init。出现这种情况请排查对端设备的故障。
¡ IntPhyChange
接口Down或者接口MTU改变导致邻居关系变为Down。此时,执行display interface [ interface-type [ interface-number | interface-number.subnumber ] ]命令查看接口的运行状态和相关信息,排查接口故障。其它情况请执行步骤(11)。
请执行ping命令,检查设备链路是否故障(包括传输设备故障)。如果链路正常,请执行步骤(3)。
(3) 检查CPU利用率是否过高。
请执行display cpu-usage命令检查故障设备的主控板和接口板的CPU利用率是否过高。CPU利用率过高会导致OSPF无法正常收发协议报文从而导致邻居震荡。可通过关闭一些不必要的功能解决此问题。如果CPU利用率不高,则执行步骤(5)。
(4) 检查内存利用率是否超过了内存利用率阈值。
请执行display memory-threshold命令,查看显示信息中的Current free-memory state,即系统当前内存使用状态。如果Current free-memory state为Minor、Severe或Critical,表示剩余空闲内存较少,可能会导致设备无法收发OSPF报文或处理OSPF报文速度较慢,请关闭一些不必要的功能尝试解决此问题。如果系统当前内存使用状态为Normal,则执行步骤(5)。
执行display interface [ interface-type [ interface-number | interface-number.subnumber ] ]命令查看接口物理层状态,如果接口物理层状态为Down请先处理接口故障问题。如果接口物理层状态是Up,请执行display ospf interface查看接口在OSPF协议下状态是否为正常状态:
¡ 如果OSPF接口状态为Down,检查OSPF进程下是否通过network命令通告了接口所属网段。如果OSPF未通告接口所属网段,则检查接口下是否使能了OSPF。如果接口使能了OSPF进程,请处理网络层接口故障问题。
¡ 如果OSPF下的接口协议状态正常,即接口状态为DR、BDR、DROther或PTP时,请执行步骤(6)。
(6) 检查两端IP地址是否在同一网段。
请执行display interface brief命令查看两端接口的IP地址:
¡ 如果两端接口的IP地址不在同一网段,请在接口视图下执行ip address命令修改两端的IP地址,使其在同一网段。
¡ 如果两端接口的IP地址处于同一网段,请执行步骤(7)。
(7) 检查各OSPF接口的MTU是否一致。
如果在OSPF接口上通过ospf mtu-enable命令将该接口发送的DD报文中MTU域的值填充为接口的MTU值(缺省情况下接口发送的DD报文中MTU域的值为0),则要求各个OSPF接口发送的DD报文中MTU域的值一致。否则,OSPF邻居无法协商成功。请执行display interface [ interface-type [ interface-number | interface-number.subnumber ] ]命令命令查看接口MTU信息:
¡ 如果接口的MTU值配置不一致,请在接口视图下执行mtu size命令,将各个接口的MTU值修改为一致。
¡ 如果接口的MTU值一致,请执行步骤(8)。
(8) 检查各接口的DR优先级是否非零。
对于Broadcast和NBMA类型的网络,为了保证正确选举出DR,需要保证至少有一个OSPF接口的DR优先级是非零的,否则两边的邻居状态只能达到2-Way。请使用display ospf interface命令查看OSPF接口信息,其中的Pri表示接口的DR优先级。
如果接口的DR优先级非零,请执行步骤(9)。
(9) 是否手工为NBMA网络或P2MP单播网络指定了邻居。
OSPF网络类型为NBMA或P2MP(unicast)时,必须通过peer命令手工指定邻居的IP地址。请在OSPF接口视图下使用display this命令查看接口的网络类型,如果接口的网络类型为NBMA或P2MP(unicast),请在OSPF视图下使用peer命令手工指定邻居的IP地址。
如果手工为NBMA网络或P2MP单播网络指定了邻居的IP地址,请执行步骤(10)。
(10) 检查两端OSPF的参数配置是否有错误。
a. 请使用display ospf命令检查两端OSPF Router ID配置是否冲突。如果OSPF Router ID配置冲突,请修改配置保证OSPF Router ID不再冲突。如果OSPF Router ID配置不冲突,请继续执行以下检查。
b. 请使用display ospf interface命令检查两端OSPF Area ID配置是否一致。如果OSPF Area ID配置不一致,请修改配置保证OSPF Area ID配置一致。如果OSPF Area ID配置一致,请继续执行以下检查。
c. 请使用display ospf interface命令检查两端接口的OSPF网络类型是否一致。如果OSPF网络类型不一致,请修改配置保证OSPF网络类型一致。需要说明的是,如果双方一端为PTP,另一端为Broadcast,那么邻居关系可以达到Full状态,但无法计算出路由信息。
如果接口的OSPF网络类型一致,请继续执行以下检查。
d. 请每隔10秒钟使用display ospf statistics error命令检查一次OSPF的错误统计信息,并持续5分钟。需要查看的信息包括:
- 查看Bad authentication type字段。如果这个字段对应的计数值一直增长,表示建立邻居的两台设备配置的OSPF认证类型不一致,需要在两端设备上配置相同认证的类型。
- 查看Hello-time mismatch字段。如果这个字段对应的计数值一直在增长,表示接口上的Hello定时器的值不一致,需要将两端接口的Hello定时器的值设置为一致。
- 查看Dead-time mismatch字段。如果这个字段对应的计数值一直在增长,表示接口上的Dead定时器的值不一致,需要将两端接口的Dead定时器的值设置为一致。
- 查看Ebit option mismatch字段。如果这个字段对应的计数值一直在增长,表示区域类型配置不一致(一端配置为普通区域,另一端配置为Stub或NSSA区域),需要将两端的区域类型设置为一致。
如果故障依然存在,请执行步骤(11)。
(11) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
模块名:OSPF-TRAP-MIB
· ospfVirtIfStateChange (1.3.6.1.2.1.14.16.2.1)
· ospfNbrStateChange (1.3.6.1.2.1.14.16.2.2)
· ospfVirtNbrStateChange (1.3.6.1.2.1.14.16.2.3)
· OSPF/5/OSPF_NBR_CHG
· OSPF/5/OSPF_NBR_CHG_REASON
OSPF的状态机包括Down、Init、2-way、Exstart、Exchange、Loading和Full。其中,稳定状态包括Down、2-way和Full:
· Down:表示未使能OSPF。
· 2-way:DRother之间的邻居关系。
· Full:形成邻接关系。
对于使用OSPF进行路由计算和路由转发的网络中,只有2-way和Full是正常的邻居状态。如果邻居状态既未处于2-way状态、也未处于Full状态,说明邻居关系不正常。
本类故障的常见原因主要包括:
· 链路故障,OSPF报文被丢弃。
· 接口的DR优先级配置不合理。
· 两端配置的OSPF MTU值不同。
本类故障的诊断流程如图1-2所示:
图1-2 OSPF邻居无法达到FULL状态的故障诊断流程图
(1) 使用display ospf peer命令查看OSPF邻居信息,并根据不同的邻居状态进行相应的处理。
¡ 没有邻居信息。
表示OSPF邻居Down或者邻居震荡,请参见“1.1 OSPF邻居Down”故障处理。
¡ 邻居状态一直为Init。
表示对端设备收不到本端发送的Hello报文,此时请排查链路和对端设备是否故障。
¡ 邻居状态一直为2-way。
执行命令display ospf interface verbose查看设备在OSPF接口的DR优先级是否为0:
- 如果OSPF接口的DR优先级为0,那么邻居状态为2-way属于正常情况。
- 如果OSPF接口的DR优先级不为0,请执行步骤(2)。
¡ 邻居状态一直是Exstart。
表示设备一直在进行DD协商,但无法进行DD同步,出现该情况有两种可能性:
- 接口无法正常收发超大报文。
可以通过多次执行命令ping -s packet-size neighbor-address查看超大报文收发情况,将packet-size设置为1500或更大数值。如果无法Ping通,请先解决链路问题。
- 两端OSPF MTU配置值不一致。
如果OSPF接口下配置了ospf mtu-enable命令,请检查两端的OSPF MTU值是否相等。如果不相等,则修改接口下的MTU值。
如果故障没有解决,请执行步骤(2)。
¡ 邻居状态一直是Exchange。
表示设备在进行DD交换,请参见邻居状态一直为Exstart状态的处理。
如果故障没有解决,请执行步骤(2)。
¡ 邻居状态一直是Loading。
如果使用display ospf peer命令查看邻居状态一直处于Loading,可以尝试执行reset ospf [ process-id ] process命令重启OSPF进程。
如果故障没有解决,请执行步骤(2)。
(2) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
无
无
运行OSPF的设备学习不到部分OSPF路由。
本类故障的常见原因主要包括:
· 双方一端的网络类型为P2P,另一端的网络类型为Broadcast,邻居关系达到Full状态,但是学习不到路由。
· OSPF进程下配置了filter-policy import命令。
· 本OSPF区域下配置了filter import命令。
· 其它OSPF区域下配置了filter export命令。
· 绑定了VPN实例的OSPF进程,该进程引入外部路由的Tag值与AS External LSA(Type-5)或NSSA External LSA(Type-7)中的Tag值一致。
· ABR设备不可达。
· 在ABR设备上,非骨干区的Summary LSA不参与路由计算。
· ASBR设备不可达。
· AS External LSA(Type-5)或NSSA External LSA(Type-7)的FA地址不可达。
· NSSA External LSA(Type-7)到达FA地址的路由与NSSA External LSA(Type-7)不在同一区域。
图1-3 设备学习不到OSPF路由故障诊断流程图一
图1-4 设备学习不到OSPF路由故障诊断流程图二
(1) 检查建立邻居关系的双方是否一端的网络类型为P2P,另一端的网络类型为Broadcast。
如果一端的网络类型为P2P,另一端的网络类型为Broadcast,那么邻居关系可以达到Full状态,但无法计算出路由信息。
a. 请执行display ospf interface命令查看接口的网络类型。
<Sysname> display ospf interface
OSPF Process 1 with Router ID 5.5.5.5
Interfaces
Area: 0.0.0.1
IP Address Type State Cost Pri DR BDR
192.168.51.5 PTP P-2-P 1 1 0.0.0.0 0.0.0.0
b. 如果存在上述情况,请在OSPF接口视图下执行ospf network-type命令将本端设备与邻居设备的OSPF接口网络类型配置为一致。
如果不存在上述情况,请执行步骤(2)。
(2) 多次查看OSPF路由表,检查是否存在OSPF路由震荡的问题。
请执行display ip routing-table protocol ospf verbose命令,查看Age字段,确认是否存在震荡的OSPF路由。
¡ 如果某条或某些OSPF路由Age字段的数值一直很小,说明相应的OSPF路由发生震荡,请解决路由震荡问题。
¡ 如果不存在路由震荡的问题,请执行步骤(3)。
<Sysname> display ip routing-table protocol ospf verbose
Summary count : 3
Destination: 192.168.12.0/24
Protocol: O_INTER
Process ID: 1
SubProtID: 0x2 Age: 12h53m09s
Cost: 2 Preference: 10
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x13000003 LastAs: 0
AttrID: 0xffffffff Neighbor: 0.0.0.0
Flags: 0x10041 OrigNextHop: 192.168.51.1
Label: NULL RealNextHop: 192.168.51.1
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: GigabitEthernet1/0/2
BkSRLabel: NULL BkInterface: N/A
SIDIndex: NULL InLabel: NULL
Tunnel ID: Invalid IPInterface: GigabitEthernet1/0/2
BkTunnel ID: Invalid BkIPInterface: N/A
FtnIndex: 0x0 ColorInterface: N/A
TrafficIndex: N/A BkColorInterface: N/A
Connector: 0.0.0.0 VpnPeerId: N/A
Dscp: N/A Exp: N/A
SRTunnelID: Invalid StatFlags: 0x0
SID Type: N/A SID: N/A
BkSID: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid PathID: 0x0
CommBlockLen: 0
OrigLinkID: 0x0 RealLinkID: 0x0
Destination: 192.168.24.0/24
Protocol: O_INTER
Process ID: 1
SubProtID: 0x2 Age: 12h53m09s
Cost: 3 Preference: 10
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x13000003 LastAs: 0
AttrID: 0xffffffff Neighbor: 0.0.0.0
Flags: 0x10041 OrigNextHop: 192.168.51.1
Label: NULL RealNextHop: 192.168.51.1
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: GigabitEthernet1/0/2
BkSRLabel: NULL BkInterface: N/A
SIDIndex: NULL InLabel: NULL
Tunnel ID: Invalid IPInterface: GigabitEthernet1/0/2
BkTunnel ID: Invalid BkIPInterface: N/A
FtnIndex: 0x0 ColorInterface: N/A
TrafficIndex: N/A BkColorInterface: N/A
Connector: 0.0.0.0 VpnPeerId: N/A
Dscp: N/A Exp: N/A
SRTunnelID: Invalid StatFlags: 0x0
SID Type: N/A SID: N/A
BkSID: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid PathID: 0x0
CommBlockLen: 0
OrigLinkID: 0x0 RealLinkID: 0x0
Destination: 192.168.51.0/24
Protocol: O_INTRA
Process ID: 1
SubProtID: 0x1 Age: 12h54m07s
Cost: 1 Preference: 10
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Inactive Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x13000001 LastAs: 0
AttrID: 0xffffffff Neighbor: 0.0.0.0
Flags: 0x10c1 OrigNextHop: 0.0.0.0
Label: NULL RealNextHop: 0.0.0.0
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: GigabitEthernet1/0/2
BkSRLabel: NULL BkInterface: N/A
SIDIndex: NULL InLabel: NULL
Tunnel ID: Invalid IPInterface: GigabitEthernet1/0/2
BkTunnel ID: Invalid BkIPInterface: N/A
FtnIndex: 0x0 ColorInterface: N/A
TrafficIndex: N/A BkColorInterface: N/A
Connector: 0.0.0.0 VpnPeerId: N/A
Dscp: N/A Exp: N/A
SRTunnelID: Invalid StatFlags: 0x0
SID Type: N/A SID: N/A
BkSID: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid PathID: 0x0
CommBlockLen: 0
OrigLinkID: 0x0 RealLinkID: 0x0
(3) 检查OSPF进程下是否配置了filter-policy import命令。
某些场景下需要对路由信息进行过滤,实现业务隔离。请检查是否存在OSPF路由被错误过滤的情况。
a. 请在本端设备出现问题的OSPF进程下执行display this命令,查看该OSPF进程下是否配置了filter-policy import命令,导致OSPF路由被过滤。
[Sysname-ospf-1] display this
#
ospf 1
import-route direct
filter-policy 2000 import
area 0.0.0.1
network 192.168.51.0 0.0.0.255
nssa
#
return
b. 如果OSPF进程下配置了filter-policy import命令,请查看该命令引用的过滤规则的配置信息。
- 对于filter-policy import命令引用ACL规则进行路由过滤的情况,请执行display acl { acl-number | name acl-name }命令查看ACL的配置信息。
- 对于filter-policy import命令引用前缀列表进行路由过滤的情况,请执行display ip prefix-list命令查看地址前缀列表的配置信息。
- 对于filter-policy import命令引用路由策略进行路由过滤的情况,请执行display route-policy命令查看路由策略的配置信息。
如果路由被过滤规则拒绝,请结合组网及实际业务需求确认过滤规则的配置是否合理。如果不合理,请修改filter-policy import命令引用的过滤规则。
c. 如果该路由没有被拒绝,或者该OSPF进程并没有配置filter-policy import过滤策略,请执行步骤(4)。
(4) 检查OSPF进程的LSDB是否包含未学习到的OSPF路由的LSA。
请根据OSPF进程未学习到的路由信息的类型选择不同的故障处理方式。
o OSPF区域内路由
如果OSPF进程缺失区域内路由,请在用户视图下执行display ospf [ process-id ] lsdb router命令,检查LSDB是否包含该区域中所有的Router LSA信息。
<Sysname> display ospf 100 lsdb router
OSPF Process 100 with Router ID 5.5.5.5
Area: 0.0.0.1
Link State Database
Type : Router
LS ID : 5.5.5.5
Adv Rtr : 5.5.5.5
LS age : 7
Len : 36
Options : ASBR O NP
Seq# : 80000026
Checksum : 0x5f1f
Link Count: 1
Link ID: 192.168.51.1
Data : 192.168.51.5
Link Type: TransNet
Metric : 1
Type : Router
LS ID : 1.1.1.1
Adv Rtr : 1.1.1.1
LS age : 8
Len : 36
Options : ASBR ABR O NP
Seq# : 8000002a
Checksum : 0x534a
Link Count: 1
Link ID: 192.168.51.1
Data : 192.168.51.1
Link Type: TransNet
Metric : 1
- 如果OSPF进程的LSDB缺失Router LSA,请执行步骤(7)。
- 如果OSPF进程的LSDB包含完整的Router LSA,但是无法计算出路由信息,请执行步骤(7)。
o OSPF区域间路由
如果OSPF进程缺失区域间路由,请在用户视图下执行display ospf [ process-id ] lsdb summary命令,检查LSDB是否包含其它所有区域的Network Summary LSA。
<Sysname> display ospf lsdb summary
OSPF Process 1 with Router ID 5.5.5.5
Area: 0.0.0.1
Link State Database
Type : Sum-Net
LS ID : 192.168.24.0
Adv Rtr : 1.1.1.1
LS age : 576
Len : 28
Options : O NP
Seq# : 8000001f
Checksum : 0x4c25
Net Mask : 255.255.255.0
Tos 0 Metric: 2
Type : Sum-Net
LS ID : 192.168.12.0
Adv Rtr : 1.1.1.1
LS age : 576
Len : 28
Options : O NP
Seq# : 8000001f
Checksum : 0xc6b7
Net Mask : 255.255.255.0
Tos 0 Metric: 1
- 如果OSPF进程的LSDB缺失Network Summary LSA,检查本区域下是否配置了filter import命令,或者Network Summary LSA的发布者所在区域下是否配置了filter export命令。如果filter import命令或filter export命令引用的过滤规则错误地过滤掉了Network Summary LSA,请修改过滤规则相关配置。
filter import命令和filter export命令可以引用ACL、前缀列表、路由策略对Network Summary LSA进行过滤,请分别使用display acl { acl-number | name acl-name }命令、display ip prefix-list命令、display route-policy命令查看相应的配置信息。
- 如果OSPF进程的LSDB包含完整的Network Summary LSA,但是无法计算出路由信息,请执行步骤(7)。
o O_ASE路由或者O_NSSA路由
如果OSPF进程缺失O_ASE路由,请在用户视图下执行display ospf [ process-id ] lsdb ase命令。检查LSDB是否包含AS External LSA。
<Sysname> display ospf 100 lsdb ase
OSPF Process 100 with Router ID 1.1.1.1
Link State Database
Type : External
LS ID : 10.1.1.0
Adv Rtr : 1.1.1.1
LS age : 713
Len : 36
Options : O E
Seq# : 80000001
Checksum : 0x934b
Net Mask : 255.255.255.0
TOS 0 Metric: 1
E Type : 2
Forwarding Address : 192.168.51.5
Tag : 1
如果OSPF进程缺失O_NSSA路由,请在用户视图下执行display ospf [ process-id ] lsdb nssa命令,检查LSDB是否包含NSSA External LSA。
<Sysname> display ospf 100 lsdb nssa
OSPF Process 100 with Router ID 1.1.1.1
Area: 0.0.0.0
Link State Database
Area: 0.0.0.1
Link State Database
Type : NSSA
LS ID : 192.168.51.0
Adv Rtr : 5.5.5.5
LS age : 965
Len : 36
Options : O NP
Seq# : 8000001f
Checksum : 0x1dfa
Net Mask : 255.255.255.0
TOS 0 Metric: 1
E Type : 2
Forwarding Address : 192.168.51.5
Tag : 1
Type : NSSA
LS ID : 10.1.1.0
Adv Rtr : 5.5.5.5
LS age : 965
Len : 36
Options : O NP
Seq# : 8000001f
Checksum : 0x6840
Net Mask : 255.255.255.0
TOS 0 Metric: 1
E Type : 2
Forwarding Address : 192.168.51.5
Tag : 1
- 如果OSPF进程的LSDB缺失AS External LSA或NSSA External LSA,请执行步骤(7)。
- 如果OSPF进程的LSDB包含完整的AS External LSA或NSSA External LSA,但是无法学习到O_ASE路由或者O_NSSA路由的情况,请执行步骤(7)。
(5) 检查ABR设备是否可达。
区域间路由是ABR设备发布的,如果本端设备和ABR设备之间路由不可达,则会导致本端设备无法学习到区域间路由。
a. 请在本端设备执行display ospf [ process-id ] lsdb summary命令,查看Adv Rtr字段,该字段为通告Network Summary LSA的Router ID,即ABR的Router ID。
<Sysname> display ospf 100 lsdb summary
OSPF Process 100 with Router ID 5.5.5.5
Area: 0.0.0.1
Link State Database
Type : Sum-Net
LS ID : 192.168.12.0
Adv Rtr : 1.1.1.1
LS age : 913
Len : 28
Options : O E
Seq# : 80000001
Checksum : 0x5d45
Net Mask : 255.255.255.0
Tos 0 Metric: 1
b. 请在本端设备执行display ospf abr-asbr命令,查看Destination字段和RtType字段,RtType字段取值为ABR时,Destination字段为ABR的Router ID。查看到此类路由信息时,说明存在到达为ABR的路由。
<Sysname> display ospf 100 abr-asbr
OSPF Process 100 with Router ID 5.5.5.5
Routing Table to ABR and ASBR
Type Destination Area Cost Nexthop RtType
Intra 1.1.1.1 0.0.0.1 1 192.168.51.1 ABR
c. 如果abr-asbr信息中不包含到达通告Network Summary LSA的ABR的路由,请执行步骤(7)。
d. 如果abr-asbr信息中包含到达通告Network Summary LSA的ABR的路由,且本设备为ABR设备,请检查OSPF区域是否为骨干区域。
- 如果OSPF区域为非骨干区域(区域ID不为零),根据RFC 2328的规定,ABR设备不会对非骨干区的Network Summary LSA进行计算,没有区域间路由是正常现象。
- 如果OSPF区域为骨干区域(区域ID为零),但是没有学习到区域间路由,请执行步骤(7)。
e. 如果abr-asbr信息中包含到达通告Network Summary LSA的ABR的路由,且本OSPF进程绑定了VPN实例。请检查OSPF进程下是否配置了vpn-instance-capability simple命令。如果OSPF进程下配置了vpn-instance-capability simple命令,请执行步骤(7)。
如果OSPF进程下未配置vpn-instance-capability simple命令,故障处理方式如表1-1所示。
表1-1 OSPF进程下未配置vpn-instance-capability simple命令的故障处理方式
|
DN比特位是否置位 |
故障处理方式 |
|
未配置vpn-instance-capability simple命令,且Network Summary LSA的Option字段包含DN比特位(即DN比特位置位) |
根据RFC 2328的规定,私网OSPF进程不会使用DN比特位置位的Network Summary LSA进行路由计算。没有对应的区域间路由是正常现象 |
|
未配置vpn-instance-capability simple命令,且Network Summary LSA的Option字段不包含DN比特位 |
请执行步骤(7) |
(6) 检查ASBR设备是否可达,检查是否有防环检测。
O_ASE路由和O_NSSA路由是ASBR设备发布的,如果本端设备和ASBR设备之间路由不可达,则会导致本端设备无法学习到AS外部的路由。
a. 请执行display ospf [ process-id ] lsdb [ ase | nssa ]命令,查看Adv Rtr字段,该字段为通告AS External LSA(Type-5)或NSSA External LSA(Type-7)的Router ID,即ASBR的Router ID。
<Sysname> display ospf 100 lsdb ase
OSPF Process 100 with Router ID 1.1.1.1
Link State Database
Type : External
LS ID : 10.1.1.0
Adv Rtr : 1.1.1.1
LS age : 169
Len : 36
Options : O E
Seq# : 80000001
Checksum : 0x934b
Net Mask : 255.255.255.0
TOS 0 Metric: 1
E Type : 2
Forwarding Address : 192.168.51.5
Tag : 1
<Sysname> display ospf 100 lsdb nssa
OSPF Process 100 with Router ID 1.1.1.1
Area: 0.0.0.0
Link State Database
Area: 0.0.0.1
Link State Database
Type : NSSA
LS ID : 192.168.51.0
Adv Rtr : 5.5.5.5
LS age : 156
Len : 36
Options : O NP
Seq# : 80000001
Checksum : 0x59dc
Net Mask : 255.255.255.0
TOS 0 Metric: 1
E Type : 2
Forwarding Address : 192.168.51.5
Tag : 1
Type : NSSA
LS ID : 10.1.1.0
Adv Rtr : 5.5.5.5
LS age : 156
Len : 36
Options : O NP
Seq# : 80000001
Checksum : 0xa422
Net Mask : 255.255.255.0
TOS 0 Metric: 1
E Type : 2
Forwarding Address : 192.168.51.5
Tag : 1
b. 请执行display ospf abr-asbr命令,查看Destination字段和RtType字段,RtType字段取值为ASBR时,Destination字段为ASBR的Router ID。查看到此类路由信息时,说明存在到达为ASBR的路由。
<Sysname> display ospf 100 abr-asbr
OSPF Process 100 with Router ID 1.1.1.1
Routing Table to ABR and ASBR
Type Destination Area Cost Nexthop RtType
Intra 5.5.5.5 0.0.0.1 1 192.168.51.5 ASBR
c. 如果abr-asbr信息中不包含到达通告AS External LSA或NSSA External LSA的ASBR的路由,请执行步骤(7)。
d. 如果abr-asbr信息中包含到达通告AS External LSA或NSSA External LSA的ASBR的路由,且LSA的Forwarding Address字段不为零,需要检查Forwarding Address的可达性及路由类型。
请在用户视图下执行disply ospf arouting forwarding-address { mask-length | mask }命令查询是否存在到达Forwarding Address的路由。
<Sysname> display ospf 100 routing 192.168.51.5 24
OSPF Process 100 with Router ID 1.1.1.1
Routing Table
Routing for network
Destination Cost Type NextHop AdvRouter Area
192.168.51.0/24 1 Transit 0.0.0.0 5.5.5.5 0.0.0.1
Total nets: 1
Intra area: 1 Inter area: 0 ASE: 0 NSSA: 0
Forwarding Address的可达性及路由类型对OSPF是否能够学习到O_ASE路由或O_NSSA路由的影响如表1-2所示。
表1-2 Forwarding Address的可达性及路由类型对O_ASE路由或O_NSSA路由的影响
|
Forward Address是否可达 |
故障处理方式 |
|
不可达 |
如果通过display ospf routing forwarding-address { mask-length | mask }命令无法查看到路由信息,说明Forwarding Address不可达,请执行步骤(7) |
|
可达 |
如果外部路由是由NSSA External LSA(Type-7)通告的,根据RFC 3101的规定,要求到达Forwarding Address的路由所在区域与NSSA External LSA所在区域相同。如果Area字段标明的区域号与NSSA External LSA所在的区域不同,OSPF不使用此类NSSA External LSA进行路由计算。因此,没有对应的外部路由是正常现象 |
|
通过display ospf routing forwarding-address { mask-length | mask }命令查看到的路由的Type字段为Type1或者Type2,说明到达Forwarding Address的路由类型是外部路由。根据RFC 2328的规定,到达非零Forwarding Address的路由类型不允许是外部路由,OSPF不使用此类LSA进行路由计算。因此,没有对应的外部路由是正常现象 |
e. 如果abr-asbr信息中包含到达通告AS External LSA或NSSA External LSA的ASBR的路由,且本OSPF进程绑定了VPN实例。
请检查本OSPF进程下是否配置了vpn-instance-capability simple命令。如果OSPF进程下配置了vpn-instance-capability simple命令,请执行步骤(7)。
如果OSPF进程下未配置vpn-instance-capability simple命令,故障处理方式如下表所示。
表1-3 OSPF进程下未配置vpn-instance-capability simple命令的故障处理方式
|
DN比特位是否置位 |
故障处理方式 |
|
未配置vpn-instance-capability simple命令,且AS External LSA或者NSSA External LSA的Option字段包含DN比特位 |
根据RFC 2328的规定,私网OSPF进程不会使用DN比特位置位的AS External LSA或者NSSA External LSA进行路由计算。没有对应的外部路由是正常现象 |
|
未配置vpn-instance-capability simple命令,且AS External LSA或者NSSA External LSA的Option字段不包含DN比特位 |
请执行display ospf命令查看Default ASE parameters字段,确认AS External LSA或者NSSA External LSA的Tag值是否与私网OSPF进程的Tag值相同: · 对于Tag值相同的情况,根据RFC 2328的规定,私网OSPF进程不会使用此类LSA进行路由计算。因此,没有对应的外部路由是正常现象 · 对于Tag值不同的情况,请执行步骤(7) |
(7) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
无
无
OSPF组网中不同设备上配置相同的接口IP地址,会导致OSPF路由震荡。出现此问题时,设备通常伴随如下现象:
· 执行命令display cpu-usage查看到设备CPU使用率较高。
· OSPF频繁地老化LSA、重新生成LSA。
· 设备路由频繁刷新、路由计算出错。
以图1-5为示例说明此类故障的处理方式。其它组网与该组网处理此类故障的思路是相同的。
图1-5 网络中IP地址冲突导致路由震荡组网示例
(2) 在OSPF网络中的各个设备上每隔一秒执行一次display ospf [ process-id ] lsdb命令,查看每台设备的OSPF链路状态数据库(LSDB)信息。
(3) 检查是否存在LSA老化异常的情况。
同时满足如下条件时,说明LSA老化异常。
a. 在Device A上发现同一个AdvRouter通告的Network LSA(Type-2)的老化时间(Age)非自然增长,一直为最小值,且Sequence字段增加很快。例如在如下显示信息中,LinkStateID为172.168.0.1的Network LSA的Age非自然增长,短时间内Sequence从8000002D快速增长为8000002F。
<Sysname> display ospf 100 lsdb
OSPF Process 100 with Router ID 10.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 797 48 80000009 0
Router 1.1.1.1 1.1.1.1 835 36 80000005 0
Router 4.4.4.4 4.4.4.4 798 36 80000004 0
Router 10.1.1.1 10.1.1.1 415 36 80000007 0
Router 2.2.2.2 2.2.2.2 415 48 80000015 0
Network 192.168.0.2 3.3.3.3 802 32 80000002 0
Network 172.168.0.3 4.4.4.4 791 32 80000002 0
Network 172.168.0.1 10.1.1.1 7 32 8000002D 0
<Sysname> display ospf 100 lsdb
OSPF Process 100 with Router ID 10.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 810 48 80000009 0
Router 1.1.1.1 1.1.1.1 848 36 80000005 0
Router 4.4.4.4 4.4.4.4 811 36 80000004 0
Router 10.1.1.1 10.1.1.1 428 36 80000007 0
Router 2.2.2.2 2.2.2.2 428 48 80000015 0
Network 192.168.0.2 3.3.3.3 815 32 80000002 0
Network 172.168.0.3 4.4.4.4 804 32 80000002 0
Network 172.168.0.1 10.1.1.1 4 32 8000002F 0
b. 在Device B上相同Network LSA的Age不断在3600和其它较小值之间切换,而且Sequence字段增加很快。例如在如下显示信息中,LinkStateID为172.168.0.1的Network LSA的Age在3600和其它较小值之间切换,短时间内Sequence从80000023快速增长为80000041。
<Sysname> display ospf 100 lsdb
OSPF Process 100 with Router ID 2.2.2.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 708 48 80000009 0
Router 1.1.1.1 1.1.1.1 746 36 80000005 0
Router 4.4.4.4 4.4.4.4 709 36 80000004 0
Router 10.1.1.1 10.1.1.1 329 36 80000007 0
Router 2.2.2.2 2.2.2.2 327 48 80000015 0
Network 172.168.0.3 4.4.4.4 702 32 80000002 0
Network 192.168.0.2 3.3.3.3 713 32 80000002 0
Network 172.168.0.1 10.1.1.1 3600 32 80000023 0
<Sysname> display ospf 100 lsdb
OSPF Process 100 with Router ID 2.2.2.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 748 48 80000009 0
Router 1.1.1.1 1.1.1.1 786 36 80000005 0
Router 4.4.4.4 4.4.4.4 749 36 80000004 0
Router 10.1.1.1 10.1.1.1 369 36 80000007 0
Router 2.2.2.2 2.2.2.2 367 48 80000015 0
Network 172.168.0.3 4.4.4.4 742 32 80000002 0
Network 192.168.0.2 3.3.3.3 753 32 80000002 0
Network 172.168.0.1 10.1.1.1 7 32 80000041 0
c. 在Device C上,相同Network LSA的Age一直为3600,或者偶尔没有这条LSA,而且Sequence字段增加很快。例如在如下显示信息中,LinkStateID为172.168.0.1的Network LSA的Age为3600,或者偶尔没有这条LSA;存在这条LSA时,短时间内Sequence从80000309增长到80000346。
<Sysname> display ospf 100 lsdb
OSPF Process 100 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 740 48 8000000D 0
Router 4.4.4.4 4.4.4.4 759 36 80000008 0
Router 10.1.1.1 10.1.1.1 364 36 8000000B 0
Router 2.2.2.2 2.2.2.2 366 48 80000019 0
Network 172.168.0.3 4.4.4.4 755 32 80000006 0
Network 192.168.0.2 3.3.3.3 744 32 80000006 0
Network 172.168.0.1 10.1.1.1 3600 32 80000309 0
<Sysname> display ospf 100 lsdb
OSPF Process 100 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 745 48 8000000D 0
Router 4.4.4.4 4.4.4.4 764 36 80000008 0
Router 10.1.1.1 10.1.1.1 369 36 8000000B 0
Router 2.2.2.2 2.2.2.2 371 48 80000019 0
Network 172.168.0.3 4.4.4.4 760 32 80000006 0
Network 192.168.0.2 3.3.3.3 749 32 80000006 0
<Sysname> display ospf 100 lsdb
OSPF Process 100 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 1302 48 8000000D 0
Router 4.4.4.4 4.4.4.4 1321 36 80000008 0
Router 10.1.1.1 10.1.1.1 926 36 8000000B 0
Router 2.2.2.2 2.2.2.2 928 48 80000019 0
Network 172.168.0.3 4.4.4.4 1317 32 80000006 0
Network 192.168.0.2 3.3.3.3 1306 32 80000006 0
Network 172.168.0.1 10.1.1.1 3600 32 80000346 0
(4) 检查是否存在OSPF路由震荡。
在Device B上每隔一秒执行一次display ospf [ process-id ] routing命令,查看路由是否震荡。
<Sysname> display ospf 100 routing
OSPF Process 100 with Router ID 2.2.2.2
Routing Table
Routing for network
Destination Cost Type NextHop AdvRouter Area
192.168.0.0/24 1 Transit 0.0.0.0 3.3.3.3 0.0.0.0
172.168.0.0/24 1 Transit 0.0.0.0 10.1.1.1 0.0.0.0
Total nets: 2
Intra area: 2 Inter area: 0 ASE: 0 NSSA: 0
<Sysname> display ospf 100 routing
OSPF Process 100 with Router ID 2.2.2.2
Routing Table
Routing for network
Destination Cost Type NextHop AdvRouter Area
192.168.0.0/24 1 Transit 0.0.0.0 3.3.3.3 0.0.0.0
172.168.0.0/24 2 Transit 192.168.0.2 4.4.4.4 0.0.0.0
Total nets: 2
Intra area: 2 Inter area: 0 ASE: 0 NSSA: 0
当OSPF路由发生震荡,且多次执行display ospf peer命令发现邻居关系没有发生震荡时,可以判断该OSPF组网中存在IP地址冲突。同时,由于Network LSA(Type-2)是由DR发布的,说明产生冲突的设备中有一台设备是DR。
如果任一台设备上出现两个LinkState ID相同的Network LSA,并且这两个Network LSA老化异常。说明产生冲突的设备均为DR。
<Sysname> display ospf 100 lsdb
OSPF Process 100 with Router ID 10.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 367 48 80000021 0
Router 4.4.4.4 4.4.4.4 369 36 80000013 0
Router 10.1.1.1 10.1.1.1 477 36 80000012 0
Router 2.2.2.2 2.2.2.2 403 48 8000002B 0
Network 192.168.0.1 2.2.2.2 395 32 80000002 0
Network 172.168.0.1 3.3.3.3 3600 32 8000002B 0
Network 172.168.0.1 10.1.1.1 9 32 80000036 0
<Sysname> display ospf 100 lsdb
OSPF Process 100 with Router ID 10.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 3.3.3.3 3.3.3.3 460 48 80000021 0
Router 4.4.4.4 4.4.4.4 462 36 80000013 0
Router 10.1.1.1 10.1.1.1 570 36 80000012 0
Router 2.2.2.2 2.2.2.2 496 48 8000002B 0
Network 192.168.0.1 2.2.2.2 488 32 80000002 0
Network 172.168.0.1 3.3.3.3 3600 32 80000034 0
Network 172.168.0.1 10.1.1.1 6 32 80000041 0
(5) 定位产生冲突的设备。
结合display ospf lsdb的显示信息,找到产生IP地址冲突的设备。
¡ 产生冲突的设备中,仅有一台设备为DR。
根据异常Network LSA的AdvRouter,可以找到产生该Network LSA的DR设备;然后根据Network LSA中的LinkState ID找到产生IP地址冲突的接口,确定该接口的IP地址。根据接口的IP地址以及网络IP地址规划,找到另外一台产生冲突的设备。
在本例中,可以判断Router ID为10.1.1.1的DR设备接口IP地址与其它设备接口IP地址冲突,产生冲突的IP地址是172.168.0.1。然后根据网络IP地址规划,找到与DR设备接口IP地址冲突的另外一台设备。
¡ 产生冲突的设备均为DR。
根据异常Network LSA的AdvRouter,可以找到产生该Network LSA的DR设备;然后根据Network LSA中的LinkState ID找到产生IP地址冲突的接口。
(6) 根据网络IP地址规划修改冲突一方的IP地址。
(7) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
无
无
· OSPFv3邻居Down
· OSPFv3邻居震荡
本类故障的常见原因主要包括:
· BFD会话Down,即BFD检测到链路故障。
· 对端设备故障。
· CPU利用率或内存利用率过高。
· 链路故障。
· OSPFv3接口没有Up。
· 两端IP地址不在同一网段。
· 两端OSPFv3参数的配置不匹配:
¡ RouterID配置冲突。
¡ 两端区域类型配置不一致。
¡ 两端OSPFv3认证配置不匹配。
¡ 两端定时器参数配置不一致。
¡ OSPFv3接口的网络类型不匹配。
本类故障的诊断流程如图1-6所示。
图1-6 OSPFv3邻居Down的故障诊断流程图
(1) 通过命令行查看OSPFv3邻居状态变为Down的原因。
执行display ospfv3 event-log peer命令,显示信息中的Reason字段为邻居状态发生变化的原因,一般包含如下几种情况:
¡ DeadExpired
表示在邻居失效定时器超时前没有收到Hello报文,导致OSPFv3邻居状态变为Down。出现这种情况请执行步骤(2)。
¡ BFDDown
表示BFD会话Down导致OSPFv3邻居状态变为Down。出现这种情况请执行步骤(2)。
¡ 1-Way
表示对端OSPFv3状态首先变成Down,然后向本端发送1-way Hello报文,导致本端OSPFv3状态变为Init。出现这种情况请排查对端设备的故障。
¡ IntPhyChange
表示接口Down或者接口MTU改变导致邻居关系变为Down。此时,执行display interface [ interface-type [ interface-number | interface-number.subnumber ] ]命令查看接口的运行状态和相关信息,排查接口故障。其它情况请执行步骤1.1 4. (11)。
执行display interface [ interface-type [ interface-number | interface-number.subnumber ] ]命令查看OSPFv3接口物理层状态,如果接口物理层状态为Down请先处理接口故障问题。如果接口物理状态为Up,则执行步骤(3)。
请执行ping命令,检查设备链路是否故障(包括传输设备故障)。如果链路正常,请执行步骤1.1 4. (3)。
(4) 检查CPU利用率是否过高。
请执行display cpu-usage命令检查故障设备的主控板和接口板的CPU利用率是否过高。CPU利用率过高会导致OSPFv3无法正常收发协议报文,继而导致邻居震荡。可通过关闭一些不必要的功能解决此问题。如果CPU利用率不高,则执行步骤(5)。
请执行display memory-threshold命令,查看显示信息中的Current free-memory state,即系统当前内存使用状态。如果Current free-memory state为Minor、Severe或Critical,表示剩余空闲内存较少,可能会导致设备无法收发OSPFv3报文或处理OSPFv3报文速度较慢,请关闭一些不必要的功能尝试解决此问题。如果系统当前内存使用状态为Normal,则执行步骤1.1 4. (5)。
(6) 检查接口在OSPFv3协议下的状态是否正常。
执行display ospfv3 interface查看接口在OSPFv3协议下状态是否为正常状态。
¡ 如果OSPFv3接口状态为Down,检查接口是否使能了OSPFv3功能。如果使能了OSPFv3功能,请处理网络层接口故障问题。
¡ 如果OSPFv3接口协议状态正常,即接口状态为DR、BDR、DROther或P-2-P时,请执行步骤(7)。
(7) 检查各OSPFv3接口的MTU是否一致。
如果接口下未配置ospfv3 mtu-ignore命令,则要求接口的MTU一致,否则无法建立OSPFv3邻居关系。请执行display interface [ interface-type [ interface-number | interface-number.subnumber ] ]命令查看接口MTU信息。
¡ 如果接口的MTU值配置不一致,请在接口视图下执行mtu size命令,将各个接口的MTU值修改为一致。
¡ 如果接口的MTU值一致,请执行步骤1.1 4. (8)。
(8) 检查各接口的DR优先级是否非零。
对于Broadcast和NBMA类型的网络,为了保证正确选举出DR,需要保证至少有一个OSPFv3接口的DR优先级是非零的,否则两边的邻居状态只能达到2-Way。请使用display ospfv3 interface命令查看OSPFv3接口信息,其中的Priority表示接口的DR优先级。
如果接口的DR优先级非零,请执行步骤(9)。
(9) 是否手工为NBMA网络或P2MP单播网络指定了邻居。
OSPFv3网络类型为NBMA或P2MP(unicast)时,必须通过ospfv3 peer命令手工指定邻居接口的链路本地地址。请在OSPFv3接口视图下使用display this命令查看接口的网络类型,如果接口的网络类型为NBMA或P2MP(unicast),请在OSPFv3接口视图下使用ospfv3 peer命令手工指定邻居接口的链路本地地址。
如果手工为NBMA网络或P2MP单播网络指定了邻居接口的链路本地地址,请执行步骤(10)。
(10) 检查两端OSPFv3的参数配置是否有错误。
a. 请使用display ospfv3命令检查两端OSPFv3 Router ID配置是否冲突。如果OSPFv3 Router ID配置冲突,请修改配置保证OSPFv3 Router ID不再冲突。如果OSPFv3 Router ID配置不冲突,请继续执行以下检查。
b. 请使用display ospfv3 interface命令检查两端OSPFv3 Area ID配置是否一致。如果OSPFv3 Area ID配置不一致,请修改配置保证OSPFv3 Area ID配置一致。如果OSPFv3 Area ID配置一致,请继续执行以下检查。
c. 请使用display ospfv3 interface命令检查两端接口的OSPFv3网络类型是否一致。如果OSPFv3网络类型不一致,请修改配置保证OSPFv3网络类型一致。需要说明的是,如果双方一端为PTP,另一端为Broadcast,那么邻居关系可以达到Full状态,但无法计算出路由信息。
如果接口的OSPFv3网络类型一致,请继续执行以下检查。
d. 请每隔10秒钟使用display ospfv3 statistics error命令检查一次OSPFv3的错误统计信息,并持续5分钟。需要查看的信息包括:
- 查看Authentication failure字段。如果这个字段对应的计数值一直增长,表示建立邻居的两台设备配置的OSPFv3认证类型不一致,需要在两端设备上配置相同类型的认证。
- 查看HELLO: Hello-time mismatch字段。如果这个字段对应的计数值一直在增长,表示接口上的Hello定时器的值不一致,需要将两端接口的Hello定时器的值设置为一致。
- 查看HELLO: Dead-time mismatch字段。如果这个字段对应的计数值一直在增长,表示接口上的Dead定时器的值不一致,需要将两端接口的Dead定时器的值设置为一致。
- 查看HELLO: Ebit option mismatch字段。如果这个字段对应的计数值一直在增长,表示区域类型配置不一致(一端配置为普通区域,另一端配置为Stub或NSSA区域),需要将两端的区域类型设置为一致。
如果故障依然存在,请执行步骤1.1 4. (11)。
(11) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
模块名:OSPFV3-MIB
· ospfv3VirtIfStateChange (1.3.6.1.2.1.191.0.1)
· ospfv3NbrStateChange (1.3.6.1.2.1.191.0.2)
· ospfv3VirtNbrStateChange (1.3.6.1.2.1.191.0.3)
· OSPFV3/6/OSPFV3_LAST_NBR_DOWN
· OSPFV3/5/OSPFV3_NBR_CHG
OSPFv3的状态机包括Down、Init、2-way、Exstart、Exchange、Loading和Full。其中,稳定状态包括Down、2-way和Full:
· Down:表示未使能OSPFv3。
· 2-way:DRother之间的邻居关系。
· Full:形成邻接关系。
对于使用OSPFv3进行路由计算和路由转发的网络中,只有2-way和Full是正常的邻居状态。如果邻居状态既未处于2-way状态,也未处于Full状态,说明邻居关系不正常。
本类故障的常见原因主要包括:
· 链路故障,OSPFv3报文被丢弃。
· 接口的DR优先级配置不合理。
· 两端配置的OSPFv3 MTU值不同。
本类故障的诊断流程如图1-7所示。
图1-7 OSPFv3邻居Down的故障诊断流程图
(1) 使用display ospfv3 peer命令查看OSPFv3邻居信息,并根据不同的邻居状态进行相应的处理。
¡ 没有邻居信息。
请检查是否在OSPFv3进程下设置了Router ID,如果未设置Router ID,则OSPFv3进程无法运行。如果设置了Router ID,则表示OSPFv3邻居Down或者邻居震荡,请参见“1.5 OSPFv3邻居Down”故障处理。
¡ 邻居状态一直为Init。
表示对端设备收不到本端发送的Hello报文,此时请排查链路和对端设备是否故障。
¡ 邻居状态一直为2-way。
执行命令display ospfv3 interface verbose命令查看设备在OSPFv3接口的DR优先级是否为0:
如果OSPFv3接口的DR优先级为0,那么邻居状态为2-way属于正常情况。
如果OSPFv3接口的DR优先级不为0,请执行步骤1.2 4. (2)。
¡ 邻居状态一直是Exstart。
表示设备一直在进行DD协商,但无法进行DD同步,出现该情况有两种可能性:
- 接口无法正常收发超大报文
可以通过多次执行命令ping -s packet-size neighbor-address查看超大报文收发情况,将packet-size设置为1500或更大数值。如果无法Ping通,请先解决链路问题。
- 两端OSPFv3 MTU配置值不一致
如果OSPFv3接口下配置了ospfv3 mtu-ignore命令,则无需检查两端的OSPFv3 MTU值是否相等;否则,需要检查两端的OSPFv3 MTU值是否相等,如果不相等则修改接口下的MTU值。
如果故障没有解决,请执行步骤1.2 4. (2)。
¡ 邻居状态一直是Exchange。
表示设备在进行DD交换,请参见邻居状态一直为Exstart状态的处理。
如果故障没有解决,请执行步骤1.2 4. (2)。
¡ 邻居状态一直是Loading。
如果使用display ospfv3 peer命令查看到邻居状态一直处于Loading,可以尝试执行reset ospfv3 [ process-id ] process命令重启OSPFv3进程。
如果故障没有解决,请执行步骤1.2 4. (2)。
(2) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
无
无
· IS-IS邻居Down。
· IS-IS邻居关系震荡。
本类故障的常见原因主要包括:
· 设备底层故障或者链路故障,导致IS-IS无法正常的收发Hello报文。
· 链路两端的设备配置的System ID相同。
· 链路两端接口的MTU设置不一致,或者接口的MTU小于发送的Hello报文的长度。
· 链路两端接口的IP地址不在同一网段。
· 链路两端的IS-IS接口认证方式不匹配。
· 链路两端的IS-IS Level不匹配。
· 建立IS-IS Level-1邻居时,链路两端设备的区域地址不匹配。
本类故障的诊断流程如图1-8所示。
图1-8 IS-IS邻居无法建立的故障诊断流程图
(1) 检查接口的物理层状态是否为Up。
请执行display interface [ interface-type [ interface-number | interface-number.subnumber ] ]命令查看IS-IS接口物理层状态,如果接口物理层状态为Down,请先处理接口故障问题。如果接口物理状态为Up,请执行步骤1.5 4. (3)。
(2) 检查链路是否故障。
请执行ping命令,检查设备链路是否故障(包括传输设备故障)。如果链路正常,请执行步骤(3)。
如果IS-IS使用BFD检测设备间链路,通过isis bfd session-restrict-adj命令开启BFD抑制IS-IS建立和保持邻接关系的功能后,接口发送的Hello报文中将会携带BFD-enabled TLV,当两端BFD-enabled TLV中的信息一致时,抑制IS-IS建立和保持邻居关系的功能生效。当BFD会话Down时,无法建立IS-IS邻居关系。
请执行display bfd session命令查看检测IS-IS两端链路的BFD会话的状态,如果“State”字段取值为“Down”,请排除链路故障。如果“State”字段取值为“Up”,请执行步骤(3)。
(3) 检查CPU或内存利用率是否过高。
请执行display cpu-usage命令检查故障设备的主控板和接口板的CPU利用率是否过高。如果CPU利用率过高,IS-IS将无法正常收发协议报文,从而导致邻居关系震荡。可通过关闭一些不必要的功能解决此问题。如果CPU利用率不高,则执行步骤(4)。
请执行display memory-threshold命令,查看显示信息中的Current free-memory state,即系统当前内存使用状态。如果Current free-memory state为Minor、Severe或Critical,表示剩余空闲内存较少,可能会导致设备无法收发IS-IS报文或处理IS-IS报文速度较慢,请关闭一些不必要的功能尝试解决此问题。如果系统当前内存使用状态为Normal,则执行步骤(4)。
(4) 检查接口在IS-IS协议下的状态是否正常。
请执行display isis interface命令,检查使能了IS-IS的接口的状态(“IPv4 state”或“IPv6 state”字段)是否为正常状态。
¡ 如果IS-IS接口状态为“Lnk:Up/IP:Dn”,说明IPv4或IPv6相邻节点的链路层可达、网络层不可达,请处理网络层故障问题。
¡ 如果IS-IS接口状态为“Up”,请执行步骤(5)。
(5) 检查两端IP地址是否在同一网段。
对于IPv4 IS-IS,请执行display interface brief命令查看两端接口的IPv4地址。
¡ 如果两端接口的IPv4地址不在同一网段,请在接口视图下执行ip address命令修改两端的IPv4地址,使其在同一网段。
¡ 如果两端接口的IPv4地址处于同一网段,请执行(6)。
对于IPv6 IS-IS,无需执行此检查。
(6) 检查各IS-IS接口的MTU是否一致。
请执行display interface [ interface-type [ interface-number | interface-number.subnumber ] ]命令命令查看接口MTU信息。
¡ 如果接口的MTU值配置不一致,请在接口视图下执行mtu size命令,将各个接口的MTU值修改为一致。
¡ 如果接口的MTU值一致,请执行(7)。
(7) 检查IS-IS能否接收到Hello报文。
请执行display isis packet hello by-interface verbose命令,检查IS-IS能否接收到Hello报文。如果设备无法接收Hello报文,请排除丢包问题。如果故障依然存在,请执行(12)。
如果设备能够接收Hello报文,请继续执行以下检查:
¡ 如果“Duplicate system ID”字段的统计计数随时间增长,说明System ID冲突。请执行步骤(8)。
¡ 如果“Mismatched level (LAN)”字段的统计计数随时间增长,说明Level不匹配。请执行步骤(9)。
¡ 如果“Bad area address TLV”字段的统计计数随时间增长,说明区域地地址不匹配。请执行步骤(10)。
¡ 如果其它字段的统计计数随时间增长,请执行步骤(12)。
(8) 检查链路两端的设备配置的System ID是否相同。
请执行display current-configuration isis命令检查链路两端的设备配置的System ID是否相同。
¡ 如果两端System ID相同,请修改配置,使两端的System ID不同。
¡ 如果两端System ID不相同,请执行步骤(9)。
(9) 检查链路两端的设备的IS-IS Level是否匹配。
请检查设备及IS-IS接口的Level级别:
¡ 请执行display current-configuration | include is-level命令,检查链路两端设备的Level级别。如果通过display current-configuration | include is-level命令无法查询到设备的Level级别的相关配置,表明设备的Level级别为缺省值为Level-1-2。
¡ 请执行display current-configuration interface interface-type interface-number | include circuit-level命令,检查接口的链路邻接关系类型。如果通过display current-configuration interface interface-type interface-number | include circuit-level命令无法查询到接口的链路邻接关系类型,说明接口的链路邻接关系类型为缺省值,这种情况下,该接口既可以建立Level-1的邻接关系,也可以建立Level-2的邻接关系。
需要保证链路两端的Level匹配才能建立IS-IS邻居关系,接口Level匹配的原则如下:
¡ 如果本端接口Level级别为Level-1,则对端接口Level级别必须为Level-1或Level-1-2。
¡ 如果本端接口Level级别为Level-2,则对端接口Level级别必须为Level-2或Level-1-2。
¡ 如果本端接口Level级别为Level-1-2,则对端接口Level级别可以为Level-1、Level-2或Level-1-2。
对于不同的情况,请选择不同的处理方式:
¡ 如果链路两端设备的IS-IS Level不匹配,请在IS-IS视图下使用is-level命令修改设备的IS-IS级别,或者在接口视图下使用isis circuit-level命令修改接口的Level级别。
¡ 如果链路两端设备的IS-IS Level匹配,请执行步骤(10)。
请执行display isis命令查看“Network entity”字段,检查链路两端设备的区域地址是否匹配。“Network entity”的格式为X…X.XXXX.XXXX.XXXX.00,前面的“X…X”是区域地址,中间的12个“X”是交换机的System ID,最后的“00”是SEL。
¡ 如果链路两端建立Level-1邻居,需要保证链路两端设备在同一个区域内。建立IS-IS Level-2邻居时,不需要判断区域地址是否匹配。
当建立Level-1邻居的两端设备区域地址不同时,请在IS-IS视图下使用network-entity命令修改设备的区域地址。
¡ 如果链路两端区域地址匹配,请执行步骤(11)。
请执行display current-configuration interface-type interface-number | include isis命令检查链路两端设备IS-IS接口的认证方式。
a. 如果两端认证类型不匹配,请在链路两端设备的IS-IS接口视图下执行isis authentication-mode命令,将两端设置为相同的认证类型。
b. 如果认证方式相同的情况下,IS-IS仍然无法建立邻居关系,请将两端设置为相同的认证密码。
如果故障依然存在,请执行步骤1.1 4. (11)。
(12) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
模块名:ISIS-MIB
· isisAdjacencyChange (1.3.6.1.2.1.138.0.17)
· ISIS/3/ISIS_NBR_CHG
设备学习不到IS-IS路由。
本类故障的常见原因主要包括:
· 其它路由协议也发布了相同的路由,并且路由协议优先级比IS-IS协议高。
· 引入的外部路由优先级低,没有被优选。
· IS-IS开销值类型不匹配。
· IS-IS邻居没有正常建立。
· 两台设备的System ID配置相同。
· LSP报文认证不匹配。
· 设备底层故障或者链路故障,造成LSP报文丢失。
· LSP长度超过了设备可以接收的LSP的最大长度。
本类故障的诊断流程如图1-9所示。
图1-9 设备学习不到IS-IS路由的故障诊断流程图
(1) 检查IS-IS路由表是否正确。
请执行display isis route命令,查看IS-IS路由表。
¡ 如果IS-IS路由表中存在指定的路由,请执行display ip routing-table ip-address [ mask | mask-length ] verbose命令查看IP路由表中是否存在协议优先级比IS-IS高的路由。
- 如果存在,请根据网络规划调整配置。
- 如果不存在,请执行步骤1.1 4. (11)。
¡ 如果IS-IS路由表中不存在指定的路由,请执行步骤1.1 4. (11)。
(2) 检查指定的IS-IS路由是否发布。
在发布指定路由的设备上,执行display isis lsdb verbose local命令,查看本地产生的LSP报文中是否携带了指定路由。
¡ 如果LSP报文中没有携带指定的路由,请检查IS-IS配置是否正确,例如接口是否使能IS-IS。如果指定的路由是IS-IS引入的外部路由,请执行display ip routing-table protocol protocol verbose命令查看该路由的“State”字段,当“State”字段的取值中包含“Inactive”时,说明外部路由处于非激活状态,这种情况下,IS-IS不会将此路由发布出去。请检查外部路由的配置,使该路由的“State”取值包含“Active”和“Adv”。
¡ 如果LSP报文中携带了指定的路由,请执行步骤1.1 4. (11)。
(3) 检查IS-IS的数据库是否同步。
在学习不到IS-IS路由的设备上,执行display isis lsdb命令,查看是否收到发布指定路由的设备的LSP报文。
¡ 如果LSDB数据库中不存在指定的LSP报文,请排查是否存在链路故障。如果不存在链路故障,请通过display isis命令查看“LSP length receive”字段的取值,判断指定的LSP报文长度是否超过了设备可以接收的LSP报文的最大长度。当“LSP length receive”字段的取值超过了设备可以接收的LSP报文的最大长度时,请在生成LSP的设备上通过lsp-length originate命令将生成LSP报文的最大长度配置为该区域内所有IS-IS接口MTU的最小值。
¡ 如果LSDB数据库中存在指定的LSP报文,但Seq Num与发布该LSP的设备上通过display isis lsdb local verbose命令显示的Seq Num不一致,并且Seq Num在不停地增长,则网络中存在其它设备与发布指定路由的设备的System ID配置相同,请排查并修改网络中设备的System ID配置。
¡ 如果LSDB数据库中存在指定的LSP报文,但Seq Num与发布该LSP的设备上通过display isis lsdb local verbose命令显示的Seq Num不一致,并且一直保持不变,可能是LSP报文在传输过程中被丢弃,请排查设备底层和中间链路是否存在故障。
¡ 如果LSDB数据库中存在指定的LSP报文,并且Seq Num与发布该LSP的设备上通过display isis lsdb local verbose命令显示的Seq Num一致,请执行步骤1.1 4. (11)。
(4) 检查IS-IS开销值类型是否匹配。
分别在发布路由的设备和学习不到路由的设备上,执行display isis命令,查看“Cost style”的取值,检查两端的IS-IS开销值类型是否匹配。只有开销值类型相同时,才能学到路由。
¡ 如果链路两端设备的IS-IS开销值类型不匹配,请在IS-IS视图下执行cost-style命令修改配置。
¡ 如果两端设备的IS-IS开销值类型匹配,请执行步骤1.1 4. (11)。
(5) 检查IS-IS邻居是否正常建立。
在路径上的每一台设备上执行display isis peer命令,查看IS-IS邻居是否都正常建立。
¡ 如果存在邻居没有正常建立的情况,请参见“1.7 IS-IS邻居无法建立”。
¡ 如果不存在邻居未能正常建立的情况,请执行步骤1.1 4. (11)。
(6) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
无
无
IS-IS路由反复增删。
本类故障的常见原因主要包括:
· IS-IS邻居震荡。
· MPLS LSP隧道震荡。
· 两台设备的IS-IS引入了相同的外部路由,并且外部路由的优先级比IS-IS协议的优先级低。
· 两台设备配置的System ID相同。
本类故障的诊断流程如图1-10所示。
图1-10 IS-IS路由震荡的故障诊断流程图
(1) 检查路由震荡的情况。
执行display ip routing-table ip-address verbose命令,查看路由震荡的具体情况,具体步骤如下:
¡ 如果路由震荡的前后,“TunnelID”字段发生了变化,请检查MPLS LSP隧道是否存在震荡。
执行display mpls lsp verbose命令,通过“Last Chg Time”字段查看LDP的LSP最近一次状态变化的时间。如果最近一次变化的时间距离执行display mpls lsp verbose命令的时间较近,说明MPLS LSP隧道存在震)。
对于这种情况,请参考LDP LSP震荡的定位思路或TE Tunnel由Up突然变Down的定位思路,排查LSP震荡问题。
¡ 如果路由的“Cost”或者“Interface”字段发生变化,请检查该路由路径上的IS-IS邻居是否在震荡。
¡ 如果路由在路由表中时有时无(Age字段在震荡),执行display isis lsdb verbose命令,找到携带该路由的LSP,并记录此LSP报文的LSPID。然后,执行display isis lsdb verbose lsp-id命令查看这条LSP的更新情况。
- 如果LSP中一直携带指定的路由,请检查该路由路径上是否存在IS-IS邻居震荡。
- 如果LSP的“Seq Num”字段的取值在不停的增加,并且LSP更新前后的内容差异很大,请检查网络中是否有两台设备配置了相同的System ID。
- 如果LSP的“Seq Num”字段的取值在不停的增加,并且LSP更新前后,指定的路由时有时无,请在产生该LSP的设备上执行步骤1.1 4. (11)。
¡ 如果路由的“Protocol”字段发生变化,请执行步骤1.1 4. (11)。
(2) 检查IS-IS引入外部路由的配置。
如果指定的路由是作为外部路由引入到IS-IS的,在引入该路由的设备上,执行display ip routing-table ip-address verbose命令,查看路由震荡的具体情况,具体步骤如下:
¡ 如果路由表中处于“Active”状态的路由是IS-IS路由,而不是IS-IS引入的外部路由,说明网络中其它IS-IS设备发布了相同的路由。请根据网络规划修改路由协议的优先级,或者,在引入外部路由的IS-IS设备上配置路由过滤策略,控制下发到IP路由表的路由。
¡ 对于其它情况,请执行步骤1.1 4. (11)。
(3) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
无
无
本地路由器与对等体/对等体组建立的BGP会话无法进入Established状态。
本类故障的常见原因主要包括:
· BGP报文转发受阻。
· 建立/维持BGP TCP连接的报文被ACL过滤。
· 自治系统内,BGP邻居间的Router ID产生冲突。
· 指定了错误的对等体/对等体组的AS号。
· 指定对等体的地址为Loopback接口的IP地址时,对端未通过peer connect-interface命令将建立TCP连接所使用的源接口配置为Loopback接口,或者对端未通过peer source-address命令将建立TCP连接所使用的源地址配置为Loopback接口的地址。
· 建立BGP TCP连接时,BGP会话两端发送的TCP报文长度过大,在转发时被出接口MTU较小且无法对报文分片的中间节点丢弃,导致BGP TCP连接失败。
· 指定EBGP对等体的地址为Loopback接口的IP地址时,对端未配置peer ebgp-max-hop命令,以允许本地路由器同非直连邻居建立EBGP会话。
· BGP会话的两端未通过peer password命令配置相同的密钥,导致MD5认证失败。
· 配置peer ttl-security命令以开启指定对等体/对等体组的GTSM功能时,到达对等体/对等体组的最大跳数配置错误,导致对等体/对等体组无法通过GTSM检查。
· 对等体向本地路由器发送的BGP路由数量超过了peer route-limit命令设定的最大值,导致BGP会话断开。
· BGP路由器上配置了peer ignore、ignore all-peers或shutdown process命令,禁止建立BGP会话。
· 本地路由器与对端路由器没有在相同的地址族视图下使能路由信息交换能力。
本类故障的诊断流程如图1-11所示:
图1-11 BGP会话无法进入Established状态的故障诊断流程图
(1) 检查与BGP邻居之间的通信链路是否正常。
a. 检查与邻居建立BGP会话的相关接口是否处于UP状态。
b. 通过ping命令方式检查与BGP邻居的连通性。如果Ping的结果为可达,则说明本地路由器与BGP邻居之间的通信链路正常,请执行步骤(2)。如果Ping的结果为不可达,请执行步骤c。
建议使用ping –a source-ip –s packet-size命令和ping ipv6 –a source-ipv6 –s packet-size命令来检测与BGP邻居的连通性。–a source-ip和–a source-ipv6参数指定了ICMP回显请求报文的源地址,方便用户同时检测两端的链路是否都正常;–s packet-size参数指定了发送的ICMP回显请求报文的长度,方便用户检测长报文在链路中的传输情况。Ping操作的源IP地址取用本端建立BGP会话使用的接口的IP地址,目的IP地址取用对端建立BGP会话使用的接口的IP地址。
c. 执行ping –a source-ip –s packet-size命令进行Ping操作,并逐步减小–s packet-size参数输入的值,当该参数减小到某个值时,Ping的结果变为可达,则表示建立BGP TCP连接时发送的TCP报文由于长度过长,在转发过程中被设备丢弃,导致了BGP会话无法进入Established状态。
- 此时可以重复执行ping –a source-ip –s packet-size命令,调整–s packet-size参数的取值,直至找到一个合适的取值(Ping的结果为可达的前提下,取尽量大的值,以提高转发效率),然后将该值设置为BGP报文转发出接口的MTU值。可通过在接口上执行ip/ipv6 mtu mtu-size或tcp mss value命令,或者在BGP实例视图/BGP-VPN实例视图下执行peer tcp-mss命令来设置出接口的MTU值;其中,ip/ipv6 mtu mtu-size命令配置的是MTU值,tcp mss value和peer tcp-mss命令配置的是TCP MSS值(TCP MSS=MTU值-IP头部长度-TCP头部长度)。
- 也可以无需重复进行Ping操作,直接在系统视图下执行tcp path-mtu-discovery命令,开启TCP连接的Path MTU探测功能。之后,设备会根据探测机制自动获得建立TCP连接的路径上最小的MTU值,并计算得到MSS值,后续建立BGP TCP连接时,会使用计算得到的MSS值作为TCP报文的长度。
如果无论怎么调整–s packet-size参数的取值,Ping的结果均为不可达,请参见“Ping不通的定位思路”进行后续的检查。
d. 如果故障仍不能排除,请执行步骤(2)
(2) 检查BGP TCP连接是否建立。
执行display tcp命令,查看显示信息中是否存在地址为本地路由器地址以及BGP邻居的地址、对端端口号为179、TCP连接状态为ESTABLISHED的条目。例如:
<Sysname> display tcp
*: TCP connection with authentication
Local Addr:port Foreign Addr:port State PCB
0.0.0.0:179 12.1.1.2:0 LISTEN 0xffffffffffffff9d
12.1.1.1:28160 12.1.1.2:179 ESTABLISHED 0xffffffffffffff9e
如果存在,则执行步骤(3);如果不存在,则进行以下检查:
¡ 执行display ip routing-table或display ipv6 routing-table命令,查看路由表中是否存在对端建立BGP会话使用的IPv4/IPv6地址的IGP路由,如果不存在,请检查IGP路由的配置。常见的IGP路由协议故障处理方法,请参见“OSPF故障处理”、“OSPFv3故障处理”或“IS-IS故障处理”。
¡ 执行display acl all命令,查看是否存在拒绝端口号为bgp的规则,例如:
<Sysname> display acl all
Advanced IPv4 ACL 3077, 2 rules,
ACL's step is 5
rule 1 deny tcp destination-port eq bgp
rule 2 deny tcp source-port eq bgp
如果存在这样的规则,请执行undo rule命令取消这些配置。
¡ 执行debugging tcp packet命令,根据Debug信息判断BGP建立TCP连接时是否存在安全认证失败,例如:
<Sysname> debugging tcp packet acl 3000
*Feb 5 20:03:39:289 2021 Sysname SOCKET/7/INET: -MDC=1;
TCP Input: Failed to check md5, drop the packet.
上述信息表明BGP建立TCP连接时MD5认证失败。请在建立BGP TCP连接的两端设备上均执行peer password命令配置相同的密钥。
<Sysname> debugging tcp packet acl 3000
*Feb 5 20:03:39:289 2021 Sysname SOCKET/7/INET: -MDC=1;
TCP Input: Failed to check keychain, drop the packet.
上述信息表明BGP建立TCP连接时keychain认证失败。请确保建立BGP TCP连接的两端设备上均通过执行peer keychain命令配置了keychain认证,并且同一时间内使用的key的标识符相同,以及相同标识符的key的认证算法和认证密钥一致。
<Sysname> debugging tcp packet acl 3000
*Feb 5 20:03:39:289 2021 Sysname SOCKET/7/INET: -MDC=1;
TCP Input: Failed to get IPSEC profile, index 500, name profile1(inpcb profile2), return 0x3fff.
上述信息表明BGP建立TCP连接时IPsec认证失败。请检查BGP会话两端设备的IPsec配置并确保在两端设备上均通过执行peer ipsec-profile命令应用了IPsec安全框架。
如果故障仍不能排除,请执行步骤(3)。
(3) 检查Router ID是否存在冲突,AS号是否配置错误。
a. 执行display bgp peer命令,根据显示信息中的“BGP local router ID”字段,判断是否存在Router ID配置冲突,如果存在冲突,请在需要建立BGP会话的BGP实例视图或BGP-VPN实例视图下执行router-id命令,修改BGP路由器的Router ID。例如:
<Sysname> display bgp peer ipv4 unicast
BGP local router ID: 12.1.1.1
Local AS number: 10
Total number of peers: 1 Peers in established state: 1
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
12.1.1.2 20 3 3 0 0 00:00:25 Established
b. 执行display bgp peer命令,根据显示信息中的“AS”字段,判断是否为BGP对等体/对等体组指定了错误的AS号。如果AS号配置错误,则执行peer as-number命令为BGP对等体/对等体组指定正确的AS号。例如:
<Sysname> display bgp peer ipv4 unicast
BGP local router ID: 12.1.1.1
Local AS number: 10
Total number of peers: 1 Peers in established state: 1
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
12.1.1.2 20 3 3 0 0 00:00:25 Established
c. 如果故障仍不能排除,请执行步骤(4)。
(4) 在BGP实例视图下执行display this命令,检查是否存在影响BGP会话的配置。
表1-4 影响BGP会话的配置检查项
|
检查项 |
描述 |
|
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } connect-interface interface-type interface-number |
本端存在该配置时,BGP邻居也需要使用Loopback接口的地址建立BGP会话,可通过本命令或peer source-address命令配置 |
|
peer ipv4-address [ mask-length ] source-address source-ipv4-address peer ipv6-address [ prefix-length ] source-address source-ipv6-address |
本端存在该配置时,BGP邻居也需要使用Loopback接口的地址建立BGP会话,可通过本命令或peer connect-interface命令配置 |
|
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } ebgp-max-hop [ hop-count ] |
非直连网络上的邻居建立EBGP会话,或者直连网络设备使用Loopback接口建立EBGP会话时,BGP会话两端均需要配置本命令,为EBGP会话指定相应的最大跳数 |
|
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } ttl-security hops hop-count |
存在该配置时,本地路由器从指定对等体收到的BGP报文中,TTL需要在255-“hop-count”+1到255之间,否则BGP报文将会被丢弃,如果本地路由器与对等体之间的跳数超过了hop-count,请通过本命令进行配置修改 |
|
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } route-limit prefix-number [ reconnect reconnect-time | percentage-value ] * |
存在该配置时,表示如果本地路由器从指定对等体/对等体组接收的路由数量大于prefix-number值,路由器会自动断开与指定对等体/对等体组的会话。可通过降低对等体/对等体组发送的路由数量,或配置更大的prefix-number值,来避免BGP会话断开 |
|
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | link-local-address interface interface-type interface-number } ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ] |
存在该配置时,BGP将不会与指定的对等体/对等体组建立BGP会话,此时可以通过执行undo peer ignore命令允许建立与对等体/对等体组的会话 |
|
ignore all-peers [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ] |
存在该配置时,表明BGP禁止与所有对等体建立BGP会话。此时设备可能处于网络升级维护中,BGP进程暂时不可用,建议在网络升级维护完成后,执行undo peer ignore命令或undo ignore all-peers命令允许建立BGP会话 |
|
shutdown process |
存在该配置时,表明BGP禁止与所有对等体建立BGP会话。此时设备可能处于网络升级维护中,BGP进程暂时不可用,建议在网络升级维护完成后,执行undo shutdown process命令允许建立BGP会话 |
|
地址族下的peer enable命令 |
建立BGP会话时,两端需要在同一个地址族下指定对端配置peer enable命令使能路由信息交互能力。存在该配置时,请检查对端是否也在相同地址族下配置了peer enable命令 |
如果故障仍不能排除,请执行步骤(5)。
(5) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
在系统视图下执行snmp-agent trap enable bgp命令后,BGP会话的状态机发生变化时会产生如下告警信息。
模块名:BGP4-MIB
· bgpBackwardTransition (1.3.6.1.2.1.15.7.2)
无
在设备上观察到BGP/5/BGP_STATE_CHANGED提示BGP会话状态变为Idle的日志打印信息,会话状态从Established变为Idle。
本类故障的常见原因主要包括:
· Keepalive或Update消息收发超时。
· TCP连接建立失败。
· 设备达到内存门限。
· BGP报文解析发生错误。
本类故障的诊断流程如图1-12所示。
图1-12 BGP会话震荡的故障诊断流程图
执行display bgp peer log-info命令,根据该命令的显示信息进一步确认BGP会话Down的原因。几种常见的BGP会话Down的原因如下:
· BGP定时器超时导致断开会话
如果log-info信息与下面的显示信息相似:
<Sysname> display bgp peer ipv4 3.3.3.3 log-info
Peer: 3.3.3.3
Date Time State Notification
Error/SubError
17-Jan-2022 14:48:34 Down Receive notification with error 4/0
Hold Timer Expired/ErrSubCode Unspecified
Keepalive last triggered time: 14:48:31-2022.1.17
Keepalive last sent time : 14:48:31-2022.1.17
Update last sent time : 14:48:24-2022.1.17
EPOLLOUT last occurred time : 14:48:30-2022.1.17
则表示BGP会话Down的原因是在会话保持时间时间内未能收到对等体发送的Keepalive或Update消息。在BGP会话保持定时器超时后,设备则会主动断开BGP会话,并向对端对等体发送Notification消息。
定时器超时的原因可能是设备正常发送了Keepalive或Update消息,但报文由于链路故障等原因无法到达对等体或对等体处理不及时,或者设备调度故障导致未能及时产生Keepalive或Update消息等。如需解决此问题,请在BGP会话的两端设备的Probe视图下,均执行display system internal bgp log命令,并收集该命令的显示信息,联系技术支持人员进行进一步分析。
· TCP连接错误导致BGP会话断开
如果log-info信息与下面的显示信息相似:
<Sysname> display bgp peer ipv4 1.1.1.1 log-info
Peer: 1.1.1.1
Date Time State Notification
Error/SubError
17-Jan-2022 14:42:01 Down Receive TCP_Connection_Failed event
则BGP会话Down的原因是TCP连接错误。BGP使用TCP作为其传输层协议,如果BGP会话两端设备间的TCP连接发生错误,BGP会话也会断开。如果用户观察到的显示信息与上述举例不相似,但是显示信息中包含了Notification消息错误码5/0,则也是由于TCP连接错误导致的BGP会话断开。
确认TCP连接发生错误后,请在BGP会话Down的两端设备的Probe视图中,均执行view /proc/tcp/tcp_log slot x命令(所有的单板/成员设备各执行一次),并收集该命令的显示信息,联系技术支持人员进行进一步分析。
· 内存不足导致BGP会话断开
如果log-info信息与下面的显示信息相似:
<Sysname> display bgp peer ipv4 1.1.1.1 log-info
Peer: 1.1.1.1
Date Time State Notification
Error/SubError
17-Jan-2022 15:38:53 Down Send notification with error 6/8
Entered severe memory state
17-Jan-2022 14:53:51 Down Send notification with error 6/8
No memory to process the attribute
表明设备没有足够内存处理BGP模块相关功能,导致BGP会话断开。此类错误原因对应log-info信息中的错误码6/8。
此时请在BGP会话Down的两端设备上,均执行display memory-threshold命令,获取内存告警门限相关信息,并记录display bgp peer log-info命令的显示信息,联系技术支持人员进行进一步分析。
· 报文解析错误导致BGP会话断开:
BGP会话两端的设备如果报文解析能力不同或版本不匹配,则BGP可能无法解析接收到的报文,导致BGP会话断开。此类错误原因对应log-info信息中的消息差错码1、2和3(即“Error/SubError”中的“Error”为1、2或3)。
请在BGP会话Down的两端设备上,均执行debugging bgp raw-packet、debugging bgp open以及debugging bgp update命令,并收集这些命令的显示信息以及display bgp peer log-info命令的显示信息,联系技术支持人员进行进一步分析。
· 如果display bgp peer log-info命令的显示信息中,提示的BGP会话Down的原因不属于以上任何一种常见的原因,请收集如下信息,并联系技术支持人员。
¡ display bgp peer log-info命令的显示信息。
¡ display system internal bgp log命令的显示信息。
¡ view /proc/tcp/tcp_log slot x命令的显示信息(所有的单板/成员设备各执行一次)。
¡ 设备的配置文件、日志信息、告警信息。
无
· BGP/5/BGP_STATE_CHANGED
· BGP_STATE_CHANGED_REASON
在日志BGP_STATE_CHANGED_REASON的打印信息中,同样也包含Notification错误码。错误码与会话断开原因的详细参考如表1-5所示。
|
差错码/差错子码 |
邻居断开的详细原因 |
说明 |
|
1/1 |
connection not synchronized |
连接不同步,目前实现为收到的报文的报文头前16字节不全为F |
|
1/2 |
bad message length |
报文长度无效 |
|
1/3 |
bad message type |
报文的类型无效 |
|
3/1 |
the withdrawn length is too large |
撤销信息长度过长 |
|
the attribute length is too large |
属性长度过长 |
|
|
one attribute appears more than once |
同一个属性在一个Update消息中出现了多次 |
|
|
the attribute length is too small |
属性长度字段不足2字节 |
|
|
exntended length field is less than two octets |
属性长度为可扩展长度,但长度字段不足2字节 |
|
|
the length field is less than one octet |
属性长度为正常长度,但长度字段不足1字节 |
|
|
link-state attribute error |
链路状态属性形式错误 |
|
|
3/2 |
unrecognized well-known attribute |
不支持的公认属性 |
|
3/3 |
attribute-type attribute missed |
attribute-type类型的属性丢失,attribute-type取值包括: · ORIGIN · AS_PATH · LOCAL_PREF · NEXT_HOP |
|
3/4 |
attribute flags error |
属性标记错误 |
|
3/5 |
attribute-type attribute length error |
attribute-type类型的属性长度错误,attribute-type取值包括: · AS_PATH · AS4_PATH · CLUSTER_LIST · AGGREGATOR · AS4_AGGREGATOR · ORIGIN · NEXT_HOP · MED · LOCAL_PREF · ATOMIC_AGGREGATE · ORIGINATOR_ID · MP_REACH_NLRI · COMMUNITIES · extended communities |
|
attribute length exceeds |
属性长度越界 |
|
|
3/6 |
invalid ORIGIN attribute |
ORIGIN属性无效 |
|
3/8 |
invalid NEXT_HOP attribute |
下一跳属性无效 |
|
3/9 |
invalid nexthop length in MP_REACH_NLRI (address-family) |
address-family地址族MP_REACH_NLRI属性的Nexthop长度错误,address-family的取值包括: · 4u:表示IPv4单播地址族 · IPv4 Flowspec:表示IPv4 Flowspec地址族 · MPLS:表示MPLS地址族 · VPNv4:表示VPNv4地址族 · 6u:表示IPv6单播地址族 · VPNv6:表示VPNv6地址族 · L2VPN:表示L2VPN地址族 |
|
the length of MP_UNREACH_NLRI is too small |
MP_UNREACH_NLRI的长度小于3字节 |
|
|
the MP NLRI attribute length exceeds |
MP_REACH_NLRI 或MP_UNREACH_NLRI属性长度越界 |
|
|
erroneous MP NLRI attribute end position |
可达或不可达前缀结束位置与报文属性结束位置不同 |
|
|
3/10 |
invalid network field |
网络字段无效 |
|
3/11 |
malformed AS_PATH |
AS路径形式不对 |
|
4/0 |
Keepalive last triggered time |
最后一次触发发送Keepalive消息时间 |
|
Keepalive last sent time |
最后一次发送Keepalive消息时间 |
|
|
Update last sent time |
最后一次发送Update消息时间 |
|
|
EPOLLOUT last occurred time |
最后一次发生EPOLLOUT时间 |
|
|
Keepalive last received time |
最后一次接收Keepalive消息时间 |
|
|
Update last received time |
最后一次接收Update消息时间 |
|
|
EPOLLIN last occurred time |
最后一次发生EPOLLIN时间 |
|
|
5/0 |
connection retry timer expires |
ConnectRetry定时器超时 |
|
TCP_CR_Acked event received |
收到了TCP_CR_Acked事件 |
|
|
TCP_Connection_Confirmed event received |
收到了TCP_Connection_Confirmed事件 |
|
|
5/3 |
open message received |
收到open消息 |
|
6/0 |
manualstop event received |
收到manualstop事件 |
|
physical interface configuration changed |
物理配置改变,比如接口变化 |
|
|
session down event received from BFD |
收到BFD会话down事件 |
|
|
6/1 |
maximum number of prefixes reached |
前缀数超过peer route-limit所配置的数目 |
|
maximum number of address-family prefixes reached |
address-family地址族的前缀数超过peer route-limit所配置的数目,address-family的取值包括: · IPv4 unicast:表示IPv4单播地址族 · IPv6 unicast:表示IPv6单播地址族 · VPNv4:表示VPNv4地址族 · VPNv6:表示VPNv6地址族 |
|
|
6/2 |
configuration of peer ignore changed |
配置peer ignore命令 |
|
6/3 |
address family deleted |
地址族被删除 |
|
peer disabled |
关闭对等体 |
|
|
6/4 |
administrative reset |
执行reset bgp命令或者配置改变导致BGP会话重启 |
|
6/5 |
connection rejected |
连接被拒绝 |
|
6/6 |
other configuration change |
其它配置变化 |
|
6/7 |
connection collision resolution |
连接冲突 |
|
two connections exist and MD5 authentication is configured for the neighbor |
存在两个连接,且其中一个配置了MD5认证 |
|
|
6/8 |
· no memory to process the attribute:解析属性时内存不够 · no memory for the route:生成路由或者标签块信息时,获取不到内存 · no memory to generate unreachable NLRI:封装unreachable NLRI时申请不到内存 · no memory to generate a message:封装报文时申请不到内存 · can’t get the VPN RD:解析前缀时获取不到RD · can’t get the VPN routing table:解析前缀时获取不到VPN路由表 · can’t get the attributes:解析前缀时获取不到属性 · entered severe memory state:进入二级门限告警 · entered critical memory state:进入三级门限告警 |
|
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!
