Вследствие непостоянства сетей, составляющих единую объединенную систему, и большого числа клиентов, пользующихся услугами TCP соединений, существует необходимость в динамическом определении контрольного времени повторной посылки. В качестве иллюстрации здесь приводится одна из процедур определения этого времени.
Пример процедуры измерения контрольного времени для повторной посылки сегментов Во-первых, измерьте время, прошедшее между посылкой октета данных, имеющего некий определенный номер в очереди, и получение подтверждения, указывающего наряду с другими и на этот номер (посылаемые сегменты не обязаны соответствовать полученным сегментам).
Измеренная временная задержка - это время обращения (Round Trip Time - RTT). Следующий шаг - вычисление усредненного времени обращения (Smoothed Round Trip Time - SRTT):
SRTT = (ALPHA * RSTT) + ( (1-ALPHA) * RTT)
Затем с помощью найденного значения определяется контрольное время повторной посылки (Retransmission Timeout - RTO):
RTO = min[ UBOUND, max[ LBOUND, (BETA * SRTT) ]]
где
UBOUND | - верхний предел контрольного времени (например, 1 мин), |
LBOUND | - нижний предел (например, 1 сек). |
ALPHA | - фактор сглаживания (например, от 0.8 до 0.9), |
BETA | - фактор изменения задержки (например, от 1.3 до 2.0). |