4

デバイスとの間でパケットをキャプチャするために libpcap 1.4.0 を使用しています (Linux を使用しています)。パケットロスに悩まされており、調べたところPF_RINGを見つけ、利用を検討しています。

問題は、libpcap のデフォルトのパケットキャプチャ方法が「ゼロコピー」である場合 (libpcap 1.0.0 以降)、PF_RING の場合と同様に、PF_RING を使用する方が libpcap の PF_PACKET を使用するよりも効率的である理由がよくわかりません。

libpcap 1.0.0 以降では、PF_RING を使用した方が (実際に効率的である場合) 使用しないよりも効率的である理由を説明してもらえますか?

前もって感謝します!:)

4

1 に答える 1

4

https://stackoverflow.com/a/8897187/288875によると、カーネルのソケット バッファ (sk_buff) から読み取るメモリへのコピーが 1 つ残っています。このコピーは行わないPF_RINGようです (私が覚えている限り、pfringはネットワーク カードから受信したデータを処理する通常のカーネル メカニズムをバイパスします)。

于 2013-11-02T14:09:34.190 に答える