Настройка qos на маршрутизаторе cisco

Обновлено: 04.07.2024

Сегодня 1 апреля, день смеха! И сегодня мы будем шутить над маршрутизатором. В шутить мы будем следующим образом - заставим наш роутер управлять ВХОДЯЩИМ трафиком и приоритезировать его по нашему велению и хотению. В этом нам поможет QoS. А как его настроить в домашних условиях - расскажу вам я.

Для начала классифицируем наш входящий траффик и распределим его по очередям

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

Теперь создадим политику, которая будет управлять исходящим трафиком, путем тегирования, распределяя его по очереядям, и ограничивая пропускную способность низко-приоритетного трафика.

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

В моем случае интернет приходит от провайдера тегом, по этому создан сабинтерфейс в соответсвующем vlan. Применить политику можно только на физический интерфейс, по этому применяю на Fa0

На внутренний интерфейс, который смотрит в локальную сеть навешиваем политику тегирования

Назначаем локальную политику для локального трафика

Создадим отдельную карту, в которой определим очереди тегированного траффика

Здесь я приведу набор списков доступа для примера.

В чем хитрость, спросит пытливый читатель, а я отвечу. Хитрость в том, что таким хитрым образом мы обеспечили приоритезацию трафика внутри самого маршрутизатора, между интерфейсами Fa0 и Fa1. Так как мы не можем управлять входящим трфффиком напрямую, то мы обеспечили данный функционал, упраляя исходящим траффиком с интерфейса Fa0 в сторону Fa1.

Со стороны внутреннего интерфейса Fa1 траффик считается исходящим как в сторону Fa0, та к и в сторону нашей локальной сети. А локальная политика позволяет протегировать траффик прошедший через NAT. Таким образом мы обеспечили полноценную приоритезацию входящего трафика.

С данной настройкой я теперь могу качать файлы на максимальной скорости, не переживая что начнет разваливаться IPTV, заикаться телефония или подлагивать сетевые игры.

PS: между прочим хочу заменить, что после применения QoS на роутере мой Wi-Fi начал разогналя до положенных ему по стандарту скоростей - около 100 мегабит. До этого выше 20-30 не забирался. В качестве точки доступа я использую D-Link DIR-615-R2

По умолчанию, в коммутаторах Cisco Catalyst контроль качества обслуживания отключен. При отключенном QoS , все кадры и пакеты передаются через коммутатор без изменений. Например, если кадр класса обслуживания 5 и пакетом внутри кадра со значением DSCP, равным EF передается коммутатору, метки класса обслуживания CoS и DSCP не изменяются. Данные отправляются от коммутатора с теми же значениями класса обслуживания и DSCP, что и ранее. Весь трафик, включая голосовой, доставляется с самым высоким приоритетом.

1. Функции средств контроля качества (QoS) обслуживания коммутаторов Cisco Catalyst

После включения режима контроля качества (QoS) обслуживания для коммутатора, некоторые функции контроля качества входной и выходной сети включаются по умолчанию. На этой диаграмме показано высокоуровневое представление архитектуры системы обеспечения качества обслуживания коммутатора:


2. Функции обеспечения качества обслуживания входящих данных ( Ingress QoS )

В этом разделе описаны различные способы настройки средств качества обслуживания. В этом разделе рассматриваются следующие темы:

2.1. Конфигурации QoS по умолчанию

Вот как коммутатор по умолчанию обрабатывает кадры после включения QoS :


2.2. Классификация и маркировка

В коммутаторах Cisco Catalyst классификация и маркирование уровней качества обслуживания выполняется иначе, чем в маршрутизаторах. В маршрутизаторах Cisco можно классифицировать пакеты при помощи:

В коммутаторе Cisco Catalyst кадры можно классифицировать:

Настройка по входящему значению CoS и DSCP достигается тремя различными способами:

Можно использовать любой из этих методов , однако вместе использовать их нельзя .

Например , выполнена настройка при помощи команды mls qos trust cos, для конкретного порта .

При настройке порта с использованием команды service-policy input <policy-map-name> происходит автоматическое удаление команды mls qos trust cos, .

2.2.1. Классификация и маркирование на базе портов

