Releases: threefoldtech/mycelium
Releases · threefoldtech/mycelium
v0.7.1
v0.7.0
Added
- Optional DNS resolver. When enabled this will bind UDP port 53 on the system.
For now, this uses the system configured resolvers to resolve queries. In the
future, this will be expanded to redirect queries for certain TLD's to alternative
backend.
Changed
- The Quic connection type now uses quic datagrams to transport data (packets
coming from the TUN device) to the peer. Protocol traffic is still sent over a
bidirectional Quic stream (which supports retransmits).
Fixed
- Return actuall amount of bytes sent to peers instead of the amount of bytes received
from them. - Improve handling of completely local packets on MacOS. This will allow the kernel
to reply to ping packets send from the local system to the TUN interface, among
other things. - Fixed a potential system lock when sending messages to a (recently) offline receiver.
v0.6.2
IMPORTANT
This release changes the default location of the private key used to derive the
local IP address. If you upgrade to this version and want to keep your IP/subnet,
and don't set the -k/--key-file flag, move your key file to the new default
location or add the flag pointing to your existing key file.
Added
- New log format option
plain, this option is the same as logfmt, but with colors
always disabled. - Added auto discovery of Socks5 proxies on the overlay, and the ability to proxy
local Socks5 connections to a chosen (manual or automatic) remote. - New
generate-keyssubcommand which generates the key file without running a
daemon. It can also be used to generate fresh keys, should that be needed.
Changed
- Default key path (which is used if the
--key-fileflag isn't set) is changed
to a fixed path on the system in application data, instead of the old local file.
Fixed
- The RPC API now returns an empty result instead of an error when popMessage does
not have any message to return within the specified timeout.
v0.6.1
Added
- When a route is used which is about to expire, we now send a route request to
try and refresh its duration before it expires. - We now track when a peer was fist discovered and when we last connected to it.
This info is displayed in the CLI when listing peers. - We now maintain a cache of recently sent route requests, so we can avoid spamming
peers with duplicate requests.
Changed
- Only keep a record of retracted routes for 6 seconds instead of 60. We'll track
how this affects the route propagation before removing this altogether.
Fixed
- Fixed an unsoundness issue in the routing table clone implementation.
- Clear dead peer buffer once peers have been removed from the routing table.
- Properly reply with an address unreachable ICMP when pinging an IP in the local
subnet which does not exist. - Verify a packet has sufficient TTL to be routed before injecting it, and reply
with a TTL exceeded otherwise. This fixes an issue where packets with a TTL of
1 and 0 originating locally would not result in a proper ICMP reply. This happens
for instance when usingtraceroute. - Check the local seqno request cache before sending a seqno request to a peer,
to avoid spamming in certain occasions. - Don't accept packet for a destination if we only have fallback routes for said
destination.
MVP gen 2
Notable improvements compared to previous version:
- Added some logging on route acquisition (debug and info lvl logs). Logs can be enabled by passing an env var:
RUST_LOG=mycelium=debug. Trace logging is also possible, but this has a very noticeable performance impact - Precalculate shared keys with remotes and save them on the router. This hugely increases performance compared to the previous version. Also ping latency is now a lot more consistent as a result.