問題タブ [xdp-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.
c - UDP パケット ペイロードを XDP で変更し、受信サイズを超えて拡張する
パケットの内容を変更しながら、XDP_TX を使用して受信したパケットを再送信したいと考えています。dst と src の IP アドレスを交換したので、送信者に正常に送り返されました。これですべて完璧に機能しています。
ただし、パケットのペイロードを別のものに変更したいのですが、私が直面していて頭を包むことができない問題は、受信したパケットのサイズまでしかコンテンツを変更できず、それ以上のデータを追加できないことです(たとえば、26 バイトも送信した場合は、26 バイトのペイロードのみを返送します)。
データに到達するまで、通常の IP ヘッダーに沿って進むことで、UDP パケットのペイロードを取得できます。
これに加えて、境界チェックを行って、パケットが期待どおりの長さであることを確認します。
このタイプのパケットは、常に合計 26 バイトになります。次に、次の方法でパケットの内容を (悪い方法ではありますが) 変更できます。
ただし、着信パケットのバイト数に制限されています。別のバイトを追加しようとすると、ベリファイアがロードを妨げます。より多くのペイロードを許可するようにパケットを拡張することは可能ですか? 私は見ましbpf_xdp_adjust_head
たが、これが私が必要としているものかどうかはわかりません!
linux-kernel - bpf_csum_diff 関数呼び出しの何が問題になっていますか?
ebpf を使用して何らかの方法でパケットをリダイレクトしたいと考えています。Cilium のドキュメントから例を挙げます:実装: bpf 経由のプロキシ
これは bpf_helpers の私のマクロの例です:
プロキシ スクリプト自体のコードは次のとおりです。
プロキシ スクリプト自体のコードは次のとおりです。
docker でパケットを別のポートと別の IP に正しくプロキシする方法を教えてください。
linux - bpf リダイレクトが正しく動作しないのはなぜですか?(XDP)
次のような簡単なプログラムを作成します。
送信者はパケットをインターフェイス 5 にリダイレクトし、受信者はピア インターフェイスでパケットを受信しますが、iperf のようなプログラムはそれを受信しません。なぜですか?