Значение α находится между 0 и 1.
Новое SRTT = 7/8×старое SRTT + 1/8×Последнее время цикла
В таблице 10.2 показано, как формула для SRTT подстраивается под текущее значение SRTT в 230 единиц, когда изменение в сетевых условиях приводит к последовательному увеличению времени цикла (при условии, что не наступает тайм-аут). Значения в столбце 3 используются как значения столбца 1 для следующей строки таблицы (т.е. как старое SRTT).
Таблица 10.2 Вычисление сглаженного времени цикла
Старое SRTT | Самое последнее RTT | (7/8)×(старое SRTT) + (1/8)×(RTT) |
---|---|---|
230.00 | 294 | 238.00 |
238.00 | 264 | 241.25 |
241.25 | 340 | 253.59 |
253.59 | 246 | 252.64 |
252.64 | 201 | 246.19 |
246.19 | 340 | 257.92 |
257.92 | 272 | 259.68 |
259.68 | 311 | 266.10 |
266.10 | 282 | 268.09 |
268.09 | 246 | 265.33 |
265.33 | 304 | 270.16 |
270.16 | 308 | 274.89 |
274.89 | 230 | 269.28 |
269.28 | 328 | 276.62 |
276.62 | 266 | 275.29 |
275.29 | 257 | 273.00 |
273.00 | 305 | 277.00 |
Теперь возникает вопрос о выборе значения для тайм-аута повторной пересылки. Анализ величин времени цикла показывает существенное отклонение этих значений от текущей средней величины. Имеет смысл установить границу для величины отклонений (девиаций). Хорошие величины для тайм-аута повторной пересылки (в стандартах RFC эту величину именуют Retransmission TimeOut — RTO) дает следующая формула с ограничением сглаженного отклонения (SDEV):
Т = Тайм-аут повторной пересылки = SRTT + 2×SDEV
Именно эта формула рекомендована в RFC 1122. Однако некоторые реализации используют другую:
Т = SRTT + 4×SDEV
Для вычисления SDEV сначала определяют абсолютное значение текущего отклонения:
DEV = | Последнее время цикла – старое SRTT |
Затем используют формулу сглаживания, чтобы учесть последнее значение:
Новое SDEV = 3/4×старое SDEV + 1/4×DEV
Остается один вопрос — какие взять начальные значения? Рекомендуется:
Начальный тайм-аут = 3 с
Начальный SRTT = 0
Начальный SDEV = 1,5 с
Ван Джекобсон определил быстрый алгоритм, который очень эффективно вычисляет тайм-аут повторной пересылки данных.
10.13.6 Пример статистики
Насколько успешно будет работать вычисленный выше тайм-аут? При реализации полученного значения наблюдались значительные повышения производительности. Примером могут служить статистические данные команды
tcp:
1301644 packets sent
879137 data packets (226966295 bytes)
21815 data packets (8100927 bytes) retransmitted
2012869 packets received
762469 acks (for 226904227 bytes)
35803 duplicate acks
0 acks for unsent data
1510769 packets (314955304 bytes) received in-sequence
9006 completely duplicate packets (867042 bytes)
74 packets with some dup. data (12193 bytes duped)
13452 out-of-order packets (2515087 bytes)
Системой
10.13.7 Вычисления после повторной отправки
В представленных выше формулах используется значение времени цикла как интервала между отправкой сегмента и получением подтверждения его приема. Однако предположим, что в течение периода тайм-аута подтверждение не получено и данные должны быть оправлены повторно.
Алгоритм Керна предполагает, что в этом случае не следует изменять время цикла. Текущее сглаженное значение времени цикла и
10.13.8 Действия после повторной пересылки
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии