All of lore.kernel.org
 help / color / mirror / Atom feed
* Rust implementation status
@ 2017-03-05 11:42 Sascha Grunert
  2017-03-12 23:09 ` Vladimir Matveev
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Sascha Grunert @ 2017-03-05 11:42 UTC (permalink / raw)
  To: wireguard

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/.

What works for now:

- A main working executable (`cargo run -- -h`) which parses the command =
line parameters via the `clap` crate
- General debug and tracing support via the `log` crate
- Daemonizing support
- The wireguard library which creates a local socket and waits for =
incoming connections (reference implementation)

What needs to be done in the next steps:

- The actual parsing of the incoming message and writing them to the =
wireguard device (see `TODO`)
- Higher test coverage via unit testing
- A plan how to use the tokio.rs futures with the current implementation
- Wider operating system (Windows) support for the current =
implementation
- Get rid of the unsafe code

I tried to use as much idiomatic Rust (like using the `nix` crate and =
Rust vectors instead of raw pointers) as possible for now. So what do =
you think?

Best regards,
Sascha=

^ permalink raw reply	[flat|nested] 14+ messages in thread
* Re: Rust implementation status
@ 2017-03-13 17:00 Sascha Grunert
  0 siblings, 0 replies; 14+ messages in thread
From: Sascha Grunert @ 2017-03-13 17:00 UTC (permalink / raw)
  To: sopium; +Cc: wireguard

[-- Attachment #1: Type: text/plain, Size: 1456 bytes --]

Hey folks,

This sounds really great, do you think you can contribute your work to the main WireGuard Rust source?

Best regards,
Sascha

Am 13. März 2017 um 08:04 schrieb sopium <sopium@mysterious.site>:

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 🚀, 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



[-- Attachment #2.1: Type: text/html, Size: 2481 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-03-18 10:47 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-05 11:42 Rust implementation status Sascha Grunert
2017-03-12 23:09 ` Vladimir Matveev
2017-03-13 16:58   ` Sascha Grunert
2017-03-14 10:11     ` Vladimir Matveev
2017-03-15 15:59       ` Jason A. Donenfeld
2017-03-15 16:51         ` Vladimir Matveev
2017-03-15 17:03           ` Jason A. Donenfeld
2017-03-13  7:04 ` sopium
     [not found]   ` <CAHmME9oFbpNBTszO_Q5m8EwiG0F0SH6BUd+1SFZGUDGH0wQ0gg@mail.gmail.com>
2017-03-13 14:39     ` Jason A. Donenfeld
2017-03-14 13:08       ` sopium
2017-03-14 16:29 ` sopium
2017-03-14 18:49   ` Sascha Grunert
2017-03-18 10:51     ` Sascha Grunert
2017-03-13 17:00 Sascha Grunert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.