This commit is contained in:
The Robur team 2024-06-10 11:44:59 +00:00
parent 4967391308
commit 3fd8d4f251
19 changed files with 141 additions and 26 deletions

View file

@ -0,0 +1,61 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>
Robur's blog - Speeding up MirageVPN and use it in the wild
</title>
<meta name="description" content="Performance engineering of MirageVPN, speeding it up by a factor of 25.">
<link type="text/css" rel="stylesheet" href="../css/hl.css">
<link type="text/css" rel="stylesheet" href="../css/style.css">
<script src="../js/hl.js"></script>
<link rel="alternate" type="application/rss+xml" href="../feed.xml" title="blog.robur.coop">
</head>
<body>
<header>
<h1>blog.robur.coop</h1>
<blockquote>
The <strong>Robur</strong> cooperative blog.
</blockquote>
</header>
<main><a href="/index.html">Back to index</a>
<article>
<h1>Speeding up MirageVPN and use it in the wild</h1>
<ul class="tags-list"><li><a href="/tags/ocaml.html">ocaml</a></li><li><a href="/tags/mirageos.html">mirageos</a></li><li><a href="/tags/cryptography.html">cryptography</a></li><li><a href="/tags/security.html">security</a></li><li><a href="/tags/vpn.html">vpn</a></li><li><a href="/tags/performance.html">performance</a></li></ul><p>As we were busy continuing to work on <a href="https://github.com/robur-coop/miragevpn">MirageVPN</a>, we got in touch with <a href="https://eduvpn.org">eduVPN</a>, who are interested about deploying MirageVPN. We got example configuration from their side, and <a href="https://github.com/robur-coop/miragevpn/pull/201">fixed</a> <a href="https://github.com/robur-coop/miragevpn/pull/168">some</a> <a href="https://github.com/robur-coop/miragevpn/pull/202">issues</a>, and also implemented <a href="https://github.com/robur-coop/miragevpn/pull/169">tls-crypt</a> - which was straightforward since we earlier spend time to implement <a href="https://blog.robur.coop/articles/miragevpn.html">tls-crypt-v2</a>.</p>
<p>In January, they gave MirageVPN another try, and <a href="https://github.com/robur-coop/miragevpn/issues/206">measured the performance</a> -- which was very poor -- MirageVPN (run as a Unix binary) provided a bandwith of 9.3Mb/s, while OpenVPN provided a bandwidth of 360Mb/s (using a VPN tunnel over TCP).</p>
<p>We aim at spending less resources for computing, thus the result was not satisfying for us. We re-read a lot of code, refactored a lot, and are now at ~250Mb/s.</p>
<h2>Tooling for performance engineering of OCaml</h2>
<p>As a first approach we connected with the MirageVPN unix client &amp; OpenVPN client to a eduVPN server and ran speed tests using <a href="https://fast.com">fast.com</a>. This was sufficient to show the initial huge gap in download speeds between MirageVPN and OpenVPN. There is <em>a lot</em> of noise in this approach as there are many computers and routers involved in this setup, and it is hard to reproduce.</p>
<p>To get more reproducible results we set up a local VM with openvpn and iperf3 installed. On the host machine we can then connect to the VM's OpenVPN server and run iperf3 against the <em>VPN</em> ip address. This worked more reliably. However, it was still noisy and not suitable to measure single digit percentage changes in performance.
To better guide the performance engineering, we also developed <a href="https://github.com/robur-coop/miragevpn/pull/230">a microbenchmark</a> using OCaml tooling. This will setup a client and server without any input and output, and transfer data in memory.</p>
<p>We also re-read our code and used the Linux utility <a href="https://perf.wiki.kernel.org/index.php/Main_Page"><code>perf</code></a> together with <a href="https://github.com/brendangregg/FlameGraph">Flamegraph</a> to graph its output. This works nicely with OCaml programs (we're using the 4.14.1 compiler and runtime system). We did the performance engineering on Unix binaries, i.e. not on MirageOS unikernels - but the MirageVPN protocol is used in both scenarios - thus the performance improvements described here are also in the MirageVPN unikernels.</p>
<h2>Takeaway of performance engineering</h2>
<p>The learnings of our performance engineering are in three areas:</p>
<ul>
<li>Formatting strings is computational expensive -- thus if in an error case a hexdump is produced of a packet, its construction must be delayed for when the error case is executed (we have <a href="https://github.com/robur-coop/miragevpn/pull/220">this PR</a> and <a href="https://github.com/robur-coop/miragevpn/pull/209">that PR</a>). Alain Frisch wrote a nice <a href="https://www.lexifi.com/blog/ocaml/note-about-performance-printf-and-format/#">blog post</a> at LexiFi about performance of <code>Printf</code> and <code>Format</code><sup><a href="#fn-lexifi-date" id="ref-1-fn-lexifi-date" role="doc-noteref" class="fn-label">[1]</a></sup>.</li>
<li>Rethink allocations: fundamentally, only a single big buffer (to be send out) for each incoming packet should be allocated, not a series of buffers that are concatenated (see <a href="https://github.com/robur-coop/miragevpn/pull/217">this PR</a> and <a href="https://github.com/robur-coop/miragevpn/pull/219">that PR</a>). Additionally, not zeroing out the just allocated buffer (if it is filled with data anyways) removes some further instructions (see <a href="https://github.com/robur-coop/miragevpn/pull/218">this PR</a>). And we figured that appending to an empty buffer nevertheless allocated and copied in OCaml, so we worked on <a href="https://github.com/robur-coop/miragevpn/pull/214">this PR</a>.</li>
<li>Still an open topic is: we are in the memory-safe language OCaml, and we sometimes extract data out of a buffer (or set data in a buffer). Now, each operation lead to bounds checks (that we do not touch memory that is not allocated or not ours). However, if we just checked for the buffer being long enough (either by checking the length, or by allocating a specific amount of data), these bounds checks are superfluous. So far, we don't have an automated solution for this issue, but we are <a href="https://discuss.ocaml.org/t/bounds-checks-for-string-and-bytes-when-retrieving-or-setting-subparts-thereof/">discussing it in the OCaml community</a>, and are eager to find a solution to avoid unneeded computations.</li>
</ul>
<h2>Conclusion</h2>
<p>To conclude: we already achieved a factor of 25 in performance by adapting the code in various ways. We have ideas to improve the performance even more in the future - we also work on using OCaml string and bytes, instead of off-the-OCaml-heap-allocated bigarrays (see <a href="https://blog.robur.coop/articles/speeding-ec-string.html">our previous article</a>, which provided some speedups).</p>
<p>Don't hesitate to reach out to us on <a href="https://github.com/robur-coop/miragevpn/issues">GitHub</a>, or <a href="https://robur.coop/Contact">by mail</a> if you're stuck.</p>
<p>We want to thank <a href="https://nlnet.nl">NLnet</a> for their funding (via <a href="https://www.assure.ngi.eu/">NGI assure</a>), and <a href="https://eduvpn.org">eduVPN</a> for their interest.</p>
<section role="doc-endnotes"><ol>
<li id="fn-lexifi-date">
<p>It has come to our attention that the blog post is rather old (2012) and that the implementation has been completely rewritten since then.</p>
<span><a href="#ref-1-fn-lexifi-date" role="doc-backlink" class="fn-label">↩︎︎</a></span></li></ol></section>
</article>
</main>
<footer>
<a href="https://github.com/xhtmlboi/yocaml">Powered by <strong>YOCaml</strong></a>
<br />
</footer>
<script>hljs.highlightAll();</script>
</body>
</html>

View file

@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Robur's blog</title><link>https://blog.robur.coop</link><atom:link href="https://blog.robur.coop/feed.xml" rel="self" type="application/rss+xml" /><description>The Robur cooperative blog</description><generator>yocaml</generator><webMaster>team@robur.coop</webMaster><item><title>GPTar</title><link>https://blog.robur.coop/articles/gptar.html</link><pubDate>Wed, 21 Feb 2024 10:00:00 GMT</pubDate><description>Hybrid GUID partition table and tar archive</description><guid isPermaLink="false">https://blog.robur.coop/articles/gptar.html</guid></item><item><title>Speeding elliptic curve cryptography</title><link>https://blog.robur.coop/articles/speeding-ec-string.html</link><pubDate>Tue, 13 Feb 2024 10:00:00 GMT</pubDate><description>How we improved the performance of elliptic curves by only modifying the underlying byte array</description><guid isPermaLink="false">https://blog.robur.coop/articles/speeding-ec-string.html</guid></item><item><title>Cooperation and Lwt.pause</title><link>https://blog.robur.coop/articles/lwt_pause.html</link><pubDate>Sun, 11 Feb 2024 10:00:00 GMT</pubDate><description>A disgression about Lwt and Miou</description><guid isPermaLink="false">https://blog.robur.coop/articles/lwt_pause.html</guid></item><item><title>Python's `str.__repr__()`</title><link>https://blog.robur.coop/articles/2024-02-03-python-str-repr.html</link><pubDate>Sat, 03 Feb 2024 10:00:00 GMT</pubDate><description>Reimplementing Python string escaping in OCaml</description><guid isPermaLink="false">https://blog.robur.coop/articles/2024-02-03-python-str-repr.html</guid></item><item><title>MirageVPN updated (AEAD, NCP)</title><link>https://blog.robur.coop/articles/miragevpn-ncp.html</link><pubDate>Mon, 20 Nov 2023 10:00:00 GMT</pubDate><description>How we resurrected MirageVPN from its bitrot state</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-ncp.html</guid></item><item><title>MirageVPN &amp; tls-crypt-v2</title><link>https://blog.robur.coop/articles/miragevpn.html</link><pubDate>Tue, 14 Nov 2023 10:00:00 GMT</pubDate><description>How we implementated tls-crypt-v2 for miragevpn</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn.html</guid></item></channel></rss> <?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Robur's blog</title><link>https://blog.robur.coop</link><atom:link href="https://blog.robur.coop/feed.xml" rel="self" type="application/rss+xml" /><description>The Robur cooperative blog</description><generator>yocaml</generator><webMaster>team@robur.coop</webMaster><item><title>Speeding up MirageVPN and use it in the wild</title><link>https://blog.robur.coop/articles/miragevpn-performance.html</link><pubDate>Tue, 16 Apr 2024 10:00:00 GMT</pubDate><description>Performance engineering of MirageVPN, speeding it up by a factor of 25.</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-performance.html</guid></item><item><title>GPTar</title><link>https://blog.robur.coop/articles/gptar.html</link><pubDate>Wed, 21 Feb 2024 10:00:00 GMT</pubDate><description>Hybrid GUID partition table and tar archive</description><guid isPermaLink="false">https://blog.robur.coop/articles/gptar.html</guid></item><item><title>Speeding elliptic curve cryptography</title><link>https://blog.robur.coop/articles/speeding-ec-string.html</link><pubDate>Tue, 13 Feb 2024 10:00:00 GMT</pubDate><description>How we improved the performance of elliptic curves by only modifying the underlying byte array</description><guid isPermaLink="false">https://blog.robur.coop/articles/speeding-ec-string.html</guid></item><item><title>Cooperation and Lwt.pause</title><link>https://blog.robur.coop/articles/lwt_pause.html</link><pubDate>Sun, 11 Feb 2024 10:00:00 GMT</pubDate><description>A disgression about Lwt and Miou</description><guid isPermaLink="false">https://blog.robur.coop/articles/lwt_pause.html</guid></item><item><title>Python's `str.__repr__()`</title><link>https://blog.robur.coop/articles/2024-02-03-python-str-repr.html</link><pubDate>Sat, 03 Feb 2024 10:00:00 GMT</pubDate><description>Reimplementing Python string escaping in OCaml</description><guid isPermaLink="false">https://blog.robur.coop/articles/2024-02-03-python-str-repr.html</guid></item><item><title>MirageVPN updated (AEAD, NCP)</title><link>https://blog.robur.coop/articles/miragevpn-ncp.html</link><pubDate>Mon, 20 Nov 2023 10:00:00 GMT</pubDate><description>How we resurrected MirageVPN from its bitrot state</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-ncp.html</guid></item><item><title>MirageVPN &amp; tls-crypt-v2</title><link>https://blog.robur.coop/articles/miragevpn.html</link><pubDate>Tue, 14 Nov 2023 10:00:00 GMT</pubDate><description>How we implementated tls-crypt-v2 for miragevpn</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn.html</guid></item></channel></rss>

View file

@ -26,6 +26,19 @@
<h3>Essays and ramblings</h3> <h3>Essays and ramblings</h3>
<ol reversed class="list-articles"><li> <ol reversed class="list-articles"><li>
<div class="side">
<a href="https://hannes.robur.coop">
<img src="https://www.gravatar.com/avatar/25558b4457cf73159f5427fdf2b4a717">
</a></div>
<div class="content">
<span class="date">2024-04-16</span>
<a href="articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a><br />
<p>Performance engineering of MirageVPN, speeding it up by a factor of 25.</p>
<div class="bottom">
<ul class="tags-list"><li><a href="/tags/ocaml.html">ocaml</a></li><li><a href="/tags/mirageos.html">mirageos</a></li><li><a href="/tags/cryptography.html">cryptography</a></li><li><a href="/tags/security.html">security</a></li><li><a href="/tags/vpn.html">vpn</a></li><li><a href="/tags/performance.html">performance</a></li></ul>
</div>
</div>
</li><li>
<div class="side"> <div class="side">
<a href="https://reyn.ir/"> <a href="https://reyn.ir/">
<img src="https://www.gravatar.com/avatar/54a15736b37879bc9708c1618a7cc130"> <img src="https://www.gravatar.com/avatar/54a15736b37879bc9708c1618a7cc130">

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-community"><h3> <div class="tag-box" id="tag-community"><h3>
<span>community</span> <span>community</span>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-cryptography"><h3> <div class="tag-box" id="tag-cryptography"><h3>
<span>cryptography</span> <span>cryptography</span>
1 entry</h3> 2 entries</h3>
<ul><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li></ul> <ul><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li></ul>
</div> </div>
</main> </main>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-git"><h3> <div class="tag-box" id="tag-git"><h3>
<span>git</span> <span>git</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-gpt"><h3> <div class="tag-box" id="tag-gpt"><h3>
<span>gpt</span> <span>gpt</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-mbr"><h3> <div class="tag-box" id="tag-mbr"><h3>
<span>mbr</span> <span>mbr</span>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-mirageos"><h3> <div class="tag-box" id="tag-mirageos"><h3>
<span>mirageos</span> <span>mirageos</span>
3 entries</h3> 4 entries</h3>
<ul><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul> <ul><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul>
</div> </div>
</main> </main>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-ocaml"><h3> <div class="tag-box" id="tag-ocaml"><h3>
<span>ocaml</span> <span>ocaml</span>
6 entries</h3> 7 entries</h3>
<ul><li><a href="/articles/gptar.html">GPTar</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/lwt_pause.html">Cooperation and Lwt.pause</a></li><li><a href="/articles/2024-02-03-python-str-repr.html">Python&apos;s `str.__repr__()`</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul> <ul><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/gptar.html">GPTar</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/lwt_pause.html">Cooperation and Lwt.pause</a></li><li><a href="/articles/2024-02-03-python-str-repr.html">Python&apos;s `str.__repr__()`</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul>
</div> </div>
</main> </main>

41
tags/performance.html Normal file
View file

@ -0,0 +1,41 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>
Robur's blog
</title>
<meta name="description" content="blog.robur.coop">
<link type="text/css" rel="stylesheet" href="../css/hl.css">
<link type="text/css" rel="stylesheet" href="../css/style.css">
<script src="../js/hl.js"></script>
<link rel="alternate" type="application/rss+xml" href="../feed.xml" title="blog.robur.coop">
</head>
<body>
<header>
<h1>blog.robur.coop</h1>
<blockquote>
The <strong>Robur</strong> cooperative blog.
</blockquote>
</header>
<main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-performance"><h3>
<span>performance</span>
1 entry</h3>
<ul><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li></ul>
</div>
</main>
<footer>
<a href="https://github.com/xhtmlboi/yocaml">Powered by <strong>YOCaml</strong></a>
<br />
</footer>
<script>hljs.highlightAll();</script>
</body>
</html>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-persistent storage"><h3> <div class="tag-box" id="tag-persistent storage"><h3>
<span>persistent storage</span> <span>persistent storage</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-python"><h3> <div class="tag-box" id="tag-python"><h3>
<span>python</span> <span>python</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-scheduler"><h3> <div class="tag-box" id="tag-scheduler"><h3>
<span>scheduler</span> <span>scheduler</span>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-security"><h3> <div class="tag-box" id="tag-security"><h3>
<span>security</span> <span>security</span>
3 entries</h3> 4 entries</h3>
<ul><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul> <ul><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul>
</div> </div>
</main> </main>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-tar"><h3> <div class="tag-box" id="tag-tar"><h3>
<span>tar</span> <span>tar</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-unicode"><h3> <div class="tag-box" id="tag-unicode"><h3>
<span>unicode</span> <span>unicode</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-unikernel"><h3> <div class="tag-box" id="tag-unikernel"><h3>
<span>unikernel</span> <span>unikernel</span>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (6)</a></li><li><a href="/tags/mirageos.html">mirageos (3)</a></li><li><a href="/tags/security.html">security (3)</a></li><li><a href="/tags/vpn.html">vpn (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/cryptography.html">cryptography (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (7)</a></li><li><a href="/tags/mirageos.html">mirageos (4)</a></li><li><a href="/tags/security.html">security (4)</a></li><li><a href="/tags/vpn.html">vpn (3)</a></li><li><a href="/tags/cryptography.html">cryptography (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li><li><a href="/tags/unikernel.html">unikernel (1)</a></li></ul>
<div class="tag-box" id="tag-vpn"><h3> <div class="tag-box" id="tag-vpn"><h3>
<span>vpn</span> <span>vpn</span>
2 entries</h3> 3 entries</h3>
<ul><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul> <ul><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul>
</div> </div>
</main> </main>