searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

云原生时代的Wasm和eBPF简介

2023-04-24 09:54:36
85
0

一、简介

 BPF/eBPF

BPF - Berkeley Packet Filter ,是一种数据包过滤技术,采用虚拟机 (VM) 设计,可以有效地工作在基于寄存器结构的 CPU 之上,并通过缓存机制提高过滤性能,但BPF只能运行在内核态,没有大规模使用。

eBPF - extended BPF ,eBPF针对现代硬件进行了优化,增加了寄存器和优化指令。并且向用户空间开放了能力,可以在Linux内核中运行沙盒程序,而无需更改内核源代码或加载内核模块。实现机制上类似Java字节码与JVM,开发者可以编写程序,编译为字节码,映射到eBPF中执行。eBPF可以监控内核事件、调用等,从而在观测(跟踪、性能调优等)、安全和网络等领域发挥重要的作用。

 wasm - WebAssembly

WebAssembly: 诞生于2015年,一种基于堆栈式虚拟机的二进制指令集,Wasm 被设计成为一种编程语言的可移植编译目标,并且可以通过将其部署在 Web 平台上,以便为客户端及服务端应用程序提供服务。

Wasm出现的最初原因是为了解决Javascript在浏览器执行性能问题,主要使用场景在浏览器中。后来为了在web场景之外使用wasm,出现了新的标准WASI(WebAssembly System Interface),支持WASI的runtime都可以运行wasm,从而使wasm runtime作为应用运行时出现在云计算基础设施领域成为可能。

eBPF和wasm runtime都具备执行字节码的能力,从这个角度看,认为是虚拟机也可以。但从诞生的背景和原理上看,两者有比较大的区别:

- eBPF是linux内核的子系统,wasm runtime类似JVM,可跨平台

- 从应用场景上看,wasm runtime可作为应用的运行时环境,应用场景更广泛。

二、使用场景

 1、eBPF:

eBPF优势主要体现在安全、性能和可观测性方面,一些强大的性能分析工具如BCC或BPFTrace都是基于eBPF实现的。在云计算容器技术领域,eBPF可以用于优化网络性能,流量治理,安全防御等,越来越得到重视。

1)、容器安全

可以编写eBPF程序,对容器的访问权限进行控制和跟踪,对异常网络流量进行分析,对问题容器和节点进行隔离等。

2)、网络插件

Cilium 是K8S网络插件,基于Linux的内核技术eBPF,可以在Linux内部动态插入强大的安全性、可见性和网络控制逻辑,可以透明的对Kubernetes等容器管理平台上的应用程序服务之间的网络连接进行安全防护。

2、wasm:

wasm优势主要体现在轻量、安全,相比容器的重和慢,运行在wasm runtime中的应用可以毫秒级冷启动和极低的资源消耗,在边缘、函数计算、Serverless场景比docker有比较大的优势。

1)、某些场景下取代docker

与容器相比,wasm有以下优势:

- 不需要特定的容器或虚拟化技术支持就可以运行

- WASM及其运行时可以快速执行并且体积非常小

- WASM在默认情况下不能做任何事情;只有在明确的权限下才能执行。

  目前通过krustlet开源项目,基于k8s运行wasm程序的负载,通过亲和性来运行wasm程序,目前很多功能是实验性,还不具备生产条件。

 2)、服务网格

服务网格istio - 支持通过wasm扩展Envoy,用户可以编写自定义的插件来完成网格控制逻辑。

3)、边缘/Serverless场景

CNCF开源项目WasmEdge: 可以把WebAssembly做成OCI(Open Container Interface),实现CRI,被K8S调度。WasmEdge Runtime可以应用于 severless 云函数、SaaS、区块链智能合约、物联网、汽车实时软件应用等多种场景。

阿里CDN的EdgeRoutine:是阿里云CDN推出的边缘Serverless计算环境。可以CDN边缘节点执行自定义的代码,实现CDN定制化逻辑,提高性能。

三、总结

eBPF和wasm都是最近几年的新技术,凭借它们各自独有的优势,开始在云计算领域流行。从当前发展来看,eBPF在网络方面的应用相对成熟些,可以借鉴开源的项目如cilium在我们产品的网络和安全方面做一些优化。wasm在云计算领域目前属于快速成长阶段,一些开源项目如WasmEdge、Krustlet等在生产落地的案例不多,可以保持关注,做一些技术预研和储备。

Rust是新兴的安全可靠、高性能的系统级编程语言,由于对编译成wasm/eBPF的bytecode支持好,因此相关的应用都优先用Rust来写。但Rust学习曲线较高,目前国内Rust工程师很少。

0条评论
0 / 1000
chuoo
13文章数
0粉丝数
chuoo
13 文章 | 0 粉丝
原创

