字节跳动利用eBPF提升网络性能
字节跳动是一家全球性的科技公司,运营着多个大规模内容平台,覆盖全球范围。为了确保其数据中心的性能和稳定性,字节跳动面临着巨大的挑战。拥有超过100万台服务器运行容器化应用,该公司需要一种能够在高吞吐量的同时保持稳定的网络解决方案。通过利用eBPF技术,字节跳动成功实现了一个去中心化的网络解决方案,显著提升了效率、扩展性和性能。
挑战
随着字节跳动业务的扩展,其现有的容器网络解决方案开始显露出局限性。主要挑战包括:
* 性能瓶颈:基于虚拟以太网的解决方案在网络栈中引入了软中断瓶颈,导致效率低下。
* 稳定性问题:在如此大规模的环境中确保稳定性至关重要,但未经验证的解决方案在生产环境中存在风险。
* 内核版本限制:由于操作限制,无法立即升级到所需的内核版本(6.8)。
为了应对这些挑战,字节跳动需要一种强健、可扩展且高性能的解决方案,并能够逐步部署在其数据中心。
解决方案
字节跳动选择eBPF技术来应对这些挑战。eBPF是一种强大的技术,能够动态且安全地对Linux内核进行重编程,使公司能够重新设计其容器网络栈。实现过程中的关键步骤包括:
* 引入netkit:
- 字节跳动采用了netkit,这是一种由eBPF驱动的网络设备,自Linux内核版本6.8引入,提供了比传统虚拟以太网在容器网络中更优异的性能。
- 为了适应现有约束和传统部署,netkit被回移植到内核版本5.15,以确保与字节跳动的基础设施兼容。
* 滚动升级策略:
- 通过精心策划的升级过程,确保最小化对服务的干扰。容器网络接口和内核升级分别进行管理,使得逐步过渡到netkit成为可能。
- 对于混合部署可能存在的问题,确保了在过渡期间netkit与虚拟以太网的兼容性。
* 处理故障:
- 实现了故障回退机制,以应对netkit或其关联的eBPF程序失败的情况,确保服务不中断。
成果
部署eBPF和netkit在字节跳动的数据中心带来了显著的改进:
* 性能提升:
- 消除了网络栈中的最后一个软中断,吞吐量提升了10%。
- 解决了虚拟以太网导致的高CPU负载和数据包重新排序问题,提高了整体效率。
* 可扩展性和稳定性:
- 成功地在数十个集群中部署了netkit,证明了其可靠性和适合更广泛应用的潜力。
* 操作优势:
- 简化了网络栈,减少了维护开销并提高了系统的可观察性。
未来计划
字节跳动计划进一步探索eBPF的潜力,包括:
* 硬件卸载:结合eBPF与硬件卸载,以实现更高的网络性能。
* 更广泛的应用场景:将eBPF的应用扩展到容器网络之外的其他系统优化领域。
结论
字节跳动采用eBPF和netkit,凸显了该技术在解决大规模网络挑战方面的变革潜力。通过重新设计其网络栈并利用eBPF的灵活性,字节跳动实现了可衡量的性能改进,同时确保了稳定性和可扩展性。这一部署证明了eBPF在现代数据中心操作中的创新驱动能力。
本文译自 eBPF,由 BALI 编辑发布。