42.
Таймери ТСР та їх призначення. Визначення параметрів RTT та RTO.
Таймер повторной передачи
Данный таймер взводится значением RTO (Retransmission TimeOut - интервал до
повторной передачи) в момент посылки TCP-пакета адресату. Если таймер окажется
сброшенным в ноль до момента получения подтверждения пакета, то этот пакет должен
быть послан вновь.
Ясно, что величина RTO не может быть фиксированной, т.к. TCP-пакеты до разных
адресатов следуют по различным маршрутам через сети, скорость передачи данных в
которых может различаться более чем в тысячи раз. Для вычисления "оптимального"
значения RTO в каждом логическом соединении используется специальная процедура,
специфицированная в RFC 793.
Согласно этой процедуре, для каждого TCP-пакета измеряется величина RTT (Round
Trip Time - интервал времени от момента посылки TCP-пакета до момента получения
подтверждения на него). На основе измеренных RTT вычисляется величина SRTT
(Smoothed RTT - сглаженный RTT) по следующей формуле:
SRTT = k*SRTT + (1 - k)*RTT,
где k - сглаживающий коэффициент (например, 0.9).
Примечание. Приведенная формула обеспечивает фильтрацию нетипичных (пиковых)
значений измеренной величины RTT.
"Оптимальное" значение RTO вычисляется по формуле:
RTO = min(U, max(L, p*SRTT)),
где:
U - ограничение сверху на значение RTO (например, 30 секунд);
L - ограничение снизу на значение RTO (например, 1 секунда);
p - коэффициент "запаса" (например, 2).
Если после повторной посылки TCP-пакета, опять не будет получено его подтверждение
за интервал времени RTO, то попытки послать TCP-пакеты будут повторены (до 12 раз),
но каждый раз с экспоненциально возрастающим значением RTO. Только после неудачи
всей серии повторных посылок связь между партнерами будет считаться аварийно
закрытой.