云原生时代的Wasm和eBPF简介

2023-04-24 09:54:36
85
0

一、简介

 BPF/eBPF

BPF - Berkeley Packet Filter ,是一种数据包过滤技术,采用虚拟机 (VM) 设计,可以有效地工作在基于寄存器结构的 CPU 之上,并通过缓存机制提高过滤性能,但BPF只能运行在内核态,没有大规模使用。

eBPF - extended BPF ,eBPF针对现代硬件进行了优化,增加了寄存器和优化指令。并且向用户空间开放了能力,可以在Linux内核中运行沙盒程序,而无需更改内核源代码或加载内核模块。实现机制上类似Java字节码与JVM,开发者可以编写程序,编译为字节码,映射到eBPF中执行。eBPF可以监控内核事件、调用等,从而在观测(跟踪、性能调优等)、安全和网络等领域发挥重要的作用。

 wasm - WebAssembly

WebAssembly: 诞生于2015年,一种基于堆栈式虚拟机的二进制指令集,Wasm 被设计成为一种编程语言的可移植编译目标,并且可以通过将其部署在 Web 平台上,以便为客户端及服务端应用程序提供服务。

Wasm出现的最初原因是为了解决Javascript在浏览器执行性能问题,主要使用场景在浏览器中。后来为了在web场景之外使用wasm,出现了新的标准WASI(WebAssembly System Interface),支持WASI的runtime都可以运行wasm,从而使wasm runtime作为应用运行时出现在云计算基础设施领域成为可能。

eBPF和wasm runtime都具备执行字节码的能力,从这个角度看,认为是虚拟机也可以。但从诞生的背景和原理上看,两者有比较大的区别:

- eBPF是linux内核的子系统,wasm runtime类似JVM,可跨平台

- 从应用场景上看,wasm runtime可作为应用的运行时环境,应用场景更广泛。

二、使用场景

 1、eBPF:

eBPF优势主要体现在安全、性能和可观测性方面,一些强大的性能分析工具如BCC或BPFTrace都是基于eBPF实现的。在云计算容器技术领域,eBPF可以用于优化网络性能,流量治理,安全防御等,越来越得到重视。

1)、容器安全

可以编写eBPF程序,对容器的访问权限进行控制和跟踪,对异常网络流量进行分析,对问题容器和节点进行隔离等。

2)、网络插件

Cilium 是K8S网络插件,基于Linux的内核技术eBPF,可以在Linux内部动态插入强大的安全性、可见性和网络控制逻辑,可以透明的对Kubernetes等容器管理平台上的应用程序服务之间的网络连接进行安全防护。

2、wasm:

wasm优势主要体现在轻量、安全,相比容器的重和慢,运行在wasm runtime中的应用可以毫秒级冷启动和极低的资源消耗,在边缘、函数计算、Serverless场景比docker有比较大的优势。

1)、某些场景下取代docker

与容器相比,wasm有以下优势:

- 不需要特定的容器或虚拟化技术支持就可以运行

- WASM及其运行时可以快速执行并且体积非常小

- WASM在默认情况下不能做任何事情;只有在明确的权限下才能执行。

  目前通过krustlet开源项目,基于k8s运行wasm程序的负载,通过亲和性来运行wasm程序,目前很多功能是实验性,还不具备生产条件。

 2)、服务网格

服务网格istio - 支持通过wasm扩展Envoy,用户可以编写自定义的插件来完成网格控制逻辑。

3)、边缘/Serverless场景

CNCF开源项目WasmEdge: 可以把WebAssembly做成OCI(Open Container Interface),实现CRI,被K8S调度。WasmEdge Runtime可以应用于 severless 云函数、SaaS、区块链智能合约、物联网、汽车实时软件应用等多种场景。

阿里CDN的EdgeRoutine:是阿里云CDN推出的边缘Serverless计算环境。可以CDN边缘节点执行自定义的代码,实现CDN定制化逻辑,提高性能。

三、总结

eBPF和wasm都是最近几年的新技术,凭借它们各自独有的优势,开始在云计算领域流行。从当前发展来看,eBPF在网络方面的应用相对成熟些,可以借鉴开源的项目如cilium在我们产品的网络和安全方面做一些优化。wasm在云计算领域目前属于快速成长阶段,一些开源项目如WasmEdge、Krustlet等在生产落地的案例不多,可以保持关注,做一些技术预研和储备。

Rust是新兴的安全可靠、高性能的系统级编程语言,由于对编译成wasm/eBPF的bytecode支持好,因此相关的应用都优先用Rust来写。但Rust学习曲线较高,目前国内Rust工程师很少。

文章来自个人专栏
容器
13 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0