mirror of
https://github.com/cwinfo/yggdrasil-network.github.io.git
synced 2024-11-09 01:40:26 +00:00
115 lines
5.6 KiB
Markdown
115 lines
5.6 KiB
Markdown
---
|
|
layout: post
|
|
title: "Version 0.3.6"
|
|
date: 2019-08-03 08:00:00 -0000
|
|
author: Neil Alexander
|
|
---
|
|
|
|
### New release!
|
|
|
|
It's been nearly five months since we released version 0.3.5 of Yggdrasil. In
|
|
that time we've seen the node count rise to over 400 nodes on the public network
|
|
at times (over 80% of which are running the latest released version) and we've
|
|
gained valuable insight to the kinds of challenges that our users have. We've
|
|
worked to fix a number of bugs and to improve Yggdrasil.
|
|
|
|
In terms of lines of code changed, version 0.3.6 is the biggest release of
|
|
Yggdrasil to date, with several thousands of lines of code affected. It
|
|
represents a massive refactoring exercise in which we've broken up and
|
|
modularised the code, dividing core Yggdrasil functionality, TUN/TAP, admin
|
|
socket and multicast features into their own respective Go packages.
|
|
|
|
### Fixes
|
|
|
|
Most of the user-facing changes in this release are fairly minimal, however some
|
|
bugs have been corrected. A complete list is available in the [changelog](/changelog.html).
|
|
|
|
Highlights include peers now being added correctly even when one or more
|
|
configured peers are unavailable or unreachable. Multicast interfaces are also
|
|
being evaluated more frequently now, which can help if an interface becomes
|
|
available or goes down after Yggdrasil has already started.
|
|
|
|
A number of bugs have been fixed in the TUN/TAP and IP-specific code, including
|
|
problems that affected ICMPv6 and Neighbour Discovery in TAP mode specifically.
|
|
This helps reliability on platforms where TAP mode is used more commonly, e.g.
|
|
on BSD platforms or on Windows, although this also improves TAP support on Linux
|
|
too.
|
|
|
|
### Refactoring and API
|
|
|
|
Around the previous release, it became obvious to us that our codebase was
|
|
turning into a monolith. We had pretty much all of the necessary behaviour in
|
|
a single `yggdrasil` package to run a single node, but this made our codebase
|
|
inflexible and difficult to maintain and extend. It also meant that Yggdrasil
|
|
was virtually impossible to integrate into other applications.
|
|
|
|
Our refactoring efforts in version 0.3.6 mean that our codebase is now easier to
|
|
manage and to understand. It also includes the first taste of our API! The
|
|
API makes it possible to take the Yggdrasil core, drop it into your own Go
|
|
application and use the Yggdrasil network as a fully end-to-end encrypted and
|
|
distributed transport layer. We've also moved all of the IP-specific code into
|
|
the TUN/TAP module, which means that Yggdrasil's core now provides a completely
|
|
protocol-agnostic transport.
|
|
|
|
Documentation on how to use the API to integrate Yggdrasil into your own
|
|
applications will follow soon—watch this space! In the meantime, [`godoc` can be
|
|
used to examine our new API functions](https://godoc.org/github.com/yggdrasil-network/yggdrasil-go/src/yggdrasil).
|
|
|
|
Please note though that **API functions are not yet finalised and may be subject
|
|
to change** in future versions. Yggdrasil is still alpha-grade software at this
|
|
point so all of the usual warnings apply.
|
|
|
|
### Platform Support
|
|
|
|
We enjoy great support from our community in bringing and packaging Yggdrasil on
|
|
new platforms. Since the release of version 0.3.5, the following third-party
|
|
packages have cropped up, and we are very grateful to the maintainers:
|
|
|
|
- A [new RPM build](https://copr.fedorainfracloud.org/coprs/leisteth/yggdrasil/) for Red Hat, Fedora, CentOS etc.
|
|
- An [AUR package](https://aur.archlinux.org/packages/yggdrasil-git/) for Arch Linux
|
|
- A [Void package](https://github.com/void-linux/void-packages/tree/master/srcpkgs/yggdrasil) for Void Linux
|
|
- A [MacPorts package](https://github.com/macports/macports-ports/blob/master/net/yggdrasil-go/Portfile) for macOS
|
|
|
|
We expect that any third-party packages which have not yet been updated for
|
|
v0.3.6 will be updated soon!
|
|
|
|
We are aware of a few outstanding issues with Windows, which are largely related
|
|
to one or two bugs in the [Water](https://github.com/songgao/water) library
|
|
which we use for TUN/TAP support. We are hoping to address these problems with
|
|
the maintainer of this library soon. Using Yggdrasil in router-only mode does
|
|
work as expected, but some bugs when using the TAP adapter still remain. In the
|
|
meantime, we'd certainly welcome any assistance in maintaining the Windows port
|
|
of Yggdrasil.
|
|
|
|
The iOS build has been largely neglected due to API changes, although hopefully
|
|
a new TestFlight build for version 0.3.6 will be available before too long.
|
|
|
|
### Upgrading
|
|
|
|
We recommend that all Yggdrasil users always run the latest version of the code
|
|
wherever possible, so please upgrade as soon as it is convenient. New downloads
|
|
are available from our [Builds](/builds.html) page and
|
|
[Neil](https://github.com/neilalexander)'s S3 repositories are up-to-date for
|
|
Debian and EdgeRouter installs.
|
|
|
|
If you have installed through a package manager, you should be able to upgrade
|
|
in-place as soon as the new packages are available. On macOS, you can simply
|
|
install the new `.pkg` from the builds page over the top of the old one. On
|
|
Windows, and on any installation where the binary was installed by hand, you can
|
|
simply replace the `yggdrasil` and `yggdrasilctl` binaries with the newly
|
|
released builds.
|
|
|
|
Building from source is simple if you have Git and Go 1.11 or later installed:
|
|
```
|
|
git clone https://github.com/yggdrasil-network/yggdrasil-go
|
|
cd yggdrasil-go
|
|
./build
|
|
```
|
|
|
|
### Feedback
|
|
|
|
We always welcome feedback, so please do feel free to join us either in our
|
|
[Matrix channel](https://riot.im/app/#/room/%23yggdrasil:matrix.org) or on IRC
|
|
in `#yggdrasil` on Freenode. You can also raise bug reports and issues in [our
|
|
GitHub repository](https://github.com/yggdrasil-network/yggdrasil-go/issues).
|