内核bug:auth_rpcgss模块引发的容器netns内存泄露与弹性网卡残留
81 浏览量
更新于2024-08-30
收藏 352KB PDF 举报
【内核模块auth_rpcgss】netns引用计数泄露引发的问题
在这个Linux内核bug中,关键问题是内核模块auth_rpcgss中的netns(网络命名空间)引用计数管理出现了漏洞。当特权容器(privileged containers)启用use-gss-proxy功能时,容器终止后,其相关的网络命名空间未能正确释放,导致虚拟弹性网卡(virtual Ethernet card, VETH)残留,从而引发了内存泄露问题。这在长期运行的服务器上尤为明显,且只在特定环境下,如在Kubernetes(k8s)的privileged容器场景中,才会出现弹性网卡残留的现象。
定位过程中的关键步骤包括:
1. **识别问题现象**:问题在生产环境中稳定重现,但在容器团队的测试环境中难以复现,这表明问题可能依赖于某些特定条件或配置。
2. **追踪内核行为**:通过ftrace(Linux系统调用跟踪工具)来分析veth_dellink()函数,这是删除弹性网卡的核心函数。研究异常情况下的函数调用栈,以便找出残留网卡的原因。
3. **设置kprobe事件**:编写ftrace脚本,捕获pveth_dellink()函数的执行,以及与其相关的堆栈信息,以对比正常删除和残留网卡时的不同行为。
4. **深入剖析**:对比分析正常情况下veth_dellink()的调用路径和出现残留网卡时的差异,可能是由于引用计数处理不当,或者与netns的生命周期管理有关的其他因素。
5. **未解决问题**:虽然upstream(内核源代码维护者)尚未修复此bug,但受影响的组织已经内部开发了patch,并正在等待测试验证。
这个问题的解决需要深入了解内核网络命名空间的管理机制、gss-proxy相关模块的交互以及特权容器环境下的特殊性。了解并修复这一bug对于维护高可用性和内存管理的稳定性至关重要,同时也有助于提升对Linux内核深层次工作的理解。
2010-03-30 上传
2009-08-10 上传
2021-07-05 上传
2021-06-26 上传
2021-01-20 上传
2021-04-03 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-03-24 上传
weixin_38631738
- 粉丝: 4
- 资源: 971
最新资源
- enlighten:启发Python控制台应用程序的进度栏
- bookmanagerapp
- 简报:简报
- C和汇编实现Dos操作系统的源代码
- tm_timer:头马演讲-计时小工具
- 灵魂
- grunt-susy-starter:使用 LibSass 和 Grunt 的 Susy Starter
- md5加密算法DLL VC++源代码
- 电信设备-配重式楼顶通信基站抱杆支架[1].zip
- fit-react-app
- 项目1.1
- se_containers:我使用C ++实现容器
- map_generator-old-:lua libs 在遗忘服务器上生成地形
- Visual C++单词拼写检查器
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- 电信设备-配重式楼顶通信基站抱杆支架.zip