3.4.3. Регулирование размера окна по потерям - алгоритмы Тахо и Рино
В
условиях низкого уровня ошибок в
физических средах передачи, потери
кадров могут служить для передатчика
индикатором перегрузки сетевых устройств
коммутации, либо премного узла. На
рис.3.20 представлена упрощенная модель,
в которой единственное соединение
использует узел коммутации, обрабатывающий
С кадров/сек.
Общая стратегия регулирования окна может быть следующей: отправитель, в условиях отсутствия потерь увеличивает свое окно передачи по какому-то закону; обнаружив потерю сегмента (истек тайм-аут получения подтверждения его доставки) размер окна уменьшается до значения W=1. В непрерывном времени алгоритм описывается простым логическим выражением:
Если потерь нет То
Иначе W = 1.
Здесь t - текущее время, u – скорость роста величины окна передачи.
Проанализируем характер изменение
величины окна. Минимальное время реакции
передатчика равно времени полного
оборота (RTT=
).
За время
передатчик отправляет W
кадров. Коммутатор успевает обработать
кадров и еще x кадров
могут находиться в его буферной памяти,
размер которой составляет В кадров.
Величина окна W может
расти до значения
не приводя к потерям. Потери начинают
возникать, когда буферная память
коммутатора полностью заполняется.
Поскольку факт возникновения потери
кадра будет зафиксирован передатчиком
через время тайм-аута (RTO),
минимальное значение которого равно
времени полного оборота, то текущее
значение окна передачи к моменту
индикации потери достигает значения
.
От этого значения размер окна уменьшается до значения W=1. Рис.3.21 иллюстрирует рассмотренный процесс изменение W(t). Такую стратегию реализует простейший алгоритм регулирования окна передачи Оld Tacho.
Результат не очень хорош – средняя
величина окна передачи далека от
значения, необходимого для номинальной
загрузки канала, а
>
,
т.е. создаются условия, стимулирующие
перегрузку сети. Ослабить влияние этих
недостатков можно:
модификацией закона изменения величины окна, предупреждающей как его чрезмерное увеличение, так и чрезмерное уменьшение;
посредством уменьшения времени задержки обратной связи, т.е. времени реакции передатчика на факт потери кадра.
Эти усовершенствования реализуются в алгоритмах Tacho и Reno.
Алгоритм Tacho.
Размер окна от единичного значения
увеличивается достаточно быстро
(интенсивная загрузка имеющейся
пропускной способности), но при достижении
некоторого порогового значения скорость
его роста существенно уменьшается
(аккуратная дозагрузка остающейся
свободной пропускной способности). Так,
например, если в предыдущем цикле
регулирования потеря кадра была
зафиксирована при
,
то в следующем цикле величина W
быстро увеличивается от 1 до значения
(например, по закону
).
После достижения указанного значения
и до момента фиксации потери кадра
величина W растет
медленно (например, на единицу за время
полного оборота). При фиксации потери,
окно уменьшается до единичного значения
и цикл регулирования повторяется.
Иллюстрация этого процесса приведена
на рис. 3.22.
Эти усовершенствования преобразуют
простейший алгоритм регулирования окна
передачи в алгоритм медленного старта
и предупреждения перегрузок (Slow
start with
congestion avoidance).
На интуитивном уровне этим фазам можно
дать следующую интерпретацию. Фаза
медленного старта – это экспериментальная
оценка «емкости» соединения, т.е. числа
сегментов данных, которые могут
одновременно находиться в канале между
конечными узлами. Эта оценка должна
быть проведена аккуратно (отсюда отказ
от установления величины окна сразу в
значение
),
но достаточно быстро (отсюда удвоение
текущего значения окна за время RTT).
Фаза предупреждения перегрузки – это
очень аккуратная попытка заполнить
канал максимально возможным числом
блоков данных (поскольку ACK-и
приходят, то можно аккуратно его
«догружать»).
Дальнейшим развитием алгоритма Tacho
явилось ускорение повторной передачи.
Сигналом для ускоренной повторной
передачи кадра, т.е. передачи его ранее
истечения соответствующего тайм-аута,
служит получение трех кадров АСК с
неизменным значением
.
Это заметно сокращает время «простоя»
передатчика и способствует лучшему
использованию пропускной способности
соединения. При этом, индикация потери
блока данных по истечению таймера
повторной передачи также сохраняется.
Алгоритм Reno
исключает фазу медленного старта и
вводит быстрое восстановление окна
передачи после потери. В каждом цикле
алгоритм стартует при
,
увеличивает окно до
(фаза
предупреждения перегрузки) и сбрасывает
его значение к
после фиксации потери пакета по трем
дубликатным ACK. При
определении потери блока данных по
признаку истечения тайм-аута величина
окна устанавливается равной 1. Рис. 3.23
иллюстрирует особенности работы этого
алгоритма.
В алгоритме Reno введено еще одно усовершенствование – быстрое восстановление размера окна передачи (Fast Recovery). Оно имеет целью уменьшить задержки пакетов в канале и повысить коэффициент использования его пропускной способности.
Пусть потеря кадра произошла в момент,
когда W = M.
Зафиксировав этот факт (по третьему АСК
с неизменным
),
отправитель уменьшает значение W
до (M/2) (а не до 1) и
дублирует кадр А. Поскольку к этому
моменту не на все ранее отосланные
сегменты были получены подтверждения,
то при получении каждого нового АСК с
окно передачи увеличивается на 1 (быстрое
восстановление окна передачи). Это
позволяет передать еще ряд пакетов,
номера которых находятся в диапазоне
разрешенных окном передачи. (Здесь
реализуется логика: «АСК получен,
следовательно, один блок успешно покинул
сеть и можно послать еще один»). По
завершению передачи блоков, разрешенных
окном W, отправитель
ожидает прибытия подтверждения повторной
отправки кадра А – этот момент и
является границей фазы быстрого
восстановления.
После получения подтверждения на кадр с номером А значение окна передачи устанавливается равным W=M/2 и далее реализуется режим регулирования, предотвращающий возникновение перегрузок (т.е. режим медленного роста величины окна). В случае невозможности реализации повторной передачи утерянного кадра до истечения тайм-аута (получено менее 3 дубликатных АСК, либо все кадры разрешенные окном уже отправлены, а подтверждения не получены) окно передачи устанавливается в 1. Достоинством алгоритма Reno, в сравнении с Tacho, является лучшее использование пропускной способности канала в фазе повторной передачи и, почти полное исключение фазы медленного старта.
Транспортный протокол ТСР в своих ранних версиях для регулирования окна передачи использовал алгоритм Tahoe (медленный старт, предотвращение перегрузки и быстрая повторная передача). В последующих версиях применялся алгоритм Reno.
