开始的故障是dot1x认证失败,但是采集设备log时已经刷掉了故障的日志,现象就是关闭dot1x 有线终端可以ping通,打开dot1x就ping不通,正在排查时,设备突然重启,重启后dot1x认证成功了,查看重启原因是内存问题:
===============display version===============
H3C Comware Software, Version 7.1.064, Release 6749P36
Copyright (c) 2004-2025 New H3C Technologies Co., Ltd. All rights reserved.
H3C MSR3600 uptime is 0 weeks, 0 days, 0 hours, 40 minutes
Last reboot reason : Memory exhausted
Boot image: flash:/msr3600gx1-cmw710-boot-r6749p36.bin
重启前memory剩余2.9%(dhcpd占比约74%):
===============display memory===============
Memory statistics are measured in KB(Available):
Slot 0:
Total Used Free Shared Buffers Cached FreeRatio
Mem: 3436140 3341620 94520 0 248 275688 2.9%
-/+ Buffers/Cache: 3065684 370456
Swap: 0 0 0
===============display process memory===============
JID Text Data Stack Dynamic Name
20947 692 85300 20 2252 dhcpd
20948 692 2451752 16 2303484 dhcpd
重启后内存恢复:
===============display memory===============
Memory statistics are measured in KB(Available):
Slot 0:
Total Used Free Shared Buffers Cached FreeRatio
Mem: 3436140 610452 2825688 0 9300 272668 82.6%
-/+ Buffers/Cache: 328484 3107656
Swap: 0 0 0
大佬们帮忙看看dhcp为什么会占用这么多内存,内存过高dot1x会认证不成功吗?
问题 1:为什么 dhcpd 进程会占用 74% 内存、最终内存耗尽重启?
1)根本主因:R6749P36 版本存在 DHCP 进程内存泄漏 BUG(最高概率)
你的版本7.1.064 Release 6749P36是老补丁,该基线存在已知缺陷:
DHCP 地址池频繁续租、大量终端上下线、dot1x 联动 DHCP 分配地址场景下,dhcpd进程申请内存后无法正常释放,内存持续线性上涨;
从你的输出可见双 dhcpd 进程,其中一个动态内存占用 2.3GB,整机 3.4G 物理内存被单进程吃掉 74%,无 Swap 分区缓冲,最终系统 OOM 判定Memory exhausted强制重启。
重启后进程内存完全释放,业务临时恢复,但长期运行泄漏会复现故障。
2)业务叠加加剧内存泄漏的配置诱因
dot1x+DHCP 联动场景放大泄漏
开启 802.1X 后终端认证、下线、重认证会频繁触发 DHCP 地址申请 / 释放 / 续租,高频报文循环加速内存碎片与泄漏;关闭 dot1x 后 DHCP 交互量骤降,内存上涨速度明显放缓。
地址池参数未做老化 / 上限限制
未配置地址租期短老化、未限制单池最大在线用户数;
存在大量异常终端反复发起 DHCP Discover/Request 风暴(终端故障、环路、病毒扫描),持续打满 dhcpd 处理队列。
DHCP 扩展 Option 过多、联动模块堆积缓存
配置了大量自定义 Option、Option43/60、DNS / 网关 / 路由下发、地址绑定静态 ARP、DHCP Snooping 联动,每一次分配都会创建缓存条目且无法回收。
3)进程模型补充
MSR V7 将 DHCP 拆分为两个 dhcpd 子进程:
JID20947:控制管理进程,内存占用小;
JID20948:地址分配报文处理主进程,泄漏全部发生在此进程,动态内存 2.3GB 完全是泄漏堆积。
问题 2:内存过高时,为什么打开 dot1x 就认证失败、关闭就正常?
底层原理:整机可用内存枯竭,AAA/dot1x 模块无法分配运行内存
内存资源抢占逻辑
dhcpd 吃光 97% 内存后,系统仅剩 2.9% 空闲内存;802.1X 认证流程依赖 AAA、EAP、RADIUS 客户端、在线用户表多个子模块,每一次认证都需要临时申请内存存储终端 MAC、会话、认证报文缓存。
空闲内存不足时,系统直接拒绝给 dot1x 模块分配内存,EAP 报文处理、RADIUS 报文收发全部中断,终端认证超时失败。
现象对应你的故障:
关闭 dot1x:AAA 模块卸载、释放大量会话内存,空闲内存回升,终端三层 ping 不受限制;
开启 dot1x:模块加载并持续创建会话,内存瞬间耗尽,认证流程无内存可用直接卡死;
设备重启:dhcpd 内存全部释放,空闲内存恢复 82.6%,dot1x 模块可正常分配内存,认证恢复正常。
辅助佐证:
串口 Console 登录不受影响(串口使用独立底层缓存,不占用业务内存),SSH、Web 管理同样会伴随认证卡顿、登录失败。
二、分层落地解决方案(临时应急→中期优化→根治升级)
方案 1:临时应急(立刻缓解,避免随时重启)
手动重启 dhcpd 进程,不整机重启释放内存
plaintext
system-view
undo dhcp server enable
save
# 等待10秒进程完全退出
dhcp server enable
限制 DHCP 地址池并发与老化,减少频繁交互
plaintext
# 全局缩短租期,加快地址回收
dhcp server ip-pool LAN
lease day 0 hour 2 minute 0
# 限制池最大在线地址,防止无限扩张
max-lease-number 200
# 开启冲突地址快速清理
address-conflict detect enable
过滤 DHCP 风暴报文(接口下配置)
plaintext
interface GigabitEthernet 1/0/X
dhcp snooping max-learning-num 100
storm-constrain broadcast bandwidth 10000
定时任务周期性重启 dhcpd(兜底防泄漏)
plaintext
scheduler job reset-dhcp
schedule reboot dhcp
scheduler schedule reset-dhcp periodic 0 3 * * *
方案 2:配置层面优化,降低内存消耗
清理无用 DHCP 扩展 Option,仅保留必要网关、DNS
删除自定义冗余 Option、终端厂商识别 Option,减少缓存条目;
关闭非必要联动特性
无需求则关闭dhcp snooping、静态地址 ARP 绑定、地址日志详细记录;
dot1x 会话老化优化,及时释放认证内存
plaintext
dot1x timer reauth-period 3600
dot1x timer quiet-period 60
# 离线终端快速清理会话
dot1x session-timeout 7200
关闭全局不必要日志输出,减少内存缓存占用
plaintext
undo info-center source DHCP filter all
undo info-center source AAA filter all
方案 3:根治方案(彻底解决内存泄漏,必做)
核心操作:升级系统固件修复 dhcpd 内存泄漏 BUG
当前版本R6749P36存在 DHCP 内存泄漏已知缺陷,官方修复基线:
推荐升级至:Release 06749P45及以上补丁,或直接升级稳定大版本R077xx;
升级前置:
完整备份配置save tftp://xxx/startup.cfg;
下载 MSR3600-28-X1 对应 IPE 镜像,通过 TFTP/WEB 升级;
升级验证:
升级后持续观察display process memory,dhcpd 动态内存不再持续上涨,FreeRatio 稳定维持 70% 以上。
三、常态化监控命令(提前预警内存耗尽)
plaintext
# 1. 整机内存使用率,定时采集
display memory
# 2. 查看dhcpd进程内存占用
display process memory | include dhcpd
# 3. 查看DHCP地址池占用数量
display dhcp server ip-in-use count
# 4. 查看dot1x在线会话数
display dot1x connection count
# 5. 查看整机重启原因历史
display reboot-info
预警阈值:空闲内存 FreeRatio 低于 15% 时,提前执行 dhcp 进程重启操作。
极简总结
dhcp 内存暴涨根因:R6749P36 版本 DHCP 进程内存泄漏 BUG,dot1x 终端频繁上下线加剧泄漏;
dot1x 认证失败逻辑:整机内存被 dhcp 耗尽,AAA 认证模块无内存分配,EAP 处理直接中断;
彻底解决必须升级系统补丁至 P45+,临时可通过重启 dhcp 进程、优化租期 / 会话老化缓解故障。
从你的描述来看,dhcpd进程内存占用过高是导致设备重启的直接原因,而内存耗尽引发的系统资源紧张,是导致802.1X认证失败的根源。
dhcpd进程内存异常增长,最可能的原因是DHCP服务相关的软件缺陷(Bug)导致了内存泄漏(Memory Leak)。这通常由以下因素触发:
处理特定DHCP报文时出现异常:当处理某些格式错误或特殊的DHCP客户端请求时,dhcpd进程可能因未能正确释放内存而导致占用持续攀升。在启用802.1X的环境下,认证与DHCP流程的交互可能放大了触发概率。
软件版本缺陷:你当前使用的版本 Release 6749P36 可能存在已知的内存管理问题。
内存耗尽会间接但严重地影响802.1X认证,过程如下:
系统资源枯竭:dhcpd进程耗尽了绝大部分内存(你提到只剩2.9%),导致整个操作系统内存资源极度紧张。
影响核心服务:802.1X认证依赖的AAA(认证、授权、计费) 服务、RADIUS客户端等关键进程,可能因申请不到内存而无法正常运行或响应超时。
认证流程受阻:当终端发起802.1X认证时,设备因资源不足无法处理,导致认证失败,表现为“打开dot1x就ping不通”。
设备重启:当内存彻底耗尽,系统触发Memory exhausted保护机制自动重启。重启后内存释放,所有服务恢复正常,因此你看到“重启后dot1x认证成功了”。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
哥您好,这是版本bug吗