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:
- Размер одного пакета с “голосом” (в одном направлении) - 172 байта (160 байт на голос + 12 байт на информацию RDP протокола )
- За одну секунду, в одном направлении, передается 50 пакетов.
- Полоса G711, без учета L2 и L3 заголовков, занимает 64кбит/c.
Передаем эти параметры 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 должна заниматься только этой задачей, если на её еще что-то повесить, то поведение будет сложно предсказуемым.