Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
TLS производительность и многопоточность
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.06.2012(UTC) Сообщений: 3 Откуда: Mskow
|
Добрый день коллеги!
Мне надо закрыть канал передачи данных на один неплохо нагруженный сервер российскими криптоалгоритмами, как один из вариантов рассматривается КриптоПро TLS. Сервер самодельный, написаный на C++.
Вопрос: 1) какая максимальная производительность КриптоПРО TLS по одной сессии? 2) такая пропускная способность может быть достигнута по каждой сессии на сервере (если их будет много и при правильной реализации многопоточной обработки) или это суммарная пропускная способность всей подсистемы КриптоПРО TLS для одного процесса? Или для всей системы?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
На нормальном железе производительность упирается в сетевую карту. По оценкам ~ 10Гбит будет прокачиваться. Скорость сильно зависит от характера нагрузки - установление соединения - самая ресурсоемкая операция. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.06.2012(UTC) Сообщений: 3 Откуда: Mskow
|
попробовал написать небольшой тест скорости шифрования на основе примеров WebServer, WebClient. Суть в том что после окончания рукопожатия зацикливаем функцию EncryptMessage на клиенте, и на буфере размером 16К меряем скорость шифрования. Результат: 250 - 300 МБит/сек. По нагрузке - загружен только один процессор. Вот код который меряет скорость на клиенте: Код:
{
long i = 0;
struct timeval start;
struct timeval current;
gettimeofday(&start);
for(;;)
{
Buffers[0].pvBuffer = pbIoBuffer;
Buffers[0].cbBuffer = Sizes.cbHeader;
Buffers[0].BufferType = SECBUFFER_STREAM_HEADER;
Buffers[1].pvBuffer = pbIoBuffer + Sizes.cbHeader;
Buffers[1].cbBuffer = Sizes.cbMaximumMessage;
Buffers[1].BufferType = SECBUFFER_DATA;
Buffers[2].pvBuffer = pbIoBuffer + Sizes.cbHeader + Sizes.cbMaximumMessage;
Buffers[2].cbBuffer = Sizes.cbTrailer;
Buffers[2].BufferType = SECBUFFER_STREAM_TRAILER;
Buffers[3].BufferType = SECBUFFER_EMPTY;
Message.ulVersion = SECBUFFER_VERSION;
Message.cBuffers = 4;
Message.pBuffers = Buffers;
scRet = g_pSSPI->EncryptMessage(phContext, 0, &Message, 0);
if(FAILED(scRet))
{
printf("**** Error 0x%x returned by EncryptMessage\n", scRet);
return scRet;
}
i = i + 1;
gettimeofday(¤t);
{
double start_sec = 0;
double current_sec = 0;
start_sec = start.tv_sec + ((double)start.tv_usec)/1000000;
current_sec = current.tv_sec + ((double)current.tv_usec)/1000000;
if(current_sec - start_sec > 1)
{
long speed = (i*Sizes.cbMaximumMessage*8) / (current_sec - start_sec) / 1048576;
printf("Encryption speed: %d MBit/sec \n", speed);
i = 0;
gettimeofday(&start);
}
}
}
}
Вывод клиента в консоль: Цитата: # ./web_client -slocalhost 96 bytes of handshake data sent 905 bytes of handshake data received 210 bytes of handshake data sent 31 bytes of handshake data received Handshake was successful Detection connection partameters... Connection start {1cd5b3c, 7f1e0b0}: 2012/7/6 5:56:5.307 UTC Connection expiry {1ce7a0d, 7f1e0b0}: 2013/7/6 5:52:42.677 UTC
Server subject: E=xxx@cryptopro.ru, CN=xxx_srv_1 Server issuer: E=info@cryptopro.ru, C=RU, O=CRYPTO-PRO, CN=Test Center CRYPTO-PRO
Protocol: TLS1 Cipher: Gost 28147-89 Cipher strength: 256 Hash: Gost R 34.11-94 Hash strength: 256 Key exchange: 0xaa25 Key exchange strength: 512
Header: 5, Trailer: 4, MaxMessage: 16379 Encryption speed: 281 MBit/sec Encryption speed: 285 MBit/sec Encryption speed: 288 MBit/sec Encryption speed: 289 MBit/sec Encryption speed: 287 MBit/sec
Тест проводился на виртуалке. ОС: Цитата: # uname -a Linux shdw-dev 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux
CPU: Цитата: #lscpu Architecture: x86_64 CPU op-mode(s): 64-bit CPU(s): 4 Thread(s) per core: 1 Core(s) per socket: 2 CPU socket(s): 2 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 26 Stepping: 5 CPU MHz: 2833.770 L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 8192K
Криптопровайдер: Цитата: # ./csptest --version CSP (Type:71) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:AMD64 FastCode:NoHardwareSupport. CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:AMD64 FastCode:NoHardwareSupport. The type of the license: DRV Expires: 2 month(s) 28 day(s) Total: [ErrorCode: 0x00000000]
получается чтобы мне увеличить скорость нужно устанавливать еще одну сессию(или несколько) на этот же хост и распределять нагрузку между ними. Или существуют еще какие то возможности ускорить шифрования по одной сессии? (понятно что юзать EncryptMessage сразу из нескольких потоков нельзя, но м.б. есть возможность сконфигурить TLS на использование нескольких потоков для шифрования в контексте одной сессии?)
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Шифрование не распараллеливается. А зачем Вам такие скорости в одной сессии? Может IPsec? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.06.2012(UTC) Сообщений: 3 Откуда: Mskow
|
Полазил по вашему сайту на тему ipsec. Первое что попало в глаза - КриптоПро IPsec, но указано что он ставиться только на Win. Дальше в руководстве разработчика вроде есть API для работы с IPSEC в том числе и на Linux (КриптоПро IKE, ESP, AH), однако пакеты, на которые идут ссылки из "введения" (например cprocsp-ipsec-esp-3.6.1-4.src.rpm или cprocsp-ipsec-devel-3.6.1-3.noarch.rpm), не входят в состав дистрибутивов КриптоПро CSP 3.6 R2 для Linux. Кое какие пакеты, например cprocsp-ipsec-devel-3.6.1-3.noarch.rpm входят в состав КриптоПро CSP 3.6 для CheckPoint.
Может я просто плохо поискал. Подскажите, сейчас вообще возможно использования протоколов ipsec на обычном линуксе без покупки каких-либо технических средств (имеется ввиду чекпоинты и пр.)? Если да, то плиз. информацию - что откуда скачать и как поставить, ну или ссылку на документацию.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Для linux существует только SDK. Сертифицируется в текущее время вместе с R3. |
|
|
|
|
Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
TLS производительность и многопоточность
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close