Releases: yggdrasil-network/yggdrasil-go
Releases · yggdrasil-network/yggdrasil-go
Version 0.5.10
Added
- The
getPeers
admin endpoint will now report the current transmit/receive rate for each given peer - The
getMulticastInterfaces
admin endpoint now reports much more useful information about each interface, rather than just a list of interface names
Changed
- Minor tweaks to the routing algorithm:
- The next-hop selection will now prefer shorter paths when the costed distance is otherwise equal, tiebreaking on peering uptime to fall back to more stable paths
- Link cost calculations have been smoothed out, making the costs less sensitive to sudden spikes in latency
- Reusable name lookup and peer connection logic across different peering types for more consistent behaviour
- Some comments in the configuration file have been revised for clarity
- Upgrade dependencies
Fixed
- Nodes with
IfName
set tonone
will now correctly respond to debug RPC requests - The admin socket will now be created reliably before dropping privileges with
-user
- Clear supplementary groups when providing a group ID as well as a user ID to
-user
- SOCKS and WebSocket peerings should now use the correct source interface when specified in
InterfacePeers
Peers
andInterfacePeers
addresses that are obviously invalid (such as unspecified or multicast addresses) will now be correctly ignored- Listeners should now shut down correctly, which should resolve issues where multicast listeners for specific interfaces would not come back up or would log errors
Version 0.5.9
Added
- New command line option
-user
for changing the process UID/GID
Changed
- The routing algorithm has been updated with RTT-aware link costing, which should prefer lower latency links over higher latency links where possible
- The calculated cost is an average of the link RTT, but newly established links are costed higher to begin with, such that unstable peerings can be avoided
- Link costs are only used where multiple next-hops are available and will be ignored if there is only one loop-free path to the destination
- This is protocol-compatible with existing v0.5.x nodes but will have the best results when peering with nodes that are also running the latest version
- The
getPeers
endpoint will now report the calculated link cost for each given peer
- Upgrade dependencies
Fixed
- Multicast discovery should now work again when building Yggdrasil as an Android framework
- Multicast discovery will now correctly ignore interfaces that are not marked as running
- Ephemeral links, such as those added by multicast, will no longer try to reconnect in a fast loop, fixing a high CPU issue
- The TUN interface will no longer stop working when hitting a segment read error from vectorised reads
- The
AllowedPublicKeys
option will once again no longer apply to multicast peerings, as was originally intended - A potential panic when shutting down peering links has been fixed
- A redundant system call for setting MTU on OpenBSD has been removed
Version 0.5.8
Fixed
- A bug which caused startup problems on Windows and FreeBSD should be fixed
- Resolved some minor link state and listener management bugs during shutdown
Version 0.5.7
Added
- WebSocket support for peerings, by using the new
ws://
scheme inListen
andPeers
- Additionally, the
wss://
scheme can be used to connect to a WebSocket peer behind a HTTPS reverse proxy
- Additionally, the
Changed
- On Linux, the TUN adapter now uses vectorised reads/writes where possible, which should reduce the amount of CPU time spent on syscalls and potentially improve throughput
- Link error handling has been improved and various link error messages have been rewritten to be clearer
- Upgrade dependencies
Fixed
- Multiple multicast connections to the same remote machine should now work correctly
- You may get two connections in some cases, one inbound and one outbound, this is known and will not cause problems
- Running as a Windows service should be more reliable with service startup and shutdown bugs fixed
Version 0.5.6
- Go 1.21 is now required to build Yggdrasil
Added
- The
getPeers
endpoint now reports the RTT/latency of directly connected peers
Changed
- The tree parent selection algorithm now prefers the lowest latency peers instead of the most stable
- Session key exchange logic has been changed to improve throughput and reduce occasional jitter
Fixed
- Bloom filter hashing now works correctly on big-endian architectures
- Incorrect buffer pool usage has been fixed, reducing memory allocations
- The multicast beacon interval now backs off correctly, reducing the number of beacons sent
- A denial-of-service vulnerability in the QUIC library has been fixed with a dependency update
Version 0.5.5
Added
- A new peer option
?maxbackoff=X
has been added to control the maximum backoff time for a given peer, supports duration values like5m
,1h
etc
Changed
- The maximum backoff period for failing peer connections has been reduced to just over 1 hour, compared to 4.5 hours before
- The
getPeers
endpoint now sorts peers in a more stable fashion - Upgrade dependencies
Fixed
- A bug where QUIC listeners could stop listening for incoming connections unexpectedly has been fixed
- The priority tiebreak between multiple peerings to the same node has been fixed
- Peer connection ordering is no longer sensitive to poor system time resolution
- The admin socket now verifies the length of input public keys
- The
PPROFLISTEN
environment variable has been fixed and now starts the pprof listener correctly - A panic in
getPeers
has been fixed when using abstract UNIX sockets on Linux
Version 0.5.4
Fixed
- Fixed a crash that could happen when calculating the size of bloom filters during encoding
Version 0.5.3
Fixed
- Fixed a data race from buffered pathfinder traffic
- Fix a bug where the next-hop selection may not take shortcuts through treespace
- Backoffs are now reset correctly when a successful handshake is completed
- Backoffs will no longer exceed roughly 4.5 hours when peers are down for a long time
- The
-normaliseconf
option will now work correctly withPrivateKeyPath
- Improved the reliability of QUIC peering setup by disabling 0-RTT
Version 0.5.2
Added
- New
-publickey
command line option that prints the derived public key from a configuration file - Support for connecting to TLS peers via SOCKS with the new
sockstls://
link schema
Changed
- Stabilise tree parent selection algorithm
- Improved logging when the TUN interface fails to set up
Fixed
- Fixed a panic that could occur when a connection reaches an inconsistent error state
- The admin socket will now report more peering handshake error conditions in
getPeers
- Yggdrasil will no longer panic at startup when duplicate peers are configured
- The
build
script will no longer incorrectly importLDFLAGS
from the environment
Version 0.5.1
Fixed
- Fix the Debian package so that upgrades are handled more smoothly