4

LinuxでUDPパケットを受信する場合(そしてソースコードの一部を変更してもかまわない場合)、アプリケーションがパケットを読み取るための最速の方法は何でしょうか?

ネットワークスタックを変更して、UDPパケットを受信すると、共有メモリに書き込まれ、アプリケーションがそのメモリにアクセスできるようにしますか?

アプリケーションに共有メモリを継続的にポーリングさせるのではなく、スタックがアプリケーションに反応するように通知する方法はありますか?

任意のアドバイス/さらなるリソースを歓迎します-私は見ただけです:

http://www.kegel.com/c10k.html

4

1 に答える 1

0

遅延が問題であり、デフォルトの UDP ネットワーク スタックが希望どおりに機能しない場合は、別の既存の (インストール可能な) ネットワーク スタックを使用してみてください。

たとえば、 UDP Liteを試してみてください。標準の UDP スタックと比較すると、この特定のスタックは UDP データグラムでチェックサムを実行しないため、破損したデータグラムをアプリケーション層に提供するという犠牲を払ってレイテンシを削減します。

補足:「ポーリング」メカニズムは必要ありません。のマニュアルを読んでください(またはselectのような派生物である可能性があります)。このような API を使用すると、カーネルは、パイプラインで読み書きするものがあるとすぐにアプリケーションを「起動」します。pselectppoll

于 2013-03-15T08:06:26.793 に答える