3

パケットをユーザー空間にコピーするためのライブラリとして libipq を使用する Ubuntu 12.04 で実行されるパケット フィルタリング プログラムを作成しています。libipq のロジックは私にとってはうまく機能します。私の問題は、libipq を使用することで libipq を使用しないことでパフォーマンスが大幅に低下していることに気付いたことです。プログラムに追加した iptable ルールを削除して、カーネルにパケットを処理させると、速度は 50 MB/秒になります。ただし、libipq を使用して iptables ルールを復元すると、速度は 1 MB/秒 (運が良ければ) に低下します。通常はその半分です。

私の iptable ルールに何か問題があるのだろうか? ルールをより効率的に使用することはできますか、それとも libipq は単純に効率が悪いのでしょうか (または、私がそれほど多くのことをしていないにもかかわらず、私のコードは) でしょうか? iptable ルールをセットアップするために使用するスクリプトは次のとおりです。

#!/bin/sh
modprobe iptable_filter
modprobe ip_queue
iptables -A FORWARD -p icmp -j QUEUE
iptables -A FORWARD -p tcp -j QUEUE
iptables -A FORWARD -p udp-j QUEUE
iptables -A INPUT -p icmp -j QUEUE
iptables -A INPUT -p tcp -j QUEUE
iptables -A INPUT -p udp -j QUEUE

それ以外は、私の iptable ルールは Ubuntu に付属のデフォルト セットです。

注: 私のセットアップは、2 つの異なるサブネット上のクライアントとサーバー VM 用であり、Ubuntu VM を使用して、NAT と IP マスカレードを使用して両方をブリッジします。

4

1 に答える 1

4

Libipq は廃止され、新しい libnetfilter_queue が採用されました

于 2013-02-07T18:58:35.473 に答える