Cilium系列-10-启用 IPv6 BIG TCP和启用巨帧

这篇具有很好参考价值的文章主要介绍了Cilium系列-10-启用 IPv6 BIG TCP和启用巨帧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章

  • Cilium 系列文章

前言

将 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, 启用 IPv6 BIG TCP 允许网络协议栈准备更大的 GSO(发送)和 GRO(接收)数据包,以减少协议栈的遍历次数,从而提高性能和延迟.

测试环境

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

IPv6 BIG TCP

IPv6 BIG TCP 允许网络协议栈准备更大的 GSO(发送)和 GRO(接收)数据包,以减少协议栈的遍历次数,从而提高性能和延迟。它可减少 CPU 负载,有助于实现更高的速度(即 100Gbit/s 及以上)。为了让这些数据包通过协议栈,BIG TCP 在 IPv6 头之后添加了一个临时的 "逐跳"(Hop-By-Hop)头,并在通过线路传输数据包之前将其剥离。BIG TCP 可在双协议栈设置中运行,IPv4 数据包将使用旧的下限(64k),IPv6 数据包将使用新的较大下限(192k)。请注意,Cilium 假定 GSO 和 GRO 的默认内核值为 64k,只有在必要时才会进行调整,也就是说,如果启用了 BIG TCP,而当前的 GSO/GRO 最大值小于 192k,那么 Cilium 会尝试增加这些值;如果禁用了 BIG TCP,而当前的最大值大于 64k,那么 Cilium 会尝试减少这些值。BIG TCP 不需要更改网络接口 MTU。

需求

  • ✔️ Kernel >= 5.19
  • ✔️ eBPF Host-Routing(主机路由)
  • ✔️ 基于 eBPF 的 kube-proxy 替换
  • ✔️ 基于 eBPF masquerading(伪装)
  • ✔️ 禁用隧道(Tunnel)和加密
  • ❌ 支持的 NICs: mlx4, mlx5

由于我这里没有 mlx4, mlx5 型号的网卡, 所以本次无法实战测试了.

要启用 IPv6 BIG TCP:

helm install cilium cilium/cilium --version 1.13.4 \
  --namespace kube-system \
  --set tunnel=disabled \
  --set bpf.masquerade=true \
  --set ipv6.enabled=true \
  --set enableIPv6Masquerade=false \
  --set enableIPv6BIGTCP=true \
  --set kubeProxyReplacement=strict

请注意,切换 IPv6 BIG TCP 选项后,必须重新启动 Kubernetes Pod 才能使更改生效。

要验证您的安装是否使用 IPv6 BIG TCP 运行,请在任何一个 Cilium pod 中运行 cilium status,并查找报告 "IPv6 BIG TCP "状态的行,其状态应为 "enabled"。

修改 MTU 为巨型帧

这里也顺便提一下"修改 MTU 为巨型帧".

最大传输单位(MTU)会对配置的网络吞吐量产生重大影响。Cilium 将自动检测底层网络设备的 MTU。因此,如果系统配置为使用巨型帧,Cilium 将自动使用巨型帧。

要从中受益,请确保您的系统配置为使用巨型帧(如果您的网络允许)。

因为我的网络设备无法修改为巨型帧, 所以本次也无法实战测试.

总结

本文调优 Cilium, 启用 IPv6 BIG TCP 允许网络协议栈准备更大的 GSO(发送)和 GRO(接收)数据包,以减少协议栈的遍历次数,从而提高性能和延迟.

但是前提条件是 Kernel >= 5.19, 且需要特定网卡支持. 所以本次无法实际验证.

另一项调优为: 修改 MTU 为巨型帧, 以提升网络吞吐量. 但是前提条件是网络允许.

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

  • ✔️ 启用本地路由 (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 驱动程序)

📚️参考文档

  • IPv6 BIG TCP - Tuning Guide — Cilium 1.13.4 documentation

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.文章来源地址https://www.toymoban.com/news/detail-622301.html

