Поиск по этому блогу

04.02.2010

Peak или не peak

О работе shape peak и police'ров с PIR почитать тут. Сделал точно так же и посмотрел как работает.
ip access-list extended mg
permit ip host 10.255.255.210 host 10.0.0.125
permit ip host 10.0.0.125 host 10.255.255.210

class-map match-all mg
match access-group name mg
policy-map speedtest.out
class mg
shape peak 64000 6400 6400
policy-map speedtest.in
class mg
police rate 64000 peak-rate 128000
conform-action set-prec-transmit 1
exceed-action set-prec-transmit 0
violate-action drop

interface FastEthernet0/0.100
encapsulation dot1Q 100
ip address 10.0.0.253 255.255.255.0
service-policy input speedtest.in
service-policy output speedtest.out

Тестируется shape iperf'ом. На 10.0.0.125 запущен сервер iperf -s -u, а с клиента генерируется трафик iperf -c 10.0.0.125 -u -bXXXk. Для начала проверка полосы, не превышающей CIR
[root@mg]# iperf -c 10.0.0.125 -u -b63k -t 300

Смотрим результаты на роутере
router#sh policy-map interface FastEthernet0/0.100 output
FastEthernet0/0.100

Service-policy output: speedtest.out

Class-map: mg (match-all)
1081 packets, 1638796 bytes
2 minute offered rate 64000 bps, drop rate 0 bps
Match: access-group name mg
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 2/0/0
(pkts output/bytes output) 1081/1638796
shape (peak) cir 64000, bc 6400, be 6400
target shape rate 128000

Class-map: class-default (match-any)
[skip]

Результаты показывают, что потерь нет.
[  3] local 10.255.255.210 port 51144 connected with 10.0.0.125 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-302.2 sec 2.25 MBytes 62.6 Kbits/sec
[ 3] Sent 1608 datagrams
[ 3] Server Report:
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-564.8 sec 2.25 MBytes 33.5 Kbits/sec 92.753 ms 0/ 1608 (0%)

Увеличиваем поток данных до 128к.
router#sh policy-map interface FastEthernet0/0.100 output
FastEthernet0/0.100

Service-policy output: speedtest.out

Class-map: mg (match-all)
4260 packets, 6443740 bytes
30 second offered rate 132000 bps, drop rate 1000 bps
Match: access-group name mg
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 64/59/0
(pkts output/bytes output) 4201/6354296
shape (peak) cir 64000, bc 6400, be 6400
target shape rate 128000
Class-map: class-default (match-any)
[skip]

Видно, что данные начинаю отбрасываться. Сервер дает в итоге отчет о передаче данных
[  3] local 10.0.0.125 port 5001 connected with 10.255.255.210 port 51762
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-304.2 sec 4.44 MBytes 122 Kbits/sec 169.930 ms 55/ 3222 (1.7%)
[ 3] 0.0-304.2 sec 1 datagrams received out-of-order

Ограничение исходящего с порта маршрутизатора проверили, теперь необходимо ограничить входящий трафик. Как известно, shape'ры предназначены только для ограничения исходящего трафика, а для входящего используют police'ры.
Сервера меняются ролями. Клиент становится сервером и наоборот.
Что по итогу:
router#sh policy-map int FastEthernet0/0.100 input
FastEthernet0/0.100

Service-policy input: speedtest.in

Class-map: mg (match-all)
901 packets, 1365916 bytes
2 minute offered rate 132000 bps, drop rate 4000 bps
Match: access-group name mg
police:
rate 64000 bps, burst 2000 bytes
peak-rate 128000 bps, peak-burst 4000 bytes
conformed 427 packets, 647332 bytes; actions:
set-prec-transmit 1
exceeded 446 packets, 676136 bytes; actions:
set-prec-transmit 0
violated 28 packets, 42448 bytes; actions:
drop
conformed 61000 bps, exceed 64000 bps, violate 4000 bps

Class-map: class-default (match-any)
[skip]

Изменение приоритетов предположительно может далее использоваться для уже других shape'ров на этом роутере. Интересно, что в более привычной конфигурации...
conform-action transmit
exceed-action drop

... имеем
router#sh policy-map int FastEthernet0/0.100 input
FastEthernet0/0.100

Service-policy input: speedtest.in

Class-map: mg (match-all)
3819 packets, 5760764 bytes
2 minute offered rate 120000 bps, drop rate 69000 bps
Match: access-group name mg
police:
rate 64000 bps, burst 2000 bytes
peak-rate 128000 bps, peak-burst 4000 bytes
conformed 2651 packets, 3990076 bytes; actions:
transmit
exceeded 1087 packets, 1647892 bytes; actions:
drop
violated 81 packets, 122796 bytes; actions:
drop
conformed 63000 bps, exceed 65000 bps, violate 3000 bps

[root@mg]# iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 41.1 KByte (default)
------------------------------------------------------------
[ 3] local 10.255.255.210 port 5001 connected with 10.0.0.125 port 58066
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-300.5 sec 2.16 MBytes 60.3 Kbits/sec 20.402 ms 1727/ 3267 (53%)