问题标签 [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.
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?
linux-kernel - 使用 bcc/bpf 的最大 uprobe 数
我使用 bcc 来跟踪带有 uprobe 的用户空间程序。但是,我不能附加超过 500 个 uprobe。
我想知道可以同时连接多少个uprobe有限制吗?或者是否有我可以更改的内核配置?
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
这是什么意思,可以采取什么措施来补救?
安装依赖项后,这些是我遵循的步骤:
bpf - 如何在接口之间共享 ebpf 映射
是否可以在两个网络接口之间共享 ebpf 映射。我想编写一个 XDP 程序并将其挂接到两个设备上,即 eth0 和 eth1。该实现要求它们都使用相同的地图。是否可以加载相同的程序,将它们挂接到 eth0 和 eth1 并使用相同的 Map。
谢谢你们!
networking - 使用 tc-ebpf 卸载 Vlan
我是网络世界的新手,我有一个问题。我有一个加载到 enp5s0 的 tc-ebpf(出口)程序,该程序正在处理 vlan-tag(Q-tags)。我创建了一个名为 enp5s0.1234 的 vlan 接口,id 为 1234。但程序似乎没有读取 vlan-tag。我认为这是由于卸载问题。然而,用 ethtool 转旗似乎并没有解决问题。
我使用 iproute2 加载程序,如下所示:
我在使用该接口发送数据包时验证了正在接收数据包并添加了 Q-tag。
谢谢大家的帮助。
python - 试图在 nic 上加载 xdp(已卸载)
我正在尝试将我的 XDP 程序直接加载到 NIC(卸载 XDP)上。根据这个答案,我需要将设备指定为以下功能:
BPF()
load_func()
我是这样做的:
添加设备时出现以下错误:
types.ArgumentError:参数 6:<class 'TypeError'>:类型错误
你能帮我解决这个问题并将我的 XDP 程序卸载到 NIC 上吗?谢谢
sockets - 更新套接字映射失败
我正在做 BPF 编程,我想在套接字映射中添加一个套接字。代码如下
当它检测到侦听/连接时,将套接字添加到套接字映射
bpf_sock_ops_ipv4()
是_
地图结构
关键结构
当我加载它并使用初始化服务器sudo socat TCP4-LISTEN:1001,fork exec:cat
时,更新失败
linux-kernel - 使用 eBPF 在 eBPF 程序中调用的仪器函数
我想编写一个 eBPF 程序,以跟踪在单独运行的 eBPF 程序中调用的函数。另外,我想计算一下各个函数被调用的次数。
这可能吗?如果是这样,有人可以提示我可以使用什么来实现这一目标吗?
(注意:我正在寻找实现此功能(即要使用的特定 kprobe)背后的想法/概念,而不是完全开发的解决方案。)
最好,我正在寻找可以使用 pythonbcc
或bpftrace
.
更新:我想计算在 eBPF 程序中调用“用户定义”函数的次数。
例如,如果我在内核代码中创建一个 eBPF 程序:
,并且我将它从用户空间代码附加到 kprobe,我希望能够使用完全独立的 eBPF 程序计算程序内部调用foo
和bar
函数的次数bpf_sample_prog
。
先感谢您。
ebpf - 如何使用 eBPF (BCC) 跟踪 Java 进程
想用eBPF中的Uprobe来跟踪自己写的Java程序,但是不知道如何找到Java程序对应的符号表。在C语言中,编译后会生成平台相关的可执行文件,通过可执行文件可以得到方法对应的地址。但是Java是解释型语言,没有可执行文件,而eBPF是Linux工具,不知道Java语言相关信息。我知道JVM中的方法可以使用USDT进行跟踪,例如method__entry,但是没有提供有关方法参数的信息,所以有没有办法跟踪Java函数使用 eBPF? BCC,使用USDT打印高级语言的方法流程图。
ebpf - 不断收到 bpf:无法加载程序:尝试运行 eBPF 代码时权限被拒绝
抱歉,我对编写 eBPF 代码真的很陌生,所以我遇到了一个我似乎无法摆脱的错误。在 sudo 中运行似乎没有帮助。我写了一个速度较慢的 crc32 程序,它可以编译,但无论如何这个程序都不想执行。我想知道我是否违反了我没有看到的任何约定。
这里也快速浏览一下下面的错误消息。
提示:如果您尝试取消引用内存而不首先使用 bpf_probe_read() 将其复制到 BPF 堆栈,则可能会发生无效的内存访问“inv”错误。有时 bpf_probe_read 由 bcc 重写器自动执行,有时您需要明确。