Иногда возникает недопонимание как осуществляется классификация и маркировка трафика для коммутаторов Cisco Catalyst, из-за того, что класс обслуживания CoS или значения DSCP (пакетов внутри кадров) перемаркируются с использованием таблиц трансформаций. Использование этих таблиц в маршрутизаторах Cisco недоступно. Функции, связанные с использованием этих таблиц, доступны только в коммутаторах Cisco Catalyst. Здесь я объясняю функции, которые предполагают использование этих таблиц.


В этом разделе приводятся различные сценарии с примерами.

Если порт представляет собой порт доступа ( access port ) или порт L 3, необходимо настроить команду mls qos trust dscp .

Нельзя использовать команду mls qos trust cos, поскольку кадр от порта доступа или порта L 3 не содержит тегов dot1q. Биты класса обслуживания CoS присутствуют только в кадрах dot1q или ISL.

Если используемый порт является транковым, можно настроить:

Таблица сопоставлений dscp-cos используется для вычисления значения класса обслуживания CoS , если порт настроен на доверие DSCP. Таким же образом, таблица сопоставлений cos- dscp используется для вычисления значения DCSP, если порт настроен на доверие классу обслуживания CoS .

!--- Cisco IP Phone использует IEEE 802.1Q фреймы для трафика голосового VLAN.

Если порт является транковым и настроен при помощи команды mls qos trust cos, то фреймы NATIVE VLAN будут иметь нулевые значения класса обслуживания (CoS) и DSCP. Поскольку фреймы NATIVE VLAN не обладают тегами, а теги присваиваются только после попадания кадра в коммутатор, коммутатор задает значение CoS по умолчанию равным 0, а в таблице сопоставления CoS-DSCP значение DSCP также устанавливается равным 0.

Примечание: Значение DSCP пакета, получаемого в NATIVE VLAN, будет установлено равным 0.

Можно также настроить порт коммутатора на изменение нулевого значения класса обслуживания по умолчанию для нетегированных кадров на любое другое в диапазоне от 0 до 7 при помощи команды mls qos cos <0-7> .

Эта команда не изменяет значений CoS для кадров, отмеченных тегами.

Например, порт GigabitEthernet1/0/12 настроен для как access port в VLAN 10 и передачи голосового трафика в голосовом VLAN 20.

По умолчанию компьютер не присваивает тегов отправляемым данным. Неотмеченный тегами трафик от PC , подключенного к телефону Cisco IP Phone, проходит через телефон без изменений, вне зависимости от состояния доверия порта доступа телефона на коммутаторе.

Телефон передает маркированные кадры dot1q с идентификатором голосовой VLAN 20(VID 20). Поэтому, если порт настроен при помощи команды mls qos trust cos, он доверяет значениям класса обслуживания кадров, отправляемых с телефона (кадры, отмеченные тегами VID 20), и обнуляет значения класса обслуживания кадров, передаваемых от ПК (кадры, не отмеченные тегами). Затем таблица сопоставлений CoS-DSCP обнуляет значение DSCP для пакета внутри кадра, поскольку в таблице сопоставлений значению CoS "0" соответствует значение DSCP "0".

Исходные данные - имеем роутер C831, во внутренней сети которого имеются устройства, генерирующие трафик IP-телефонии. Трафик телефонии должен получать приоритет перед всем остальным трафиком.

Для этого на выходном интерфейсе маршрутизатора этот трафик при отправке наружу получает класс обслуживания 5. Скорость на выходном (внешнем) интерфейсе - 2 мбит/сек.

