What is the role of wasm module? #105
-
引入wasm模块,是因为可以通过现有的wasm工具链可以将各种语言编译为wasm字节码的形式吗? 我了解到wasm虚拟机运行在用户态,而bpf虚拟机运行在内核态。当使用wasm模块来运行bpf程序时,bpf程序是否依然被加载到内核调用的相关函数中? 在本项目中,wasm模块的作用是什么? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
https://mp.weixin.qq.com/s/OhcBWvXIIrPWw1fzVWXJRA 也许可以参考这篇文章? 主要是有这些想法: 可移植:让 eBPF 工具和应用完全平台无关、可移植,不需要进行重新编译即可以跨平台分发。 隔离性:借助 WASM 的可靠性和隔离性,让 eBPF 程序的加载和执行、以及用户态的数据处理流程更加安全可靠;事实上一个 eBPF 应用的用户态控制代码通常远远多于内核态。 包管理:借助 WASM 的生态和工具链,完成 eBPF 程序或工具的分发、管理、加载等工作,目前 eBPF 程序或工具生态可能缺乏一个通用的包管理或插件管理系统。 跨语言:目前 eBPF 程序由多种用户态语言开发(如 Go++等),超过 30 种编程语言可以被编译成 WebAssembly 模块,允许各种背景的开发人员(C、Go、Rust、Java、TypeScript 等)用他们选择的语言编写 eBPF 的用户态程序,而不需要学习新的语言。 敏捷性:对于大型的 eBPF 应用程序,可以使用 WASM 作为插件扩展平台:扩展程序可以在运行时直接从控制平面交付和重新加载。这不仅意味着每个人都可以使用官方和未经修改的应用程序来加载自定义扩展,而且任何 eBPF 程序的错误修复和/或更新都可以在运行时推送和/或测试,而不需要更新和/或重新部署一个新的二进制。 轻量级:WebAssembly 微服务消耗 1% 的资源,与 Linux 容器应用相比,冷启动的时间是 1%:我们也许可以借此实现 eBPF as a service,让 eBPF 程序的加载和执行变得更加轻量级、快速、简便易行。 |
Beta Was this translation helpful? Give feedback.
https://mp.weixin.qq.com/s/OhcBWvXIIrPWw1fzVWXJRA
也许可以参考这篇文章? 主要是有这些想法:
可移植:让 eBPF 工具和应用完全平台无关、可移植,不需要进行重新编译即可以跨平台分发。
隔离性:借助 WASM 的可靠性和隔离性,让 eBPF 程序的加载和执行、以及用户态的数据处理流程更加安全可靠;事实上一个 eBPF 应用的用户态控制代码通常远远多于内核态。
包管理:借助 WASM 的生态和工具链,完成 eBPF 程序或工具的分发、管理、加载等工作,目前 eBPF 程序或工具生态可能缺乏一个通用的包管理或插件管理系统。
跨语言:目前 eBPF 程序由多种用户态语言开发(如 Go++等),超过 30 种编程语言可以被编译成 WebAssembly 模块,允许各种背景的开发人员(C、Go、Rust、Java、TypeScript 等)用他们选择的语言编写 eBPF 的用户态程序,而不需要学习新的语言。
敏捷性:对于大型的 eBPF 应用程序,可以使用 WASM 作为插件扩展平台:扩展程序可以在运行时直接从控制平面交付和重新加载。这不仅意味着每个人都可以使用官方和未经修改的应用程序来加载自定义扩展,而且任何 eBPF 程序的错误修复和/或更新都可以在运行时推送和/或测试,而不需要更新和/或重新部署一个新的二进制。
轻量级:WebAssembly 微服务消耗 1% 的资源,与 Linux 容器应用相比,冷启动的时间是 1%:我们也许可以借此实现 eBPF as a service,让 eBPF 程序的加载和执行变得更加轻量级、快速…