💡
原文中文,约11200字,阅读约需27分钟。
📝
内容提要
我们在哔哩哔哩开发并测试了一种改进的BBR拥塞控制算法。在此过程中,遇到了内核错误,通过热交换和套接字窃取等方法成功修复了该错误。
🎯
关键要点
- 在哔哩哔哩开发了一种改进的BBR拥塞控制算法,并在真实环境中进行测试。
- 遇到内核错误,导致无法加载更新后的模块,因为旧模块仍在使用中。
- 通过热交换和套接字窃取的方法解决了无法卸载模块的问题。
- 使用setsockopt直接更改套接字的拥塞控制算法,但需要拥有该套接字。
- 通过pidfd_getfd技术从其他进程“窃取”套接字,以便更改其拥塞控制算法。
- 孤立套接字问题导致无法卸载模块,需通过ss命令终止孤立套接字。
- 内核中的TCP窗口问题导致孤立套接字存活时间过长,影响模块卸载。
- 使用bpftrace工具跟踪SOCK_DEAD标志,发现无法终止套接字的原因。
- 最终通过修复内核错误,成功解决了模块卸载问题,并提交了补丁。
➡️