简介
本文档介绍由于ASR9000路由器内存不足引起的标签分发协议(LDP)邻居问题。
背景信息
LDP是一种标签分发协议,可帮助生成和共享IGP路由的标签信息。但在交换标签之前,路由器首先形成LDP邻居关系。 如您所知,LDP适用于UDP和TCP协议。对于邻居发现,LDP使用UDP协议,并使用TCP协议创建邻居关系。
路由器必须具有足够的内存和CPU才能建立TCP连接。
问题摘要
显而易见,您可以ping和traceroute。
RP/0/RSP0/CPU0:R1#ping 192.168.12.6 so l14
Thu Jun 27 07:01:31.192 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.6 timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/2/3 ms
RP/0/RSP0/CPU0:R1# traceroute 192.168.12.6 so l14 numeric
Thu Jun 27 07:01:56.748 UTC
Type escape sequence to abort.
Tracing the route to 192.168.12.6
1 192.168.99.220 [MPLS:标签26664/75671 Exp 0] 3毫秒2毫秒2毫秒
2 192.168.96.8 [MPLS:标签75671扩展0] 1毫秒1毫秒1毫秒
3 192.168.62.151 [MPLS:标签24201扩展0] 2毫秒2毫秒2毫秒
4 192.168.12.6 2毫秒2毫秒2毫秒
所有ping和traceroute都正常工作,但没有LDP成员资格。
RP/0/RSP0/CPU0:R1# show mpls ldp discovery 192.168.12.6 detail
Thu Jun 27 07:05:43.503 UTC
Local LDP Identifier: 192.168.248.84:0
Discovery Sources:
Targeted Hellos:
192.168.248.84 -> 192.168.12.6 (active), xmit/recv
Hello interval: 5 sec (due in 978 msec)
Quick-start: Enabled
LDP Id:192.168.248.84:0
Hold time: 45 sec (local:90 sec, peer:45 sec)
(expiring in 41.3 sec)
Established: Jun 26 12:02:16.216 (18:58:47 ago)
Session bringup fail reason:
waiting for tcp incall
您可以看到TCP失败的原因。
问题分析
选中Show mpls ldp trace error reverse | in 192.168.12.6 命令后,会注意到由于内存不足,没有LDP邻居。
Jun 27 07:08:29.742 mpls/ldp/err 0/RSP0/CPU0 t1 [ERR][MISC]:8201: VRF(0x60000000):
ldp_nbr_ok_to_connect: Call from 192.168.12.6 rejected - state=2, reason=''MPLS_LDP'
detected the 'resource not available' condition 'A low memory condition prevents new
LDP sessions'
此外,我们注意到RSP0上存在小型内存,但RSP1是正常的。
RP/0/RSP0/CPU0:R1#show watchdog memory-state
Thu Jun 27 06:16:13.033 UTC
Memory information:
Physical Memory: 6144 MB
Free Memory: 554.988 MB
Memory State: Minor
RP/0/RSP0/CPU0:R1#show watchdog memory-state location 0/RSP1/CPU0
Thu Jun 27 06:17:06.110 UTC
Memory information:
Physical Memory: 6144 MB
Free Memory: 1208.164 MB
Memory State: Normal
由于此问题与内存有关,因此您可以检验系统不同组件的内存消耗情况,并使用最高内存进行跟踪,即使与其他RSP和设备相比也是如此。发现RSP0对ltrace的内存使用率最高。
RP/0/RSP0/CPU0:R1#show shmem summary location 0/rSP0/CPU0
Thu Jun 27 07:24:48.601 UTC
Total Shared memory: 2345M
ShmWin: 349M
Image: 71M
LTrace: 690M
AIPC: 73M
SLD: 3M
SubDB: 528K
CERRNO: 148K
GSP-CBP: 165M
EEM: 0
XOS: 15M
CHKPT: 10M
CDM: 9M
XIPC: 4M
DLL: 64K
SysLog: 10M
Miscellaneous: 940M
LTrace usage details:
Used: 690M, Max: 3366M
Current: default(dynamic)
Configured: dynamic with scale-factor: 16 (changes take effect after reload)
您还可以看到Ltrace占用了大量的内存。
解决方法:
1. 重新加载备用RP。
2. 等待同步。确认sh shmem summary loc 0/RSP1/CPU0, 当前配置文件为比例因子16。
3. 切换。
4. 确认内存正常。确认LDP已恢复。
5. 使用sh shmem summary loc 0/RSP0/CPU0确认缩放因子16已应用于RSP0。
收集日志:
show mpls ldp neighbor
show mpls ldp neighbor detail
show mpls ldp discovery 192.168.12.6 detail
show watchdog memory-state
show watchdog memory-state location 0/RSP1/CPU0
show shmem summ loc 0/RSP1/CPU0
show shmem summ loc 0/RSP0/CPU0
show redundancy
show tech-support mpls ldp
注意:检查具有相同配置的另一台路由器的内存使用情况。