В случае проблем с IP-телефонией для тестирования работы политик QoS могут использоваться следующие команды.
1. Команда вывода информации о политике шейпинга трафика на интерфейсе:
show policy-map interface output
Результат вывода команды:
router#show policy-map interface output
Ethernet1
Service-policy output: to_division
Class-map: limit2M (match-all)
1754642 packets, 833828906 bytes
5 minute offered rate 46000 bps, drop rate 0 bps
Match: access-group 110
Traffic Shaping
Target/Average Byte Sustain Excess Interval Increment
Rate Limit bits/int bits/int (ms) (bytes)
4000000/2000000 12500 50000 50000 25 12500
Adapt Queue Packets Bytes Packets Bytes Shaping
Active Depth Delayed Delayed Active
- 0 1754643 837745873 37372 40724971 no
Service-policy : voip-p
Class-map: voip (match-all)
221281 packets, 16268602 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: access-group 160
Queueing
Strict Priority
Output Queue: Conversation 72
Bandwidth 50 (%)
Bandwidth 1000 (kbps) Burst 25000 (Bytes)
(pkts matched/bytes matched) 414/30474
(total drops/bytes drops) 0/0
QoS Set
precedence 5
Packets marked 221281
Class-map: class-default (match-any)
1533360 packets, 817558790 bytes
5 minute offered rate 46000 bps, drop rate 0 bps
Match: any
Queueing
Flow Based Fair Queueing
Maximum Number of Hashed Queues 64
(total queued/total drops/no-buffer drops) 0/0/0
Class-map: class-default (match-any)
122958 packets, 10165654 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Число в выделенной жирным шрифтом строке (Packets marked ...), обозначающее количество ушедших пакетов с маркировкой (в данном примере precedence 5) должно увеличиваться при каждой новой команде show policy-map interface output.
2. Отправка маркированного ping.
router#ping
Protocol [ip]:
Target IP address: aaa.bbb.ccc.ddd
Repeat count [5]: 1000
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface:
Type of service [0]: 0x64
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to aaa.bbb.ccc.ddd, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (1000/1000), round-trip min/avg/max = 1/6/104 ms
router#
В ответ на запрос Type of Service вводится шестнадцатеричное (в указанном примере использовалось число 0x64, где символ ‘x’ указывал на шестнадцатеричный формат числа) либо десятичное значение для ToS-байта целиком (для всех 8-ми бит). Например, для передачи трафика IP-телефонии с повышенным приоритетом у нас используется ToS-байт 0xA0 (что соответствует IP-precendence уровня 5 или, в терминах DSCP, классу обслуживанию 5 с приоритетом удаления 0). Указанный байт появляется один-в-один в ToS-байте пакета.
Команда ping в операционных системах w2k, XP, windows 2003 может тоже отправлять трафик с установленным приоритетом (опция -v TOS).
[Windows]
В операционных системах Windows (начиная с Windows 2000) маркированный ping можно отправить следующей командой:
C:\Users\admin>ping -v 0xA0 mail.ru
Обмен пакетами с mail.ru [217.69.139.200] с 32 байтами данных:
Ответ от 217.69.139.200: число байт=32 время=53мс TTL=50
Ответ от 217.69.139.200: число байт=32 время=53мс TTL=50
Ответ от 217.69.139.200: число байт=32 время=69мс TTL=50
Ответ от 217.69.139.200: число байт=32 время=69мс TTL=50
Статистика Ping для 217.69.139.200:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 53мсек, Максимальное = 69 мсек, Среднее = 61 мсек
[Linux, FreeBSD]
Пример отправки маркированного ping:
[root@localhost ~]# ping -Q 0xA0 10.50.11.112
PING 10.50.11.112 (10.50.11.112) 56(84) bytes of data.
64 bytes from 10.50.11.112: icmp_seq=0 ttl=255 time=1.06 ms
64 bytes from 10.50.11.112: icmp_seq=1 ttl=255 time=0.815 ms
64 bytes from 10.50.11.112: icmp_seq=2 ttl=255 time=0.826 ms
64 bytes from 10.50.11.112: icmp_seq=3 ttl=255 time=0.811 ms
64 bytes from 10.50.11.112: icmp_seq=4 ttl=255 time=0.836 ms
--- 10.50.11.112 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.811/0.871/1.069/0.102 ms, pipe 2
[Анализ наличия маркированых пакетов в трафике]
Процесс по шагам:
1. Настраиваем access-list для фильтрации маркированного трафика:
ip access-list extended deb-l
permit ip any any precedence critical log
permit ip any any precedence flash log
permit ip any any
Здесь precedence critical означает поле приоритета ToS-байта равное 5, а precedence flash - равное 3 (см. таблицу имен кодов приоритета в описании байта ToS). Вместо имен приоритетов можно использовать их номера, например precedence critical заменяется на precedence 5.
2. Привязываем наш access-list к нужному интерфейсу (в данном примере внешний интерфейс маршрутизатора).
interface Ethernet1
ip address a.b.10.45 255.255.255.252
ip access-group deb-l in
3. Сброс статистики:
4. Просмотр статистики (если есть пакеты с повышенным приоритетом, то в логе будут появляться записи access-list deb-l):
Иногда просмотру статистики в консоли мешает настроенный на сервер лог - все сообщения пишутся на сервер, а в ответ на команду show logging в консоли самих сообщений access-листа deb-l не видно. Чтобы решить проблему, нужно поискать в конфигурации команду вида logging d.e.100.77 (d.e.100.77 - IP сервера syslog, часто Cisco Works), и временно запретить эту команду (no logging d.e.100.77), а после тестирования трафика вернуть все назад.
5. Удобно также пользоваться командой #show access-lists deb-l, будет выведено что-то наподобие такого:
#show access-lists deb-l
Extended IP access list deb-l
10 permit ip a.b.0.0 0.0.255.255 any precedence critical log (113 matches)
20 permit ip any any (4930402 matches)
Здесь в скобках видна статистика срабатывания фильтра - в скобках указано, сколько произошло совпадений с каждым условием фильтра. Если повторять ввод этой команды несколько раз, то сразу видно, работает access-list, или нет (работает ли привязка к интерфейсу, например, и активен ли канал) - в скобках строки permit ip any any должно постоянно меняться количество срабатываний. Можно также контролировать срабатывание фильтра на отслеживаемый трафик (permit ip a.b.0.0 0.0.255.255 any precedence critical log), но это уже бывает удобнее делать командой show logging.
См. также подобный пример в статье [1].
Внимание! Нельзя удалять во время работы маршрутизатора уже привязанный к интерфейсу access-list (это может понадобиться, например, для вставки в него строк), иначе возможная полная блокировка работы маршрутизатора (потребуется перезагрузка). Удалять access-list (no ip access-list extended deb-l) можно только после его отвязки от интерфейса:
interface Ethernet1
no ip access-group deb-l in
Для упрощения проверки канала на прохождение маркированного трафика есть удобная программа ping5b [2] (в файле readme.txt архива есть описание работы с программой).
[Ссылки]
1. Как отследить, проходит или нет через циску нужный трафик. 2. ping5b.zip - программа пинга, документация. |