Иерархический QoS позволяет настраивать параметры QoS на нескольких уровнях политик, обеспечивая при этом высокую степень детализации критериев при управлении трафиком.
Схема:
Вводные:
Между маршрутизатором ESR и устройством ISP настроена связность через интерфейс gigabitethernet 1/0/1. Для разделения трафика из разных сегментов используется две VLAN - 100 и 200, которые терминируются на ESR с помощью sub-интерфейсов. В VLAN 100 выполняется терминация DMVPN-туннеля.
Задача:
Ограничить суммарную пропускную способность интерфейса gigabitethernet 1/0/1 в сторону оператора - 10 000 кбит/сек. Для VLAN 200 необходимо ограничить пропускную способность до 5 000 кбит/сек, а для VLAN 100 выделить оставшуюся часть полосы. Для DMVPN-туннеля необходимо реализовать политику QoS, которая приоритизирует трафик протокола OSPF с гарантированной полосой пропускания 100 кбит/с. Трафик между хостами обрабатывается в очереди Strict Priority (LLQ). Остальные классы трафика обслуживаются в порядке поступления пакетов (FIFO).
Решение:
Первоначально опишем трафик, к которому необходимо применить политики QoS. Необходимо выполнить классификацию трафика, относящегося к VLAN100 и 200, хост-устройств и протокола OSPF:
ip access-list extended VLAN100
rule 1
action permit
match VLAN 100
enable
exit
exit
ip access-list extended VLAN200
rule 1
action permit
match VLAN 200
enable
exit
exit
ip access-list extended host
rule 1
action permit
match destination-address 192.0.2.0 255.255.255.0
enable
exit
exit
ip access-list extended ospf
rule 1
action permit
match protocol ospf
enable
exit
exit
На каждый лист создаем сlass-map. Также необходимо создать класс для протокола NHRP, так как если будет выполняться только классификация трафика OSPF, то пакеты NHRP, необходимые для работы DMVPN, будут конкурировать за полосу, в результате чего может произойти как обрыв OSPF-связности, так и обрыв DMVPN-канала в целом. Для осуществления вложенности необходим отдельный класс - control.
class-map CM200 match access-group VLAN200 exit class-map CV100 match access-group VLAN100 exit class-map host match access-group host exit class-map nhrp match protocol nhrp exit class-map ospf match access-group ospf exit class-map control exit
Сама вложенная политика содержит классы "ospf" и "nhrp".
policy-map control class nhrp exit class ospf exit exit
Первая политика - gi1 - ограничивает основной канал на физическом интерфейсе gigabitethernet 1/0/1. Общая скорость ограничена до 10 000 кбит/с по условию, а для класса, который принадлежит VLAN 200, действует ограничение в 50% - 5 000 кбит/с. Для VLAN 100 укажем так же остаток полосы в процентном соотношении - 50%:
policy-map gi1
shape average 10000
class CV100
shape average percent 50
exit
class CM200
shape average percent 50
exit
exit
Вторая политика - gre, содержит конструкцию class control для ограничения в 100 кбит/с по сразу двум классам, дабы ограничение осуществляло шейпинг трафика не только по OSPF. Второй отдельный класс в данной политике для приоритезации трафика между хостами. Остальной трафик попадет в класс "default".
policy-map gre
class control
service-policy control
shape average percent 10
exit
class host
priority level 8
exit
exit
Применяем политику на родительский интерфейс gigabitethernet 1/0/1, ограничения при этом будут действовать в том числе и на саб-интерфейсах для VLAN 100/200 (gigabitethernet1 /0/1.100 / gigabitethernet 1/0/1.200)
interface gigabitethernet 1/0/1 qos enable service-policy output gi1 exit tunnel gre 1 qos enable service-policy output gre
Ниже приведены команды для просмотра статистики и результаты их выполнения для рассматриваемой схемы после генерации тестового трафика:
esr# show qos policy statistics gre gre 1 Policy-map: gre Parent policy: root Parent class: root Class-map: control 10 packets, 9400 bytes, 0 drops 8 second shaped rate: 1574 bps, 2 pps Match: dscp 0 0 packets, 0 bytes 8 second rate: 0 bps, 0 pps Class-map: host 100 packets, 14066482 bytes, 0 drops 8 second shaped rate: 2470 bps, 15 pps Match: access-group host 100 packets, 14066482 bytes 8 second rate: 0 bps, 0 pps Class-map: class-default 73 packets, 7114 bytes, 0 drops 8 second shaped rate: 120 bps, 0 pps Policy-map: control Parent policy: gre Parent class: control Class-map: nhrp 0 packets, 0 bytes, 0 drops 8 second shaped rate: 0 bps, 0 pps Match: protocol NHRP 0 packets, 0 bytes 8 second rate: 0 bps, 0 pps Class-map: ospf 0 packets, 0 bytes, 0 drops 8 second shaped rate: 0 bps, 0 pps Match: access-group ospf 0 packets, 0 bytes 8 second rate: 0 bps, 0 pps Class-map: class-default 0 packets, 0 bytes, 0 drops 8 second shaped rate: 0 bps, 0 pps esr# show qos policy statistics gigabitethernet gigabitethernet 1/0/1 Policy-map: gi1 Parent policy: root Parent class: root 19205 packets, 15259128 bytes, 0 drops 8 second shaped rate: 48 bps, 0 pps Class-map: CM200 9602 packets, 7629564 bytes, 0 drops 8 second shaped rate: 48 bps, 0 pps Match: access-group VLAN200 4801 packets, 3814782 bytes 8 second rate: 48 bps, 0 pps Class-map: class-default 9602 packets, 7629564 bytes, 0 drops 8 second shaped rate: 48 bps, 0 pps
