eunomia-bpf0.3.0发布:只需编写内核态代码,轻松构建、打包、发布完整的eBPF应用eunomia-bpf简介eBPF源于BPF,本质上是处于内核中的一个高效与灵活的虚拟机组件,以一种安全的方式在许多内核hook点执行字节码,开发者可基于eBPF开发性能分析工具、软件定义网络、安全等诸多场景。但是,目前对于开发和使用eBPF应用而言还可能存在一些不够方便的地方:搭建和开发eBPF程序是一个门槛比较高、比较复杂的工作,必须同时关注内核态和用户态两个方面的交互和信息处理,有时还要配置环境和编写对应的构建脚本;目前不同用户态语言如C、Go、Rust等编写的工具难以兼容、难以统一管理,多种
eunomia-bpf0.3.0发布:只需编写内核态代码,轻松构建、打包、发布完整的eBPF应用eunomia-bpf简介eBPF源于BPF,本质上是处于内核中的一个高效与灵活的虚拟机组件,以一种安全的方式在许多内核hook点执行字节码,开发者可基于eBPF开发性能分析工具、软件定义网络、安全等诸多场景。但是,目前对于开发和使用eBPF应用而言还可能存在一些不够方便的地方:搭建和开发eBPF程序是一个门槛比较高、比较复杂的工作,必须同时关注内核态和用户态两个方面的交互和信息处理,有时还要配置环境和编写对应的构建脚本;目前不同用户态语言如C、Go、Rust等编写的工具难以兼容、难以统一管理,多种
作者:竞霄监控能力作为基础运维能力和核心稳定性措施,开发运维人员可以通过监控系统有效进行故障定位,预防潜在风险,分析长期趋势进行容量规划和性能调优,是软件开发生命周期中必不可少的一环。与此同时,Serverless作为云计算的最佳实践和未来演进趋势,其全托管免运维的使用体验和按量付费的成本优势,使得其在云原生时代备受推崇,在下一个十年将成为云厂商提供的核心能力。随着Serverless的心智普及度越来越高,场景覆盖度越来越广,更多使用PHP,Python,C/C++,Node.Js,Golang等语言的用户开始进行Serverless架构升级。对于这部分用户来说,传统的应用监控方案存在以下痛点
作者:竞霄监控能力作为基础运维能力和核心稳定性措施,开发运维人员可以通过监控系统有效进行故障定位,预防潜在风险,分析长期趋势进行容量规划和性能调优,是软件开发生命周期中必不可少的一环。与此同时,Serverless作为云计算的最佳实践和未来演进趋势,其全托管免运维的使用体验和按量付费的成本优势,使得其在云原生时代备受推崇,在下一个十年将成为云厂商提供的核心能力。随着Serverless的心智普及度越来越高,场景覆盖度越来越广,更多使用PHP,Python,C/C++,Node.Js,Golang等语言的用户开始进行Serverless架构升级。对于这部分用户来说,传统的应用监控方案存在以下痛点
本文地址:https://www.ebpf.top/post/ebpf_rust_aya1.前言Linux内核6.1版本中有一个非常引人注意的变化:引入了对Rust编程语言的支持。Rust是一种系统编程语言,Rust通过提供非常强大的编译时保证和对内存生命周期的明确控制。在内核开发中引入Rust语言,将会为内核开发的早期带来更多的安全保障。eBPF是在内核中基于事件运行用户自定义程序的技术,其验证器机制可以保障运行在内核中eBPF程序的安全性。Rust与eBPF有着一个共同的目标:保证内核安全,只是两者侧重的维度有所不同。尽管使用Rust编写eBPF程序多数情况下都需要通过不安全的方式在内核进
本文地址:https://www.ebpf.top/post/ebpf_rust_aya1.前言Linux内核6.1版本中有一个非常引人注意的变化:引入了对Rust编程语言的支持。Rust是一种系统编程语言,Rust通过提供非常强大的编译时保证和对内存生命周期的明确控制。在内核开发中引入Rust语言,将会为内核开发的早期带来更多的安全保障。eBPF是在内核中基于事件运行用户自定义程序的技术,其验证器机制可以保障运行在内核中eBPF程序的安全性。Rust与eBPF有着一个共同的目标:保证内核安全,只是两者侧重的维度有所不同。尽管使用Rust编写eBPF程序多数情况下都需要通过不安全的方式在内核进
上一篇《利用eBPF实现socketlevel重定向》,二哥从整体上介绍了eBPF的一个应用场景socketlevelredirect:如果一台机器上有两个进程需要通过loopback设备相互收发数据,我们可以利用ebpf在发送进程端将需要发送的数据跳过本机的底层TCP/IP协议栈,直接交给目的进程的socket,从而缩短数据在内核的处理路径和时间。这个流程如图1所示。本篇我们来详细看下图1右侧在内核里的实现细节。图1:利用ebpf进行socketlevelredirect,从而跳过TCP/IP协议栈和lo设备先来一张全局图,我们再依次剖析这张图上面的关键知识点。图2:利用ebpf进行sock
上一篇《利用eBPF实现socketlevel重定向》,二哥从整体上介绍了eBPF的一个应用场景socketlevelredirect:如果一台机器上有两个进程需要通过loopback设备相互收发数据,我们可以利用ebpf在发送进程端将需要发送的数据跳过本机的底层TCP/IP协议栈,直接交给目的进程的socket,从而缩短数据在内核的处理路径和时间。这个流程如图1所示。本篇我们来详细看下图1右侧在内核里的实现细节。图1:利用ebpf进行socketlevelredirect,从而跳过TCP/IP协议栈和lo设备先来一张全局图,我们再依次剖析这张图上面的关键知识点。图2:利用ebpf进行sock
开始之前说点题外话,距离上一篇FlannelCNI的发布已经快一个月了。这篇本想趁着势头在去年底完成的,正好在一个月内完成计划的所有内容。但上篇发布后不久,我中招了花了一个多周的时间才恢复。然而,恢复后的状态让我有点懵,总感觉很难集中精力,很容易精神涣散。可能接近网上流传的“脑雾”吧,而且Cilium也有点类似一团迷雾。再叠加网络知识的不足,eBPF也未从涉足,学习的过程中断断续续,我曾经一度怀疑这篇会不会流产。文章中不免会有问题,如果有发现问题或者建议,望不吝赐教。背景去年曾经写过一篇文章 《使用Cilium增强Kubernetes网络安全》[1] 接触过Cilium,借助Cilium的网络
开始之前说点题外话,距离上一篇FlannelCNI的发布已经快一个月了。这篇本想趁着势头在去年底完成的,正好在一个月内完成计划的所有内容。但上篇发布后不久,我中招了花了一个多周的时间才恢复。然而,恢复后的状态让我有点懵,总感觉很难集中精力,很容易精神涣散。可能接近网上流传的“脑雾”吧,而且Cilium也有点类似一团迷雾。再叠加网络知识的不足,eBPF也未从涉足,学习的过程中断断续续,我曾经一度怀疑这篇会不会流产。文章中不免会有问题,如果有发现问题或者建议,望不吝赐教。背景去年曾经写过一篇文章 《使用Cilium增强Kubernetes网络安全》[1] 接触过Cilium,借助Cilium的网络