程序员的小天地


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

基于 eBPF 的网络监测实践

时间: 2023-08-24   |   分类: ebpf     |   阅读: 2463 字 ~5分钟

深入浅出 eBPF

首页 eBPF 技术报告 关于

本文地址:https://www.ebpf.top/post/ebpf_network_exporter

公有云网络问题,是一个老生常谈的事情了。今天主要简单说明下,在内网环境下去分析 & 定位这个问题。也并不是一开始就需要 eBPF 加持的,可以从简单的基础工具到监控配合去相关比较快速的定位问题,解决问题。下面会从发现问题到一步步配合使用 Or 开发一些简单的东西去解决问题的大致思路。

阅读全文 »

【BPF入门系列-11】使用 eBPF 技术跟踪 Netfilter 数据流过滤结果

时间: 2023-08-24   |   分类: ebpf     |   阅读: 2393 字 ~5分钟

网络层数据流向与 Netfilter 体系

图 1-1 为网络层内核收发核心流程图,在函数流程图中我们可以看到 Netfliter 在其中的位置(图中深色底纹圆角矩形)。图中对应的 hook 点有 5 个,每个hook 点中保存一组按照优先级排序的函数列表:

阅读全文 »

【BPF入门系列-10】使用 tracepoint 跟踪文件 open 系统调用

时间: 2023-08-24   |   分类: ebpf     |   阅读: 2447 字 ~5分钟

什么是 tracepoint

tracepoint 的介绍可以参见 Kernel 文档这里。从 Linux 内核 4.7 开始,eBPF 程序可以挂载到内核跟踪点 tracepoint。在此之前,要完成内核中函数跟踪的工作,只能用 kprobes/kretprobe 等方式挂载到导出的内核函数(参见 /proc/kallsyms),正如我们前几篇文章跟踪 open 系统调用方式那样。尽管 kprobes 可以达到跟踪的目的,但存在很多不足:

阅读全文 »

【BPF入门系列-9】文件打开记录结果跟踪篇

时间: 2023-08-24   |   分类: ebpf     |   阅读: 1853 字 ~4分钟

前言

在上篇文章中我们为文件 open系统调用采用了 perf_event 的方式将数据从内核上报至用户程序。但是到目前为止,我们只是实现了文件打开记录的跟踪,并没有对文件访问的结果是成功还是失败进行展示。

阅读全文 »

【BPF入门系列-8】文件打开记录跟踪之 perf_event 篇

时间: 2023-08-24   |   分类: ebpf     |   阅读: 1441 字 ~3分钟

ebpf_perf_output 介绍

在上一篇 ”使用 ebpf 实时持续跟踪进程文件记录“ 中,我们简单介绍了使用 eBPF 跟踪文件打开记录的跟踪。为了简单演示功能,我们直接使用了 bpf_trace_printk 进行演示,正如上文所述,bpf_trace_printk 存在一些限制:

阅读全文 »

【BPF入门系列-7】使用 ebpf 实时持续跟踪进程文件记录

时间: 2023-08-24   |   分类: ebpf     |   阅读: 2626 字 ~6分钟

深入浅出 eBPF

本文主要用于演示基于 ebpf 技术来实现对于系统调用跟踪和特定条件过滤,实现基于 BCC 的 Python 前端绑定,过程中对于代码的实现进行了详细的解释,可以作为学习 ebpf 技术解决实际问题的参考样例。

阅读全文 »

【BPF入门系列-6】BPF 环形缓冲区

时间: 2023-08-24   |   分类: ebpf     |   阅读: 6061 字 ~13分钟

深入浅出 eBPF

译者:范彬 原文地址:BPF ring buffer

当前 perf 缓冲区已成为从内核向用户空间发送数据的标准。BPF 环形缓冲区是一个新的BPF数据结构,解决了 BPF perf 缓冲区内存效率和事件重新排序的问题,同时性能达到或超过了 perf 缓冲区。 它既提供了与 perfbuf 兼容的功能,可轻松进行移植,又提供了具有更好可用性的新的 reserve / commit API。 综合基准和实际基准均表明,几乎所有情况下都应考虑将 BPF 环形缓冲区作为从 BPF 程序向用户空间发送数据的默认选择。

阅读全文 »

聊聊对 BPF 程序至关重要的 vmlinux.h 文件

时间: 2023-08-24   |   分类: ebpf     |   阅读: 1230 字 ~3分钟

1.1 前言

eBPF 是一项令人兴奋的强大技术,其允许开发者在 Linux 内核的核心处添加自定义代码功能,并且我们还可以通过编写简单的 C 或 Go 程序与加载到内核中的 eBPF 程序交互,用于加载或读取数据。运行在内核中的 BPF 程序可以检查所附加进程(或内核模块)的内存数据。为此,eBPF 程序需要确切了解处理涉及的数据结构类型,这可以通过 #include "vmlinux.h" 实现。在本中,我将详细介绍 vmlinux.h 是什么以及为什么你在编写 eBPF 程序开始就应该使用它。

阅读全文 »
15 16 17 18 19 20 21 22 23

日志
分类
标签
RSS 订阅
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%