問題タブ [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.
networking - カーネル空間とユーザー空間からの eBPF(BCC) 宛先 IP アドレスが一致しません
eBPF と BCC を使用して、受信しているパケットの IP アドレスを出力しています。
カーネルについては、ip_t -> dst; から出力するコードをプログラムしました。これは宛先のアドレスだと思います。
ユーザー空間については、バイトコードからユーザー アドレスを出力するコードをプログラムしました。
他の変数を何度もチェックして、プログラムがパケット ヘッダー内に格納されたデータの正しい値を表示するかどうかを確認しましたが、アドレス以外はすべて正常に機能しました。
したがって、ユーザーレベルでは次のようになります:宛先IPアドレス= 203.237.53.121
これは、サーバーに割り当てた静的 IP アドレスです。
ただし、ip_t -> dst を出力すると、次のようになります: 3421320703
なぜ出力が異なるのか理解できません。
特定の送信者IPアドレスなどからのみパケットを取得することを目的とするプログラムを最終的に構築しようとしています.
誰かが私を助けてくれたら、それは素晴らしいことです。
ありがとう :)
linux - eBPF テール コールを学習しようとしましたが、kprobe のアタッチに失敗しました
こんにちは、eBPF マップの使用方法を学習しようとしているので、BCC ドキュメントで見つけた簡単なコードを実行しようとしました。
そして、これが私が使用したcコードで、名前は :tailcall_test.c です:
どのヘッダーまたはライブラリを含める必要があるのか よくわからなかったので、そこにすべてをダンプしました..汚れたコードについて申し訳ありません:(
とにかく、実行しようとすると次のエラーが表示されます。
何か助け..? よろしくお願いします。
さらに、eBPF テール コールの使用方法を学ぶために確認すべき推奨事項があれば、それを共有していただければ幸いです。
よろしくお願いします。
python - eBPF: getaddrinfo の結果を読み取る
BPF Compiler Collection (bcc) のgethostlatency.pyツールと同様に、 への関数呼び出しをトレースしたいと考えていますgetaddrinfo。さらに、返された値 (IP アドレス、アドレス ファミリ) を収集したい
ただし、正しい結果を返すソリューションで BPF 検証を通過することはできないようです。
getaddrinfo 関数:
結果は に返されstruct addrinfo **resます。
gethostlatency.pyに直接基づいたこのコード サンプルは、少なくともエラーを返しませんが、間違った結果を返します。
間違っている可能性があること:
- BCC ではアクセスできないように見えるため、
addrinfo型定義をコピーしました。netdb.h - 結果を収集する方法:
currres.update(&pid, &res); - 私が結果から読んだ方法:
bpf_probe_read(&data.af, sizeof(data.af), &resx->ai_family);
このサンプルでは、プログラムはアドレス ファミリ(AF)を読み取ろうとしています。したがって、期待される値は 2 (AF_INET) または 10 (AF_INET6) のいずれかになり、代わりに 32xxx のような数値が表示されます。
出力をトリガーするには、DNS 要求を行う必要があります。
上記のこのプログラム バージョンでは、1 つの警告も表示されます。
警告を解決すると、BPF ベリファイアでより不可解なエラーが発生します。
カーネル バージョン 4.18 を使用して x64 でテスト済み。