From 3433c06c9379450687ee5ba9f721c747e6cef136 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Tue, 6 Mar 2018 14:02:44 +0000 Subject: [PATCH] Initial commit --- _config.yml | 4 +++ _layouts/default.html | 64 +++++++++++++++++++++++++++++++++++++++++++ assets/css/style.scss | 21 ++++++++++++++ index.md | 10 +++++++ platforms.md | 48 ++++++++++++++++++++++++++++++++ 5 files changed, 147 insertions(+) create mode 100644 _config.yml create mode 100644 _layouts/default.html create mode 100644 assets/css/style.scss create mode 100644 index.md create mode 100644 platforms.md diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..85e4172 --- /dev/null +++ b/_config.yml @@ -0,0 +1,4 @@ +theme: jekyll-theme-minimal +name: Yggdrasil +title: Yggdrasil +description: Encrypted networking diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..47ed2ad --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,64 @@ + + + + + + +{% seo %} + + + + + + +
+
+

{{ site.title | default: site.github.repository_name }}

+

{{ site.description | default: site.github.project_tagline }}

+ +

+ {% for page in site.pages %} + {{ page.title }}
+ {% endfor %} +

+ +

+ GitHub
+ CircleCI
+ Latest Builds +

+ +

+ + {% if site.show_downloads %} + + {% endif %} +
+
+ + {{ content }} + +
+
+ + + + {% if site.google_analytics %} + + {% endif %} + + diff --git a/assets/css/style.scss b/assets/css/style.scss new file mode 100644 index 0000000..8eff195 --- /dev/null +++ b/assets/css/style.scss @@ -0,0 +1,21 @@ +--- +--- + +@import "jekyll-theme-minimal"; + +section { + display: table-cell; + width: 100%; + float: none; +} + +header { + display: table-cell; + position: relative; +} + +div.wrapper { + margin-left: none; + margin-right: none; + width: 100%; +} diff --git a/index.md b/index.md new file mode 100644 index 0000000..9c4f86e --- /dev/null +++ b/index.md @@ -0,0 +1,10 @@ +## What is it? + +This is a toy implementation of an encrypted IPv6 network, with many good ideas stolen from [cjdns](https://github.com/cjdelisle/cjdns), which was written to test a particular routing scheme that was cobbled together one random afternoon. +It's notably not a shortest path routing scheme, with the goal of scalable name-independent routing on dynamic networks with an internet-like topology. +It's named Yggdrasil after the world tree from Norse mythology, because that seemed like the obvious name given how it works. +For a longer, rambling version of this readme with more information, see: [doc](doc/README.md). +A very early incomplete draft of a [whitepaper](doc/Whitepaper.md) describing the protocol is also available. + +This is a toy / proof-of-principle, so it's not even alpha quality software--any nontrivial update is likely to break backwards compatibility with no possibility for a clean upgrade path. +You're encouraged to play with it, but it is strongly advised not to use it for anything mission critical. diff --git a/platforms.md b/platforms.md new file mode 100644 index 0000000..c16c27f --- /dev/null +++ b/platforms.md @@ -0,0 +1,48 @@ +### Platforms + +#### Linux + +- Should work out of the box on most Linux distributions with `iproute2` installed. +- systemd service scripts are included in the `contrib/systemd/` folder so that it runs automatically in the background (using `/etc/yggdrasil.conf` for configuration), copy the service files into `/etc/systemd/system`, copy `yggdrasil` into your `$PATH`, i.e. `/usr/bin`, and then enable the service: +``` +systemctl enable yggdrasil +systemctl start yggdrasil +``` +- Once installed as a systemd service, you can read the `yggdrasil` output: +``` +systemctl status yggdrasil +journalctl -u yggdrasil +``` + +#### macOS + +- Tested and working out of the box on macOS 10.13 High Sierra. +- May work in theory on any macOS version with `utun` support (which was added in macOS 10.7 Lion), although this is untested at present. +- TAP mode is not supported on macOS. + +#### FreeBSD, OpenBSD, NetBSD + +- Works in TAP mode, but currently doesn't work in TUN mode. +- You may need to create the TAP adapter first if it doesn't already exist, i.e. `ifconfig tap0 create`. + +#### Windows + +- Tested and working on Windows 7 and Windows 10, and should work on any recent versions of Windows, but it depends on the [OpenVPN TAP driver](https://openvpn.net/index.php/open-source/downloads.html) being installed first. +- Has been proven to work with both the [NDIS 5](https://swupdate.openvpn.org/community/releases/tap-windows-9.9.2_3.exe) (`tap-windows-9.9.2_3`) driver and the [NDIS 6](https://swupdate.openvpn.org/community/releases/tap-windows-9.21.2.exe) (`tap-windows-9.21.2`) driver, however there are substantial performance issues with the NDIS 6 driver therefore it is recommended to use the NDIS 5 driver instead. +- Be aware that connectivity issues can occur on Windows if multiple IPv6 addresses from the `fd00::/8` prefix are assigned to the TAP interface. If this happens, then you may need to manually remove the old/unused addresses from the interface (though the code has a workaround in place to do this automatically in some cases). +- TUN mode is not supported on Windows. +- Yggdrasil can be installed as a Windows service so that it runs automatically in the background. From an Administrator Command Prompt: +``` +sc create yggdrasil binpath= "\"C:\path\to\yggdrasil.exe\" -useconffile \"C:\path\to\yggdrasil.conf\"" +sc config yggdrasil displayname= "Yggdrasil Service" +sc config yggdrasil start= "auto" +sc start yggdrasil +``` +- Alternatively, if you want the service to autoconfigure instead of using an `yggdrasil.conf`, replace the `sc create` line from above with: +``` +sc create yggdrasil binpath= "\"C:\path\to\yggdrasil.exe\" -autoconf" +``` + +#### EdgeRouter + +- Tested and working on the EdgeRouter X, using the [vyatta-yggdrasil](https://github.com/neilalexander/vyatta-yggdrasil) wrapper package.