B站:从拥塞控制算法热交换到内核错误修复

B站:从拥塞控制算法热交换到内核错误修复

💡 原文中文,约11200字,阅读约需27分钟。
📝

内容提要

我们在哔哩哔哩开发并测试了一种改进的BBR拥塞控制算法。在此过程中,遇到了内核错误,通过热交换和套接字窃取等方法成功修复了该错误。

🎯

关键要点

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

继续阅读