現在〜9mppsを送っています。各パケットのサイズは72バイトで、UDP DNS要求です。このパケットは、Intel i40e インターフェイスを使用して Dell サーバーに送信されます。サーバーは、キューサイズが4096の32個のキューをすべて使用しています。すべてのクライアントソースパケットには、約150のプールにランダムなソースMACアドレスとランダムIPアドレスがあります。ネットワークカードには削除/削除されたパケットは表示されません。
ethtool -S
〜9mppsでインターフェイスに到着するすべてのユニキャストトラフィックを表示できます。rx_unicast
しかし、rx_packets
1.7mppsを示しています。送信インターフェイスは、私が転送した他のインターフェイスと同じ数のパケットを処理して送信していることを示しています。生成されたトラフィックが到着するリモートIPはL3インターフェイスにすぎず、それを受信するDNSサービスがないため、パケットはリモートエンドで破棄されます(これは正常です)。
使用すると、dropwatch
次のメッセージが表示されます。
224021 drops at kfree_skb+1e (0xffffffffa33f5cbe) [software]
235277 drops at kfree_skb+1e (0xffffffffa33f5cbe) [software]
232467 drops at kfree_skb+1e (0xffffffffa33f5cbe) [software]
227083 drops at kfree_skb+1e (0xffffffffa33f5cbe) [software]
228235 drops at kfree_skb+1e (0xffffffffa33f5cbe) [software]
227216 drops at kfree_skb+1e (0xffffffffa33f5cbe) [software]
221967 drops at kfree_skb+1e (0xffffffffa33f5cbe) [software]
225418 drops at kfree_skb+1e (0xffffffffa33f5cbe) [software]
0xffffffffa33f5cbe
その中に何があるか探してみましたが、/boot/System.map-$(uname -r)
何もリストされていません。 kfree_skbがやっていることを見つけましたが、これsk_buff メモリを解放します。 (あまり役に立ちません)
私は、これがカーネル(配信、ネットフィルタなど)の制限や、あまりにも多くのトラフィックを処理するCPU能力の制限である可能性があると思います。しかし、パケットがカーネルからドロップされる理由を知りたいです。
すべてのトラフィックが送信されない理由をどのように確認できますか?
修正する 次のモジュールを削除できました
nf_conntrack
ip_tables
iptables_filter
x_tables
これにより、処理速度が向上し、今では約4.5mppsを送信できることがわかります。ネットフィルターがボトルネックのようです。他のモジュールを取り外す方が効率的です。なぜこのようなことが起こるのか他の人が詳しく知っているのだろうか?