Пример 1.
.
class-map match-all cmLimit2m
match access-group 120
class-map match-all cmVoip
match access-group 160
!
!
policy-map pmVoip
class cmVoip
priority percent 50
set ip precedence 5
class class-default
fair-queue
policy-map pmLimit2m
class cmLimit2m
shape peak 2000000
service-policy pmVoip
.
interface Ethernet1
description External Interface
ip address a.b.0.128 255.255.255.0
service-policy output pmLimit2m
duplex auto
speed auto
.
access-list 120 remark Outside traffic from this router
access-list 120 permit ip c.d.96.0 0.0.15.255 10.0.0.0 0.255.255.255
access-list 160 remark -----------------------------
access-list 160 remark ----Nortel_VoIP_traffic------
access-list 160 remark -----------------------------
access-list 160 permit tcp any any range 1720 1721
access-list 160 permit udp any any eq 1718
access-list 160 permit udp any any eq 1719
access-list 160 permit udp any any eq 4100
access-list 160 permit udp any any eq 5100
access-list 160 permit udp any any eq 7300
access-list 160 permit udp any any eq 5105
access-list 160 permit udp any any range 5200 5262
access-list 160 permit udp any any eq 5000
access-list 160 permit udp any any eq 15000
access-list 160 permit udp any any range 17300 17363
access-list 160 permit udp any any range 2001 2002
access-list 160 permit udp any any range 2300 2363
access-list 160 permit udp any range 5000 5201 any
access-list 160 permit udp any any range 16384 32768
access-list 160 remark -----------------------------
.

Все, что тут указано, проще рассмотреть по шагам на диаграмме.


1. Трафик, который имеет высокий приоритет, фильтруется access-list 160 (блок 1). Трафик, который уходит наружу (в его состав как часть входит высокоприоритетный трафик), определен access-list 120 в форме source-net source-mask destination-net destination-mask (блок 2).
2. Далее трафик, соответствующий access-листам, группируется в таблицы классов - access-list 160 попадает в class-map с именем cmVoip (блок 3), а access-list 120 попадает в class-map с именем cmLimit2m (блок 4). Ключевое слово match-all означает, что удовлетворение классу будет срабатывать на записи в классе по логической операции AND (то есть при условии,
что трафик удовлетворяет одновременно всем access-листам, перечисленным в определении class-map). В данном случае слово match-all не несет никакой смысловой нагрузки (оно нужно только для требований синтаксиса), поскольку в определении класса только одна запись со ссылкой на access-list. В данном примере можно с равным успехом применить ключевое слово match-any, что означает соответствие классу, если трафик удовлетворяет хотя бы одному из условий списка в определении class-map.
3. Далее создаются правила для управления трафиком - policy-map. В нашем случае создаются 2 правила - pmVoip и pmLimit2m , причем правило pmVoip используется правилом pmLimit2m. Рассмотрим, что делает каждое правило.
- pmVoip (блок 5)
policy-map pmVoip
class cmVoip
priority percent 50
set ip precedence 5
class class-default
fair-queue
Здесь указано, что под трафик, принадлежащий классу cmVoip, будет гарантированно выделяться 50% от доступной полосы пропускания (priority percent 50), и он будет маркироваться классом обслуживания 5 (устанавливаются биты 7 и 5 байта ToS, бит 6 сбрасывается. Обычно байт ToS при этом равен 0xA0. Это означает наивысший приоритет, используемый для речевого трафика). Вся оставшаяся часть полосы пропускания будет предоставлена прочему неклассифицированному трафику (который обозначается как class class-default) с равномерным делением полосы между всеми сервисами (fair-queue).
- pmLimit2m (блок 6)
policy-map pmLimit2m
class cmLimit2m
shape peak 2000000
service-policy pmVoip
Здесь указано, что к трафику, принадлежащему классу cmLimit2m, применяется шейпинг (ограничение полосы пропускания) на уровне 2000000 бит/сек по методу peak (есть ещё метод average). Кроме того, на трафик накладывается правило pmVoip.
4. Далее правило запускается на внешнем интерфейсе, или "привязывается" к нему (блок 7).
interface Ethernet1
service-policy output pmLimit2M

Пример 2.
.
class-map match-all cmVoip
match access-group 160
!
policy-map pmLimit
class cmVoip
shape peak 2000000
set ip precedence 5
class class-default
shape peak 1500000
.
interface Ethernet1
ip address a.b.0.128 255.255.255.0
service-policy output pmLimit
duplex auto
speed auto
.
access-list 160 remark -----------------------------
access-list 160 remark ----Nortel_VoIP_traffic------
access-list 160 permit tcp any any range 1720 1721
access-list 160 permit udp any any eq 1718
access-list 160 permit udp any any eq 1719
access-list 160 permit udp any any eq 4100
access-list 160 permit udp any any eq 5100
access-list 160 permit udp any any eq 7300
access-list 160 permit udp any any eq 5105
access-list 160 permit udp any any range 5200 5262
access-list 160 permit udp any any eq 5000
access-list 160 permit udp any any eq 15000
access-list 160 permit udp any any range 17300 17363
access-list 160 permit udp any any range 2001 2002
access-list 160 permit udp any any range 2300 2363
access-list 160 permit udp any range 5000 5201 any
access-list 160 permit udp any any range 16384 32768
.

