ebpf

XDPが出口にないのはなぜですか?
ebpf

XDPが出口にないのはなぜですか?

複数のソースを確認しましたが、LinuxはXDPエクスポートをサポートしていないことがわかりました。 私はxdpが元のパケットから何を変更できるか、そしてtcを除いて何を変更できないかを正確に知りたいと思います。 XDPエクスポートの質問の場合ユースケース:マルチキャスト。 (他のユースケースもあります。)ユースケースでXDPエクスポートがサポートされていない理由を推論する方法です。 (何を推論できますか?) xdpが開始セクションにありますが、終了セクションにはないことがわかります。しかし、なぜ?先ほどのMACアドレスを悪意を持って修正し、ネットワーククラ...

Admin

eBPFスタックトレースのコマンドポインタに同じIPが2回あり、関係のない奇妙なIPを持つeBPFプログラムが含まれているのはなぜですか?
ebpf

eBPFスタックトレースのコマンドポインタに同じIPが2回あり、関係のない奇妙なIPを持つeBPFプログラムが含まれているのはなぜですか?

eBPFプログラムからカーネルスタックトレースを取得すると、重複して奇妙なエントリが表示されます。誰かがこれを説明できますか? まず、関連するeBPFプログラムの断片から始めましょう。次のようにスタックトレースグラフを宣言します。 struct { __uint(type, BPF_MAP_TYPE_STACK_TRACE); __type(key, u32); __type(value, stack); __uint(max_entries, 1 << 14); } stacks SEC(".maps"); 後...

Admin

컨테이너 외부의 포트만 거부하기 위해 systemd 리소스 관리를 사용할 수 있나요?
ebpf

컨테이너 외부의 포트만 거부하기 위해 systemd 리소스 관리를 사용할 수 있나요?

최신 Fedora 39에서는 루트 없는 컨테이너용 podman을 설정하고 /etc/systemd/system/user-1000.slice.d/user-resources.conf를 생성하여 사용자가 바인딩할 수 있는 포트를 제한했습니다. [Slice] SocketBindAllow = 12345 SocketBindDeny = any 이제 예상대로 사용자는 포트 20202에 바인딩할 수 없습니다. 예를 들면 다음과 같습니다. $ nc -4 -lp 20202 Ncat: bind to 0.0.0.0...

Admin

ループバックインターフェイスのXDP汎用トランスポートパケットが廃棄されました。
ebpf

ループバックインターフェイスのXDP汎用トランスポートパケットが廃棄されました。

xdpを介してUDPパケットを送信しようとします(受信は正しく機能します)、UDPがパケットを処理する前にパケットが破棄されます。 カーネル: Linux fedora 6.5.12-300.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Nov 20 22:44:24 UTC 2023 x86_64 GNU/Linux PRETTY_NAME="Fedora Linux 39 (ワークステーション版) 私のxdpプログラムとソケットが使用されますxdpgeneric。 パケットが送信されるのを見て、tcpdumpip_rcvb...

Admin

eBPFおよび検証済みLinuxカーネルモジュール
ebpf

eBPFおよび検証済みLinuxカーネルモジュール

eBPFはどの点でユーザー側の検証カーネルモジュールよりも優れていますか? コード検証の価値については疑問を提起しません。どちらのアプローチも完全に静的に検証されます。どちらの方法でも、通常、特権を持つユーザーにのみ付与される機能が必要です。 ただし、ユーザースペースでバリデーターを実行すると、ユーザーはバリデーター、セキュリティーレベル、および許可されている前提条件の中からより多くの選択肢が提供されます。バリデータはカーネルとは無関係に、より迅速に開発することもできます。 この質問をする前に読んだことがあります。: 私が見つけたこのハッカーニューストピ...

Admin

bpftraceでargv [0]を取得する方法は?
ebpf

bpftraceでargv [0]を取得する方法は?

非常に単純なスクリプトがあります。 #!/usr/bin/bpftrace tracepoint:syscalls:sys_enter_exec* { @start[pid] = nsecs; printf("START;%-6d;", pid); join(args->argv); } tracepoint:syscalls:sys_enter_exit* { $from = @start[pid]; $until = nsecs; printf("STOP;%-5d;%-16d\n", pid, $u...

Admin

TC BPFを使用したポートリダイレクト
ebpf

TC BPFを使用したポートリダイレクト

あるポートから別のポートに着信TC BPFトラフィックをリダイレクトするために使用したいと思います。以下は私のコードですが、次の例も試しました。808080人8tc-bpf(検索8080)、同じ結果が表示されます。 #include <linux/bpf.h> #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h> #include <linux/pkt_cls.h> #include <linux/if_ether.h> #include ...

Admin

pmap は「他のオブジェクト」のマッピングを示しています。これらのオブジェクトが何であるかをどうやって知ることができますか?
ebpf

pmap は「他のオブジェクト」のマッピングを示しています。これらのオブジェクトが何であるかをどうやって知ることができますか?

私のRustアプリケーションで一種のメモリリークを調査しています。メモリは着実に増加します(約30Mから始まり、毎日50Mずつ増加します)。アプリケーションはRustで書かれており、XDP / BPFプログラムをいくつかのインターフェースに接続し、いくつかのデータを読み取り、BPFマップを介していくつかの指標を公開します。 興味深いことに、「リーク」はテスト環境でのみ発生します(本番環境でのメモリ使用量はこれまで非常に安定しています)。 以下はいくつかのpmap出力です(出力が多く、問題の一部ではない*.soためフィルタリングしました)。anon_inode...

Admin

ebpfから環境変数を読む
ebpf

ebpfから環境変数を読む

ebpfプログラムを作成しようとしていますが、Cユーザーが設定した環境変数を読みたいです。 .getenvC bpf_helper()これを行う機能が見つかりません。 この目的のための機能はありますか?そうでなければ、どのように実装できますか? ...

Admin

シェルに関係なく実行されたすべてのコマンドを記録しますか?
ebpf

シェルに関係なく実行されたすべてのコマンドを記録しますか?

ユーザーが次のコマンドを実行すると仮定します。 zcat file.gz | grep something | gzip > grepped.gz execve私はすべてのsを記録し、stdins / stdoutsを一緒にリンクし、同様の形式に再構成してsyslogに入れるカーネル関数(おそらくBPFフィルタ?)を探しています。シェルと対話せずにこれを行う方法はありますか? ...

Admin

1マイクロ秒未満の待ち時間の長いコンテンツを測定するためのDPROBES(DTRACE_PROBE)
ebpf

1マイクロ秒未満の待ち時間の長いコンテンツを測定するためのDPROBES(DTRACE_PROBE)

現在、待ち時間の長いアプリケーションのパフォーマンスを分析していますが、測定結果にまったく自信がありません。これまで私はDPROBES機器を使用してきましたBCC/機能測定用。この数字を確認できる人はいますか?また、より良い方法をご存知の方はお知らせください。 測定値usleep(1):平均= 53962ナノ秒 #include <unistd.h> #include <sys/sdt.h> int main() { int i; for(i=0; i<1000000; i++){ DTRACE_PROBE...

Admin

カーネル4.19.232のlinux-tools-commonにlinux bpftoolが見つかりません
ebpf

カーネル4.19.232のlinux-tools-commonにlinux bpftoolが見つかりません

bpf私はLinuxカーネルに正しくインストールされていることを確認しようとしています。次のようにカーネルで有効になります。 jakew@desktop:~$ cat config | grep BPF CONFIG_CGROUP_BPF=y CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_JIT_ALWAYS_ON=y # CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set CONFIG_IPV6_SEG6_BPF=y CONFIG_NETFILTER_XT_MATCH_BPF=y C...

Admin

C / C ++で現在のcgroup IDを取得する方法は?
ebpf

C / C ++で現在のcgroup IDを取得する方法は?

これeBPFヘルパー関数bpf_get_current_cgroup_id明らかなタスクを実行するeBPFプログラム用に定義されています。 u64 bpf_get_current_cgroup_id(void) Return A 64-bit integer containing the current cgroup id based on the cgroup within which the current task is running. しかし、それに対応するシステムコー...

Admin

eBPFの機能的な制限は何ですか?
ebpf

eBPFの機能的な制限は何ですか?

私が知っている限り、これは主に観察可能性(たとえば読み取り専用)に使用されます。 パケットをルーティングできますが、さらにできることはありますか? ファイルシステムを操作し、信号を送信し、eBPFプログラムで書くこともできますか? ...

Admin