From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Jason@zx2c4.com Received: from krantz.zx2c4.com (localhost [127.0.0.1]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id dcfa4680 for ; Mon, 13 Mar 2017 14:35:46 +0000 (UTC) Received: from frisell.zx2c4.com (frisell.zx2c4.com [192.95.5.64]) by krantz.zx2c4.com (ZX2C4 Mail Server) with ESMTP id a475dafa for ; Mon, 13 Mar 2017 14:35:46 +0000 (UTC) Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTP id c5dfa93c for ; Mon, 13 Mar 2017 14:35:46 +0000 (UTC) Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 6e328425 (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128:NO) for ; Mon, 13 Mar 2017 14:35:46 +0000 (UTC) Received: by mail-ot0-f179.google.com with SMTP id o24so113523220otb.1 for ; Mon, 13 Mar 2017 07:39:06 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <15ac67bc30c.105593191200671.3458978345094445007@mysterious.site> From: "Jason A. Donenfeld" Date: Mon, 13 Mar 2017 07:39:03 -0700 Message-ID: Subject: Re: Rust implementation status To: sopium Content-Type: multipart/alternative; boundary=001a113d054a58b3c0054a9dacc6 Cc: WireGuard mailing list List-Id: Development discussion of WireGuard List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --001a113d054a58b3c0054a9dacc6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hey Sopium, Wonderful! I'm traveling now but will review first thing next week. Please make sure you've implemented https://www.wireguard.io/xplatform/ so that all implementations can share the same tooling. Jason On Mar 13, 2017 00:04, "sopium" wrote: Hi, 2017-03-05 20:42 GMT+09:00 Sascha Grunert : > Hey folks, > > I want to call for participation of the Rust userspace implementation of WireGuard. The template for the initial implementation was this: https://www.wireguard.io/xplatform/ and can be found here: https://git.zx2c4.com/wireguard-rs/. > > [......] I have got an initial working prototype of the WireGuard protocol in Rust. The code is at the `wg` branch of `TiTun`[1]. 1. https://github.com/sopium/titun/tree/wg Most of the essential aspects of the WireGuard protocol is implemented. The missing parts should not be too hard to add. Only Linux is supported, for the moment. The implementation is quite fast =F0=9F=9A=80, although I haven't spent a l= ot of effort in optimization yet. It uses a fixed number of threads to process packets from UDP socket or TUN device (similar to the other Haskell impl, nara), and uses fine-grained locking to exploit parallelism. I get 600Mbps+ to 800Mbps+ throughput and about 0.5ms latency, between my Haswell Xeon-E3 desktop and a local KVM instance. It should be able to get even faster with SO_REUSEPORT sockets and multi-queue TUN devices. Please review and test. Regards, Sopium _______________________________________________ WireGuard mailing list WireGuard@lists.zx2c4.com https://lists.zx2c4.com/mailman/listinfo/wireguard --001a113d054a58b3c0054a9dacc6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hey Sopium,

= Wonderful! I'm traveling now but will review first thing next week.

Please make sure you've= implemented=C2=A0https://w= ww.wireguard.io/xplatform/ so that all implementations can share the sa= me tooling.

Jason
<= /div>

On Mar 13, 2= 017 00:04, "sopium" <sopium@mysterious.site> wrote:
Hi,

2017-03-05 20:42 GMT+09:00 Sascha Grunert <saschagrunert@icloud.com>:
> Hey folks,
>
> I want to call for participation of the Rust userspace implementation = of WireGuard. The template for the initial implementation was this: https://www.wireguard.io/xplatform/ and can be found here: https://git.zx2c4.com/wireguard-rs/.
>
> [......]

I have got an initial working prototype of the WireGuard protocol in
Rust.

The code is at the `wg` branch of `TiTun`[1].

1. https://github.com/sopium/titun/tree/wg

Most of the essential aspects of the WireGuard protocol is
implemented. The missing parts should not be too hard to add.

Only Linux is supported, for the moment.

The implementation is quite fast =F0=9F=9A=80, although I haven't spent= a lot of
effort in optimization yet. It uses a fixed number of threads to
process packets from UDP socket or TUN device (similar to the other
Haskell impl, nara), and uses fine-grained locking to exploit
parallelism. I get 600Mbps+ to 800Mbps+ throughput and about 0.5ms
latency, between my Haswell Xeon-E3 desktop and a local KVM
instance. It should be able to get even faster with SO_REUSEPORT
sockets and multi-queue TUN devices.

Please review and test.

Regards,
Sopium


_______________________________________________
WireGuard mailing list
WireGuard@lists.zx2c4.com<= br> https://lists.zx2c4.com/mailman/listinfo/wire= guard

--001a113d054a58b3c0054a9dacc6--