Подскажите, что можно (и можно ли вообще) сделать для увеличения пропускной способности на софтроутере с шифрованием.
Имею стенд из 4х блейдов hp bl 460 g7:
2 x Intel® Xeon® X5650 (6 ядер, 2.66 ГГц, 12 МБ L3, 95 Вт)
6GB RAM
Integrated NC553i Dual Port FlexFabric 10Gb Adapter supporting autosensing 10Gb/1Gb Ethernet
Linux u1 2.6.32-33-server #72-Ubuntu SMP Fri Jul 29 21:21:55 UTC 2011 x86_64 GNU/Linux
Ubuntu 10.04.3 LTS
Сервера подключены цепочкой. клиент-сервер-сервер-клиент
Смысл в чём - сервер-сервер - это шифрующие устройства, ipsec-tools, клиенты - на одном iperf -s запущен, на втором ./iperf3 -c 3.3.3.2 -l 1024 -w 2M -t 3600 -i 60 -P 128 -M 100
То есть, тестирую возможности шифрования и пропускную способность.
При использовании пакетов 1400 байт одним потоком всё отлично на серверах, 1 ядро грузится на 1-2% и выдаёт честный гигабит (на 10гбит нет возможности пока погонять), но когда включаю 120 потоков по 100 байт, тут трафик падает до 90-120мбит/с и вырастает ksoftirqd до 50%.
31 root 20 0 0 0 0 R 46 0.0 4:01.79 ksoftirqd/9
irqbalance убил, прерывания сетевой карты раскидал на разные ядра. У сетевой 2 прерывания - rx и tx.
По чипу сетевой спецификация:
http://www.emulex.com/products/oneconnect-ucnas/10gbe-fcoe-cnas/hp-certified/nc553i-dual-port-integrated-flexfabric-adapter/specifications.html
iperf уходит в 100% нагрузки на клиенте и показывает только около 100мбит.
sar вот, что показывает.
root@s1:~# sar -n DEV 1
Linux 2.6.32-33-server (s1) 08/25/2011 _x86_64_ (12 CPU)
04:23:55 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
04:23:56 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:23:56 PM eth0 163346.00 37427.00 24565.12 2424.71 0.00 0.00 0.00
04:23:56 PM eth1 57288.00 265224.00 6847.39 52319.42 0.00 0.00 0.00
Шифрование на обоих серверах AES-128.
правила простые
ipsec-tools.conf:
spdadd 1.1.1.0/24 3.3.3.0/24 any -P out ipsec esp/tunnel/2.2.2.1-2.2.2.2/require;
spdadd 3.3.3.0/24 1.1.1.0/24 any -P in ipsec esp/tunnel/2.2.2.2-2.2.2.1/require;
racoon.conf:
listen {
isakmp 2.2.2.1 [500];
}
remote 2.2.2.2 {
exchange_mode main;
lifetime time 1 hour;
proposal {
encryption_algorithm rijndael 128;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
}
sainfo subnet 1.1.1.0/24 any subnet 3.3.3.0/24 any {
pfs_group 2;
encryption_algorithm rijndael 128;
authentication_algorithm non_auth;
compression_algorithm deflate;
lifetime time 1 hour;
}
При отключении шифрования iperf показывает 265 Мбит стабильно, но нагружет ядро на клиенте на 100%, то есть как генератор трафика он как-то слишком жрущй CPU.
31 root 20 0 0 0 0 S 1 0.0 5:05.64 ksoftirqd/9
ksoftirqd падает до 1%.
Очевидно, что шифрование сжирает всё и сервера могут много большее.
Поможет ли мне то, что я куплю другие сетевые карточки, где по 8 tx/rx очереди и повешу на отдельное ядро?
Но как проверить? iperf при большом кол-ве потоков уходит в 100%. Какие есть ещё утилиты? netperf однопоточный, не интересно.