| OLD | NEW |
| 1 | 1 |
| 2 More number for the questions about SSL overheads.... | 2 More number for the questions about SSL overheads.... |
| 3 | 3 |
| 4 The following numbers were generated on a pentium pro 200, running linux. | 4 The following numbers were generated on a Pentium pro 200, running Linux. |
| 5 They give an indication of the SSL protocol and encryption overheads. | 5 They give an indication of the SSL protocol and encryption overheads. |
| 6 | 6 |
| 7 The program that generated them is an unreleased version of ssl/ssltest.c | 7 The program that generated them is an unreleased version of ssl/ssltest.c |
| 8 which is the SSLeay ssl protocol testing program. It is a single process that | 8 which is the SSLeay ssl protocol testing program. It is a single process that |
| 9 talks both sides of the SSL protocol via a non-blocking memory buffer | 9 talks both sides of the SSL protocol via a non-blocking memory buffer |
| 10 interface. | 10 interface. |
| 11 | 11 |
| 12 How do I read this? The protocol and cipher are reasonable obvious. | 12 How do I read this? The protocol and cipher are reasonable obvious. |
| 13 The next number is the number of connections being made. The next is the | 13 The next number is the number of connections being made. The next is the |
| 14 number of bytes exchanged bewteen the client and server side of the protocol. | 14 number of bytes exchanged between the client and server side of the protocol. |
| 15 This is the number of bytes that the client sends to the server, and then | 15 This is the number of bytes that the client sends to the server, and then |
| 16 the server sends back. Because this is all happening in one process, | 16 the server sends back. Because this is all happening in one process, |
| 17 the data is being encrypted, decrypted, encrypted and then decrypted again. | 17 the data is being encrypted, decrypted, encrypted and then decrypted again. |
| 18 It is a round trip of that many bytes. Because the one process performs | 18 It is a round trip of that many bytes. Because the one process performs |
| 19 both the client and server sides of the protocol and it sends this many bytes | 19 both the client and server sides of the protocol and it sends this many bytes |
| 20 each direction, multiply this number by 4 to generate the number | 20 each direction, multiply this number by 4 to generate the number |
| 21 of bytes encrypted/decrypted/MACed. The first time value is how many seconds | 21 of bytes encrypted/decrypted/MACed. The first time value is how many seconds |
| 22 elapsed doing a full SSL handshake, the second is the cost of one | 22 elapsed doing a full SSL handshake, the second is the cost of one |
| 23 full handshake and the rest being session-id reuse. | 23 full handshake and the rest being session-id reuse. |
| 24 | 24 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 48 SSLv2 RC4-MD5 1000 x 102400 70.22s 57.74s | 48 SSLv2 RC4-MD5 1000 x 102400 70.22s 57.74s |
| 49 SSLv3 NULL-MD5 1000 x 102400 43.73s 31.03s | 49 SSLv3 NULL-MD5 1000 x 102400 43.73s 31.03s |
| 50 SSLv3 RC4-MD5 1000 x 102400 71.32s 58.83s | 50 SSLv3 RC4-MD5 1000 x 102400 71.32s 58.83s |
| 51 SSLv3 RC4-MD5 1000 x 102400 109.66s 59.20s 1024bit RSA | 51 SSLv3 RC4-MD5 1000 x 102400 109.66s 59.20s 1024bit RSA |
| 52 SSLv3 RC4-SHA 1000 x 102400 95.88s 82.21s | 52 SSLv3 RC4-SHA 1000 x 102400 95.88s 82.21s |
| 53 SSLv3 DES-CBC-SHA 1000 x 102400 173.22s 160.55s | 53 SSLv3 DES-CBC-SHA 1000 x 102400 173.22s 160.55s |
| 54 SSLv3 DES-CBC3-SHA 1000 x 102400 336.61s 323.82s | 54 SSLv3 DES-CBC3-SHA 1000 x 102400 336.61s 323.82s |
| 55 | 55 |
| 56 What does this all mean? Well for a server, with no session-id reuse, with | 56 What does this all mean? Well for a server, with no session-id reuse, with |
| 57 a transfer size of 10240 bytes, using RC4-MD5 and a 512bit server key, | 57 a transfer size of 10240 bytes, using RC4-MD5 and a 512bit server key, |
| 58 a pentium pro 200 running linux can handle the SSLv3 protocol overheads of | 58 a Pentium pro 200 running Linux can handle the SSLv3 protocol overheads of |
| 59 about 49 connections a second. Reality will be quite different :-). | 59 about 49 connections a second. Reality will be quite different :-). |
| 60 | 60 |
| 61 Remeber the first number is 1000 full ssl handshakes, the second is | 61 Remember the first number is 1000 full ssl handshakes, the second is |
| 62 1 full and 999 with session-id reuse. The RSA overheads for each exchange | 62 1 full and 999 with session-id reuse. The RSA overheads for each exchange |
| 63 would be one public and one private operation, but the protocol/MAC/cipher | 63 would be one public and one private operation, but the protocol/MAC/cipher |
| 64 cost would be quite similar in both the client and server. | 64 cost would be quite similar in both the client and server. |
| 65 | 65 |
| 66 eric (adding numbers to speculation) | 66 eric (adding numbers to speculation) |
| 67 | 67 |
| 68 --- Appendix --- | 68 --- Appendix --- |
| 69 - The time measured is user time but these number a very rough. | 69 - The time measured is user time but these number a very rough. |
| 70 - Remember this is the cost of both client and server sides of the protocol. | 70 - Remember this is the cost of both client and server sides of the protocol. |
| 71 - The TCP/kernel overhead of connection establishment is normally the | 71 - The TCP/kernel overhead of connection establishment is normally the |
| 72 killer in SSL. Often delays in the TCP protocol will make session-id | 72 killer in SSL. Often delays in the TCP protocol will make session-id |
| 73 reuse look slower that new sessions, but this would not be the case on | 73 reuse look slower that new sessions, but this would not be the case on |
| 74 a loaded server. | 74 a loaded server. |
| 75 - The TCP round trip latencies, while slowing indervidual connections, | 75 - The TCP round trip latencies, while slowing individual connections, |
| 76 would have minimal impact on throughput. | 76 would have minimal impact on throughput. |
| 77 - Instead of sending one 102400 byte buffer, one 8k buffer is sent until | 77 - Instead of sending one 102400 byte buffer, one 8k buffer is sent until |
| 78 - the required number of bytes are processed. | 78 - the required number of bytes are processed. |
| 79 - The SSLv3 connections were actually SSLv2 compatable SSLv3 headers. | 79 - The SSLv3 connections were actually SSLv2 compatible SSLv3 headers. |
| 80 - A 512bit server key was being used except where noted. | 80 - A 512bit server key was being used except where noted. |
| 81 - No server key verification was being performed on the client side of the | 81 - No server key verification was being performed on the client side of the |
| 82 protocol. This would slow things down very little. | 82 protocol. This would slow things down very little. |
| 83 - The library being used is SSLeay 0.8.x. | 83 - The library being used is SSLeay 0.8.x. |
| 84 - The normal mesauring system was commands of the form | 84 - The normal measuring system was commands of the form |
| 85 time ./ssltest -num 1000 -bytes 102400 -cipher DES-CBC-SHA -reuse | 85 time ./ssltest -num 1000 -bytes 102400 -cipher DES-CBC-SHA -reuse |
| 86 This modified version of ssltest should be in the next public release of | 86 This modified version of ssltest should be in the next public release of |
| 87 SSLeay. | 87 SSLeay. |
| 88 | 88 |
| 89 The general cipher performace number for this platform are | 89 The general cipher performance number for this platform are |
| 90 | 90 |
| 91 SSLeay 0.8.2a 04-Sep-1997 | 91 SSLeay 0.8.2a 04-Sep-1997 |
| 92 built on Fri Sep 5 17:37:05 EST 1997 | 92 built on Fri Sep 5 17:37:05 EST 1997 |
| 93 options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfis
h(ptr2) | 93 options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfis
h(ptr2) |
| 94 C flags:gcc -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitial
ized | 94 C flags:gcc -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitial
ized |
| 95 The 'numbers' are in 1000s of bytes per second processed. | 95 The 'numbers' are in 1000s of bytes per second processed. |
| 96 type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes | 96 type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes |
| 97 md2 131.02k 368.41k 500.57k 549.21k 566.09k | 97 md2 131.02k 368.41k 500.57k 549.21k 566.09k |
| 98 mdc2 535.60k 589.10k 595.88k 595.97k 594.54k | 98 mdc2 535.60k 589.10k 595.88k 595.97k 594.54k |
| 99 md5 1801.53k 9674.77k 17484.03k 21849.43k 23592.96k | 99 md5 1801.53k 9674.77k 17484.03k 21849.43k 23592.96k |
| 100 sha 1261.63k 5533.25k 9285.63k 11187.88k 11913.90k | 100 sha 1261.63k 5533.25k 9285.63k 11187.88k 11913.90k |
| 101 sha1 1103.13k 4782.53k 7933.78k 9472.34k 10070.70k | 101 sha1 1103.13k 4782.53k 7933.78k 9472.34k 10070.70k |
| 102 rc4 10722.53k 14443.93k 15215.79k 15299.24k 15219.59k | 102 rc4 10722.53k 14443.93k 15215.79k 15299.24k 15219.59k |
| 103 des cbc 3286.57k 3827.73k 3913.39k 3931.82k 3926.70k | 103 des cbc 3286.57k 3827.73k 3913.39k 3931.82k 3926.70k |
| 104 des ede3 1443.50k 1549.08k 1561.17k 1566.38k 1564.67k | 104 des ede3 1443.50k 1549.08k 1561.17k 1566.38k 1564.67k |
| 105 idea cbc 2203.64k 2508.16k 2538.33k 2543.62k 2547.71k | 105 idea cbc 2203.64k 2508.16k 2538.33k 2543.62k 2547.71k |
| 106 rc2 cbc 1430.94k 1511.59k 1524.82k 1527.13k 1523.33k | 106 rc2 cbc 1430.94k 1511.59k 1524.82k 1527.13k 1523.33k |
| 107 blowfish cbc 4716.07k 5965.82k 6190.17k 6243.67k 6234.11k | 107 blowfish cbc 4716.07k 5965.82k 6190.17k 6243.67k 6234.11k |
| 108 sign verify | 108 sign verify |
| 109 rsa 512 bits 0.0100s 0.0011s | 109 rsa 512 bits 0.0100s 0.0011s |
| 110 rsa 1024 bits 0.0451s 0.0012s | 110 rsa 1024 bits 0.0451s 0.0012s |
| 111 rsa 2048 bits 0.2605s 0.0086s | 111 rsa 2048 bits 0.2605s 0.0086s |
| 112 rsa 4096 bits 1.6883s 0.0302s | 112 rsa 4096 bits 1.6883s 0.0302s |
| 113 | 113 |
| OLD | NEW |