ping后IOS内存分配错误

网络工程 思科 路由器 思科-ios
2021-07-25 21:22:51

我在 Tera Term 中为 Cisco IR809g 编写了一个脚本,该脚本通过蜂窝接口在 2 个不同的网络中 ping 3 个不同的路由器(IR 809g)。+- 6 小时后,我遇到内存分配失败。所有的 ping 都开始失败。

ping XXXX 键入要中止的转义序列。向 XXXX 发送 5 个 100 字节的 ICMP Echos,超时为 2 秒:!!!!!! 成功率为 100% (5/5),往返 min/avg/max = 38/54/96 ms
ping XXXX 键入要中止的转义序列。向 XXXX 发送 5 个 100 字节的 ICMP Echos,超时为 2 秒:!!!!!! 成功率为 100% (5/5),往返 min/avg/max = 266/484/846 ms

* 9 月 14 日 13:47:25.733 CEST:%SYS-2-MALLOCFAIL:780 字节的内存分配从 0x1B51F8 开始失败,对齐 32 池:I/O 空闲:17616 原因:内存碎片备用池:无空闲:0 原因:否备用池 -Process= "Pool Manager", ipl= 0, pid= 6 -Traceback= 12582Az 11982Dz 1B51F8z 145C52z 1458FCz

ping XXXX 键入要中止的转义序列。向 XXXX 发送 5 个 100 字节的 ICMP Echos,超时为 2 秒:..... 成功率为 0% (0/5)

到目前为止我发现的是:post那么这可能是默认路由或动态路由协议的错误配置吗?

通过启动show memory,我得到以下结果:

  ¦  Type    ¦    Head  ¦   Total(b) ¦  Used(b)  ¦ Free(b)  ¦ Lowest(b) ¦ Largest(b) ¦
  ¦ -------- ¦ -------- ¦ ---------- ¦ --------- ¦ -------- ¦ --------- ¦ ---------- ¦
  ¦ Process  ¦ EB9FDD4  ¦ 189137452  ¦ 157931336 ¦ 31206116 ¦ 31040956  ¦  30727448  ¦
  ¦     I/O  ¦ B09FDD4  ¦  61865984  ¦  61848732 ¦    17252 ¦    17252  ¦       716  ¦

什么可以解决问题?

3个回答

一般建议,不特定于您的路由器型号:

Ping 跨越 NAT 需要为ICMP Echo Request标头中的每个标识值设置一个 NAT 条目——ICMP不使用像常见传输层协议(UDP、TCP)那样的端口,这是 NAT 路由器对“连接”的唯一控制(有关详细信息,请参阅RFC 5508)。

由于ICMP中没有连接概念,路由器只能按时间老化这些NAT条目。在 NAT 路由器上以相当高的频率进行 Ping 并结合高 ICMP 老化值最终会耗尽路由器的 NAT 表,即。记忆。

你需要要么

  • 从公共 IP 地址 ping 而不需要 NAT
  • 用更高容量的型号更换路由器
  • 降低 ICMP 老化值以更早地淘汰 NAT 表条目,更快地释放内存
  • 降低 ping 频率,降低表增长率
  • 探索在传出的 ICMP 回声请求中使用有限范围的标识值的方法

我们最终试图做的是创建一个所有 cisco 路由器的列表,我们在其中记录了每个路由器:

  1. IOS软件版本
  2. 使用的系统映像文件
  3. FPGA版本

对于那些有连接问题的路由器,我们发现IOS版本、镜像文件和FPGA版本有相似之处。最后,cisco路由器的当地经销商联系cisco后发现,很有可能是软件bug。他写道:Cisco TAC 认为这与 DMVPN 的错误有关,该错误导致报头损坏的流量被传送到蜂窝接口,而不是导致此接口/内部调制解调器出现某种崩溃或故障。

您的 I/O 内存不足。这可以使用memory-size iomem配置命令进行调整您似乎使用了大约 25%,因此 30 或 40 可能会有所帮助。只有 30M 可用,我不会用那个旋钮走得太远。

检查什么正在使用 IO 内存: show memory io allocating-process totals

(更新)

Smart Init is enabled
smart init is sizing iomem
  ID            MEMORY_REQ                 TYPE
0003E9          0X00474800 C2851 Mainboard
000063          0X0003C000 32 Port Async Module
000416          0X00000000 Eight Port FXS/DID Analog Voice Module
0004C8          0X00077D00 HWIC ADSL Annex A
                0X00284860 Onboard PVDM2 SIMM
                0X00262B0A Onboard VPN
                0X000021B8 Onboard USB
                0X002C29F0 public buffer pools
                0X00211000 public particle pools
-----------------------------------------------
TOTAL:          0X00EE5412

If any of the above Memory Requirements are 
"UNKNOWN", you may be using an unsupported
configuration or there is a software problem and
system operation may be compromised.
Rounded IOMEM up to: 16Mb.
Using 1 percent iomem. [16Mb/1024Mb]

启动时,smart-init 运行以设置 iomem 的大小。这通常是一个“很好的猜测”,但并不总是完美的。

blue-gw-1#show memory 
                Head    Total(b)     Used(b)     Free(b)   Lowest(b)  Largest(b)
Processor   49302BE0   902812704    87109336   815703368   815324372   815336332
      I/O   3F000000    16777216     8526040     8251176     7958656     8132988

blue-gw-1#show memory io allocating-process totals 

Allocator PC Summary for: I/O

    PC          Total   Count  Name
0x403D3EE0    5722496       6  IDS SM
0x403D3F98    1906240      37  Normal
0x4039954C     705312     683  *Packet Data*
0x402BDFA8      69760       2  Init
0x403353C4      24704       2  C5510 DSP
0x44BF3CB0      21568       1  sfnt udm
0x4033556C      16512       2  C5510 DSP
0x401B9494      14400       1  dslsar hwic queue
0x43C40834      11680       1  *Init*
0x400504E4       8320       2  MV64340 Ethernet Tx Ring
0x44BFC664       6624       5  sfnt kblock
0x40050460       4224       2  MV64340 Ethernet Rx Ring
0x40836088       4160       1  HDLC32_TX
0x409E63C0       3072      32  USB Startup
0x44BFC114       2624       1  sfnt udm
0x40385450       1280       1  Init
0x408360E0       1088       1  HDLC32_RX

从我的路由器上可以看出,IDS占用了大量内存,我几乎没有使用任何IDS功能。(ipv6 检查)数据包仅在列表中排名第 3。