到了这里,关于Cilium系列-10-启用 IPv6 BIG TCP和启用巨帧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cilium系列-11-启用带宽管理器

    Cilium 系列文章 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于: 启用本地路由(Native Routing) 完全替换 KubeProxy IP 地址伪装(Masquerading)切换为基于

    2024年02月14日
    浏览(20)
  • Cilium系列-12-启用 Pod 的 BBR 拥塞控制

    Cilium 系列文章 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于: 启用本地路由(Native Routing) 完全替换 KubeProxy IP 地址伪装(Masquerading)切换为基于

    2024年02月14日
    浏览(24)
  • IPv4,IPv6,TCP,路由

    ip : 网际协议,IP协议能让世界上任意两台计算机之间进行通信。 IP协议的三大功能: 寻址和路由 传递服务:不可靠(尽最大努力交付传输数据包),可靠性由上层协议提供;无连接 数据包分片重组 OSI七层架构(理论) 和 TCP/IP的4层架构(实现) IP的主要作用是在复杂的网络

    2024年02月11日
    浏览(36)
  • TCP/IP协议,IPV4,IPV6,为什么国家大力倡导IPV6的发展

    简单回顾一下TCP的特点 TCP是可靠性,UDP是负责效率,那么如何基于UDP实现可靠传输 本质还是考察TCP 目录 TCP/IP协议栈💛  那么假如IP地址不够用怎么办呢?NAT机制💙  IP地址的介绍💜  我们来简单了解一下,上面都是干什么的: (1)四位版本号 主流IPV4,IPV6(用于工作,商用这

    2024年02月08日
    浏览(36)
  • 各种数据包头的详解(tcp,udp,ipv4,ipv6)

    Osi七层参考模型: 应用层 表示层 会话层 --------前三层控制层面 --------后四层数据层面 传输层: 区分不同的流量,定义传输方式(tcp/udp),定义端口号(区分不同的服务) 网络层: 寻址,编址(ipv4地址) 数据链路层: 定义局域网的封装, Ethernet 2 IEEE802.3 封装 物理层 Tcp/ip参

    2024年02月08日
    浏览(33)
  • 中兴R5300 G4服务器iSAC管理员zteroot密码遗失的重置方法及IPV6地址启用设置

    本文讲解中兴R5300 G4服务器BMC带外iSAC管理员zteroot密码遗失,无法登录时如何对其进行密码重置,以及iSAC启用IPV6地址的方法。 一、重置中兴R5300 G4服务器iSAC管理员zteroot密码 1、通过SSH登录到iSAC,默认用户名:sysadmin,密码:superuser,如有修改,请输入修改后的密码 2、确认主

    2024年02月03日
    浏览(53)
  • IPv6不得不说的10个误区

    IPv6的概念 IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。目前IP协议的版本号是4(简称为IPv4),它的下一个版本就是IPv6。 1. IPv6 还不

    2024年02月07日
    浏览(33)
  • 解决路由器接电信光猫win10出现ipv6不稳定的问题

    问题说明 本人是使用电信光猫拨号,路由器(redmi AX6S)接光猫的方式,路由器开启ipv6,使用ipv6时经常出现类似掉线情况,ipv6非常不稳定,一会能用一会不能用,大概几分钟就一次 问题定位 最后发现是ipv6的默认网关会时不时消失,导致ipv6不能用 解决方法 手动添加ipv6默认

    2024年02月11日
    浏览(66)
  • 【软考网络管理员】2023年软考网管初级常见知识考点(10)- 网际协议IP及IPV6,IPV4详解

    分类的IP地址,子网划分,CIDR和路由汇聚,IPV4数据报格式,IPV6协议,软考网络管理员常考知识点,软考网络管理员网络安全,网络管理员考点汇总。 原创于:CSDN博主-《拄杖盲学轻声码》,更多考点汇总可以去他主页查看 更多考试总结可关注CSDN博主-《拄杖盲学轻声码》 这

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包