В. Столлингс - Современные компьютерные сети (2-е издание, 2003) (1114681), страница 85
Текст из файла (страница 85)
Станция В получает все эти сегменты, кроме первого. На станция В должна хранить в буфере все поступающие сегменты, пока потерянный сегмент не будет передан еще раз. Она не может освободить буфер, передав данные приложению, пока не прибудет недостающий сегмент. Если повторная передача отсутствующего сегмента откладывается на слишком долгий срок, станции В придется начать отбрасывать поступающие сегменты. В 1123! предложена две процедуры, называемые быстрой повторной передачей и быстрым восстановлением, улучшающие производительность при некоторых обстоятельствах.
В процедуре быстрой повторной передачи используется преимущество следующего правила в протоколе ТСР. Если ТСР-сущность получает сегмент не в том порядке, она дотокна немедленно передать подтверждение для последнего сегмента, полученного в правильном порядке. ТСР-сущность будет продолжать повторять передачу этого подтверждения в ответ на получение каждого входящего сегмента до тех пор, пока не прибудет недостающий сегмент и не заткнет «дыру» в буфере. Когда дыра заткнута, ТСР-сушность передает кумулятивнае подтверждение для всех полученных на данный момент сеглтентов, располагающихся в буфере по порядку. Когда принимающая ТСР-сущность получает дубликат подтверждения, эта означает один из двух возможных вариантов. Во-первых, следующий за подтвержденным сегмент может задержаться настолько, что нарушается порядок его прибытия.
Во-вторых, этот сегмент может быть потерян. В первом случае сегмент в конце концов прибывает к пункту назначения, и поэтому повторная передача не требуется. Но во втором случае прибытие дубликата подтверхсдения выполняет функцию системы раннего предупреждения, сообщающей отправителю, что сегмент потерян и требуется его повторная передача. Чтобы гарантировать, что ТС Р- сущность не спутает ати два случая, Якобсон рекомендует дожидаться трех дополнительных подтверждений, прежде чем повторно передавать сегмент (такнм образом, всего четыре подтверждения для одного и того же сегмента). При таких условиях больше вероятность того, что сегмент был потерян, а не задержался, и для него требуется повторная передача.
Рисунок 12.12 иллюстрирует процесс быстрой повторной передачи. Станция А передает последовательность сегментов, в каждом из которых 200 байт. Сегмент 120! теряется, но в обычных условиях станция А не реагирует на эта, пока не истечет период ожидания КТО, а продолжает передачу сегментов вплоть до закрытия ес окна. Станция В получает сегмент 1001 (байты с 1001-го по 1200-го) и посылает в ответ подтверждение с номерам 1201.
Затем она принимает сегмент 1401 (байты с 1401-го па 1600-й). Поскольку этот сегмент приходит с нарушением порядка, ~ станция В повторяет передачу подтверждения 1201 и будет ее повторять при получении каждого сегмента. пока не прибудет сегмент 1201. К тому моменту, когда станция А получает четыре подтверждения к сегменту 1001, ана уже успела отправить семь сегментов после сегмента 1201.
Станция А немедленно повторяет передачу сегмента 1201, а затем продолжает с того места, на котором ее прервали, О ы в Ф Рио. 12.12. Алгоритм быстрой повтоРной передачи Номер сегмента 5,6 Время, с 5.6 5,3 50000 40000 6.5 Время, с 5,4 382 Глава 12. Управление трефиком в протоколе ТСР Обратите внимание на то, что станция А полагает, что сегменты после се сегмента 1201 добрались до получателя. В противном случае станция В не получила б ила ыдополнительные сегменты, которые и вызвали передачу подтверзп1ений-дублина -д ликатов, Быстрое восстановление Когда ТСР-сущность повторяет передачу сегмента с помощью алгоритма бы ш быстрой повторной передачи, она понимает (или, вернее, предполагает), что сегмен гмент быд потерян даже несмотря на то, что у нее еще не истек периол ожидания подт подтверж денна для этого сегмента. Соответственно, ТСР-сущность должна принять инятьмеры по предотвращению перегрузки.
Одна очевидная стратегия заключается в ис я в исполь- зовании процедуры затяжного пуска/предотвращения перегрузки по истечении периода ожидания подтверждения. Таким образом, ТСР-сущность может устано вить значения хзйгей = сптпИ/2 и снтлИж 1 и начать зкспоненцизльный пр й процесс затяжного пуска, пока стетсИ не станет равным зтглт ей, после чего увеличивать св пс( линейно. В 11231 утверждается, по такая схема является излишне консервативной. Как только что отмечалось, сам факт возвращения нескольких подтверждений свидетельствует о том, что сегменты с данными достигают получателя достаточно регулярно.
Поэтому в [1231 предлагается следующий метод быстрого восстанов- ления: повторить передачу потерянного сегмента, уменьшить размер окна сытсИ на- половину, а затем начать линейно увеличивать стппй При таком подходе не требу- ется начальный экспоненцпальный процесс затяжного пуска. Более точно алгоритм быстрого восстановления можно сформулировать сле- лующим образом: 1, Когда прибывает третий дубликат подтверждения: установить атйгезЬ = стппИ/2; повторить передачу недостающего сегмента; установить сшпИ = зхйгей + 3 (число 3 добавляется к ззйтвдй, так как опо соотвс"гствует количеству сегментов, покинувших сеть и буферизированных другой стороной). 2.
При получении каждого дополнительного дубликата подтверждения (для того же сегмента) размер окна сшпИ увеличивать на единицу и, по возможности, передавать сегмент. Таким образом, учитывается тот факт, что дополнительный сегмент покинул сеть в вызвал передачу дубликата подтверждения. 3. Когда приоывает подтверждение для новых данных (то есть кумулятивное подтверждение для недостающего сегмента и более поздних сегментов), установить пепИ = ядгйгей, Работа алгоритма иллюстрируется примером' нз 11141, воспроизведенным на рис.
12.13. Ось ординат на верхнем графике соответствует номерам сегментов'. Каждый переданный сегмент представлен маленькой ступенькой, высота кото- рой пропорциональна размеру сегмента. Эти сегменты ограничены двумя лини- ями: нижняя линия соответствует порядковому номеру последнего подтвержде- 'В а д ином примере астЫ выражается не в сегментах, а в байтах. Чтобы пепевестя эту величину в сегменты, разделите сваУ на ыаксимальный раэмеп сегмытнь который пйедияатается равным 1024 байтам. " Лл Л я простоты помер сегмента представляет собой округлмпввй до яелото максимальный пооядковый немев деленный на 1024. 122 Б рьбаолеР РУ кои втСР 383 ния (ВХР,(1)ЧА), а верхтшя линия представляет этот порядковый номер плюс (см.
рис. 12.3) размер окна передачи (Бтч ОШ)ЧА + 3)Ч(з.'1Ъ'1Ч(з). Маленькие отмет- ки на нижней линии обозначают дубликаты подтверждений. На нижнем графике показано значение стелИ для того же интервала времени. Рис. 12.1З. Пример работы алгоритма быстрого восстановления 384 Глава 12. Управление трафиком в протоколе ТСР 12.3. Производительность протокола ТСР в сетях АТМ 888 В начале этого интервала времени поддерживается постоянный поток данн с постоянным размером окна и заполненным каналом. В течение этого перно сгзпИ сохраняет максимальное значение, равное величине кредита получател (10 сегментов). Незадолго до момента времени 5,43 (обведенная область) начни ют поступать дубликаты подтверждения для сегмента 579.
Когда прибывает тре. тий дубликат, сегмент 580 передается повторно, а лепИ уменьшается по формул иалИ= ззглгезл + 3. Затем мы входим в область, в которой источник может перс давать по одному дополнительному сегменту для каждого полученного дубликата подтверждения. Обратите внимание на то, что в этой области значения 5НГ1Л 1ы ь и 5Х?ИЪ'ХО остаются постоянными. В данном примере источник не может передать ни одного сегмента, пока са пИ не достигнет своего презкнего значения.
В этот момент источник передает по одному сегменту в ответ на каждый получаемый дубликат подтверхкдения. При этом величина сгзлИ продолжает увеличиваться, что соответствует буферизированным сегментам на принимающей стороне. Наконец, незадолго до момента времени 5,6 с приходит кумулятивное подтвержление для болыпого количества сегментов. Это подтверждение приходит через время К1Т после повторной передачи сегмента 560.
В результате получения кумулятивного подтверждения иалИ уменьшается до хтглгезл, а отправитель входит в линейный режим предотвращения перегрузки. Ограниченная передача Как мы видели, в реализациях протокола ТСР применяются два механизма обнаружения потери сегмента: адаптивный тайм-аут повторной передачи и метод быстрой повторной передачи. Метод быстрой повторной передачи позволяет быстрее реагировать на потерю сегмента, чем традиционное ожидание подтверждения.
Однако даже у этого метода есть свои недостатки, В частности, если окно перегрузки (стзлИ) у передающей ТСР-сущности мало, тогда механизм быстрой повторной передачи может не запуститься. Например, предположим, что у отправителя стзлИ = 3. Если один сегмент теряется сетью, тогда к отправителю поступят максимум два дубликата подтверждений.
Поскольку для запуска механизма быстрой повторной передачи необходимы три дубликата подтверждений, отправитель будет ждать, пока не истечет период ожидания подтверждения, после чего просто повторно передаст потерянный сегмент. Возникают несколько вопросов: + При каких обстоятельствах у отправителя будет окно перегрузки малого размера? + Насколько распространено это явление, то есть как часто передающая ТСР- сущность вынуждена полагаться на тайм-аут повторной передачи, а не на алгоритм быстрой повторной передачи? + Если эта ситуация встречается часто, то почему бы не уменыпить число подтверждений, требующихся для запуска механизма быстрой повторной передачи? Что касается первого вопроса, в ряде исследований упоминаются три обстоятельства, ведущих к уменьшению размера окна перегрузки (1156], [19], 1146]): + Имеется только ограниченное количество данных для передачи. + Получатель накладывает ограничение на свое приемное окно (предоставляемый им кредит).
4» Сквозной метод борьбы с перегрузкой по соединению с негюлыпим произведением )г() (см. обсуждение формулы (12.1)) приводит к уменьшению размера окна перегрузки. В ответ на второй вопрос в ~19] сообщается об исследовании занятого веб-сервера Как выяснилось, 56 повторных передач были вызваны истечением периода КТО, и только 44 Ж инициированы алгоритмом быстрой повторной передачи, Наконец (третий вопрос), уменьшение количества дубликатов подтверждений с большой вероятностью приводит к лишним повторным передачам. Причина этого заключается в том, что дубликаты подтверждений могут также вызываться нарушением порядка получаемых сегментов.