Получить текущее / значение по умолчанию TCP initcwnd в Linux


9

Я могу манипулировать таким значением с помощью:

ip route change ... initcwnd 10

а затем иметь обратную связь с:

ip route show

Но как насчет значения по умолчанию перед любой модификацией? Есть ли способ запросить это значение из системы?

В качестве альтернативы, вы можете предоставить действительную ссылку, которая показывает значение по умолчанию для каждой версии ядра?

Ответы:



6

Ну, я не могу сказать, что на 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 по умолчанию.


2

Если я вас правильно понял, вы ищете начальное значение snd_cwndнабора параметров при инициализации сокета TCP.

Похоже, что начиная с ядра Linux 2.6.39, TCP_INIT_CWNDв linux / include / net / tcp.h был добавлен макрос, который заполняет значение snd_cwndпри инициализации сокета 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.