mirror of
https://github.com/cwinfo/yggdrasil-network.github.io.git
synced 2024-11-10 03:20:25 +00:00
commit
d2af7dcde4
114
_posts/2019-08-03-release-v0-3-6.md
Normal file
114
_posts/2019-08-03-release-v0-3-6.md
Normal file
@ -0,0 +1,114 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Version 0.3.6"
|
||||
date: 2019-08-03 08:00:00 -0000
|
||||
author: Neil Alexander
|
||||
---
|
||||
|
||||
### Version 0.3.6
|
||||
|
||||
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.md).
|
||||
|
||||
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.
|
||||
|
||||
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.md) 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).
|
33
changelog.md
33
changelog.md
@ -25,6 +25,39 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
||||
- in case of vulnerabilities.
|
||||
-->
|
||||
|
||||
## [0.3.6] - 2019-08-03
|
||||
### Added
|
||||
- Yggdrasil now has a public API with interfaces such as `yggdrasil.ConnDialer`, `yggdrasil.ConnListener` and `yggdrasil.Conn` for using Yggdrasil as a transport directly within applications
|
||||
- Session gatekeeper functions, part of the API, which can be used to control whether to allow or reject incoming or outgoing sessions dynamically (compared to the previous fixed whitelist/blacklist approach)
|
||||
- Support for logging to files or syslog (where supported)
|
||||
- Platform defaults now include the ability to set sane defaults for multicast interfaces
|
||||
|
||||
### Changed
|
||||
- Following a massive refactoring exercise, Yggdrasil's codebase has now been broken out into modules
|
||||
- Core node functionality in the `yggdrasil` package with a public API
|
||||
- This allows Yggdrasil to be integrated directly into other applications and used as a transport
|
||||
- IP-specific code has now been moved out of the core `yggdrasil` package, making Yggdrasil effectively protocol-agnostic
|
||||
- Multicast peer discovery functionality is now in the `multicast` package
|
||||
- Admin socket functionality is now in the `admin` package and uses the Yggdrasil public API
|
||||
- TUN/TAP, ICMPv6 and all IP-specific functionality is now in the `tuntap` package
|
||||
- `PPROF` debug output is now sent to `stderr` instead of `stdout`
|
||||
- Node IPv6 addresses on macOS are now configured as `secured`
|
||||
- Upstream dependency references have been updated, which includes a number of fixes in the Water library
|
||||
|
||||
### Fixed
|
||||
- Multicast discovery is no longer disabled if the nominated interfaces aren't available on the system yet, e.g. during boot
|
||||
- Multicast interfaces are now re-evaluated more frequently so that Yggdrasil doesn't need to be restarted to use interfaces that have become available since startup
|
||||
- Admin socket error cases are now handled better
|
||||
- Various fixes in the TUN/TAP module, particularly surrounding Windows platform support
|
||||
- Invalid keys will now cause the node to fail to start, rather than starting but silently not working as before
|
||||
- Session MTUs are now always calculated correctly, in some cases they were incorrectly defaulting to 1280 before
|
||||
- Multiple searches now don't take place for a single connection
|
||||
- Concurrency bugs fixed
|
||||
- Fixed a number of bugs in the ICMPv6 neighbor solicitation in the TUN/TAP code
|
||||
- A case where peers weren't always added correctly if one or more peers were unreachable has been fixed
|
||||
- Searches which include the local node are now handled correctly
|
||||
- Lots of small bug tweaks and clean-ups throughout the codebase
|
||||
|
||||
## [0.3.5] - 2019-03-13
|
||||
### Fixed
|
||||
- The `AllowedEncryptionPublicKeys` option has now been fixed to handle incoming connections properly and no longer blocks outgoing connections (this was broken in v0.3.4)
|
||||
|
2
index.md
2
index.md
@ -11,7 +11,7 @@ Although Yggdrasil shares many similarities with [cjdns](https://github.com/cjde
|
||||
|
||||
## Project Status
|
||||
|
||||
The project is currently in early stages but it is being actively developed. We have recently released [version 0.3.5](changelog.md) and are still regularly working on updates.
|
||||
The project is currently in early stages but it is being actively developed. We have recently released [version 0.3.6](changelog.md) and are still regularly working on updates.
|
||||
|
||||
A small number of users have been using and stress-testing Yggdrasil quite heavily for a number of purposes, including but not limited to secure remote access (SSH and VNC), access to Matrix, Jabber and IRC servers and even some video streams, large file transfers and performance tests. We have a number of [internal services](services.md) available, contributed and operated by the community.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user