2018-12-10 21:41:20 +00:00
|
|
|
---
|
|
|
|
layout: post
|
|
|
|
title: "Announcing Yggdrasil Network v0.3"
|
|
|
|
date: 2018-12-12 00:00:00 -0000
|
|
|
|
author: Neil Alexander
|
|
|
|
---
|
|
|
|
|
|
|
|
### It's finally here
|
|
|
|
|
|
|
|
At the end of 2017, Yggdrasil's first commit was uploaded to GitHub - a project
|
|
|
|
to explore whether it was possible to build a decentralised, end-to-end
|
|
|
|
encrypted and scalable compact routing scheme modelled around the concept of a
|
|
|
|
global spanning tree. Many concept routing schemes that we have seen to date
|
|
|
|
seem to have problems with scalability - after the network exceeds a certain
|
|
|
|
size, they either fail to perform or they start to rely on centralised points in
|
|
|
|
order to consolidate routing information. We wanted to build something that
|
|
|
|
would not be subject to these limitations and to maintain decentralisation as
|
|
|
|
far as possible. To our knowledge, this hasn't quite been achieved before.
|
|
|
|
|
|
|
|
Throughout the course of 2018, Yggdrasil has gone from being a very early-stage
|
|
|
|
project supporting only a single platform to a feature-strong and relatively
|
|
|
|
stable project which now runs on many supported platforms. Although we currently
|
|
|
|
still haven't advanced from the "alpha" label, our network has grown to exceed
|
|
|
|
70 nodes across the world (and growing slowly but steadily), with a good portion
|
|
|
|
of these users coming on-board and contributing their own
|
|
|
|
[services](services.md) to the network and using the network for their own
|
|
|
|
purposes. We've even had a small amount of publicity - [Toronto
|
|
|
|
Mesh](https://tomesh.net) have been exploring using Yggdrasil on their city-wide
|
|
|
|
mesh net, and even [presented some Yggdrasil
|
|
|
|
fundamentals](https://www.nuug.no/aktiviteter/20181009-mesh/) to the Norwegian
|
|
|
|
Unix User Group (NUUG) back in October.
|
|
|
|
|
|
|
|
So far, we believe that Yggdrasil is well on track to delivering on its promises
|
|
|
|
to build a fully end-to-end encrypted, self-arranging IPv6 network. We also
|
|
|
|
believe that Yggdrasil should be scalable on paper; we have somewhat proven
|
|
|
|
this in simulations, but the real proof will come in how the Yggdrasil Network
|
|
|
|
scales up in the real world, on real hardware, across real links. Having users
|
|
|
|
helping us to test brings us closer to our goal and enhances our understanding
|
|
|
|
of how our software will behave on large-scale network graphs.
|
|
|
|
|
|
|
|
Version 0.3 has been quite some time coming - we released version 0.2.7 on the
|
|
|
|
13th October and we have been working since then on what will make it into this
|
|
|
|
release. Even though it feels in some ways that version 0.3 is a relatively
|
|
|
|
small evolutionary release, it's actually by far our biggest release yet. We've
|
|
|
|
included quite a large list of fixes, changes and even new features and over
|
|
|
|
2000 lines of code changed. We've taken a lot of feedback from our users about
|
|
|
|
their use-cases and pain points, and we've collected topographical data from
|
|
|
|
various contributor nodes to try and get a good view of what the network looks
|
|
|
|
like. We've even experienced some rather large topology changes and enjoyed
|
|
|
|
relatively good network stability throughout.
|
|
|
|
|
|
|
|
For much of the time that we were developing v0.3, we had thought that there
|
|
|
|
would end up being protocol-breaking changes and that this would render v0.3
|
|
|
|
incompatible with nodes running previous versions. I am happy to announce that
|
|
|
|
we have **not** needed to introduce breaking changes at this stage and currently
|
|
|
|
the network has been running a mix of both older and newer developmental nodes
|
|
|
|
without any particular issues.
|
|
|
|
|
2018-12-10 22:37:42 +00:00
|
|
|
### Features
|
2018-12-10 21:41:20 +00:00
|
|
|
|
2018-12-10 22:37:42 +00:00
|
|
|
You can see the full list of modifications that have been made in our
|
|
|
|
[changelog](changelog.md).
|
2018-12-10 21:41:20 +00:00
|
|
|
|
2018-12-10 22:37:42 +00:00
|
|
|
Perhaps the largest user-visible change is the introduction of Crypto-Key
|
|
|
|
Routing for traffic tunnelling, allowing you to effectively use Yggdrasil as a
|
|
|
|
VPN for both IPv4 and IPv6 traffic between any two given points on the network.
|
|
|
|
This tunnelled traffic enjoys the same benefits as regular Yggdrasil IPv6
|
|
|
|
traffic in that it is end-to-end encrypted and our many optimisations assist in
|
|
|
|
preventing TCP-over-TCP anomalies that often arise in other solutions. I wrote
|
|
|
|
an introductory [blog post](_posts/2018-11-06-crypto-key-routing.md) back at the
|
|
|
|
beginning of November about CKR, which explains some more about how to configure
|
|
|
|
it and how it works.
|
2018-12-10 21:41:20 +00:00
|
|
|
|
2018-12-10 22:37:42 +00:00
|
|
|
In the background, we've made a substantial change from using a Kademlia-based
|
|
|
|
DHT to a Chord-based DHT. This has some advantages in that a node can bootstrap
|
|
|
|
and start working with far less state information than was needed before.
|
|
|
|
Additional state, which we learn about automatically through searches, helps to
|
|
|
|
speed up DHT lookups. We also believe that using Chord can help us to reduce
|
|
|
|
some idle DHT chatter on the network in the future, and to help nodes converge
|
|
|
|
more quickly when they change their coordinates on the network.
|
2018-12-10 21:41:20 +00:00
|
|
|
|
|
|
|
We've fixed a reasonable number of bugs and crashes, including in the DHT,
|
|
|
|
switch and ICMPv6 code, and have made a number of additions to the admin socket
|
|
|
|
in order to support new functionality and to make parameter naming more
|
|
|
|
consistent throughout.
|
|
|
|
|
|
|
|
### Upgrading
|
|
|
|
|
|
|
|
Our CI pipeline automatically produces builds for all supported platforms and
|
|
|
|
these will become available on our [Builds page](builds.md). In addition, our S3
|
|
|
|
repository for Debian and RPM-based distributions will also be updated with the
|
|
|
|
new package releases.
|
|
|
|
|
|
|
|
New macOS .pkg installers are now available as a part of the v0.3 release too,
|
|
|
|
so installing and upgrading on macOS is now significantly easier than before.
|
|
|
|
You can find these installers on the [Builds page](builds.md) also.
|
|
|
|
|
|
|
|
On other platforms, simply download the latest binary for your platform and drop
|
|
|
|
it into place. Remember to take a backup of your configuration and normalise it,
|
|
|
|
which will add any new options for features in v0.3:
|
|
|
|
```
|
|
|
|
cp /path/to/yggdrasil.conf /var/backups/yggdrasil.conf
|
|
|
|
yggdrasil -useconffile /var/backups/yggdrasil.conf -normaliseconf > /path/to/yggdrasil.conf
|
|
|
|
```
|
|
|
|
|
|
|
|
### What's next?
|
|
|
|
|
|
|
|
Our work is far from over. We still have a list of things that can potentially
|
|
|
|
be rolled into future releases and we will be looking to see what we should
|
|
|
|
prioritise for our next version.
|
|
|
|
|
|
|
|
As always, we'll be hanging around in our Matrix/IRC channel too, so please feel
|
|
|
|
free to join and chat to us:
|
|
|
|
|
|
|
|
- `#yggdrasil:matrix.org` on Matrix
|
|
|
|
- `chat.freenode.net` channel `#yggdrasil` on IRC
|
|
|
|
|
|
|
|
A big thanks to our contributors, particularly those who have worked on creating
|
|
|
|
packages for Yggdrasil and bringing it to their distributions of choice, and to
|
|
|
|
all of the users who use Yggdrasil, contributing services and providing feedback
|
|
|
|
to us on a regular basis!
|