Skip to content

Custom tun#772

Merged
LeeSmet merged 18 commits intomasterfrom
custom_tun
Mar 3, 2026
Merged

Custom tun#772
LeeSmet merged 18 commits intomasterfrom
custom_tun

Conversation

@LeeSmet
Copy link
Contributor

@LeeSmet LeeSmet commented Feb 24, 2026

Initial implementation of a custom tun crate with some specifics to better suite the mycelium project

Closes #141
Closes #211
Closes #213

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
This allows proper simultaneous reading and writing to the interface, in
parallel

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
edition 2024, reference license file

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Throughput increased from 1.30Gbit/s to 1.60Gbit/s average on my dev
laptop, though this is likely because we now use a dedicated task for
reading and writing, which allows parallel reads and writes.

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Adds backpressure compared to the unbounded channel. Prevents the TUN
reads from outpacing the Dataplane operation, which would lead to
increased latency and potential OOM. Now the data will be accumulated in
kernel buffers, and eventually get dropped.

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Rather than doing an all or nothing coallesce on the received packets

This also fixes an issue with GRO'd packet csum computation, especially
on UDP

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Improves GRO performance by doing a batch of decryptions instead of
decrypting individual packets to then send them to the TUN interface

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
This should slightly reduce the amount of syscalls needed when sending
packets to/receiving packets from peers under heavy load.

Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
LeeSmet added 2 commits March 3, 2026 14:43
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
Signed-off-by: Lee Smet <lee.smet@hotmail.com>
@LeeSmet LeeSmet merged commit 4f3815d into master Mar 3, 2026
17 checks passed
@LeeSmet LeeSmet deleted the custom_tun branch March 3, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create custom tun crate See if adding ipv6 on linux tun can be done with ioctls only Implement TUN offloads

1 participant