是的,在 Comware V7 交换机上执行 snmpwalk 操作,尤其是在未指定具体 OID 的情况下,确实可能导致 CPU 使用率飙升。
这并非特定于 Release 3116 版本的缺陷,而是由 snmpwalk 的工作原理和交换机的资源限制共同导致的。
snmpwalk 会导致 CPU 飙升?大量的 GetNext 请求:snmpwalk 命令的本质是向设备发起一连串的 GetNext 请求,以遍历目标 MIB 视图下的所有节点。对于功能丰富的企业级交换机,其 MIB 库非常庞大,这意味着 snmpwalk 需要发送成百上千个请求。
消耗 CPU 资源:每一个 SNMP 请求都需要交换机 CPU 进行处理,包括解析报文、查询 MIB 库、构造响应等。当短时间内有大量请求涌入时,CPU 的 snmpd(SNMP 服务进程)占用率会急剧升高。
默认获取全部信息:如果在执行 snmpwalk 时没有指定具体的 OID(对象标识符),交换机会默认尝试获取所有能访问的信息。这会导致数据传输量巨大,处理时间极长,CPU 使用率在任务期间会持续处于高位。
请求队列积压:当设备同时收到来自多个网管系统的 SNMP 请求,或者 snmpwalk 的请求频率过高时,交换机的 SNMP 请求队列会积压。新来的请求等待时间变长,设备为了处理积压的任务,CPU 负载会进一步增加。
暂无评论
H3C Comware7.1.045 Release3116 执行 snmpWalk 整机 CPU 飙升 完整根因 + 优化方案
一、核心故障根源
低版本固件 SNMP 模块性能缺陷(根本)
CMW710-R3116 老旧补丁存在 SNMP 遍历性能 Bug:snmpWalk全量遍历 OID 时,snmpd 进程持续遍历全量端口、ARP、LLDP、路由 MIB,无缓存优化,控制核 CPU 直接打满;大量get-next报文串行处理,不做分片节流,单次全量遍历 CPU 直接冲到 80%~100%。
网管侧全量无限制遍历
网管工具一次性全树 walk(.1根节点),不做分段、不做过滤,设备需要递归遍历上万条 MIB 节点,CPU 开销成倍放大。
SNMP 无访问 ACL,存在外网 / 扫描机大量无效 SNMP 请求叠加负载
设备开启 LLDP、大量 ARP、多 VLAN、端口流量统计 MIB,遍历计算开销叠加
二、临时快速缓解配置(不用升级固件,立刻降 CPU)
1. 限制仅可信网管 IP 访问 SNMP,屏蔽无效扫描
bash
运行
system-view
# 只允许网管服务器192.168.1.10访问SNMP
acl number 3000
rule permit source 192.168.1.10 0
rule deny
# 绑定SNMP只读团体ACL
snmp-agent community read test acl 3000
2. 自定义 MIB 视图,屏蔽无用大开销 OID(大幅减少遍历计算量)
过滤端口流量统计、ARP 表、LLDP、接口大量历史计数节点,只开放业务监控必需 OID:
bash
运行
# 创建视图,排除高开销MIB分支
snmp-agent mib-view included MONITOR-VIEW iso
snmp-agent mib-view excluded MONITOR-VIEW iso.3.6.1.2.1.16 # RMON流量统计
snmp-agent mib-view excluded MONITOR-VIEW iso.3.6.1.2.1.22 # LLDP
snmp-agent mib-view excluded MONITOR-VIEW iso.3.6.1.2.1.4 # ARP/IP表
# 只读团体绑定精简视图
snmp-agent community read test mib-view MONITOR-VIEW
3. 重启 SNMP 进程释放卡死遍历线程
bash
运行
undo snmp-agent
snmp-agent
4. 网管侧优化(关键)
禁止全量 walk .1,分段遍历:系统、CPU 内存、端口表分开采集;
延长采集间隔,由 1 分钟改为 3~5 分钟;
关闭无用指标采集(端口进出字节历史统计、ARP 全表、LLDP 邻居全表);
不要并发多台网管同时遍历同一台设备。
三、中长期根治方案(彻底解决版本 Bug)
1. 固件升级(最优根治)
当前版本 R3116 存在 SNMP 遍历性能缺陷,升级同大版本 7.1 系列高稳定补丁 R6202P05 及以上:
联系 H3C 400 获取对应设备 IPE 升级包;
Web/TFTP 离线升级,升级前备份配置;
新版本优化 snmpd 遍历缓存、分片处理逻辑,全量 walk CPU 占用下降 70% 以上。
2. 切换 SNMPv3 替代 v2c
v3 增加报文校验、会话缓存,同等遍历量 CPU 开销低于 v2c,同时提升安全性:
bash
运行
# SNMPv3基础配置示例
snmp-agent usm-user v3 admin group-admin simple authentication-mode sha Admin@123 privacy-mode aes128 Admin@456
snmp-agent group v3 group-admin read-view MONITOR-VIEW
四、定位 CPU 占用验证命令
查看整机 CPU 利用率
bash
运行
display cpu-usage summary
查看占用 CPU 最高进程(确认 snmpd 进程高占用)
bash
运行
monitor process
查看正在执行的 SNMP 遍历任务
bash
运行
probe
display system internal snmp-agent operation in-progress
查看 SNMP 超时 / 卡死请求
bash
运行
display system internal snmp-agent operation timed-out
五、长效规避规范
生产网管禁止全根节点 snmpWalk,按需分段采集指标;
所有设备 SNMP 绑定 ACL,仅内网网管访问;
低版本 Comware7 交换机分批升级至 7.1 高补丁版本,修复 SNMP 性能缺陷;
业务量大的交换机,通过 MIB 视图屏蔽无用统计类 OID,减少遍历计算开销。
极简总结
核心根源:7.1.045 Release3116固件 SNMP 模块存在遍历性能 Bug,全量 walk 时 snmpd 进程占满控制核 CPU;
临时缓解:SNMP ACL + 精简 MIB 视图 + 网管分段采集;
彻底根治:升级 7.1 系列高版本固件,优化 SNMP 调度逻辑。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论