Настройка QoS для повышения качества IP-телефонии

Кому следует посетить

Кому следует посетить

Данный курс будет полезен:

  • Инженерам сопровождения и технической поддержки.
  • Специалистам технических и инженерных служб
  • Системным администраторам
  • Сетевым архитекторам, ответственным за дизайн мультисервисных сетей, передающих голосовой/видео трафик и трафик данных в корпоративных средах или средах сервис провайдеров

Сертификации

Сертификации

Этот курс является частью следующих программ сертификаций:

Предварительные требования

Предварительные требования

Cisco Certified Networking Associate (CCNA) или эквивалентный опыт

Цели курса

Цели курса

На курсе слушатели должны научиться:

  • Объяснять необходимость и методы реализации и управления QoS в мультисервисных сетях
  • Описывать различные модели обеспечения QoS и объяснять ключевые механизмы IP QoS реализующие эти модели
  • Объяснять использование MQC и AutoQoS для реализации QoS в сетях
  • По заданной политике QoS классифицировать и маркировать трафик для обеспечения политики
  • Реализовывать механизмы очередей для управления трафиком в перегруженных сетях
  • Использовать механизмы предотвращения перегрузки
  • Использовать механизмы нормирования уровня трафика, поступающего в QoS домен

Содержание курса

Содержание курса

Курс Implementing Cisco® Quality of Service (QOS) предоставляет слушателям глубокие знания требований IP QoS, архитектур Дифференцированных Услуг(DiffServ), Интегрированных услуг(IntServ) и негарантированного обслуживания а также реализацию QoS на коммутаторах и маршрутизаторах Cisco®.

Курс включает в себя теоретические предпосылки QoS, вопросы проектирования и настройки различных механизмов QoS для облегчения эффективного внедрения политик QoS. Лабораторные работы помогут слушателям отработать внедрение сценариев применения QoS на реальных схемах.

Также в курсе слушатель познакомится с правилами разработки и использования тонких особенностей QoS, методами обеспечения сквозного QoS на втором и третьем уровне модели OSI, позволяя таким образом реализовывать эффективные, производительные стабильные мультисервисные сети.

unnamed-1.jpg26.04.201813 888AAA

В прошлой статье о телефонии мы обсудили общие причины проблем со связью. Но довольно часто они возникают, потому что не хватает пропускной способности роутера. Если один человек звонит, а пять его коллег одновременно слушают музыку, то возможны перебои. В этой статье мы разберем настройки, которые позволят дать “зеленый свет” в первую очередь данным IP-телефонии.

Osnovnie-44.png

Телефонная связь через интернет возможна благодаря SIP-протоколу, который решает вопросы взаимодействия мультимедийных протоколов (видео/аудио). Более подробно этот процесс описан в статье “Простыми словами: Что такое SIP-телефония”. Когда один из собеседников говорит, звук его голоса кодируется и разбивается на пакеты, которые в течение разговора передаются другому устройству.

Но никто не использует интернет только ради IP-телефонии, поэтому через один канал передаются различные виды данных. Для роутера все они условно одинаковы, и такое “равноправие” иногда приводит к проблемам со связью.

Приведем упрощенный пример. Отец смотрит онлайн-трансляцию матча, сын слушает музыку в соцсети, а мать в это время хочет позвонить бабушке по скайпу. Но звук начинает прерываться, потому что аудио- и видео-трафик, который потребляют другие домочадцы, почти целиком “забил” канал. И пакеты с аудиоданными ожидают очереди на обработку, что приводит к проблемам со связью.

В большинстве случаев телефонный разговор гораздо важнее развлекательного ролика на Youtube или задержки в отправке письма, которая займет доли секунды. Но такая же задержка в случае со звуком ощутимо отразится на качестве связи. Поэтому желательно настраивать так называемую приоретизацию трафика, которая позволит пропускать данные IP-телефонии в первую очередь.   

Quality of Service (QoS) — это технология предоставления различным классам данных различных приоритетов в обслуживании. QoS является встроенной функцией некоторых моделей роутеров.

Если настроить приоретизацию для данных IP-телефонии, то устройство будет определять их среди проходящего трафика и предоставлять им максимальный приоритет, что может значительно повысить качество связи. На картинке ниже наглядно показана разница в работе устройства с QoS и без него.

qos.png

Источник изображения VAS Experts

Настройка QoS: что нужно учитывать

Перед тем, как настроить QoS, нужно учесть два момента. Во-первых, приоретизация оправдана, только если канал сильно загружен и возникает очередь на обслуживание пакетов. Если вам нужно лишь изредка звонить знакомым, то настройка QoS — лишняя трата времени. Но для компании, которая использует связь от оператора IP-телефонии, без этой технологии не обойтись. Аналогично, если вы используете коллтрекинг от Ringostat, поэтому ниже мы подготовили рекомендации по настройке.

Во-вторых, QoS — это не волшебная пилюля. Если канал слишком узкий, то приоретизация трафика все равно не поможет. Физический буфер устройства, куда помещаются все готовые к выходу пакеты, будет переполняться. И тогда вновь поступающие пакеты будут уничтожаться — даже если они важны для пользователя.

Поэтому обращайте внимание на характеристики роутера и максимальный размер очереди обработки пакетов. Например, на маршрутизаторах Cisco он составляет примерно 128–256 пакетов. Допустимо, если эта очередь превышает до 20% от его пропускной способности. Но если больше — то это повод заняться дизайном сети и прокладкой дополнительных маршрутов.

Настройка QoS

Чтобы избежать заторов в канале, мы должны “пометить” VoIP-данные и дать понять роутеру, что они важны для нас в первую очередь. Существует два варианта приоретизации трафика.

1. Выставление приоритета в веб-интерфейсе роутера

Не существует универсального способа настройки QoS для роутеров. Все зависит от конкретного устройства. Вот, например, как этот процесс описан в инструкции по настройке QoS для роутера TP-Link. В основном, приоритет назначается по протоколу — в случае с телефонией нам в первую очередь важен SIP/ RTP. RTP(Real-time Transport Protocol) — протокол, используемый для передачи звука.

Также приоретизацию можно настраивать по портам. В этом случае устройство будет понимать, что все данные, поступающие с конкретного порта, нужно пропускать в первую очередь. Так, при использовании программы для связи (диалера) VoIP-трафик будет поступать с порта 5060. Также доступна приоретизация по типу трафика. Выбор вида приоретизации зависит от количества трафика, его типа и настроек приложений, которые используются для связи и т. д.

2. Выставление приоритета в приложении для связи

Если говорить обобщенно, то в заголовках различных сетевых протоколов (Ethernet, IP, ATM, MPLS и др.) присутствуют специальные поля, выделенные для маркировки трафика. Вписывая туда нужные значения, вы отмечаете определенные данные как особенно важные. И роутер будет пропускать их в первую очередь.

В этом случае QoS настраивается не в устройстве для интернет-соединения, а в программе, с помощью которой вы звоните. Для этого нужно зайти в ее сетевые настройки и прописать нужные значения для пакетов с аудиоданными. Вот например, как это описано в инструкции для Zoiper.  

Остановимся на этом способе подробней, потому что он позволяет быстрее обрабатывать информацию. В этом случае уже по самому IP-заголовку пакета роутер понимает, что это приоритетные данные, и пропускает их быстрее. А в первом случае ему дополнительно приходится “раскрывать” пакет, чтобы распознать, какое содержимое внутри. Кроме того, маркировать данные лучше всего ближе к их источнику. В нашем случае этим источником является программа для связи.

В качестве примера разберем настройку приоритетизации в приложении Zoiper. Для этого нужно найти в папке программы для связи конфигурационный файл. Например, для Zoiper это «Config.xml». С помощью редактора, совместимого с XML, найдите нужные строки и впишите в них значение EF, CS или AF. Выбор нужного значения зависит от возможностей роутера — более подробно свойства значений описаны в статье на Википедии, которая включает в себя список стандартов.

В настройках нужно указать значения для параметров:

EF

EF

Вот как выглядит содержимое пакета после настройки QoS в программе Zoiper. На скриншоте видны: протокол, его заголовок и значение, которое мы ввели. EF означает Expedited forwarding (англ. “ускоренная пересылка”) — т. е. в данном случае наивысший приоритет:

Qos2.jpg

Единственный минус этого способа — хоть большинство роутеров и могут понимать приоритет по заголовку, но не все. Детали настройки зависят от устройства и сервиса, которые вы используете. Но инструкцию несложно найти, достаточно загуглить “как настроить QoS для N”.

Качество связи играет большую роль для бизнеса. У нас есть не один кейс о том, как настройка телефонии принесла увеличение количества заявок. Мы понимаем, что тема это непростая, поэтому не стесняйтесь — задавайте вопросы в комментариях. Если напишете в чат, расположенный справа, служба техподдержки ответит в течение пяти минут.

Если вы нашли ошибку — выделите её и нажмите Ctrl + Enter или .

Инфографика: Каким компаниям сложней всего дозвонитьсяОбновления апреля для углубленной аналитики и корректной работы со звонками

Разделение, ограничение и управление трафиком — актуальная и сложная задача, которую обычно возлагают на дорогостоящее специальное сетевое оборудование. Но решить ее можно и с помощью подсистемы Linux-ядра Traffic Control, не уступающей по возможностям Cisco IOS.

Краткий сценарий

Подсистема Traffic Control

Подсистема Traffic Control поддерживает множество методов классификации, приоритезации, разделения и ограничения трафика (как исходящего, так и входящего). Она очень гибка в настройке, но сложна в понимании. Поэтому мы уделим значительную часть статьи теоретическому материалу и лишь затем приступим к решению задачи с помощью HTB – одной из наиболее гибких и популярных дисциплин Traffic Control.

Подсистема управления трафиком Linux позволяет делать следующее:

  • Shaping. Шейпинг — ограничение трафика, задержка пакетов с целью создания желаемой скорости передачи. Может использоваться не только для «сужения» исходящего канала, но и для сглаживания бросков во время пиковых нагрузок.
  • Scheduling. Планирование – упорядочивание типов трафика в канале. Позволяет избегать задержек для критичных типов трафика (QoS).
  • Policing. Политика входящего трафика. Позволяет ограничить входящий трафик путем уничтожения превысивших лимит пакетов. Помогает бороться с DDoS.
  • Дисциплина обработки пакетов (qdisc) — очередь пакетов и закрепленный за ней алгоритм обработки.
  • Класс (class) — логический контейнер, который может содержать несколько подклассов или дисциплину.
  • Фильтр (filter) — механизм классификации трафика.

Дисциплины классов

Traffic Control не был бы столь гибким, если бы не позволял разбивать трафик на классы с помощью классовой дисциплины и набора ее подклассов. Схематически классовая дисциплина очень похожа на файловую систему, c тем лишь исключением, что ее корень или классы (каталоги) могут содержать либо дисциплину (файл), либо подклассы (подкаталоги). Одно из двух. Классовые дисциплины и классы предназначены для построения дерева выбора. Сначала весь трафик разбивается на несколько общих классов (например, трафик до Отдела-1, трафик до специализированных внутренних серверов и т.д.), а затем каждый из них разбивается на несколько подклассов (например, трафик до DNS-сервера Отдела-1), за которыми уже могут быть закреплены дисциплины.

Утилита tc

Для примера рассмотрим простейший вариант использования:

# tc qdisc add dev eth0 root tbf rate 256kbit latency 50ms burst 1540

  • qdisc add — добавляем новую дисциплину (для удаления используй del).
  • dev eth0 — указываем устройство, к которому будет привязана дисциплина.
  • root — наша дисциплина корневая (будет обрабатываться весь трафик).
  • tbf — имя дисциплины.

Формат указания скорости в утилите tc

Пример дерева дисциплин

# tc qdisc add dev eth0 root handle 1:0 prio

# tc qdisc add dev eth0 parent 1:1 handle 10:0 sfq

# tc qdisc add dev eth0 parent 1:2 handle 20:0 tbf rate 512kbit buffer 3200 limit 3000 # tc qdisc add dev eth0 parent 1:3 handle 30:0 tbf rate 256kbit buffer 6400 limit 3000

# tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dport 22 0xffff flowid 1:1

Рассмотрим подробнее механизм подключения фильтров.

  • filter add — Добавляем фильтр.
  • dev eth0 — Указываем устройство.
  • parent 1:0 — Дескриптор родителя.
  • protocol ip — Протокол, с которым будет работать фильтр.
  • prio 1 — Присваиваем классифицированному трафику приоритет 1 (наивысший).
  • u32 — Используемый классификатор.

Классовая дисциплина HTB

Еще в первый релиз системы Traffic Control была включена классовая дисциплина CBQ (Class-Based Queue), предназначенная для реализации сложных систем управления и ограничения трафика. CBQ завоевала большую популярность благодаря своей гибкости, но была очень сложна, запутана и обладала рядом ограничений (тут и необходимость заранее указывать максимальную пропускную способность канала, и неэффективный алгоритм шейпинга).

Поэтому в скором времени появилась более эффективная и простая в использовании альтернатива под названием HTB (). Классовая дисциплина HTB предназначена для разделения полосы пропускания между различными видами трафика, каждому из которых может быть предоставлена полоса гарантированной ширины. Она не обладает гибкостью CBQ, но гораздо более проста в настройке и лишена ее недостатков. Именно на HTB сегодня принято строить сложные и эффективные системы ограничения трафика.

# tc qdisc add dev eth0 root handle 1: htb default 15

# tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbps ceil 100mbps

# tc class add dev eth0 parent 1:1 classid 1:11 htb rate 30mbps ceil 100mbps

Для маркетологов выделим 20-мегабитный канал:

# tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20mbps

Менеджерам – 10 Мбит/с:

# tc class add dev eth0 parent 1:1 classid 1:13 htb rate 10mbps

Секретарям – 5 Мбит/с:

# tc class add dev eth0 parent 1:1 classid 1:14 htb rate 5mbps

И – 40 Мбит/с на всех остальных:

# tc class add dev eth0 parent 1:1 classid 1:15 htb rate 40mbps

# tc qdisc add dev eth0 parent 1:11 handle 10:0 sfq perturb 10 # tc qdisc add dev eth0 parent 1:12 handle 20:0 sfq perturb 10 # tc qdisc add dev eth0 parent 1:13 handle 30:0 sfq perturb 10 # tc qdisc add dev eth0 parent 1:14 handle 40:0 sfq perturb 10 # tc qdisc add dev eth0 parent 1:15 handle 50:0 sfq perturb 10

Теперь подключим фильтры, которые будут классифицировать трафик:

# tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.1.0/24 flowid 1:11 # tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.2.0/24 flowid 1:12 # tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.3.0/24 flowid 1:13 # tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.4.0/24 flowid 1:14

# tc class add dev eth0 parent 1:15 classid 1:150 htb rate 256kbps

А затем фильтр:

# tc filter add dev eth0 protocol ip parent 1:15 prio 1 u32 match ip src 172.16.1.32 flowid 1:150

Наиболее используемые дисциплины

  • pfifo — Простейшая очередь FIFO (первым пришел, первым ушел). Размер буфера задается в пакетах.
  • bfifo — Аналог pfifo с буфером, размер которого задается в байтах.
  • pfifo_fast — Реализует простую очередь FIFO с тремя полосами. Используется по умолчанию в качестве корневой и не принимает аргументов.
  • tbf — Token Bucket Filter (TBF). Передает поступающие пакеты со скоростью, не превышающей заданный порог. Простая и точная реализация делает ее идеальным решением для ограничения полосы пропускания всего интерфейса.
  • sfq — Stochastic Fairness Queueing (SFQ). Реализация алгоритма справедливой очередизации. Поровну разделяет полосу пропускания между несколькими соединениями. Эффективно работает только на загруженном интерфейсе.
  • red — Random Early Detection (RED). Симуляция затора. Отбрасывает пакеты случайным образом при достижении заданной полосы пропускания. Хорошо подходит для ограничения прожорливых в плане трафика приложений.
  • prio — Разделяет трафик по приоритетам (поле TOS). По умолчанию создает три класса, в первый из которых попадают пакеты с большим приоритетом, а в третий — с наименьшим.
  • cbq — Class Based Queueing (CBQ). Классовая дисциплина, предназначенная для создания сложных систем управления трафиком. Поддерживает ограничения и приоритеты.
  • htb — Hierarchical Token Bucket (HTB). Предназначена для разделения полосы пропускания между различными видами трафика на полосы заданной ширины, с возможностью заимствования. Поддерживает приоритеты.

← Ранее Роскосмос взломанДалее → Выполнение произвольного кода в Pidgin MSN

Используемые источники:

  • https://www.flane.ru/course/cisco-qos
  • https://blog.ringostat.com/ru/qos-kak-sposob-povysit-kachestvo-ip-telefonii/
  • https://xakep.ru/2009/09/09/49421/

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации