Все в порядке. Берете linux, толкого его настраиваете в плане
ethernet, прогоняете сколько_вам_там_надо, видите cpu load, и
добавляете
к этому скорость шифрования. Получаете примерно ожидаемую цифру.
Ребята,
Посмотрите исходники:
openssl speed - это цикл на одних и тех же данных, т.е.
ничего, кроме вычислительной мощности процессора он не
показывает: данные будут в кэше L1 после первого же оборота.
IPSec на шлюзе - это принять пакет, заглянуть в таблицу
маршрутизации, заглянуть а SPD, заглянуть в SAD, зашифровать и
выслать. Для маленьких пакетов само шифрование занимает лишь
малую часть процессорного времени, необходимого на обработку
каждого пакета.
Привет.
core.i7.6700k#openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 227357080
aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 64897721
aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 16590421
aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 4189099
aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 524904
aes-128-cbc's in 3.00s
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int)
aes(partial) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC
-DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H
-m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat
-Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2
-Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack
-Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2
-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5
-DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM
-DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM
-DGHASH_ASM -DECP_NISTZ256_ASM
The 'numbers' are in 1000s of bytes per second
processed.
type 16 bytes 64 bytes 256 bytes
1024 bytes 8192 bytes
aes-128-cbc 1212571.09k 1384484.71k 1415715.93k
1429879.13k 1433337.86k
В блоках по 64 байта (самый плохой случай - voip) дает
1.3 гигабайта в секунду при полной загрузки одного ядра.
Без AES-NI
The 'numbers' are in 1000s of bytes per second
processed.
type 16 bytes 64 bytes 256 bytes
1024 bytes 8192 bytes
aes-128 cbc 167418.06k 182451.93k 188739.07k
187727.19k 194005.67k - 182 мегабайта в секунду.
В обоих случаях это больше, чем нужно, для загрузки
гигабитного канала.
Скорости работы AES в openssl и в linux kernel
практически можно считать одинаковыми.
А AES-256 не нужен. AES-256 на самом деле слабее, чем
AES-128.
"Assuming you're talking about AES 128 versus AES 256,
there is a known weakness in the key expansion function that
affects AES256.
Fundamentally, the weakness reduces the complexity of
AES256 to that lower than AES128."
http://eprint.iacr.org/2009/374
> В Intel NIC гигабитках и старше есть аппаратная
поддержка IPSec/AES,
> которая типа дает wire speed шифрование.
>
>> Привет,
>>
>> есть задача - запустить сеть с шифрованием
трафика на основе механизма
>> GRE over IPSec/IKEv2 (GRE нужен для dynamic
routing, IPSec - для
>> совместимости с решениями других производителей
- таковы
>> требования).Если у кого есть опыт использования
open source / x86 для
>> подобных задач, поделитесь им, пожалуйста:
>>
>> * на каких программно-аппаратных
конфигурациях какую предельную
>> производительность удалось получить (до
начала потерь пакетов)?
>> o CPU/MB/RAM (тип, частота)
>> o NIC (производитель, модель)
>> o операционная система
>> o софт / библиотеки
>> o алгоритм и длина ключа для
симметричного шифрования (в
>> реальности - интересует, конечно же,
AES-256)
>>
>> Спасибо!