10.13.5 Тайм-аут повторной пересылки

10.13.5 Тайм-аут повторной пересылки

После отправки сегмента TCP устанавливает таймер и отслеживает поступление ACK. Если ACK не получен в течение периода тайм-аута, TCP выполняет повторную пересылку сегмента (ретрансляцию). Однако каким должен быть период тайм-аута?

Если он слишком короткий, отправитель заполнит сеть пересылкой ненужных сегментов, дублирующих уже отправленную информацию. Слишком же большой тайм-аут будет препятствовать быстрому исправлению действительно разрушенных при пересылке сегментов, что снизит пропускную способность.

Как выбрать правильный промежуток для тайм-аута? Значение, пригодное для высокоскоростной локальной сети, не подойдет для удаленного соединения со множеством попаданий. Значит, принцип "одно значение для любых условий" явно непригоден. Более того, даже для существующего конкретного соединения могут измениться сетевые условия, а задержки — увеличиться или снизиться.

Алгоритмы Джекобсона, Керна и Партриджа (описанные в статьях Congestion Avoidance and Control, Van Jacobson, и Improving Round-Trip Time Estimates in Reliable Transport Protocols, Karn и Partridge) позволяют адаптировать TCP к изменению сетевых условий. Эти алгоритмы рекомендованы к использованию в новых реализациях. Мы кратко рассмотрим их ниже.

Здравый смысл подсказывает, что наилучшей основой оценки правильного времени тайм-аута для конкретного соединения может быть отслеживание времени цикла (round-trip time) как промежутка между отправкой данных и получением подтверждения об их приеме.

Хорошие решения для следующих величин можно получить на основе элементарных статистических сведений (см. рис. 10.19), которые помогут вычислить время тайм-аута. Однако не нужно полагаться на усредненные величины, поскольку более половины оценок будет больше, чем среднестатистическая величина. Рассмотрев пару отклонений, можно получить более правильные оценки, учитывающие нормальное распределение и снижающие слишком долгое время ожидания повторной пересылки.

Рис. 10.19. Распределение значений времени цикла

Нет необходимости в большом объеме вычислений для получения формальных математических оценок отклонений. Можно использовать достаточно грубые оценки на основе абсолютной величины разницы между последним значением и среднестатистической оценкой:

Последнее отклонение = | Последний цикл - Средняя величина |

Для вычисления правильного значения тайм-аута нужно учитывать еще один фактор — изменение времени цикла из-за текущих сетевых условий. Происходившее в сети в последнюю минуту более важно, чем то, что было час назад.

Предположим, что вычисляется среднее значение цикла для очень длинного по времени сеанса. Пусть вначале сеть была мало загружена, и мы определили 1000 небольших значений, однако далее произошло увеличение трафика с существенным увеличением времени задержки.

Например, если 1000 значений дали среднестатистическую величину в 170 единиц, но далее были замерены 50 значений со средним в 282, то текущее среднее будет:

170?1000/1050 + 282?50/1050 = 175

Более резонной будет величина сглаженного времени цикла (Smoothed Round-Trip Time — SRTT), которая учитывает приоритет более поздних значений:

Новое SRTT = (1 – ?)?(старое SRTT) + ??Последнее значение цикла

Значение ? находится между 0 и 1. Увеличение а приводит к большему влиянию текущего времени цикла на сглаженное среднее значение. Поскольку компьютеры быстро могут выполнять деление на степени числа 2, сдвигая двоичные числа направо, для ? всегда выбирается значение (1/2)n (обычно 1/8), поэтому:

Новое 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 с

Ван Джекобсон определил быстрый алгоритм, который очень эффективно вычисляет тайм-аут повторной пересылки данных.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1. Команды пересылки данных

Из книги Информатика и информационные технологии: конспект лекций автора Цветкова А В

1. Команды пересылки данных Для удобства практического применения и отражения их специфики команды данной группы удобнее рассматривать в соответствии с их функциональным назначением, согласно которому их можно разбить на следующие группы команд:1) пересылки данных


53. Команды пересылки данных

Из книги Информатика и информационные технологии автора Цветкова А В

53. Команды пересылки данных Команды пересылки данных общего назначенияК этой группе относятся следующие команды:1) mov – это основная команда пересылки данных;2) xchg – применяют для двунаправленной пересылки данных.Команды ввода-вывода в портПринципиально управлять


