前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cilium系列-12-启用 Pod 的 BBR 拥塞控制

Cilium系列-12-启用 Pod 的 BBR 拥塞控制

作者头像
东风微鸣
发布2023-09-01 16:29:16
2350
发布2023-09-01 16:29:16
举报
文章被收录于专栏:东风微鸣技术博客

系列文章

•Cilium 系列文章[1]

前言

将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于:

•启用本地路由(Native Routing)•完全替换 KubeProxy•IP 地址伪装(Masquerading)切换为基于 eBPF 的模式•Kubernetes NodePort 实现在 DSR(Direct Server Return) 模式下运行•绕过 iptables 连接跟踪(Bypass iptables Connection Tracking)•主机路由(Host Routing)切换为基于 BPF 的模式 (需要 Linux Kernel >= 5.10)•启用 IPv6 BIG TCP (需要 Linux Kernel >= 5.19)•禁用 Hubble(但是不建议, 可观察性比一点点的性能提升更重要)•修改 MTU 为巨型帧(jumbo frames) (需要网络条件允许)•启用带宽管理器(Bandwidth Manager) (需要 Kernel >= 5.1)•启用 Pod 的 BBR 拥塞控制 (需要 Kernel >= 5.18)•启用 XDP 加速 (需要 支持本地 XDP 驱动程序)•(高级用户可选)调整 eBPF Map Size•Linux Kernel 优化和升级•CONFIG_PREEMPT_NONE=y•其他:•tuned network-* profiles, 如: tuned-adm profile network-latencynetwork-throughput•CPU 调为性能模式•停止 irqbalance,将网卡中断引脚指向特定 CPU

在网络/网卡设备/OS等条件满足的情况下, 我们尽可能多地启用这些调优选项, 相关优化项会在后续文章逐一更新. 敬请期待.

今天我们来调优 Cilium, 启用 Pod 的 BBR 拥塞控制, 以为互联网流量提供更高的带宽和更低的延迟.

测试环境

•Cilium 1.13.4•K3s v1.26.6+k3s1•OS•3 台 Ubuntu 23.04 VM, Kernel 6.2, x86

BBR 拥塞控制

Cilium 的带宽管理器提供的围绕 MQ/FQ 设置的基础架构还允许对 Pod 使用 TCP BBR 拥塞控制。当 Pod 被暴露在 Kubernetes 服务背后,面对来自互联网的外部客户端时,BBR 尤其适用。BBR 可为互联网流量提供更高的带宽和更低的延迟,例如,事实证明,BBR 的吞吐量可比目前最好的基于损耗的拥塞控制高出 2,700 倍,队列延迟可降低 25 倍。

为了让 BBR 在 Pod 上可靠运行,它需要 5.18 或更高版本的内核。

BBR 还需要 eBPF Host-Routing,以保留网络数据包的套接字关联,直到数据包进入主机命名空间物理设备上的 FQ 队列 discipline。

要求

•内核 >= 5.18•带宽管理器•eBPF 主机路由

实施

启用带宽管理器和 Pod 的 BBR:

代码语言:javascript
复制
helm upgrade cilium cilium/cilium --version 1.13.4 \
  --namespace kube-system \
  --reuse-values \
  --set bandwidthManager.bbr=true

验证

要验证您的安装是否使用 Pods 的 BBR 运行,请在任何 Cilium pod 中运行 cilium status,并查找报告 "BandwidthManager" 状态的行,该行应显示 EDT with BPF 以及 [BBR]。具体如下:

代码语言:javascript
复制
$ kubectl -n kube-system exec ds/cilium -- cilium status | grep BandwidthManager
BandwidthManager:           EDT with BPF [BBR] [eth0]

总结

本文继续调优 Cilium, 启用 Pod 的 BBR 拥塞控制, 以为互联网流量提供更高的带宽和更低的延迟. 前提是 Kernel >= 5.18, 并启用带宽管理器和基于 eBPF 的主机路由.

至此,性能调优已完成实战验证:

•✔️ 启用本地路由 (Native Routing)•✔️ 完全替换 KubeProxy•✔️ IP 地址伪装 (Masquerading) 切换为基于 eBPF 的模式•✔️ Kubernetes NodePort 实现在 DSR(Direct Server Return) 模式下运行•✔️ 绕过 iptables 连接跟踪 (Bypass iptables Connection Tracking)•✔️ 主机路由 (Host Routing) 切换为基于 BPF 的模式 (需要 Linux Kernel >= 5.10)•❌ 启用 IPv6 BIG TCP (需要 Linux Kernel >= 5.19, 支持的 NICs: mlx4, mlx5)•由于没有支持的网卡, 无法完成验证•❌ 修改 MTU 为巨型帧 (jumbo frames) (需要网络条件允许)•✔️ 启用带宽管理器 (Bandwidth Manager) (需要 Kernel >= 5.1)•✔️ 启用 Pod 的 BBR 拥塞控制 (需要 Kernel >= 5.18)•启用 XDP 加速 (需要 支持本地 XDP 驱动程序)

📚️参考文档

•Bandwidth Manager - Tuning Guide — Cilium 1.13.4 documentation[2]•Bandwidth Manager - Cilium 1.9: Maglev, Deny Policies, VM Support, OpenShift, Hubble mTLS, Bandwidth Manager, eBPF Node-Local Redirect, Datapath Optimizations, and more[3]

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 东风微鸣技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系列文章
  • 前言
    • 测试环境
    • BBR 拥塞控制
      • 要求
      • 实施
      • 验证
      • 总结
      • 📚️参考文档
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档