0

プロセス間の接続がローカル ループ バックを使用して確立される Solaris で Nagle のアルゴリズム (データのリアルタイム転送用) を無効にしたいとします。私の理解では、Solaris の local-loop では、スタック使用のオーバーヘッドを削減するために TCP Fusion が有効になっています (Unix Domain Sockets に多少似ています)。それらは相互に関連していますか、それとも本質的に相互に排他的ですか? 私の疑問は、基本的にそれが何らかの影響を与えるかどうかです。

また、ローカル ループ バック通信で Nagle のアルゴリズムを無効にできるかどうかについて、いくつか明確にしたいと思います。

TCP_NODELAY を使用できることはわかっています。もっと明確にする必要があるかもしれません:1)Nagleのアルゴリズムが無効になっているローカルループバックで何が起こるか(デフォルトでは常に有効になっています)。TCP スタックは MSS を待機しますか、またはすぐにデータをスタックからプッシュします。2) また、solaris ではデフォルトで、読み書きを高速化するために TCP 融合が有効になっています。Nagle が無効になっている場合、問題は発生しますか。最後に、私が望むのは、データが遅延なくリアルタイムで送信されることです。だから私はNagleを無効にする必要がありますか、それともTCPフュージョンで十分です.

4

1 に答える 1

0

naggle を 1 つのインターフェースでのみ無効にできるかどうかはわかりません。グローバル レベルでは、これは次のコマンドで実行されます (ただし、既にご存知だと思います)。

/usr/sbin/ndd -set /dev/tcp tcp_naglim_def 1

私の Solaris VM は現在壊れているのでテストできませんが、「lo0」がループバックであると仮定すると、「/usr/sbin/ndd -set /dev/ lo0 tcp_naglim_def 1」は機能しますか?

推奨されるデフォルトは Nagle を有効にしておくことですが、アプリケーション内で無効にできますか? TCP_NODELAY オプションを指定して setsockopt() を呼び出すのと同じくらい簡単です。

于 2012-10-03T17:56:30.550 に答える