GNU/Linux >> Linux の 問題 >  >> Linux

Linux で TCP initcwnd の現在/デフォルト値を取得する

確かなことはわかりませんが、これは正当な参照のようです

直感:

$ grep -A 2 initcwnd `find /usr/src/linux/include -type f -iname '*h'`

アウト:

/usr/src/linux/include/net/tcp.h:
/* TCP initial congestion window as per draft-hkchu-tcpm-initcwnd-01 */
#define TCP_INIT_CWND          10

まあ、これが答えであると 100% 確信しているとは言えませんが、ss というのはよくあることです。 は、いくつかの情報を明らかにするための良い選択です。例:

 ss -nli|fgrep cwnd
     westwood rto:1000 mss:536 cwnd:10
     westwood rto:1000 mss:536 cwnd:10
     westwood rto:1000 mss:536 cwnd:10

-n 迷惑な DNS 解決を取り除くのに一般的です。 -l ソケットのみをリッスンし、-i に固執しますか? (キー)は「内部TCP情報を表示する」です。ご覧のとおり、輻輳アルゴリズムとデフォルトの cwnd の両方が表示されています。


私の理解が正しければ、あなたは snd_cwnd の初期値を探しています。 TCP ソケットの初期化時に設定されるパラメータ。

Linux カーネル 2.6.39 から始まるようです 、マクロ TCP_INIT_CWND snd_cwnd の値を入力する linux/include/net/tcp.h に導入されました TCP ソケットの初期化時。

このコードが IPv4 のカーネルのどこにあるか知っています 残念ながら、2.6.39 より古いカーネルの値を入力するためにマクロを使用していないようです

/* net/ipv4/tcp_ipv4.c from 2.6.37 kernel */
static int tcp_v4_init_sock(struct sock *sk)
{
        struct inet_connection_sock *icsk = inet_csk(sk);
        struct tcp_sock *tp = tcp_sk(sk);

        ....
        ....
        ....

        /* So many TCP implementations out there (incorrectly) count the
         * initial SYN frame in their delayed-ACK and congestion control
         * algorithms that we must have the following bandaid to talk
         * efficiently to them.  -DaveM
         */
        tp->snd_cwnd = 2;

        ....
        ....
        ....
}

IPv6 にも同様の初期化コードが存在します tcp_v6_init_sock() の中にも net/ipv6/tcp_ipv6.c の関数


Linux
  1. Linuxシステムの現在のランレベルはどれくらいですか?

  2. Linux –デフォルトルートの送信元アドレスを取得するためのポータブルな方法?

  3. 現在の Linux カーネル ソースは何ですか?

  1. Linux – Linux Utilsが現在の時刻を取得するためにシステムコールを使用しないのはなぜですか?

  2. Linux ソートのデフォルトの順序は何ですか?

  3. Linuxでファイルの物理サイズを取得するには?

  1. Linux – Linuxで現在の日付のファイルを取得しますか?

  2. 現在のGrub/ブート構成に関する情報を取得する方法は?

  3. Linux でデフォルトのシェルを変更する方法