我试图使用Nginx作为反向代理,具有负载均衡和SSL卸载function,我需要购买适当的硬件。
在某些情况下,我需要一个高吞吐量的SSL卸载,我想知道Nginx是否使用Intel Core i7 (或者至强Nehalem CPU产品线)的硬件AESfunction!
使用Nginx与这样的CPU获得更多的SSL卸载吞吐量,还是浪费钱?
您可以通过运行nginx -V来validationnginx是否是使用OpenSSL构build的。
[root@saurok ~]# nginx -V nginx version: nginx/1.8.0 built by gcc 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) built with OpenSSL 1.0.1k-fips 8 Jan 2015 TLS SNI support enabled ...
您可以通过运行OpenSSL的内部基准来validationOpenSSL是否使用英特尔AES-NI。
将openssl speed aes-128-cbc的输出与openssl speed -evp aes-128-cbc 。 前者即使存在也跳过硬件加速,而后者则使用加速(如果可用)。 除了基准testing以外, 如果存在 , 它将自动使用 。
例如:
[root@saurok ~]# openssl speed aes-128-cbc Doing aes-128 cbc for 3s on 16 size blocks: 32797518 aes-128 cbc's in 3.00s Doing aes-128 cbc for 3s on 64 size blocks: 9030109 aes-128 cbc's in 3.00s Doing aes-128 cbc for 3s on 256 size blocks: 2311493 aes-128 cbc's in 3.00s Doing aes-128 cbc for 3s on 1024 size blocks: 582201 aes-128 cbc's in 3.00s Doing aes-128 cbc for 3s on 8192 size blocks: 72836 aes-128 cbc's in 3.00s OpenSSL 1.0.1k-fips 8 Jan 2015 built on: Thu Aug 13 12:19:54 2015 options:bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) compiler: -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -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 The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes aes-128 cbc 174920.10k 192642.33k 197247.40k 198724.61k 198890.84k
与之相比
[root@saurok ~]# openssl speed -evp aes-128-cbc Doing aes-128-cbc for 3s on 16 size blocks: 169042680 aes-128-cbc's in 3.00s Doing aes-128-cbc for 3s on 64 size blocks: 45311567 aes-128-cbc's in 3.00s Doing aes-128-cbc for 3s on 256 size blocks: 11536773 aes-128-cbc's in 3.00s Doing aes-128-cbc for 3s on 1024 size blocks: 2897474 aes-128-cbc's in 3.00s Doing aes-128-cbc for 3s on 8192 size blocks: 362685 aes-128-cbc's in 3.00s OpenSSL 1.0.1k-fips 8 Jan 2015 built on: Thu Aug 13 12:19:54 2015 options:bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) compiler: -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -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 The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes aes-128-cbc 901560.96k 966646.76k 984471.30k 989004.46k 990371.84k
正如你所看到的,后者要快得多,表明正在使用硬件加速。
Nginx与硬件卸载无关; 这关系到正在使用的encryption库。 通常情况下,你将使用OpenSSL,如果它是一个适当的版本,那么将会使用硬件卸载来encryption在现代CPU上支持的encryption操作。