Адаптация к загруженности сети в TCP

ТСР-отиравитель приспосабливается к загруженности сети путем уменьшения скорости передачи данных. Такая адаптация имеет важное значение в свете быстрого роста Internet. В противном случае группа агрессивных ТСР-соедипепий может перегрузить сеть и привести к потере большого числа пакетов. Повторпая передача этих пакетов только увеличивает загрузку. Однако сама сущность протокола IP, в котором отсутствует понятие соединения, затрудняет управление загруженностыо маршрутизаторами в сети. Вместо этого ответственность за управление загруженностью берут на себя окопечпые хосты. Поскольку IP не предоставляет явпой информации о загруженности сети, TCP-отправитель должен сделать вывод, что сеть перегружена, на основе косвенных паблюдепий за производительностью LJac88]. ТСР-от- правитель осуществляет передачу данных с помощью скользящего окна, размер которого зависит от доступного размера входного буфера получателя и пропускпой способности сети, которые представлены окном приема и скользящим окном, соответственно. Отправитель передает данные на основе мипимальпого из этих двух значе- пий, чтобы избежать переполнения буфера приема и предотвратить перегрузку сети. Перегрузка сети приводят к потере IP-пакетов. Обнаружив, что пакет был утеряи, отправитель уменьшает размер скользящего окпа, чтобы спизить скорость передачи. При отсутствии потерь пакетов ТСР-отнравитель постепенно увеличивает размеры скользящего окпа для более агрессивной передачи данных.

TCP реализует алгоритм аддитивного увеличения и мультипликативного уменьшения для измепеиия размера скользящего окпа в соответствии с требованиями документа RFC 2581 [APS99J. При отсутствии потерь пакетов отправитель иостепенно (линейно) увеличивает размер скользящего окпа. В частности, отправитель увеличивает окпо на максимальный размер сегмента (MSS — Maximum Segment Size) для ТСР-соединения. Например, при максимальной длипе пакета (MTU) в 1500 байтов величина MSS должна составить 1460 байт, чтобы оставить место для двух 20-байт- пых заголовков IP и TCP. В ответ на утерю одного или нескольких пакетов отправитель быстро (мультинликативпо, т.е. в геометрической прогрессии) уменьшает скользящее окпо для снижения нагрузки на сеть. После получения третьего повторного АСК-пакета размер скользящего окпа устанавливается равным половипе величины текущего значения. Аддитивное (в арифметической прогрессии) увеличение и мультипликативное (в геометрической прогрессии) умепьшепие размеров скользящего окна приводит к изменениям данной величины во времени, как показано на рис. 5.7. График имеет пилообразную форму с постепенным увеличением скользящего окпа, пока соединение не столкнется с утерей пакета.

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

TCP предоставляет эффективный способ пастройки скорости передачи для каждого соединения в ответ на изменение загрузки сети. Однако новое соединение не обладает какой-либо информацией о состоянии сети. Если пачать с большого

Рис. 5.7. Изменение размера скользящего окна TCP от времени

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

Несмотря на мультипликативное увеличение размера окпа, отправитель на первых порах передает данные относительно медленно. В это время ТСР-соединение не может полностью воспользоваться имеющейся пропускной способностью пути от отправителя к получателю. Фаза медленного старта завершается, как только скользящее окпо достигает порога медленного старта. TCP-отправитель регулирует значение порога медленного старта в ответ на утерю пакетов [APS99J. При достижении скользящим окном границы фазы медленного старта ТСР-отправитель переходит к фазе недопущения перегрузки, в которой размеры скользящего окпа линейно увеличиваются. Аддитивное увеличение и мультипликативное уменьшение продолжается, пока у TCP-отправителя не возникнет таймаут повторной передачи. При возникновении таймаута повторной передачи отправитель полагает, что загруженность сети значительно изменилась. В результате TCP-отправитель сбрасывает размер скользящего окпа в его начальное значение, равное одному или двум MSS, и повторяет фазу медленного старта.

Механизмы управления скользящим окном TCP достаточно сложны, а детали их различаются для разпых версий протокола TCP [FF96]. Совершенствование управления скользящим окном TCP является областью активных исследований [APS99, MMFR96, FF96, AFP98, RF99, Flo94, Flo00]. Большинство предлагаемых расширений TCP пытаются сделать управление скользящим окном менее консервативным с целью новышепия производительности приложений. Тем не менее, основные операции управления скользящим окном остаются теми же. В общем случае каждое повое соединение и соединения, столкнувшиеся с таймаутом повторпой передачи, проходят через фазу медленного старта. Фаза медленного старта предполагает небольшой начальный размер скользящего окна и мультипликативное увеличение его размера по мере подтверждения пакетов. После фазы медленного старта соединение входит в фазу недопущения перегрузки, в которой размеры скользящего окиа аддитивно увеличиваются (при поступлении АСК-иакета) и мультипликативно уменьшаются (при обнаружении перегрузки). TCP-отправитель осуществляет передачу данных на основе минимальных размеров скользящего окпа и окпа приема, чтобы избежать перегрузки сети или переполнения входного буфера, соответственно.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100