2016-10-07 29 views
0

私たちはLinux PCから10Gbイーサネットを介して高データレートでUDPパケットをストリーミングしています。私たちはC++でコーディングしています。LinuxでUDP sendtoの遅延を減らすには?

udpパケットを送信するためにsendto()を呼び出すと、送信の実際の遅延、つまりパケットが実際に送信される速度について、最適化ができますか?

フラッシングの概念はUDP送信バッファに適用されますか、またはUDPパケットは常にすぐに送信されますか?

答えて

0

UDPパケットは通常、発信インターフェイスに輻輳がある場合にのみバッファされます。負荷の下で待ち時間を減らすことができるかもしれません:

  • ソケットのバッファー(setsockopt(SO_SNDBUF))のサイズを小さくします。
  • インターフェイスに関連付けられたバッファのサイズを縮小します(tc qdisc change)。
  • ドライバの内部バッファ(ドライバ固有)のサイズを縮小します。

それを行うことは、例えば、パケットを廃棄する代わりに、それらをバッファリングすることにより、負荷の下での待ち時間を短縮するので、あなたの上位層プロトコルに依存し、それが実際に増加アプリケーションの遅延かもしれないことに注意してください増加したアプリケーション層の再送信を引き起こすことによって、

関連する問題