Задача: Обеспечить приоритет в туннеле для специализированного трафика между с серверами со следующими характеристиками:
Порт назначения TCP 10022.
Первое что можно отметить - QoS имеет смысл только на выделенных каналах точка-точка, т.е. там где пропускная способность гарантирована.
Технологии QoS работают только на отдачу и только в условиях контроля всех устройств стоящих на пути, что практически невозможно в случае с "обычным" интернет-каналом.
В чем заключается QoS? На выходе мы шейпим исходящий трафик к примеру до скорости 5мбит и уже в рамках этого канала отдаём наружу пакеты в соответствии с нашей политикой QoS. Какой смысл приоритезации трафика, если в недрах провайдера при перегрузке будут дропиться все пакеты подряд?
Таким образом, для эффективной работы QoS должен быть контроль трафика на всех транзитных устройствах. На практике это может быть выделенный канал 2-го уровня - в этом случае QoS мы обеспечиваем своими силами, либо выделенный канал 3-го уровня с предварительно обговоренной политикой QoS на стороне провайдера.
В данном материале мы рассмотрим первый случай.
Приоритезацию лучше всего обеспечивать на уровне внешнего интерфейса, чтобы захватить весь возможный транзитный трафик. Также на уровне внешнего интерфейса трафик шифрованный и мы не сможем манипулировать портами, и нам придётся предварительно "окрасить" целевой трафик на внутреннем интерфейсе.
!Создаём acl, который поможет нам выделить целевой трафик:
ip access-list extended nxtraffic_acl permit tcp any eq 10022 any permit tcp any any eq 10022
!
! Определяем класс целевого трафика
class-map match-any nxtraffic_cm match access-group name nxtraffic_acl
!
! Определяем Policy для окраски целевого трафика
policy-map painter_pm class nxtraffic_cm set dscp cs5
!
! Прикручиваем Policy окраски к внутреннему интерфейсу
interface GigabitEthernet0/1 service-policy input painter_pm
Проверка:
Router1#show policy-map interface gigabitEthernet 0/1 GigabitEthernet0/1 Service-policy input: painter_pm Class-map: nxtraffic_cm (match-any) 1576827654 packets, 1244294457341 bytes 5 minute offered rate 12444000 bps, drop rate 0 bps Match: access-group name nxtraffic_acl 1576827609 packets, 1244294466465 bytes 5 minute rate 12444000 bps QoS Set dscp cs5 Packets marked 1576827673 Class-map: class-default (match-any) 3906438281 packets, 3383405509027 bytes 5 minute offered rate 6863000 bps, drop rate 0 bps Match: any
Метки DSCP мы также увидим и через Netflow на внутреннем интерфейсе:
Один и тот же трафик виден дважды: до перекраски и после.
На уровне туннельного интерфейса происходит инкапсуляция и шифрование.
Для того, чтобы получившиеся пакеты ESP наследовали метки DSCP необходимо дать команду:
interface Tunnel7 qos pre-classify
В результате на внешнем интерфейсе мы увидим:
Здесь целевой трафик с меткой CS5.
Следующей задачей будет обеспечить приоритет для этого трафика.
!Задаём класс приоритетного трафика по его метке CS5/
class-map match-any nxtraffic_dscp_cm match dscp cs5
!
! Задаём приоритет
policy-map prioritizer_pm class nxtraffic_dscp_cm bandwidth percent 80 fair-queue random-detect class class-default fair-queue random-detect
!
! Задаём шейпинг всего трафика:
policy-map shaper_pm class class-default shape average 70000000 service-policy prioritizer_pm
!
! Прикручиваем политику на внешний интерфейс:
interface GigabitEthernet0/0 service-policy output shaper_pm
Что у нас получилось:
К внешнему интерфейсу прикручена политика shaper_pm на 70мбит. Она шейпит весь трафик, но приоритет задаётся политикой prioritizer_pm, таким образом создаётся "труба" на 70Мбит, в которой nxtraffic имеет гарантированную полосу на 80% от 70Мбит.
Что означает гарантированная полоса? Если nxtraffic с обычным трафиком не помещаются в трубу, обычный трафик начинает дропаться. Впрочем в случае если nxtraffic отсутствует, всю нужную полосу может занять и левый трафик, т.е. приоритет начинает работать тольков случае когда всё не помещаются в эту трубу.
Рассмотрим случай перегруженной полосы:
Router1#show policy-map interface GigabitEthernet0/0 GigabitEthernet0/0 Service-policy output: shaper_pm Class-map: class-default (match-any) 6169595300 packets, 5542286269066 bytes 5 minute offered rate 65748000 bps, drop rate 98000 bps Match: any Queueing queue limit 64 packets (queue depth/total drops/no-buffer drops) 0/2562778/0 (pkts output/bytes output) 1872065572/5538767296551 shape (average) cir 70000000, bc 280000, be 280000 target shape rate 70000000 Service-policy : prioritizer_pm Class-map: nxtraffic_dscp_cm (match-any) 1677168275 packets, 1449485267638 bytes 5 minute offered rate 14691000 bps, drop rate 0 bps Match: dscp cs5 (40) 1677168238 packets, 1449485252630 bytes 5 minute rate 14691000 bps Queueing queue limit 64 packets (queue depth/total drops/no-buffer drops/flowdrops) 0/18237/0/0 (pkts output/bytes output) 1677150043/1449461359262 bandwidth 80% (56000 kbps) Fair-queue: per-flow queue limit 16 Exp-weight-constant: 9 (1/512) Mean queue depth: 7 packets class Transmitted Random drop Tail/Flow drop Minimum Maximum Mark pkts/bytes pkts/bytes pkts/bytes thresh thresh prob 0 0/0 0/0 0/0 20 40 1/10 1 0/0 0/0 0/0 22 40 1/10 2 0/0 0/0 0/0 24 40 1/10 3 0/0 0/0 0/0 26 40 1/10 4 0/0 0/0 0/0 28 40 1/10 5 1677150045/1449461497774 16038/20959740 2199/2810306 30 40 1/10 6 0/0 0/0 0/0 32 40 1/10 7 0/0 0/0 0/0 34 40 1/10 Class-map: class-default (match-any) 4492427352 packets, 4092801046492 bytes 5 minute offered rate 51057000 bps, drop rate 97000 bps Match: any Queueing queue limit 64 packets (queue depth/total drops/no-buffer drops/flowdrops) 0/2544541/0/0 (pkts output/bytes output) 194915529/4089305937289 Fair-queue: per-flow queue limit 16 Exp-weight-constant: 9 (1/512) Mean queue depth: 11 packets class Transmitted Random drop Tail/Flow drop Minimum Maximum Mark pkts/bytes pkts/bytes pkts/bytes thresh thresh prob 0 4462746808/4082572162521 2516906/3459858656 27207/35597850 20 40 1/10 1 0/0 0/0 0/0 22 40 1/10 2 0/0 0/0 0/0 24 40 1/10 3 6213451/917481650 172/24792 25/4158 26 40 1/10 4 0/0 0/0 0/0 28 40 1/10 5 17390043/5225679218 149/45038 80/24192 30 40 1/10 6 3532549/590652958 1/134 1/166 32 40 1/10 7 0/0 0/0 0/0 34 40 1/10
О работе QoS можно судить по количеству дропов. В идеале дропы должны быть лишь у трафика класса class-default.
Добавить комментарий