Skip to content

Releases: threefoldtech/mycelium

v0.2.0

29 Dec 14:36
v0.2.0
dc1a3a2
Compare
Choose a tag to compare

Added

  • Link local peer discovery over IPv6. The system will automatically detect peers on the same LAN and try to connect to them.
    This makes sure peers on the same network don't needlessly use bandwidth on external "hop" peers.
  • Data packets now carry a Hop Limit field as part of the header. Every node decrements this value, and if it is decremented
    to zero, the packet is discarded
  • Intermediate nodes can now send ICMP packets back to the source in
    reply to a dropped packet. This is useful if a hop does not have route
    to forward a packet, or the hop count for a packet reaches 0.
  • Local node now returns an ICMP Destination unreachable - no route if a
    packet is sent on the TUN interface and there is no key for the remote
    address (so the user data can't be encrypted).
  • Peers connected over IPv4 now incur a higher processing cost, causing
    IPv6 connections to be preferred for forwarding data.
  • Peer addresses now include a protocol specifier, so multiple underlay
    connections can be specified in the future.

Changed

  • The peer manager now tracks sufficient info of each connected peer to
    avoid going through the router every time to see if it needs to
    reconnect to said peers.
  • We don't send the receiver nodes IP address in IHU packets anymore, as the packet is sent over a unicast link.
    This is valid per the babel rfc.
  • Setting the peers on the CLI now requires specifying the protocol to use.
    For now only TCP is supported.
  • Change --port flag to --tcp-listen-port to more accurately reflect
    what it controls, as well as the fact that it is only for TCP.

Removed

  • Handshake when connecting to a new peer has been removed.

v0.1.3

22 Nov 17:07
v0.1.3
6b7b054
Compare
Choose a tag to compare

Added

  • Add info log when next hop of a peer changes.
  • Add windows builds to CI.

Changed

  • When printing the connected peers, print the underlay IP instead of the overlay IP.
  • The link cost of a peer is now the smoothed average. This makes sure a single short latency spike doesn't disrupt routing.
  • On Linux, set the TUN ip as /7 and avoid setting a /64 route. This brings it in line with OSX.
  • When selecting the best route for a subnet, consider the currently
    installed route and only switch if it is significantly better, or
    directly connected.
  • Increase the static link cost component of a peer. This will increase
    the value of a hop in the metric of a route, in turn increasing the
    impact of multiple hops on route selection. The route selection will
    thus be more inclined to find a path with fewer hops toward a
    destination. Ultimately, if multiple paths to a destination exist with
    roughly the same latency, they one with fewer hops should be
    preferred, since this avoids putting unnecessary pressure on multiple
    nodes in the network.
  • IHU packets now include the underlay IP instead of the overlay IP.
  • When a new peer connects the underlay IP is logged instead of the
    overlay IP.

Fixed

  • Ignore retraction updates if the route table has an existing but retracted route already. This fixes
    an issue where retracted routes would not be flushed from the routing table.

Removed

  • All uses of the exchanged overlay IP in the peer handshake are fully
    removed. Handshake is still performed to stay backwards compatible
    until the next breaking release.

v0.1.2

21 Nov 12:42
v0.1.2
31b71cc
Compare
Choose a tag to compare

Changed

  • Allow routes with infinite metric for a subnet to be selected. They will only be selected if no feasible route
    with finite metric exists. They are also still ignored when looking up a route to a subnet.

Fixed

  • Don't trigger an update when a route retraction comes in for a subnet where the route is already retracted.
    This fixes a potential storm of retraction requests in the network.

v0.1.1

21 Nov 10:25
v0.1.1
dc043cf
Compare
Choose a tag to compare

Added

  • CHANGELOG.md file to keep track of notable additions, changes, fixes, deprecations, and removals.
  • A peer can now detect if it is no longer useable in most cases, allowing it to notify the router if it died. This
    allows near instant retraction of routes if a connection dies, decreasing the amount of time needed to find a
    suitable alternative route.
  • Add CHANGELOG.md entries when creating a release.
  • When sending SIGUSR1 to the process, the routing table dump will now include a list of the public key derived IP
    for every currently known subnet.
  • You can now set the name of the TUN interface on the command line with the --tun-name flag.
  • Added support for TUN devices on OSX.

Changed

  • When a peer is found to be dead, routes which use it as next-hop now have their metric set to infinity.
    If the route is selected, route selection for the subnet is run again and if needed a triggered update is sent.
    This will allow downstream peers to receive a timely update informing them of a potentially retracted route,
    instead of having to wait for route expiration.
  • Account for the link with the peer of a route when performing route selection. This was not the case previously,
    and could theoretically lead to a case where a route was selected with a non-optimal path, because the lower metric
    was offset by a high link cost of the peer.

Fixed

  • Remove trailing 'e' character from release archive names

v0.1.0

15 Nov 17:37
v0.1.0
3071d59
Compare
Choose a tag to compare

MVP gen 2

04 Aug 14:31
v0.0.2
a893d4e
Compare
Choose a tag to compare
MVP gen 2 Pre-release
Pre-release

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.

First MVP

03 Aug 14:39
v0.0.1
a07f093
Compare
Choose a tag to compare
First MVP Pre-release
Pre-release

Working (hopefully) prototype with following features:

  • e2e encryption of data
  • dynamic route learning and adjustment
  • single host (routing is done based on full IP's, not based on prefixes)
  • supports asymmetric routing