問題タブ [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.

0 投票する
1 に答える
240 参照

c - AF_XDP: `SO_XDP` でサポートされていない `SO_TIMESTAMP` の設定: プロトコルが利用できません

ソケットの設定SO_TIMESTAMPがサポートされていないのはなぜですか? AF_XDP私のドライバーのユーザー マニュアル ( mlnx 5.0) には、次のように記載されています。

着信パケットは、PCI バッファの輻輳に応じて、PCI に配信される前にタイムスタンプが付けられます。

私の知る限り、before distributed on the PCILinuxカーネルが(まだ)関与していないことを意味します-そうですか?

次のように設定してみました。

そして得る:

設定に失敗しましたSO_TIMESTAMP: プロトコルが利用できません

SO_XDPfrom xsk.c( https://github.com/libbpf/libbpf/blob/master/src/xsk.c )の定義をコピーしました:

なぜサポートされていないのかわかりません...

0 投票する
1 に答える
370 参照

c - AF_XDP: すべてのパケットがリダイレクトされているにもかかわらず、キュー ID 0 のソケットのパケットがありません

私はこのチュートリアルに基づいています: https://github.com/xdp-project/xdp-tutorial/tree/master/advanced03-AF_XDP

Queue-ID 0ユーザー空間でソケットを作成します。私のカーネル af-xdp プログラムでは、UDP パケットをフィルタリングし、xskmap.

明らかにユーザー空間プログラムにパケットを受信させたいので、カーネル プログラム内のパケットを index にリダイレクトします0

エラーメッセージは表示されませんが、ユーザー空間でもパケットを受信しません!Didn't find connected socket for index 0!sudo cat /sys/kernel/debug/tracing/trace_pipe

プログラムを実行し続け、同時に次のような ethtool-rule を追加するとします。

ユーザー空間プログラムが突然パケットの受信を開始し、エラー メッセージが消えます。

カーネルプログラムはそのインターフェースに送信されたすべてのパケットを受信すると思っていましたが、どういうわけかそうではありません。私は何を間違えましたか?

0 投票する
1 に答える
713 参照

c - AF-XDP: 共有 Umem ソケットの実装

XDP_SHARED_UMEM を実装したい: https://www.kernel.org/doc/html/latest/networking/af_xdp.html#xdp-shared-umem-bind-flag

libbpfライブラリ関数( https://github.com/libbpf/libbpf/blob/master/src/xsk.cxsk_socket__create )が値をチェックします。1 より大きい場合、a のオプションが設定されます。xsk_umem->refcountXDP_SHARED_UMEMstruct sockaddr_xdp

したがって、私が正しく理解している限り、umem を共有したいソケットの元の umem 構造体を「ただ」渡す必要があり、残りは によって行われlibbpfます。

私が試みた方法は、最初のプロセスがそのumem構造体を共有メモリ領域にコピーし、そこから 2 番目のプロセスがロードできるようにすることでした。しかし、struct xsk_umemで定義されxsk.cているため、ユーザーから隠されているため、次のようなことはできません。

memcpy(shdm_ptr, umem, sizeof(struct xsk_umem))

誰かが共有 umem 機能をどのように使用することを彼らが期待しているのかわかりませんか?