Як я можу настроїти початковий тайм-аут повторної передачі TCP?


14

Початкове значення TCP RTO 3s занадто довге для більшості застосунків на базі локальної мережі. Як я можу налаштувати її нижче? Чи є sysctl?

Відповіді:


12

Ні, ви не можете; він жорстко кодується в ядрі. Тому змініть ядро ​​і перекомпілюйте.

#define TCP_TIMEOUT_INIT ((unsigned)(3*HZ))     /* RFC 1122 initial RTO value   */

Це те, що ви повинні отримати у своєму включенні / net / tcp.h.

Але я можу бачити, що хтось надав пластир , хоча сам ніколи цього не намагався


4

Початкові налаштування не повинні сильно впливати на загальну продуктивність, оскільки RTO самостійно підлаштовується під мережеві умови. Якщо змінити RTO, ви можете встановити його на 1 секунду (але не нижче).

Про це йдеться в RFC 1122 :

        The following values SHOULD be used to initialize the
        estimation parameters for a new connection:
        (a)  RTT = 0 seconds.

        (b)  RTO = 3 seconds.  (The smoothed variance is to be
             initialized to the value that will result in this RTO).

        The recommended upper and lower bounds on the RTO are known
        to be inadequate on large internets.  The lower bound SHOULD
        be measured in fractions of a second (to accommodate high
        speed LANs) and the upper bound should be 2*MSL, i.e., 240
        seconds.

        DISCUSSION:
             Experience has shown that these initialization values
             are reasonable, and that in any case the Karn and
             Jacobson algorithms make TCP behavior reasonably
             insensitive to the initial parameter choices.

RFC 6298 - це запропоноване оновлення (опубліковано в червні 2011 р.), Яке говорить про те, що RTO може бути ініціалізовано до нижчого значення (але не нижче 1 секунди) і містить додаток, що містить дані, що виправдовують 1 сек як розумне початкове значення.


1 секунда ПОТРІБНА, НЕ ОБОВ'ЯЗКОВА; btw ви можете подивитися на rto однієї відомої передньої частини пошукової системи =)
SaveTheRbtz

Я не погоджуюся з цим твердженням "Початкові налаштування не повинні сильно впливати на загальну продуктивність". Це може вплинути на ваш рівень помилок для програми під час початкового повідомлення. Коли запуск додатка встановлює час очікування читання 3 секунди або менше, падіння пакетів (звичайна подія з будь-якими заторами) в мережі під час початкового зв'язку TCP не дозволять належної повторної передачі скинутого пакету. початкове значення повинно бути меншим за час очікування зчитування, встановлене кінцем прийому, і повинно бути встановлене на основі QOS мережі, в якій ви працюєте.
Джо

3 секунди - це вічність у локальних мережах, і краплі пакетів відбуваються реально швидко однією мережею, де час зворотного шляху в мілісекундах.
Джо

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