ペイロードが 1470 未満の UDP パケットの場合、1Gbit のスループットを達成できますか? パケット サイズが小さいため、このようなスループットを達成するにはいくつかのボトルネックが存在するはずです (I/O、OS、ネットワークなど)。ドライバーとハードウェアは、小さなパケット/高スループットに合わせて調整する必要があると思います。小さなUDPパケットで1Gbitのスループットを達成しようとした人はいますか?
5 に答える
私は以前、比較的標準的な PC ハードウェアでギガビット リンクのスループットを実験しましたが、udp ではなく( tcpreplayを介して) 送信するだけでした。
私が見つけた最大のボトルネックは、NIC 自体にパケットを送信することでした。これは、高速バスを使用して NIC (4x pci-express NIC など) に接続することで大幅に改善できます。しかし、これでも非常に明確なパケット/秒の制限がありました. 明らかに、パケット サイズを大きくすると、プロセッサの負荷を減らしながら、より多くの帯域幅を利用できるようになります。
Steve Moyerのコメントと同じように、ネットワークの利用には理論上の限界があります。私の実験 (完全に静かなネットワークで行われました) では、最大約 900Mb/s でした (私の記憶の範囲内でした)。これは、CPU 負荷が 30 ~ 40% の場合でした。
制限は、ネットワーク インフラストラクチャよりもシステム ハードウェア (PC など) によって課される可能性が高くなります。その価値があるネットワーク スイッチは、小さなパケットでフル スピードのネットワーク アクセスを維持できる必要があります。ほとんどの PC で対応できます。
どのタイプのネットワーク接続を使用していますか? 1000BaseTx/Fx リンクを使用している場合は、最大サイズのパケットで 80% を超えるスループットを期待しないでください。パケット サイズが小さくなると、スペーシング、同期、イーサネット ヘッダー、IP ヘッダー、および UDP ヘッダーのオーバーヘッドがペイロードに関連して増加するため、最大スループットがさらに低下します。
使用しているスイッチのドキュメントを確認してください。スイッチは、配信できる 1 秒あたりのパケット数 (pps) に制限があり、最大ペイロード サイズよりも大幅に小さいパケットを送信している場合、1 Gbps を維持できないことがよくあります。
もう 1 つチェックする必要があるのは、ネットワーク カードが割り込み合体を行っているかどうか、およびサポートできる送受信記述子の最大数です。そのレベルのスループットでは、最新の CPU とメモリ システムを使用しても、割り込みサービス時間とコンテキスト切り替え時間がホスト システムの大きなオーバーヘッドになる可能性があります。
また、銅線経由でギガビットを使用している場合、カードが送信する最小のイーサネット フレームは 512 バイトであるため、小さいメッセージはそのサイズにパディングされます。これは、キャリアセンス/衝突検出の要件によるものです。
ハードウェアの 1 秒あたりのパケット数の制限は、ネットワークの理論上の容量よりも大幅に低いことがわかりました。Broadcomm BCM5704S の場合、ギガビットの 1,488,100pps と比較して、69,000 pps でこれを達成しました。
ここで報告したその他の数値http://code.google.com/p/openpgm/
真のギガビット速度を実現するために (Linux で) ネットワーク設定を微調整するための優れたチュートリアルがここにあります: http://datatag.web.cern.ch/datatag/howto/tcp.html