0

0

Linux weave 的 fast datapath 与加密模式权衡

舞姬之光

舞姬之光

发布时间:2026-02-17 07:19:24

|

296人浏览过

|

来源于php中文网

原创

weave开启fast datapath后加密失效,因其绕过内核网络栈,而加密依赖iptables+ipsec路径;二者不兼容,导致加密逻辑无法介入。

linux weave 的 fast datapath 与加密模式权衡

fast datapath 开启后为什么加密失效

Weave 的 fast datapath 默认绕过内核网络栈,直接在 eBPF 或内核模块层面转发流量,而 Weave 的加密(weave encrypt)依赖于 iptables + IPsec(或用户态封装)路径。两者不兼容——加密逻辑压根没机会介入 fast datapath 的包处理流程。

常见错误现象:weave status 显示 Encryption: enabled,但抓包发现所有 pod 间流量明文;或启用加密后,fast datapath 自动退回到 sleeve 模式(日志里出现 Using sleeve mode instead of fastdp)。

  • 必须二选一:要么关掉 fast datapath(加 --no-fastdp 启动 weave),要么放弃加密
  • Weave 2.8+ 尝试在 fastdp 中支持加密,但仅限于特定内核版本(≥5.10)+ eBPF 支持完整(bpf_jit_enable=1)+ 启用 --ipalloc-range--rewrite-hosts 等隐式依赖项,实际生产环境极少稳定启用
  • 检查是否误启用了 --trusted-subnets:该选项会跳过加密,且与 fastdp 共存时更难排查

如何验证当前 weave 实际走的是 fastdp 还是 sleeve

不能只看启动参数或 weave status 输出,得看运行时行为。fastdp 会在内核创建 weave 类型的 eBPF 程序或加载 weave-kube 模块,而 sleeve 完全走用户态 weaver 进程 + UDP 封包。

实操建议:

AI Time Machine
AI Time Machine

使用AI创建穿越历史的超逼真的头像

下载
  • 执行 lsmod | grep weave:有输出说明 fastdp 模块已加载(sleeve 模式下为空)
  • 运行 bpftool prog list | grep weave:有 bpf 程序则确认 fastdp 正在用 eBPF 转发
  • 查日志:journalctl -u weave | grep -i "using.*fastdp\|sleeve",注意首次连接建立时的协商结果
  • 对比延迟:fastdp 下 pod 间 ping 延迟通常 0.5ms(尤其高并发时)

加密模式下性能下降主要卡在哪

不是加密算法本身慢(AES-GCM 硬件加速后开销极小),而是加密强制 weave 回退到 sleeve 模式后,整个链路变重:UDP 封包/解包、用户态线程调度、额外内存拷贝、conntrack 表压力上升。

典型瓶颈点:

  • 每个包都要进用户态 weaver 进程处理,无法利用 XDP 或 eBPF offload
  • sleeve 使用单个 UDP 端口承载所有节点间流量,高吞吐下容易触发 udp_recvq_overflow(查 netstat -s | grep -i "packet receive errors"
  • 加密密钥分发依赖 gossip,节点多于 50 时密钥同步延迟升高,新 pod 加入后短暂出现未加密通信
  • weave expose 或 hostport 映射在 sleeve 模式下需额外 DNAT 规则,和加密叠加后规则冲突概率上升

生产环境推荐组合与避坑点

没有“既快又安全”的默认方案。权衡必须基于你的威胁模型和可观测能力。

  • 内网可信环境(如 AWS VPC 内、K8s 集群独占物理网络):无条件启用 fast datapath,禁用加密(--no-encrypt),这是 weave 性能基准
  • 需要加密的场景(如混合云、边缘节点接入):主动禁用 fastdp(--no-fastdp),并确保 weave 进程 CPU limit ≥ 2 核,避免 sleeve 成为瓶颈
  • 别指望 --password-file--ipalloc-range 同时生效还能开启 fastdp:后者要求 CNI 插件提前分配 IP,前者触发加密握手,二者在 fastdp 初始化阶段就冲突
  • 升级 weave 前务必验证:新版本可能默认启用 fastdp,而旧配置文件没显式关掉它,上线后加密静默失效

最常被忽略的一点:Weave 的加密只保护 pod 到 pod 流量,NodePort、Ingress、hostNetwork pod 的出向流量都不加密——这点和 fastdp 无关,但很多人误以为开了加密就“全链路安全”了。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

418

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

592

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

675

2023.08.10

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

452

2023.08.14

tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

123

2023.07.25

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

300

2023.08.08

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

393

2024.11.14

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1520

2023.06.21

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

283

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.2万人学习

Git 教程
Git 教程

共21课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号