问题标签 [bcc-bpf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
52 浏览

tcp - 如何在 kprobe 程序中使用 enum tcp mib 定义?

在这里,我尝试编写一个程序(kprobe)来包含像@tcp_states 这样的枚举tcp mib 在BPF Performance Tools bpftrace 一书中。枚举 tcp mib 位于“/include/uapi/linux/snmp.h”中:

当我尝试运行它时,输出是:

然后我尝试代替 TCP_MIB_MAX 来放置特定的数组位置,例如 5,(我修改了上面的代码):

当我尝试运行它时,输出是:

为什么不显示 TCP mib?并且在输出中什么也不显示?如何正确使用数组来显示@mib?

0 投票
0 回答
90 浏览

linux-kernel - 使用 bcc/bpf 的最大 uprobe 数

我使用 bcc 来跟踪带有 uprobe 的用户空间程序。但是,我不能附加超过 500 个 uprobe。

我想知道可以同时连接多少个uprobe有限制吗?或者是否有我可以更改的内核配置?

0 投票
1 回答
765 浏览

python - 如果从源代码构建 BCC 后“sudo /usr/share/bcc/tools/execsnoop”失败怎么办?

从源代码构建 BCC 并运行测试“sudo /usr/share/bcc/tools/execsnoop”后,我得到以下输出:

回溯(最后一次调用):文件“/usr/share/bcc/tools/execsnoop”,第 21 行,in from bcc import BPF ImportError: No module named bcc

这是什么意思,可以采取什么措施来补救?

安装依赖项后,这些是我遵循的步骤:

0 投票
1 回答
410 浏览

bpf - 如何在接口之间共享 ebpf 映射

是否可以在两个网络接口之间共享 ebpf 映射。我想编写一个 XDP 程序并将其挂接到两个设备上,即 eth0 和 eth1。该实现要求它们都使用相同的地图。是否可以加载相同的程序,将它们挂接到 eth0 和 eth1 并使用相同的 Map。

谢谢你们!

0 投票
0 回答
120 浏览

networking - 使用 tc-ebpf 卸载 Vlan

我是网络世界的新手,我有一个问题。我有一个加载到 enp5s0 的 tc-ebpf(出口)程序,该程序正在处理 vlan-tag(Q-tags)。我创建了一个名为 enp5s0.1234 的 vlan 接口,id 为 1234。但程序似乎没有读取 vlan-tag。我认为这是由于卸载问题。然而,用 ethtool 转旗似乎并没有解决问题。

我使用 iproute2 加载程序,如下所示:

我在使用该接口发送数据包时验证了正在接收数据包并添加了 Q-tag。

谢谢大家的帮助。

0 投票
0 回答
77 浏览

python - 试图在 nic 上加载 xdp(已卸载)

我正在尝试将我的 XDP 程序直接加载到 NIC(卸载 XDP)上。根据这个答案,我需要将设备指定为以下功能:

  • BPF()
  • load_func()

我是这样做的:

添加设备时出现以下错误:

types.ArgumentError:参数 6:<class 'TypeError'>:类型错误

你能帮我解决这个问题并将我的 XDP 程序卸载到 NIC 上吗?谢谢

0 投票
0 回答
27 浏览

sockets - 更新套接字映射失败

我正在做 BPF 编程,我想在套接字映射中添加一个套接字。代码如下

当它检测到侦听/连接时,将套接字添加到套接字映射

bpf_sock_ops_ipv4()是_

地图结构

关键结构

当我加载它并使用初始化服务器sudo socat TCP4-LISTEN:1001,fork exec:cat时,更新失败

0 投票
0 回答
157 浏览

linux-kernel - 使用 eBPF 在 eBPF 程序中调用的仪器函数

我想编写一个 eBPF 程序,以跟踪在单独运行的 eBPF 程序中调用的函数。另外,我想计算一下各个函数被调用的次数。

这可能吗?如果是这样,有人可以提示我可以使用什么来实现这一目标吗?

注意:我正在寻找实现此功能(即要使用的特定 kprobe)背后的想法/概念,而不是完全开发的解决方案。)

最好,我正在寻找可以使用 pythonbccbpftrace.

更新:我想计算在 eBPF 程序中调用“用户定义”函数的次数。

例如,如果我在内核代码中创建一个 eBPF 程序:

,并且我将它从用户空间代码附加到 kprobe,我希望能够使用完全独立的 eBPF 程序计算程序内部调用foobar函数的次数bpf_sample_prog

先感谢您。

0 投票
1 回答
549 浏览

ebpf - 如何使用 eBPF (BCC) 跟踪 Java 进程

想用eBPF中的Uprobe来跟踪自己写的Java程序,但是不知道如何找到Java程序对应的符号表。在C语言中,编译后会生成平台相关的可执行文件,通过可执行文件可以得到方法对应的地址。但是Java是解释型语言,没有可执行文件,而eBPF是Linux工具,不知道Java语言相关信息。我知道JVM中的方法可以使用USDT进行跟踪,例如method__entry,但是没有提供有关方法参数的信息,所以有没有办法跟踪Java函数使用 eBPF? BCC,使用USDT打印高级语言的方法流程图。

0 投票
1 回答
1093 浏览

ebpf - 不断收到 bpf:无法加载程序:尝试运行 eBPF 代码时权限被拒绝

抱歉,我对编写 eBPF 代码真的很陌生,所以我遇到了一个我似乎无法摆脱的错误。在 sudo 中运行似乎没有帮助。我写了一个速度较慢的 crc32 程序,它可以编译,但无论如何这个程序都不想执行。我想知道我是否违反了我没有看到的任何约定。

这里也快速浏览一下下面的错误消息。

提示:如果您尝试取消引用内存而不首先使用 bpf_probe_read() 将其复制到 BPF 堆栈,则可能会发生无效的内存访问“inv”错误。有时 bpf_probe_read 由 bcc 重写器自动执行,有时您需要明确。