Программы для пересылки файлов большого размера

Из книги 200 лучших программ для Интернета. Популярный самоучитель автора Краинский И

Программы для пересылки файлов большого размера Пересылка по электронной почте файлов большого размера всегда сопряжена с проблемами. Во-первых, размер почтового ящика получателя может быть недостаточно велик для получаемого файла. Во-вторых, отправка больших файлов


6.14.5 Тайм-аут сборки датаграммы

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

6.14.5 Тайм-аут сборки датаграммы Рассмотрим следующую последовательность событий:? Пересылается датаграмма.? Пославший ее процесс аварийно завершается.? Датаграмма фрагментируется при пересылке.? По пути следования теряется один из фрагментов.При потере отправленного


10.11.1 Тайм-аут

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

10.11.1 Тайм-аут Работа партнера по соединению может завершиться крахом либо полностью прерваться вследствие неисправности шлюза или связи. Чтобы предотвратить повторную пересылку данных в TCP, существует несколько механизмов.Достигнув первого порогового значения для


10.13.7 Вычисления после повторной отправки

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

10.13.7 Вычисления после повторной отправки В представленных выше формулах используется значение времени цикла как интервала между отправкой сегмента и получением подтверждения его приема. Однако предположим, что в течение периода тайм-аута подтверждение не получено и


10.13.8 Действия после повторной пересылки

Из книги Интернет-маркетинг. Полный сборник практических инструментов автора Вирин Федор Юрьевич

10.13.8 Действия после повторной пересылки Но что происходит до получения подтверждения? После повторной пересылки поведение TCP радикально меняется в основном из-за потери данных от перегрузки в сети. Следовательно, реакцией на повторную отправку данных будет:? Снижение


14.5 Типы данных, структуры файлов и методы пересылки

Из книги автора

14.5 Типы данных, структуры файлов и методы пересылки На обоих концах соединения необходимо обеспечить единый формат для пересылаемых данных. Этот файл текстовый или двоичный? Он структурирован по записям или по блокам?Для описания формата пересылки используются три


14.6.4 Команды пересылки файлов

Из книги автора

14.6.4 Команды пересылки файлов Команды из таблицы 14.4 применяются с целью установки соединения для данных, копирования файлов и восстановления при перезапуске.Таблица 14.4 Команды поддержки пересылки файлов Команда Определение Параметр(ы) ALLO Выделяет (резервирует)


16.3 Модель пересылки почтового сообщения

Из книги автора

16.3 Модель пересылки почтового сообщения На рис. 16.4 показаны элементы почтовой системы. Сообщение подготавливается с помощью приложения пользовательского агента (User Agent — UA). Обычно UA передает сообщение другому приложению, агенту пересылки сообщений (Message Transfer Agent — МТА),


16.12.1 Улучшенный агент пересылки почты

Из книги автора

16.12.1 Улучшенный агент пересылки почты Улучшенный агент пересылки почты (Extended Message Transfer Agent) должен поддержать одну дополнительную команду. Вместо HELO он посылает сообщение-приветствие EHLO. Если ответ положителен, партнер также является улучшенным агентом пересылки почты


20.7.2 Модули пересылки

Из книги автора

20.7.2 Модули пересылки Создано множество модулей, описывающих технологии локальных и региональных сетей. Несколько поддеревьев создано от узла transmission (см. рис. 20.7). Полный их список приведен в документе Assigned Numbers. Рис. 20.7. Модули пересылки


8.6.2. Блокировка пересылки спама

Из книги автора

8.6.2. Блокировка пересылки спама При конфигурации почтового сервиса вы должны сделать так, чтобы злоумышленники не смогли посылать свой спам через ваш сервер. Вам необходимо произвести несколько настроек, чтобы массовая рассылка перестала быть эффективной:? по умолчанию


2.4. Увеличение лояльности клиентов компании с целью совершения повторной продажи

Из книги автора

2.4. Увеличение лояльности клиентов компании с целью совершения повторной продажи Многие покупки совершаются неоднократно, какие-то товары приобретаются регулярно, например молоко, а какие-то – довольно редко, например автомобили, однако и в том, и в другом случае