Здесь диаграмма существенно проще:


1. Как и в прошлом примере, трафик, который имеет приоритет, фильтруется access-list 160 . Трафик, который уходит из внутренней сети наружу и ранее фильтруемый access-list 120, теперь рассматривается в контексте class-default, и для него никакого фильтра нет - access-list 120 не нужен.
2. Как и в первом примере, создается класс трафика cmVoip . Класс cmLimit2m теперь не нужен.
class-map match-all cmVoip
match access-group 160
3. Создается правило policy-map pmLimit . В нем указывается, что для класса трафика cmVoip доступна пиковая полоса 2000000 бит/сек, и этот трафик на выходе маркируется классом 5 (как и в предыдущем примере). Всему остальному трафику (class class-default) гарантируется не более 1500000 бит/сек. Таким образом, для cmVoip неявным образом всегда гарантируется 2000000 - 1500000 = 500000 бит/сек.
policy-map pmLimit
class cmVoip
shape peak 2000000
set ip precedence 5
class class-default
shape peak 1500000
4. Правило запускается на внешнем интерфейсе.
interface Ethernet1
service-policy output pmLimit

Резюме. Для конфигурирования QoS используются 3 основных шага:
- использование команды class-map для определения одного или более классов трафика с помощью критериев, по которым этот трафик классифицируется.
- использование команды policy-map для определения одной или более политик QoS (например, шейпинг или маркировка трафика). Эти политики связываются с трафиком, выделенным с class-map.
- использование команды service-policy для привязки policy-map к сетевому интерфейсу.

Поиск.

среда, 19 декабря 2012 г.

Настройка мониторинга и QoS на cisco ASA

Доброго времени суток.


  • 1. Chief_network (192.168.1.0/24), где находятся рабочие станции руководства. Для проверки используется Host_1 с IP-адресом 192.168.1.10;
  • 2. Office_network (192.168.2.0/24), где находятся рабочие станции пользователей. Для проверки используется Host_2 с IP-адресом 192.168.2.10;
  • 3. Manage_network (10.10.10.0/24), где находится сервер сбора статистики (IP-адрес 10.10.10.10.);
  • 4. Промежуточная сеть Net_inside (20.20.20.0/30) предназначенная для соединения роутера и устройства безопасности. Данная сеть подключена к cisco ASA к интерфейсу inside.

Теперь перейдем на cisco ASA:

Следующие настройки обычно уже присутствуют на реальном оборудовании. Это настройки для инспектирования различного вида трафика. Если их нет, то некоторый трафик может не проходить. Так что советую вам их добавить, если у вас их нет:

Основные сетевые настройки закончили. Давайте проверимся. Зайдем на Host_1 и Host_2 и посмотрим наличие доступа в интернет.
Host_1:





Доступ в интернет есть. Посмотрим, для верности, трансляцию адресов на cisco ASA:


Как видно, трансляция отлично работает.
На данный момент мы настроили сетевую доступность и обеспечили выход в интернет всем заинтересованным лицам, но сейчас каждый ходит куда хочет и занимает максимально доступную полосу канала (ну или использует скорость канала по полной :)).
Для организации контроля над всем этим делом, давайте установим и настроим сервер мониторинга, проанализируем, кто куда ходит, и затем настроим приоритеты и разграничение скорости.
Для этого, переходим на сервер SRV_NetFlowAnalyzer (установлена win 2003 со службой IIS) и установим программу NetFlow Analyzer (скачать можно вот здесь). Запускаем скачанный файл. В приветственном окне нажимаем "Next". В следующем соглашаемся с лицензией ("Yes"). Затем выбираем папку, куда будет установлена программа (по умолчанию C:\Program Files\ManageEngine\NetFlow). Затем, вы должны увидеть следующее окно:


Здесь указываем порт для доступа через web-интерфейс (1) и порт, на который NetFlow Analyzer будет принимать пакеты NetFlow (2). Можно оставить все по умолчанию. Следует так же проверить, чтобы порт для web (8080) работал и "слушался" установленной службой IIS. Нажимаем "Next":


Здесь указываем snmp community (1) (по умолчанию "public") и порт (2). Нажимаем "Next":


Здесь отмечаем пункт, чтобы NetFlow Analyzer установился в качестве сервиса windows. В дальнейшем, за счет этого, он будет запускаться при старте системы автоматически. Нажимаем "Next":


В этом окне указываем, какую папку создаст для себя программа. Нажимаем "Next":



В данном окне нам предлагают проверить параметры установки. Если все верно, нажимаем "Next". Начнется процесс установки программы. После окончания установки вы должны увидеть следующее окно:



Стандартный логин и пароль: admin/admin. Вводим его и заходим в консоль управления:


Это главное окно программы. Как вы можете заметить, оно пустое. Проверьте в нем лишь порт для NetFlow, который мы указывали ранее, чтобы он совпадал. Можете полазить там по вкладкам, посмотреть, все они будут пустыми. Вернемся на наши сетевые устройства и настроим на них NetFlow.
Чем мне еще понравился данный продукт, так это Help-ом. Там есть примеры настройки NetFlow на оборудовании. Но вот как раз настройку NetFlow на cisco ASA я не нашел :).
Так как у нас на данный момент есть возможность мониторинга более 2-х интерфейсов со всем функционалом, то грех этим не воспользоваться. Поэтому настроим NetFlow не только на cisco ASA, но еще и на роутере (cisco 3640). С него и начнем:

Теперь перейдем на cisco ASA и настроим NetFlow там. Настройки будут отличаться от роутера. Кроме основных настроек, нам необходимо будет создать специальный класс, специальный список, который будет отлавливать необходимый нам трафик, создать затем политику и применить ее глобально на устройстве. Но, обо всем по порядку:



Видимые collector-у устройства будут отображаться слева (если их нет, подождите немного, необходимо, чтобы прошел какой-нибудь трафик через эти устройства, для этого, попускайте ping-и например). Нажимаем на кнопку переноса и переносим их в правый список. После этого нажимаем "Save". Как результат, вы должны увидеть в закладке "Device Groups" созданную группу с двумя устройствами в ней.
Вернувшись на главную страницу ("Dashboards") вы увидите приблизительно вот это:


Уже красиво :). Уже можно посмотреть, какой трафик у нас бегает через устройства. Для более удобного просмотра статистики по трафику я предлагаю создать определенные правила (вид отчетов). Для этого, переходим на вкладку "Reports" и слева около надписи "Available Reports" нажимаем "Add". Откроется вот такое окно:


Здесь создаем первый "Report". Указываем ему имя (1), затем выбираем устройство из списка (2) (я выбрал cisco ASA 10.10.10.1). Далее из левой части списка выбираем виды отчетов и переносим их в правую часть (3). Для простоты я выбрал все. Далее выбираем период, за который мы хотим получать отчет (4). Теперь, прежде чем добавить отчет, необходимо указать, какой тип трафика, какие протоколы и так далее ему показывать. Для этого необходимо создать специальный фильтр. Нажимаем на "New Filter" (5). Откроется еще одно окно:


Здесь, так же задаем имя фильтра, указываем тип "Include". В пункте "Application" из левого списка выбираем интересующие нас виды приложений (http и https) и переносим их в правый список. Теперь, в этом же окне переходим на пункт "Source":


Здесь указываем сеть, для которой мы создаем фильтр. В данном случае указываем Chief_Network (192.168.1.0/24). Не закрывая окно, переходим к пункту "Protocol":


Снова из списка справа выбираем нужные нам протоколы (IP, TCP, UDP) и переносим их в правую часть. Все, нажимаем на "Add".
Фильтр должен появиться в нижнем списке. Отмечаем его и нажимаем "Add" уже в окне добавления отчета. Точно такие же действия проделайте для создания отчета по сети Office_Network. В итоге, у вас в списке должны присутствовать два отчета.
Теперь, если еще ничего не отображается, необходимо полазит в интернете с конечных хостов, чтобы наработать какой-нибудь трафик и собрать статистику. Если после этого тоже ничего не отображается, то перегрузите сервер с установленным NetFlow Analyzer.
Для просмотра статистики и отчетов снова возвращаемся во вкладку "Reports", выбираем любой отчет (я выбрал "Chief") и смотрим:


На закладке "Application" отображается общая информация по объему трафика по каждому виду приложения, отмеченного в фильтре. Переходим на вкладку "Source":


Здесь мы видим список источников трафика (ну у меня он один, а в реальной жизни тут будут все хосты, которые находятся в заданной сети). Информация тут представлена по общему объему трафика на каждый хост. Переходим на вкладку "Destination":


Здесь показывается статистика по самым популярным посещаемым узлам (по объему трафика). Переходим на закладку "Conversations":


Здесь нам показана подробная статистика о соединениях (кто с кем, объем трафика, порты и так далее).
Я привел лишь базовую настройку этой программы, но, если у вас есть желание, то можете проиграться побольше. Ну а мы идем дальше.
Вторая задача, после сбора статистики - это настройка распределения пропускной способности (скорости) канала (Quality of Service). Если все обобщить, то это просто обработка пакетов согласно настроенным очередям. Есть три основных способа использования QoS на cisco ASA:
1. Traffic Prioritization. Принцип состоит в том, что некоторому типу трафика (обычно Voice) присваивается приоритет и после этого, он "обслуживается" в первую очередь, по сравнению с другим типом трафика. В cisco ASA можно задать лишь два приоритета - приоритетный (Priority QoS) и не приоритетный (Nonpriority QoS). Применяется этот вид QoS только на исходящий (egress) трафик. Настроить его можно с помощью следующих команд:

Так как у нас нет Voice, то настраивать это мы не будем.
2. Traffic Shaping. Принцип действия основан на том, что настраивается "потолок" полосы пропускания (скорости), затем назначается средний размер пакета (burst size) который будет отсылаться через определенный промежуток времени. Другими словами, если у нас, например, полоса пропускания для shaping-а 2 Mbps, а размер burst size 16 Kbps и интервал времени 8 msec, то получается что каждые 8 msec ASA будет отсылать 16 Kbps информации.
Как всегда есть свои ограничения. 1) Если интервал времени задать большим, то устройство передаст информацию быстрее и будет ждать следующего момента, т.е. чувствительные к задержкам сервисы (VoIP) могут работать плохо. 2) Данный тип QoS применим только для трафика, который входит в class-default, создаваемый cisco ASA по умолчанию, т.е. ко всему трафику,. Другими словами, вы не можете создать специальный класс для shaping-а, но можете создать polucy-map. 3) Нельзя применить Traffic-Shaping глобально на устройстве.
Это нам так же не подойдет, так как мы хотим разграничить полосу пропускания (скорости) конкретным сетям (хостам). Но, если кто то хочет его настроить, то вот настройки:

  • - нельзя сначала сделать трафику Priority, а затем еще и Shaping;
  • - нельзя сначала сделать трафику Policing, а затем еще и Shaping;
  • - нельзя сначала сделать трафику Shaping, а затем еще и Policing.



Как видно, ограничений нет. Ну что же, давайте ограничим скорость для Office_Network до 512 Кбит/с, думаю им хватит :). "Шефу" оставим полный канал. Для этого переходим на cisco ASA:

Конечно, я здесь привел пример "широкого" списка доступа, но он может быть организован намного строже. А именно для конкретного хоста, для конкретного порта и так .далее. Но это уже, если надо, вы попробуйте сами.
Теперь вернемся на Host_2 из сети 192.168.2.0 и проверим скорость сейчас:


Ну что же, ограничения вступили в силу :). Проверим, не урезали ли мы скорость для начальства. Переходим на Host_1:


Как видим ограничений нет (не смотрите что поменялась скорость передачи, просто видимо на момент проверки канал был немного загружен :)).
Работу политики можно так же посмотреть и на самом устройстве cisco ASA:


    где:
  • 1 - созданная политика;
  • 2 - привязанный к политике класс.

По всем возникающим вопросам обращайтесь ко мне через комментарии или лично. Координаты можно найти вот тут.

Читайте также: