5

現在、Linux のコマンド「sysctl」は、システム全体の輻輳制御アルゴリズムをグローバルに変更します。ただし、TCP ウィンドウ サイズやその他の同様のパラメータが変化する輻輳制御は、通常、TCP 接続ごとに行われます。だから私の質問は:

  • TCP 接続ごとに使用されている輻輳制御アルゴリズムを変更する方法はありますか?

それとも、ここで些細なことを見逃していますか?もしそうなら、それは何ですか?

4

4 に答える 4

6

これは、-Z オプションを使用してiperfで実行されます。パッチはこちらにあります。

実装方法は次のとおりです (PerfSocket.cpp、93 行目)。

    if ( isCongestionControl( inSettings ) ) {
#ifdef TCP_CONGESTION
    Socklen_t len = strlen( inSettings->mCongestion ) + 1;
    int rc = setsockopt( inSettings->mSock, IPPROTO_TCP, TCP_CONGESTION,
                 inSettings->mCongestion, len);
    if (rc == SOCKET_ERROR ) {
        fprintf(stderr, "Attempt to set '%s' congestion control failed: %s\n",
            inSettings->mCongestion, strerror(errno));
        exit(1);
    }
#else
    fprintf( stderr, "The -Z option is not available on this operating system\n");
#endif

mCongestionは、使用するアルゴリズムの名前を含む文字列です

于 2011-06-07T19:46:36.357 に答える
2

これは get/setsockopt で可能のようです。私が見つけた唯一のドキュメントは次のとおりです。 http://lkml.indiana.edu/hypermail/linux/net/0811.2/00020.html

于 2011-03-17T11:19:15.540 に答える
1

Linux の新しいバージョンでは、 ip route ... congctl を使用して特定の宛先の輻輳制御を設定できます。

誰かがこのアプローチに精通している場合は、この投稿を編集してください。

于 2018-08-17T08:19:28.430 に答える
-1

Linux には、オンザフライで使用されるアルゴリズムを変更できるプラグ可能な輻輳アルゴリズムがありますが、これは接続ごとではなくシステム全体の設定です。

于 2011-01-14T08:43:15.933 に答える