mirror of
https://github.com/cwinfo/yggdrasil-network.github.io.git
synced 2025-02-28 18:41:34 +00:00
Add blog post for v0.3
This commit is contained in:
parent
c0ae35f3ba
commit
286fadbc80
122
_posts/2018-12-12-announcing-v0-3.md
Normal file
122
_posts/2018-12-12-announcing-v0-3.md
Normal file
@ -0,0 +1,122 @@
|
||||
---
|
||||
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.
|
||||
|
||||
### New features
|
||||
|
||||
You'll be able to see the full list of modifications that have been made in our
|
||||
[changelog](changelog.md), but I'd like to take the time to discuss some of our
|
||||
bigger changes.
|
||||
|
||||
Perhaps the largest user-facing 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.
|
||||
|
||||
In the background, we've made a 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.
|
||||
|
||||
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!
|
Loading…
x
Reference in New Issue
Block a user