Лекции 2010-го года (1130544), страница 77
Текст из файла (страница 77)
Заведомо эта величина не должна бытьпостоянной в силу гладкости функции распределения.В основе используемого в протоколе ТСР алгоритма, предложенного Якобсоном в 1988году, лежит специальная переменная RTT для получения оптимального значениявеличины time_out (Round Trip Time), значение которой постоянно модифицируется. Вэтой переменной хранится наименьшее время подтверждения. При каждой передачесегмента замеряется величина задержки подтверждения М. Если при очередной передачеподтверждение поступило прежде, чем наступил time_out, значение переменной RTTнемного уменьшают, в противном случае - увеличивают по формуле:RTT = λRTT + (1- λ)M, где λ=0,87.Однако, даже зная величину RTT, определить величину ожидания оказалось непросто.Якобсон предложил вычислять величину D - отклонения между ожидаемой величинойзадержки и измеренной по формуле:D = λD + (1-λ) |RTT - M|.Кроме этого, Якобсон показал как, зная D, вычислить величину time_out по формуле:time_out = RTT + 4*D.Позднее Филл Карн (Phill Karn) модифицировал эту формулу для случая повторнопередаваемых сегментов.
Действительно, когда поступает подтверждение для сегмента, тоне ясно, то ли это подтверждение для первой передачи, толи для последней. Филлаинтересовал вопрос вычисления величины RTT для передачи данных по протоколамTCP/IP по КВ-радиоканалу. В результате экспериментов он показал, что для повторнопередаваемых сегментов эффективно просто удваивать величину ожидания до тех пор,пока подтверждение не поступит с первого раза.Другой важный таймер в протоколе ТСР - таймер настойчивости.
Он позволяет боротьсясо следующего типа тупиками. Когда получатель посылает сообщение с нулевымразмером окна, отправитель останавливает передачу и ждет сообщения об измененииразмера окна. Наконец, получатель послал это сообщение, а оно было потеряно. Все ждут.Чтобы избежать такой ситуации, используют таймер настойчивости. Если он исчерпан, тоотправитель шлет сообщение получателю, напоминая ему о проблеме размера буфера.Еще один важный таймер - таймер функционирования. Если по какой-либо причине посоединению долго не посылали сообщений, то надо проверить, функционирует ли оно.Когда этот таймер исчерпан, то соответствующая сторона шлет другой стороне запрос:«Жива ли ты?» Если ответа не поступает, то соединение считается разорванным.Рисунок 6-24.
Дисперсия величины задержки подтверждения: (а) На канальном уровне; (b)На транспортном уровне (TCP)6.3.8. Протокол UDPInternet поддерживает также транспортный протокол без соединений - UDP (User DataProtocol). Протокол UDP (User Datagram Protocol) предназначен для обменадейтаграммами между процессами компьютеров, входящих в единую сеть с коммутациейпакетов. В качестве протокола нижнего уровня UDP-протокол использует IP.Протокол UDP предоставляет прикладным программам возможность отправлятьсообщения другим приложениям, используя минимальное количество параметровпротокола.
Этот протокол не обеспечивает достоверность доставки пакетов, защиты отдублирования данных или от сбоев в передаче. За исключением параметров приложения номеров портов отправителя и получателя пакета, UDP практически ничего не добавляет кIP-дейтаграмме.Рисунок 6-25. Заголовок UDPПротокол UDP намного проще, чем TCP, и полезен в ситуациях, когда мощныемеханизмы обеспечения надежности протокола TCP не требуются или будут толькопомехой для решения определенного рода задач, например, аутентификациипользователей.
Структура UDP-заголовка показана на рисунке 6-25.• Source Port (16 бит). Порт отправителя. Это поле может содержать номер порта, скоторого был отправлен пакет, когда это имеет значение (например, когдаотправитель ожидает ответа). Если это поле не используется, оно заполняетсянулями.• Destination Port (16 бит). Порт назначения - это порт компьютера, на который пакетбудет доставлен.• Length (16 бит). Поле длины.
Длина (в байтах) этой дейтаграммы, включаязаголовок и данные. (Минимальное значение этого поля равно 8).• Checksum (16 бит). Поле контрольной суммы. Контрольная сумма UDP-пакетапредставляет собой побитное дополнение 16-битной суммы 16-битных слов(аналогично TCP). В вычислении участвуют: данные пакета, заголовок UDPпакета, псевдозаголовок (информация от IP-протокола), поля выравнивания по16-битной границе (нулевые).Преимущество протокола UDP состоит в том, что он требует минимум установок ипараметров для соединения двух процессов между собой.
Этот протокол используется приработе Серверов Доменов (Name Servers), протокола TFTP (Trivial File Transfer), приработе с SNMP-протоколом и построении систем аутентификации. Идентификатор UDP вIP-заголовке - число 17. Более подробное описание протокола UDP можно найти в RFC768.6.3.9.
TCP и UDP в беспроводных коммуникацияхТеоретически ТСР не должен зависеть от того, над какой средой он работает – оптическойили беспроводной. Однако на практике дело обстоит иначе. ТСР-протокол тщательнооптимизировали при разных предположениях, которые не выполняются в беспроводнойсреде. Так, например, предполагалось, что сетевая среда достаточно надежна и рост числаtime_out – это результат перегрузки, а не потери пакетов.В беспроводной среде потеря пакета - дело частое.
Поэтому применение протокола ТСР«в лоб» с протоколом Якобсона медленного старта лишь усугубит положение. Так,например, если потери составляют 20%, то при пропускной способности канала в 100пакетов в секунду фактически будем иметь лишь 80 пакетов. Согласно алгоритмумедленного старта, при увеличении числа time_out надо понизить скорость, скажем до 50пакетов в секунду, что приведет к фактической скорости 40 пакетов.Поэтому, если увеличилось число отказов в обычном канале, надо сбросить скорость, аесли это число возросло в беспроводной среде, надо не понижать скорость, а слать пакетыповторно. Так что без знаний о среде принять решение трудно.Основным источником проблем является то, что в беспроводной среде соединения частонеоднородные. На рисунке 6-26 показан пример.
Была предложена модификация ТСР –разбить такое соединение на два так, чтобы каждое стало однородным. Есть и другиерешения, связанные с модификацией не самого ТСР, а канального уровня для базовыхстанций.Рисунок 6-26. Разбиение TCP-соединения на два6.4. Вопросы производительностиПроизводительность вычислительных сетей и машин один из основных показателей ихэффективности. Сегодня настройка производительности сетей и систем больше искусство,чем наука. Многое из того, что здесь будет сказано – результат практики. Мы уже многовнимания уделили вопросам производительности при рассмотрении, например, сетевогоуровня. Однако вопросы производительности сети в целом, как системы, относятся ктранспортному уровню и будут рассмотрены здесь. В последующих пяти разделах мырассмотрим пять основных аспектов производительности сетей:1.Проблемы производительности2.Измерение производительности3.Влияние организации сетей на производительность4.Быстрая обработка TPDU5.Протоколы для высокопроизводительных сетей6.4.1.
Проблемы производительности в сетяхОдна из таких причин – перегрузки из-за несбалансированности ресурсов и нагрузки.Если на маршрутизаторы наваливается больше нагрузки, чем они могут переработать,возникает перегрузка. Перегрузки были достаточно подробно рассмотрены ранее.Производительность может падать из-за структурной несбалансированности ресурсов.Например, если персональную машину подключить к гигабитному каналу, то она будетзахлебываться от наплыва пакетов из-за несбалансированности скорости процессора искорости канала.Перегрузка может быть вызвана синхронно, как реакция на некоторые действия в сети.Это так называемые синхронные перегрузки.
Например, если сегмент TPDU содержитневерный параметр (номер порта или процесса), то в ответ пойдет сообщение об ошибке.Если такой пакет получили сотни или тысячи машин, то в ответ последует урагансообщений. Этой проблеме был подвержен протокол UDP до тех пор, пока не быловнесено изменение в протокол, разрешающее или запрещающее слать подтверждение.Другой пример – перезагрузка машин в сети после сбоя питания. Все машины разомринутся на RARP-сервер и файл-сервер за надлежащей информацией. В результатепроизойдет коллапс серверов.Другая причина – несоответствующая настройка системы.
Например, если машины в сетиимеют достаточно мощные процессоры и достаточно памяти, но под буфера в системепамяти выделено мало. В результате пакеты будут теряться из-за переполнения буферов.Аналогично, если планировщик процессов в операционной системе не дает достаточновысокий приоритет процессу обработки TPDU, то пакеты будут теряться.Другой параметр настройки – время time_out. Если time_out на подтверждение слишкомкороток, то много будет повторных посылок, если велик – скорость передачи упадет.
Ещеодин пример - время ожидания попутного сообщения, с которым можно отправитьподтверждение о полученном пакете. Если значение этого параметра мало, то будет многодополнительных пакетов-уведомлений. Если велико, то получатель может генерироватьзапросы по time_out и скорость передачи упадет.Появление гигабитных сетей принесло новые причины потери производительности. Пустьмы хотим передать пакет из Москвы во Владивосток. У нас есть линия на 1 Гбит/сек., а уполучателя - буфер на 64 Кбайт.