Шейпинг (информатика)
Шейпинг (англ. traffic shaping) — это метод управления пропускной способностью в компьютерных сетях, заключающийся в искусственной задержке части или всех датаграмм с целью привести их поток к заданному «профилю трафика»[1][2].
Этот подход применяется для оптимизации работы сети, контроля или обеспечения производительности, улучшения задержки либо повышения доступной пропускной способности отдельно взятых потоков пакетов за счёт преднамеренного замедления других. Шейпинг часто путают с политикой трафика, которая представляет собой другое, но связанное направление — отбрасывание и маркировку пакетов[3].
Наиболее распространённым видом шейпинга является прикладной шейпинг[4]. В этом случае сначала с помощью инструментов определения (fingerprinting) идентифицируются требуемые приложения, после чего к ним применяются политики шейпинга. Наиболее обсуждаемый пример — ограничение пропускной способности для P2P-трафика, например BitTorrent. Многие прикладные протоколы используют шифрование, чтобы обойти такие ограничения.
Второй вариант — маршрутный шейпинг, основанный на информации о предыдущем или следующем узле («hop»)[5].
Принцип работы
При перегрузке канала и значительном росте загруженности существенно возрастает задержка. Шейпинг позволяет контролировать объём трафика, проходящий через сеть за определённый интервал времени (ограничение пропускной способности), либо скорость передачи (ограничение скорости), либо реализовывать более сложные правила — например, с помощью универсального алгоритма усреднения трафика. В любом случае шейпинг основан на намеренной задержке пакетов.
На практике шейпинг применяется на границе сети для контроля входящего трафика, но может осуществляться как источником (например, компьютером или сетевой картой[6]), так и отдельными устройствами в сети.
Применение
Шейпинг может использоваться отправителями трафика для соблюдения условий соглашения, реализуемых далее в сети посредством политики трафика.
Технология востребована в телетрафике и широко применяется в сетях интернет-провайдеров как один из инструментов управления (например, политики ITMP)[7]. Некоторые провайдеры используют шейпинг для ограничения ресурсов, потребляемых пиринговыми сетями (например, BitTorrent)[8].
В центрах обработки данных шейпинг трафика позволяет поддерживать соглашения об уровне сервиса между множеством приложений и арендаторов, пользующихся одной физической сетью[9].
В стандарте Audio Video Bridging предусмотрен свой механизм шейпинга — определён в IEEE 802.1Qav.
Даже буферизация пакетов на узлах сети до освобождения занятого канала (например, при медленной линии, в дорогостоящем WAN-соединении или спутниковом хопе) приводит к непреднамеренному эфекту шейпинга.
Реализация
«Формирователь трафика» (traffic shaper) задерживает трафик так, чтобы каждый пакет удовлетворял соответствующему контракту трафика. Для измерения параметров применяются алгоритмы leaky bucket (чаще для ATM) или token bucket (для IP-сетей). Отсеянные пакеты поступают в отдельные FIFO-буферы по классам, далее передаются согласно правилам контракта. Передача возможно сразу (если входной трафик соответствует допускам), с задержкой (ожидая своего времени), либо вообще не производится (при потере пакетов).
У всех реализуемых шейперов буфер ограничен по объёму, и приходится решать проблему приёмки новых пакетов при заполнении. Стандартный подход — отбрасывание новых пакетов (tail drop), что фактически является и политикой, и шейпингом. Более сложные реализации используют алгоритмы вроде случайного раннего обнаружения (RED).
Простые схемы шейпинга не дифференцируют трафик — все пакеты обрабатываются одинаково. Более развитые решения начинают с классификации трафика (например, по номеру порта или протоколу), после чего выделенным классам назначаются отдельные правила шейпинга.
Самоограничивающийся источник никак не может создавать трафик выше определённого максимума (пример — медиа-сервисы, ограниченные скоростью кодирования)[10]. Такие источники в некоторой степени осуществляют самошейпинг. Механизмы управления перегрузкой также влияют на картину — например, алгоритм поддержки окна протокола TCP, реализующий ограничение на основании производного от полосы и задержки.
TCP Nice — вариант TCP, модифицированный учёными Техасского университета в Остине, позволяет приложениям указывать, что некоторые соединения следует обрабатывать операционной системе как фоновую передачу (nice flow). Такие потоки минимально вмешиваются в работу основных соединений, но используют большую часть незадействованной пропускной способности[11].
Шейпинг — это частный приём из всего набора технологий управления полосой[12].
Шейпинг у интернет-провайдеров
Шейпинг имеет особое значение для провайдеров: их высоконагруженные и дорогие сети — важнейший актив. Часто применяется дифференциальный подход — трафик шейпируется по оценке значимости, чтобы дисквалифицировать (ограничить) определённые приложения[13].
Крупные организации
Большинство крупных компаний с удалёнными офисами объединены глобальными сетями (WAN). Приложения обычно централизованы в головном офисе, а удалённые пользователи вынуждены взаимодействовать с центральными базами данных и серверными фермами. С увеличением «прожорливости» приложений и с сохранением высоких цен на выделенные каналы всё актуальнее становится грамотное распределение существующей полосы так, чтобы приоритет имел трафик бизнес-приложений. Для этого компании используют шейпинг вместо увеличения пропускной способности.
В качестве альтернативы рассматриваются ускорители приложений и оптимизация WAN, реализующие различные подходы: шейпинг ограничивает скорость, а ускорители используют набор техник (например, TCP proxy), а оптимизаторы сжимают потоки или передают только изменения файлов. Последнее особенно эффективно для трудно оптимизируемых («болтливых») протоколов, таких как CIFS.
Детектирование шейпинга
Примечания
Литература
- John Evans. Deploying IP and MPLS QoS for Multiservice Networks: Theory and Practice : [англ.] / John Evans, Clarence Filsfils. — Morgan Kaufmann, 2007. — ISBN 978-0-12-370549-5.
Ссылки
- BBC News: Трафик-шейпинг и BitTorrent
- Статья IT-world.com, Traffic Shaping — сравнение методов управления полосой пропускания (2001)
- Network World, 05.03.01: Где лучше реализовывать шейпинг трафика?
- Network World, 07.03.01: Шейпинг на стороне WAN
- Ядро Linux: управление трафиком, шейпинг и QoS
- Практическое руководство по управлению трафиком в Linux
- Web-интерфейс формирования трафика (мост/роутер) Архивировано 9 сентября 2012 года.
- Динамическое управление полосой пропускания в Chemnitzer StudentenNetz (немецкий) — о DynShaper-Software, используемом в сети студентов TU Chemnitz: Руководства


