bpf
  • 2024-05-19eBPF常用map类型
    map种类map类型特点HashMapBPF_MAP_TYPE_HASHhashmap。BPF_MAP_TYPE_PERCPU_HASHpercore的hashmap。BPF_MAP_TYPE_LRU_HASHmap塞满之后,继续插入,自动删除最近最少使用的entry。ArrayMapBPF_MAP_TYPE_ARRAY数组,key是整数。
  • 2024-05-05eBPF约束
    内核态约束1.内核态eBPF无法使用C语言标准库。因为不支持malloc,所以无法扩展skb空间且无法直接从内核态拷贝整个报文到用户态。2.内核态eBPF无法获取当前时间,bpf_ktime_get_ns函数返回系统启动后运行纳秒数,不包括系统暂停时间。https://www.man7.org/linux/man-pages/man7/bpf
  • 2024-04-24ebpf在Android安全上的应用:ebpf的一些基础知识(上篇)
    ebpf在Android安全上的应用:ebpf的一些基础知识(上篇)一、ebpf介绍eBPF是一项革命性的技术,起源于Linux内核,它可以在特权上下文中(如操作系统内核)运行沙盒程序。它用于安全有效地扩展内核的功能,而无需通过更改内核源代码或加载内核模块的方式来实现。(PS:介绍来源于https://ebpf.i
  • 2024-04-14eBPF指定网口丢弃icmp报文
    安装eBPF依赖#安装编译工具aptinstall-yllvmclang#确认内核具有BTF支持,路径存在,内核没有BTF支持,使用vmlinux.h无法通过编译ls/sys/kernel/btf#生成vmlinux.h#aptinstall-ylinux-tools-genericaptinstall-ylinux-tools-6.5.0-26-genericbpftoolbtfdump
  • 2024-04-11转载 ebpf sockmap/redirection 提升 socket 性能(2020)
    利用ebpfsockmap/redirection提升socket性能(2020)转自:https://arthurchiao.art/blog/socket-acceleration-with-ebpf-zh/译者序本文翻译自2020年的一篇英文博客 HowtouseeBPFforacceleratingCloudNativeapplications。原文标题非常宽泛,但内容其实很技术:展示了
  • 2024-04-08【Learning eBPF-3】一个 eBPF 程序的深入剖析
    从这一章开始,我们先放下BCC框架,来看仅通过C语言如何实现一个eBPF。如此一来,你会更加理解BCC所做的底层工作。在这一章中,我们会讨论一个eBPF程序被执行的完整流程,如下图所示。一个eBPF程序实际上是一组eBPF字节码指令。因此你可以直接使用这种特定的字节码来编写e
  • 2024-04-01【Learning eBPF-2】eBPF 的“Hello world”
    前一章讲了eBPF为什么这么吊,不理解没关系,现在开始,我们通过一个“Helloworld”例子,来真正入门一下。BCCPython框架是上手eBPF的最友好方式。来看。2.1BCC的HelloWorld下面的程序是一段BCC框架的HelloWorld程序。#!/usr/bin/python3frombccimportBPFpr
  • 2024-03-29Wireshark过滤基础语法简析
    1.简介Wireshark是一款强大的网络分析工具,它可以捕获和显示网络上的数据包,并提供多种过滤功能,让用户可以快速地找到自己感兴趣的数据包。Wireshark的过滤功能分为两种:捕获过滤和显示过滤。捕获过滤是在数据包进入Wireshark之前就对其进行筛选,只保留符合条件的数据包,从而减少捕
  • 2024-03-29【Learning eBPF-1】什么是 eBPF?为什么它很吊?
    本书中,eBPF被称为一种革命性的内核技术,被广泛应用于网络、观测和安全工具中。这种技术允许你在不重新编译内核的情况下,使能你的自定义工具,与内核数据进行交互。听起来很厉害。1.1追踪溯源,伯克利包过滤器eBPF的祖宗就是伯克利包过滤器,英文名:TheBerkeleyPacketFilter,
  • 2024-03-26BTF:实践指南
    BPF是Linux内核中基于寄存器的虚拟机,可安全、高效和事件驱动的方式执行加载至内核的字节码。与内核模块不同,BPF程序经过验证以确保它们终止并且不包含任何可能锁定内核的循环。BPF程序允许调用的内核函数也受到限制,以确保最大的安全性以防止非法的访问。尽管BPF为编写事件
  • 2024-03-19AOSP平台编写Android-ebpf程序(tracepoint)的一些map定义和使用问题,导致map和prog无法产生的原因。
     前言本片文章并不主要讲解在AOSP平台ebpf程序的整个编写流程,只是一些的map的定义使用问题,如有需要可查看,aosp平台的整个下载流程,以及简单的程序的编译和如何push到手机运行,这位up是我在ebpf领域探索的领路人,本站ID:LiujiaHuan13,如果有需要up本人后面会考虑写一篇aosp程序书写
  • 2024-03-07BPF BTF 详解
    1.介绍BTF(BPFTypeFormat)是内嵌在BPF(BerkeleyPacketFilter)程序中的数据结构描述信息。BPF原本是用于数据包过滤的编程语言,但随着eBPF(extendedBPF)的发展,它的用途已经扩展到多种内核子系统中,包括性能监测、网络安全和配置管理等。BTF是为了实现更复杂的eBPF程序而设计的。其
  • 2024-03-07使用BPF之前和之后生成直方图过程的对比
    以bitehist为例:使用BPF之前:1、在内核中:开启磁盘IO事件的插桩观测。2、在内核中,针对每个事件:向perf缓冲区写入一条记录。如果使用了跟踪点技术(推荐方式),记录中会包含关于磁盘IO的几个元数据字段。3、在用户空间:周期性地将所有事件的缓冲区内容复制到用户空间4。在用户空间:
  • 2024-03-06Linux超能力BPF技术介绍及学习分享(转)
    Linux超能力BPF技术介绍及学习分享版权属于原作者,地址 https://cloud.tencent.com/developer/article/1698426 文章被收录于专栏:大卫李的技术分享​​背景介绍近两年BPF技术跃然成为了一项热门技术,在刚刚结束的KubeCon2020Europe会议上有7个关于BPF的
  • 2024-02-20eBPF demo
    ubuntuserver23.10eBPF介绍eBPF(ExtendedBerkeleyPacketFilter,扩展的伯克利数据包过滤器)前身是BPF(BerkeleyPacketFilter,伯克利数据包过滤器)。BPF合入linuxkernel,在tcpdump中应用。eBPF应用广泛,eBPF程序由两类源文件组成,一类是运行于内核态的eBPF程序的源代码文件(
  • 2024-02-04eBPF程序如何跟内核进行交互
    一个完整的eBPF程序通常包含用户态和内核态两部分。其中,用户态负责eBPF程序的加载、事件绑定以及eBPF程序运行结果的汇总输出;内核态运行在eBPF虚拟机中,负责定制和控制系统的运行状态。对于用户态程序来说,它们与内核进行交互时必须要通过系统调用来完成。而对应到eBPF程序
  • 2024-02-01eBPF是如何工作的
    eBPF全称“扩展的伯克利数据包过滤器(ExtendedBerkeleyPacketFilter)”来看,它是一种数据包过滤技术,是从BPF(BerkeleyPacketFilter)技术扩展而来的。BPF提供了一种在内核事件和用户程序事件发生时安全注入代码的机制,这就让非内核开发人员也可以对内核进行控制。随着内核
  • 2024-01-15【eBPF-04】进阶:BCC 框架中 BPF 映射的应用 v2.0——尾调用
    这两天有空,继续更新一篇有关eBPFBCC框架尾调用的内容。eBPF技术很新,能够参考的中文资料很少,而对于BCC框架而言,优秀的中文介绍和教程更是凤毛麟角。我尝试去网上检索有关尾调用的中文资料,BCC框架的几乎没有。即使找到了,这些资料也难以给出可供参考和正确运行的例子。BCC
  • 2023-12-25【eBPF-01】初见:基于 BCC 框架的第一个 eBPF 程序
    闲言少叙,本文记录了如何零基础通过BCC框架,入门eBPF程序的开发,并实现几个简易的程序。有关eBPF的介绍,网络上的资料有很多,本文暂且先不深入讨论,后面会再出一篇文章详细分析其原理和功能。我们目前只需要知道,eBPF实际上是一种过滤器,这种过滤器几乎可以插入内核源码的任意的
  • 2023-12-25我的收藏周刊091
    文章分享获奖社会学教授加入上纽大,聚焦大中华地区教育社会分层其中涉及的书籍《StudyGods》提速30%!腾讯TQUIC网络传输协议腾讯TQUIC协议实践。eBPF-RethinkingtheLinuxKernel由eBPF引起的对于内核的思考。BPFandtcpdumptcpdump和内核模块BPF的关系
  • 2023-12-16Android BPF 应用流量统计
    1.BPF和eBPFBPF(BerkeleyPacketFilter)最早的网络数据包捕获。eBPF(extendedBerkeleyPacketFilter)新出了一个BPF替换了之前老的BPF,但是名称有的时候也常BPF,也有叫eBPF的。功能得到加强,除了能网络数据包捕获外,也能用于trace内核函数,内核中自带的一个ftrac
  • 2023-11-26eBPF 概述:第 3 部分:软件开发生态
    1.前言在本系列的第1部分和第2部分中,我们对eBPF虚拟机进行了简洁的深入研究。阅读上述部分并不是理解第3部分的必修课,尽管很好地掌握了低级别的基础知识确实有助于更好地理解高级别的工具。为了理解这些工具是如何工作的,我们先定义一下eBPF程序的高层次组件:后端:这是
  • 2023-11-23eBPF 概述:第 2 部分:机器和字节码
    1.前言我们在第1篇文章中介绍了eBPF虚拟机,包括其有意的设计限制以及如何从用户空间进程中进行交互。如果你还没有读过这篇文章,建议你在继续之前读一下,因为没有适当的介绍,直接开始接触机器和字节码的细节是比较困难的。如果有疑问,请看第1部分开头的流程图。本系列的第2
  • 2023-11-20eBPF 概述:第 1 部分:介绍
    1.前言有兴趣了解更多关于eBPF技术的底层细节?那么请继续移步,我们将深入研究eBPF的底层细节,从其虚拟机机制和工具,到在远程资源受限的嵌入式设备上运行跟踪。注意:本系列博客文章将集中在eBPF技术,因此对于我们来讲,文中BPF和eBPF等同,可相互使用。BPF名字/缩写已经没有太
  • 2023-11-02使用uftrace跟踪bpf程序的执行
    作者[email protected]正文uftrace专门用来跟踪用户态的C/C++以及Rust程序的执行,此外它也支持跟踪内核函数。前一篇文章bpf_func_id是如何产生的?是以minimal为例,下面用uftrace跟踪一下执行流。为了可以让uftrace更好的工作,需要对Makefile稍加修改,给GCC加入-pg编译选项,用G