Table of Contents

Производительность ipsec на маршрутизаторе Cisco 1841

Задача

Есть Сisco 1841 (C1841-ADVSECURITYK9-M, 12.4(5), c1841-advsecurityk9-mz.124-5.bin) которая строит ipsec туннель (без модуля AIM-VPN/SSL-1) до клиента. Через туннель, в основном, ходит голосовой трафик по кодеку G711.

Надо протестировать и понять производительность Сisco 1841 - сколько одновременных разговором через неё можно прогнать?

Макет

Строим с cisco 1841 ipsec туннель, с помощью iperf имитируем голосовой трафик и смотрим на загрузку маршрутизатора.
Машина fs это будет iperf сервер, машина blackpc будте iperf клиентом.

Что-бы сымитировать voip трафик, надо знать какую полосу занимает тот или иной кодек, какого размера пакеты и сколько их в секунду передается.

Информация по кодекам:

Параметры кодека G711:

Передаем эти параметры iperf (длина пакета -l, полоса -b) и на выходе получаем поток udp датаграмм, длиной 172 байт который будет пытаться уложиться в 64кбит/c, при этом количество пакетов будет немного гулять. Трафик должен быть двунаправленным, дополнительно даем ключ -d.

Со стороны клиента даем такую команду:

iperf -c 192.168.18.9  -d -u -t 60  -l 172 -b 64k

Результат:

[root@blackpc ~]# iperf -c 192.168.18.9  -d -u -t 60  -l 172 -b 64k 
------------------------------------------------------------
Client connecting to 192.168.18.9, UDP port 5001
Sending 172 byte datagrams
UDP buffer size:  122 KByte (default)
------------------------------------------------------------
[  3] local 10.42.42.105 port 56676 connected with 192.168.18.9 port 5001
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 172 byte datagrams
UDP buffer size:  122 KByte (default)
------------------------------------------------------------
[  4] local 10.42.42.105 port 5001 connected with 192.168.18.9 port 60993
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-60.0 sec   469 KBytes  64.0 Kbits/sec
[  3] Sent 2792 datagrams
[  3] Server Report:
[  3]  0.0-51.0 sec   469 KBytes  75.4 Kbits/sec   0.043 ms    0/ 2792 (0%)
[  4]  0.0-69.1 sec   536 KBytes  63.6 Kbits/sec   0.046 ms    0/ 3192 (0%)

Количество пакетов со стороны клиента:

TX eth1: 48 pkts/s RX eth1: 48 pkts/s
TX eth1: 48 pkts/s RX eth1: 48 pkts/s
TX eth1: 48 pkts/s RX eth1: 48 pkts/s
TX eth1: 49 pkts/s RX eth1: 49 pkts/s
TX eth1: 51 pkts/s RX eth1: 51 pkts/s

В целом, по параметрам, похоже на один разговор.
Что бы сымитировать неколько одновременных разговоров, надо в команду добавить ключ -P c количеством линий.

[root@blackpc ~]# iperf -c 192.168.18.9  -d -u -t 60  -l 172 -b 64k -P 3
------------------------------------------------------------
Client connecting to 192.168.18.9, UDP port 5001
Sending 172 byte datagrams
UDP buffer size:  122 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 172 byte datagrams
UDP buffer size:  122 KByte (default)
------------------------------------------------------------
[  5] local 10.42.42.105 port 42350 connected with 192.168.18.9 port 5001
[  3] local 10.42.42.105 port 52893 connected with 192.168.18.9 port 5001
[  6] local 10.42.42.105 port 49687 connected with 192.168.18.9 port 5001
[  4] local 10.42.42.105 port 5001 connected with 192.168.18.9 port 57718
[  7] local 10.42.42.105 port 5001 connected with 192.168.18.9 port 50087
[  8] local 10.42.42.105 port 5001 connected with 192.168.18.9 port 50980
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-60.0 sec   469 KBytes  64.0 Kbits/sec
[  5] Sent 2792 datagrams
[  3]  0.0-60.0 sec   462 KBytes  63.0 Kbits/sec
[  3] Sent 2792 datagrams
[  6]  0.0-60.0 sec   465 KBytes  63.5 Kbits/sec
[  6] Sent 2792 datagrams
[SUM]  0.0-60.0 sec  1.36 MBytes   191 Kbits/sec
[  4]  0.0-60.0 sec   469 KBytes  64.0 Kbits/sec   0.416 ms    0/ 2792 (0%)
[  7]  0.0-60.0 sec   469 KBytes  64.0 Kbits/sec   0.118 ms    0/ 2792 (0%)
[  8]  0.0-60.0 sec   469 KBytes  64.0 Kbits/sec   0.120 ms    0/ 2792 (0%)
[SUM]  0.0-60.0 sec  1.37 MBytes   192 Kbits/sec
read failed: Connection refused
[  3] WARNING: did not receive ack of last datagram after 1 tries.
[  5] Server Report:
[  5]  0.0-60.0 sec   469 KBytes  64.0 Kbits/sec   0.099 ms    0/ 2792 (0%)
read failed: Connection refused
[  6] WARNING: did not receive ack of last datagram after 5 tries.

Пакеты со стороны клиента:

TX eth1: 141 pkts/s RX eth1: 143 pkts/s
TX eth1: 139 pkts/s RX eth1: 144 pkts/s
TX eth1: 142 pkts/s RX eth1: 145 pkts/s
TX eth1: 141 pkts/s RX eth1: 142 pkts/s

При этом со стороны сервера iperf надо запустить с ключем “-P 1”, если ключ не ставить, то в ответ сервер, почему-то, будет посылать в два-три раза больше трафика.

[root@fs ~]# iperf -s -u  -P1
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  184 KByte (default)
------------------------------------------------------------

Результаты

Результатры тестирования производительности ipsec на маршрутизаторе cisco 1841 сведены в таблицу.

Количество
разговоров
Загрузка CPU Количество
пакетов в секунду
Скорость Потери
20 44 % 2k pps 1.3 Мбит/c Потерь нет
30 65 % 2.8k pps 1.92 Мбит/c Потерь нет
40 87 % 3.6k pps 2.5 Мбит/c Теряются единицы пакетов
50 100 % 4-4.3k pps 2.57 Мбит/c Потери 30%

Максимальная загрузка Juniper srx100h, который стоял с другой стороны ipsec туннеля, составила 15 % (forwarding plane).

Выводы

Через ipsec туннель построенный на cisco 1841 можно прогнать порядка 30 разговоров в кодеке G711, больше не стоит.
При этом c1841 должна заниматься только этой задачей, если на её еще что-то повесить, то поведение будет сложно предсказуемым.