<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[wolfSSL - Embedded SSL Library — Performance of wolfSSL Client and Server]]></title>
		<link>https://www.wolfssl.com/forums/topic808-performance-of-wolfssl-client-and-server.html</link>
		<atom:link href="https://www.wolfssl.com/forums/feed-rss-topic808.xml" rel="self" type="application/rss+xml" />
		<description><![CDATA[The most recent posts in Performance of wolfSSL Client and Server.]]></description>
		<lastBuildDate>Thu, 16 Jun 2016 12:35:19 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Performance of wolfSSL Client and Server]]></title>
			<link>https://www.wolfssl.com/forums/post2537.html#p2537</link>
			<description><![CDATA[<p>Thank you for the answer. I performed some benchmarks now and compared the performance to send and receive:</p><p>Benchmark:<br />AES256: 1.7 MByte/s<br />AES512: 1.7 MByte/s<br />SHA: 4.0 MByte/s<br />SHA256: 2.3 MByte/s<br />AES GCM: 0.6 MByte/s</p><p>Send and Receive:<br />AES GCM: 4.4 Mbit/s<br />AES256 + SHA256: 5.2 Mbit/s<br />AES128 + SHA: 6.5 Mbit/s<br />No Enc + SHA: 13 Mbit/s</p><p>AES GCM seems to be ok, 4.4 Mbit/s is a bit less than 0.6*8 = 4.8 Mbit/s but there is overhead by the TLS stack.<br />AES256 + SHA256 is already a bit strange because 5.2 Mbit/s is much less than 1.7*8 = 13.6 Mbit/s and 2.3*8 = 18.4 Mbit/s, or is this normal because both algorithms have to be applied?<br />No Enc + SHA is now really weird since 13 Mbit/s is very far from the benchmark result of 4*8 = 32 Mbit/s.</p><p>Are the results reasonable? Do I miss something important?</p><p>I also checked the pure TCP performance (no wolfSSL) of my TLS stack and it was able to do 37 Mbit/s (no processing, just raw send and receive). I guess the processing also takes time and therefore decreases the performance.</p>]]></description>
			<author><![CDATA[null@example.com (hstr)]]></author>
			<pubDate>Thu, 16 Jun 2016 12:35:19 +0000</pubDate>
			<guid>https://www.wolfssl.com/forums/post2537.html#p2537</guid>
		</item>
		<item>
			<title><![CDATA[Re: Performance of wolfSSL Client and Server]]></title>
			<link>https://www.wolfssl.com/forums/post2531.html#p2531</link>
			<description><![CDATA[<p>Hi hstr,</p><p>Typically when we do benchmarking, we benchmark the cryptography algorithms versus benchmarking a send or recv that would include I/O operations.&nbsp; The underlying cryptography is going to be the most performance intensive operations of the SSL/TLS connection, where sending or receiving data over a network or transport medium is going to have many more factors in play than the SSL/TLS library.</p><p>We ship a crypto benchmark application with wolfSSL, located in the &lt;wolfssl_root&gt;/wolfcrypt/benchmark/benchmark.c file.&nbsp; If you are compiling this on an embedded platform, you can define NO_MAIN_DRIVER to compile out the main() from benchmark.c if you have your own driver/main().&nbsp; You can also define BENCH_EMBEDDED when compiling the library/benchmark.c to use less memory.&nbsp; benchmark.c contains individual crypto benchmark functions (ex: bench_aes(), bench_rsa(), etc.) which can be called individually, or you can call benchmark_test() which will call all of the enabled crypto benchmarks.</p><p>Going back to your mentioned benchmark, do you know if both connections were using the same cipher suite, key length, and application code?</p><p>Thanks,<br />Chris</p>]]></description>
			<author><![CDATA[null@example.com (chrisc)]]></author>
			<pubDate>Wed, 08 Jun 2016 16:45:11 +0000</pubDate>
			<guid>https://www.wolfssl.com/forums/post2531.html#p2531</guid>
		</item>
		<item>
			<title><![CDATA[Performance of wolfSSL Client and Server]]></title>
			<link>https://www.wolfssl.com/forums/post2528.html#p2528</link>
			<description><![CDATA[<p>Hi,</p><p>recently I did some first performance measurements with two boards, one is running the wolfSSL Client and the other one is running the wolfSSL Server.</p><p>The following options that are important for the measurements are set:<br />#define SIZEOF_LONG 4<br />#define SIZEOF_LONG_LONG 8<br />#define NO_FILESYSTEM<br />#define USE_CERT_BUFFERS_2048<br />#define SINGLE_THREADED<br />#define CHAR_BIT 8<br />#define TFM_NO_ASM<br />#define USE_FAST_MATH<br />#define HAVE_AESGCM<br />#define BUILD_TLS_RSA_WITH_AES_128_GCM_SHA256</p><p>So a connection between the boards is established with RSA and AES128 in GCM.</p><p>In the first test, the client is sending to the server at maximum speed:<br /></p><div class="codebox"><pre><code>static char data[1452];

while(1)
{
    wolfSSL_send(ssl, data, sizeof(data), 0);
}</code></pre></div><p>The resulting speed (measured with wireshark) is at 4,4 Mbit/s. The result seems to be quite reasonable, since there is no<br />hardware acceleration. (is it really, what do you think? I am using a TriCore with 300 MHz)</p><p>But now there appears to be a problem when I let the server send to the client. The client connects to the server and then the server sends to the client at maximum speed, using the same code as above.<br />The resulting speed is now much lower, at around 120 kbit/s.</p><p>Can someone please help by telling me what might be the cause of this difference. Actually I expected that the speed in both directions should be pretty much the same.</p><p>Best regards,<br />hstr</p>]]></description>
			<author><![CDATA[null@example.com (hstr)]]></author>
			<pubDate>Wed, 08 Jun 2016 08:05:08 +0000</pubDate>
			<guid>https://www.wolfssl.com/forums/post2528.html#p2528</guid>
		</item>
	</channel>
</rss>
