All Projects → yggdrasil-network → Yggdrasil Go

yggdrasil-network / Yggdrasil Go

Licence: other
An experiment in scalable routing as an encrypted IPv6 overlay network

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Yggdrasil Go

Spruce Network
Decentralized peer-to-peer mesh network.
Stars: ✭ 61 (-93.94%)
Mutual labels:  mesh, mesh-networks, decentralized
vyatta-cjdns
A cjdns package for Ubiquiti EdgeOS and VyOS, allowing cjdns to be used on EdgeRouters
Stars: ✭ 39 (-96.13%)
Mutual labels:  mesh-networks, ipv6, mesh
meshname
Meshname, a universal naming system for all IPv6-based mesh networks, including CJDNS and Yggdrasil
Stars: ✭ 65 (-93.55%)
Mutual labels:  ipv6, mesh
netmaker
Netmaker makes networks with WireGuard. Netmaker automates fast, secure, and distributed virtual networks.
Stars: ✭ 4,147 (+311.82%)
Mutual labels:  mesh-networks, mesh
cellabox
Air quality modules with Nordic nRF52840. Thread network (OpenThread). TheThingsIO. Sensirion. SPEC Sensors. ST Microelectronics.
Stars: ✭ 27 (-97.32%)
Mutual labels:  mesh-networks, ipv6
edgevpn
⛵ The immutable, decentralized, statically built p2p VPN without any central server and automatic discovery! Create decentralized introspectable tunnels over p2p with shared tokens
Stars: ✭ 223 (-77.86%)
Mutual labels:  mesh-networks, mesh
WindFarm
Information the Wind concept, spec and upcoming events
Stars: ✭ 23 (-97.72%)
Mutual labels:  decentralized, mesh
yggmail
End-to-end encrypted email for the mesh networking age
Stars: ✭ 72 (-92.85%)
Mutual labels:  mesh-networks, mesh
Lime Packages
OpenWrt packages composing LibreMesh meta-firmware for wireless mesh networking
Stars: ✭ 204 (-79.74%)
Mutual labels:  mesh, mesh-networks
Ergo
a Framework for creating mesh networks using technologies and design patterns of Erlang/OTP in Golang
Stars: ✭ 376 (-62.66%)
Mutual labels:  mesh, mesh-networks
Mesh Networking
🌐 LEGO blocks for networking, a Python library to help create and test flexible network topologies across real and simulated physical links.
Stars: ✭ 329 (-67.33%)
Mutual labels:  ipv6, mesh-networks
Ansible Openwisp2
Ansible role that installs and upgrades OpenWISP.
Stars: ✭ 403 (-59.98%)
Mutual labels:  mesh, mesh-networks
MeshNetSimulator
A simulator for sketching mesh network routing strategies
Stars: ✭ 71 (-92.95%)
Mutual labels:  mesh-networks, mesh
Netjsongraph.js
NetJSON NetworkGraph visualizer based on d3.js
Stars: ✭ 216 (-78.55%)
Mutual labels:  mesh, mesh-networks
Prototype Cjdns Pi
Prototype system for mesh networks on single board computers
Stars: ✭ 205 (-79.64%)
Mutual labels:  mesh, mesh-networks
ipvpn
[WIP] Easy-to-use decentralized secure overlay private network (for any device)
Stars: ✭ 24 (-97.62%)
Mutual labels:  decentralized, mesh
Cjdns
An encrypted IPv6 network using public-key cryptography for address allocation and a distributed hash table for routing.
Stars: ✭ 4,766 (+373.29%)
Mutual labels:  mesh, mesh-networks
Django Netjsongraph
Network Topology Visualizer & Network Topology Collector
Stars: ✭ 131 (-86.99%)
Mutual labels:  mesh, mesh-networks
Medium
Independent telecommunication environment
Stars: ✭ 171 (-83.02%)
Mutual labels:  mesh, decentralized
everip
The Elastic Versatile Encrypted Relay for IP (EVER/IP) Networking Suite
Stars: ✭ 32 (-96.82%)
Mutual labels:  mesh-networks, mesh

Yggdrasil

CircleCI

Introduction

Yggdrasil is an early-stage implementation of a fully end-to-end encrypted IPv6 network. It is lightweight, self-arranging, supported on multiple platforms and allows pretty much any IPv6-capable application to communicate securely with other Yggdrasil nodes. Yggdrasil does not require you to have IPv6 Internet connectivity - it also works over IPv4.

Although Yggdrasil shares many similarities with cjdns, it employs a different routing algorithm based on a globally-agreed spanning tree and greedy routing in a metric space, and aims to implement some novel local backpressure routing techniques. In theory, Yggdrasil should scale well on networks with internet-like topologies.

Supported Platforms

We actively support the following platforms, and packages are available for some of the below:

  • Linux
    • .deb and .rpm packages are built by CI for Debian and Red Hat-based distributions
    • Arch, Nix, Void packages also available within their respective repositories
  • macOS
    • .pkg packages are built by CI
  • Ubiquiti EdgeOS
    • .deb Vyatta packages are built by CI
  • Windows
  • FreeBSD
  • OpenBSD
  • OpenWrt

Please see our Platforms pages for more specific information about each of our supported platforms, including installation steps and caveats.

You may also find other platform-specific wrappers, scripts or tools in the contrib folder.

Building

If you want to build from source, as opposed to installing one of the pre-built packages:

  1. Install Go (requires Go 1.16 or later)
  2. Clone this repository
  3. Run ./build

Note that you can cross-compile for other platforms and architectures by specifying the GOOS and GOARCH environment variables, e.g. GOOS=windows ./build or GOOS=linux GOARCH=mipsle ./build.

Running

Generate configuration

To generate static configuration, either generate a HJSON file (human-friendly, complete with comments):

./yggdrasil -genconf > /path/to/yggdrasil.conf

... or generate a plain JSON file (which is easy to manipulate programmatically):

./yggdrasil -genconf -json > /path/to/yggdrasil.conf

You will need to edit the yggdrasil.conf file to add or remove peers, modify other configuration such as listen addresses or multicast addresses, etc.

Run Yggdrasil

To run with the generated static configuration:

./yggdrasil -useconffile /path/to/yggdrasil.conf

To run in auto-configuration mode (which will use sane defaults and random keys at each startup, instead of using a static configuration file):

./yggdrasil -autoconf

You will likely need to run Yggdrasil as a privileged user or under sudo, unless you have permission to create TUN/TAP adapters. On Linux this can be done by giving the Yggdrasil binary the CAP_NET_ADMIN capability.

Documentation

Documentation is available on our GitHub Pages site, or in the base submodule repository within doc/yggdrasil-network.github.io.

Community

Feel free to join us on our Matrix channel at #yggdrasil:matrix.org or in the #yggdrasil IRC channel on Freenode.

License

This code is released under the terms of the LGPLv3, but with an added exception that was shamelessly taken from godeb. Under certain circumstances, this exception permits distribution of binaries that are (statically or dynamically) linked with this code, without requiring the distribution of Minimal Corresponding Source or Minimal Application Code. For more details, see: LICENSE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].