tanenbaum_seti_all.pages (525408), страница 123
Текст из файла (страница 123)
Можно сказать, что телефонная сеть является системой с избыточным обеспечением. Доволыю редко бывает, чтобы вы подняли трубку и не услышали гудка. Дело в том, что в систему заложена настолько большая пропускная способность, что превысить ее оказывается тяжело. Буферизация Потоки можно сохранять в буферной памяти на принимающей стороне перел тем, как доставлять потребителю, Буферизация не сказывается на надежности и пропускной способности, но сказывается на увеличении задержки.
Зато с ее помощью можно снизить уровень флуктуаций. При передаче аудио и видео по требованию именно флуктуация представляет собой основную проблему, и буферизация помогает решить ее. Мы уже видели различия характеристик сети при высокой и низкой флуктуации на рис. 5.26.
На рис. 5.27 изображен поток пакетов, доставляемый при значительной флуктуации. Пакет 1 посылается с сервера в момент времени г= 0 с и прибывает в момент времени г = 1 с. Задержка пакета 2 составляет уже не 1, а 2 с. Прибыва|ощие пакеты буферизируются на клиентской машине. В момент времени г = 10 с начинается воспроизведение, при этом пакеты с 1-го по 6-й уже находятся в буфере, поэтому их можно оттуда извлекать через равные интервалы и воспроизводить.
К сожалению, пакету 8 не повезло: он задержался настолько, что его невозможно воспроизвести вовремя. Выдача пакетов приостанавливается до его прибытия. Возникает досадная задержка в проигрывании му- Качество обслуживания 461 зыки или фильма. Проблему можно решить увеличением задержки начала выдачи пакетов, но для этого потребуется буфер большей емкости. Все коммерческие веб-сайты, на которых содержится потоковое видео или аудио, используют проигрыватели, которые начинают воспроизведение только после примерно десяти- секундной буферизации.
Паквтотправпявтся $ИЩ~ЩЯЩ с источника Пакет прибывает у у цубу у у Пакет извлекается иэ буфера н;;, †;,--;„„ ИИИИИИИ И в буфера Задержка воспроизведения 0 б 10 16 20 Рис. 6.27. Сглаживание выходного потоке путем буферизации пакетов Формирование трафика В приведенном ранее примере источник выдает пакеты через фиксированные интервалы времени, однако бывает, что этот процесс не является столь равномерным. Это может приводить к перегрузке сети. Неравномерный выходной поток— это обычное дело для серверов, поддерживающих множество потоков и различные виды действий, таких как быстрая прокрутка вперед и назад„идентификация пользователя и т, д.
Подход, описанный ранее (буферизация), не всегда можно применить (например, при видеоконференциях). Тем не менее, если бы удалось заставить серверы (и хосты в целом) передавать данные с предсказуемой скоростью, качество обслуживания было бы лучше. Рассмотрим метод формирования графика, сглаживающий выходной трафик на стороне сервера, а не на стороне клиента.
При формировании трафика происходит регулирование средней и пиковой скорости передачи данных. Изучавшиеся нами ранее протоколы скользящего окна ограничивают количество данных, посылаемых сразу, но не скорость, с которой они посылаются. Когда устанавливается виртуальный канал, пользователь и подсеть (то есть клиент и оператор связи) договариваются об определенной схеме (то есть форме) графика для данного канала..Иногда это действие называется соглашением об уровне обслуживания. До тех пор пока клиент выполняет свою часть условий соглашения и посылает пакеты не чаще оговоренного в договоре графика, оператор связи обязуется доставлять их в определенный срок. Формирование трафика снижает перегрузку и, таким образом, помогает оператору связи выполнять свои обязательства.
Подобные договоренности не столь важны при передаче файлов, но весьма существенны при передаче данных в режиме реального времени, как, например, для аудио- и видеосвязи, которые плохо переносят перегрузку. 462 Глава 5. Сетевой уровень В результате при использовании метода формирования графика клиент сообшает оператору связи: «Мой график передачи будет выглядеть следуюшим образом.
Сможете ли вы зто обеспечить7». Если оператор связи соглашается, то возникает вопрос о том, как оператор связи будет сообщать клиенту, что тот соблюдает соглашение, и что делать, если клиент нарушит договор. Наблюдение за потоком трафика называется политикой графика. Договориться о форме трафика и регулировать его впоследствии легче в подсетях с виртуальными каналами, чем в дейтаграммных подсетях. Тем не менее даже в дейтаграммных подсетях можно применить те же идеи к соединениям транспортного уровня.
Алгоритм дырявого ведра Представьте себе ведро с маленькой дырочкой в днище, как показано на рис. 5.28, а. Независимо от скорости, с которой вода наливается в ведро, выходной поток обладает постоянной скоростью, когда в ведре есть вода, и нулевой скоростью, когда ведро пустое. Кроме того, когда ведро наполняется, вся лишняя вода выливается через край и теряется (то есть не попадает в выходной поток под дырочкой). яемый к Дырявое ведро Интврфвй содврмащн дырявое ввд вмый Вода капает иа дырки З, $ с постоянной скоростью в б Рис. В.26.
Дырявое ведро с водой (в), дырявое ведро с пакетами (б) Та же самая идея применима к пакетам, как показано на рис. 5.28, б. Принцип таков: каждый хост соединяется с сетью через интерфейс, содержащий дырявое ведро, то есть конечную внутреннюю очередь, Если пакет появляется в очереди, когда очередь полная, пакет игнорируется.
другими словами, если несколько процессов хоста пытаются послать пакеты, когда в очереди уже стоит максимально допустимое число пакетов, новый пакет игнорируется. Такой интерфейс может быть реализован как аппаратно, так и программно операционной систе- Качества обслуживания 463 мой хоста. Он был предложен Тернером (Тнгпег, 1986) и называется алгоритмом дырявого ведра. По сути это не что иное, как однолинейная система массового обслуживания с постоянным временем обслуживания. Хосту разрешается посылать в сеть один пакет за один такт. Опять же, это может быть реализовано интерфейсной картой либо операционной системой Этот механизм преобразует неравномерный поток пакетов от процессов пользователя в равномерный поток пакетов в сети, сглаживая пики и значительно снижая вероятность перегрузки.
Когда размер всех пакетов одинаков (например, в ячейках АТМ), этот алгоритм может применяться, как описано ранее. Однако при использовании пакетов переменного размера часто бывает лучше ограничивать количество байтов, переданных в сеть за такт, нежели передавать один пакет за такт. Так, если правилом установлена передача 1024 байт за тактовый интервал, то за этот период могут быть переданы в сеть либо один пакет размером 1024 байта, либо два пакета по 512 байт, либо четыре пакета по 256 байт и т. д.
Если оставшееся количество байт меньше размера следующего пакета, следующий пакет должен ждать начала следующего такта. Реализация исходного алгоритма дырявого ведра проста, Дырявое ведро состоит из конечной очереди, Когда прибывает пакет и в очереди есть место, пакет добавляется к очереди, в противном случае пакет игнорируется. Если очередь не пуста, то в течение каждого тактового интервала в сеть передается по одному пакету, Алгоритм дырявого ведра со счетчиком байтов реализуется почти также. В каждом тактовом интервале значение счетчика устанавливается равным п. Если размер первого пакета в очереди меньше текущего значения счетчика, он передается, а значение счетчика уменьшается на его размер.
Если значение счетчика еще достаточно велико, могут быть посланы и другие пакеты. Когда значение счетчика становится меньше размера следующего пакета в очереди, передача прекращается до следующего такта, после чего все начинается сначала, а остаток счетчика обнуляется.
В качестве примера представьте, что компьютер может производить данные со скоростью 25 млн байт в секунду (200 Мбит/с) и что сеть также работает на этой скорости. Однако маршрутизаторы могут поддерживать эту скорость передачи данных лишь на коротких интервалах (пока не заполнится их буферная памЯть). В течение больших интервалов времени они могут обеспечить не более 2 млн байт в секунду. Теперь предположим, что данные поступают пачками по 1 млн байт, одна пачка продолжительностью 40 мс в каждую секунду, Чтобы уменьшить среднюю скорость до 2 Мбайт/с, можно воспользоваться алгоритмом дырявого ведра с выходной скоростью р = 2 Мбайт/с и емкостью С= 1 Мбайт.
Это означает, что пачки до 1 Мбайта могут обрабатываться без потерь и что такие пачки будут передаваться в сеть за 500 мс независимо от того, как быстро они приходят. На рис. 5.29,а показан вход дырявого ведра, на который со скоростью 25 Мбайт/с поступает пачка в течение 40 мс. На рис. 5.29, б показан выход, через который данные проходят с постоянной скоростью 2 Мбайт/с в течение 500 мс. 464 Глава 5. Сетевой уровень Время, мс Время, мс Время, мс Время, мс Время, мс Время, мс Рис. 5.2В.
Вход дырявого ведра (а); выход дырявого ведра (б); выход мар емкостью 250 Кбайт (в), 500 Кбайт (г) и 750 Кбайт (д); выход маркерного век 500 Кбайт на входе дырявого ведра со скоростью протекания 10 Мб~ Алгоритм маркерного ведра Алгоритм дырявого ведра формирует строгий выходной поток с п ростью, не зависящей от неравномерности входного потока. Для жений было бы лучше при поступлении больших пакетов данных 1 чивать выходную скорость. Таким образом можно было бы лопь; более гибкий алгоритм, желательно, не теряющий данные.
Одним Качество обслуживания 465 ритмов является алгоритм маркерного ведра. В этом алгоритме ведро содержит маркеры, создаваемые через равные интервалы времени ЬТ секунл. На рнс. 5.30, а изображено ведро с тремя маркерами и пятью пакетами, стоящими в очереди. Чтобы передать один пакет, требуется удалить один маркер. На рис. 5.30, б мы видим, что три из пяти пакетов прошли в сеть, а оставшиеся лва пакета остались ждать двух новых маркеров. Алгоритм маркерного ведра формирует трафик не так, как алгоритм дырявого ведра. Алгоритм дырявого ведра не позволяет простаивающим хостам запасаться впрок разрешениями на передачу больших пакетов. Алгоритм маркерного ведра разрешает запасаться маркерами до определенного размера ведра п.
Это свойство означает, что пачки (пакеты) с величиной до п могут быть переданы в сеть сразу, что создает некоторую неравномерность в выходном потоке, но обеспечивает быструю реакцию на неожиданные входные пачки. Еще одно различие двух алгоритмов заключается в том, что при переполнении маркерного ведра алгоритм игнорирует маркеры, но никогда не отвергает пакеты. Алгоритм дырявого ведра, напротив, при переполнении выбрасывает сами пакеты, Возможен вариант алгоритма, при котором маркер может предоставлять право пересылать не один пакет, а я байт. Пакет пересылается только прн наличии достаточного числа маркеров, чтобы покрыть его длину. Лишние маркеры сохраняются для будущего использования.