Отримайте поточне / за замовчуванням значення 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". Як видно, показані як алгоритм перевантаженості, так і затримка за замовчуванням.


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;

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

Подібний код init існує і для IPv6внутрішньої tcp_v6_init_sock()функції вnet/ipv6/tcp_ipv6.c

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.