Skip to content

DN42 Project Decomposition

dhellstern edited this page Jan 29, 2022 · 6 revisions

DN42 Mind Map

This was created with MindMup for Google Drive and full map can be found at: MindMap for DN42 Project

Notes From MindMap

DN42

Distributed Network 42, a dynamic interconnected network

Peering

The process of connecting to other members of the network, to share routes and enable connectivity to the rest of the network

VPN/Tunneling Protocols

There are a number of VPN/tunneling protocols to choose from, with varying advantages and adoption on DN42.

Testing should consider adoption on the DN42 network, performance, security, and compatibility with hardware and software.

Wireguard

Wireguard is a modern, fast, and secure VPN protocol which is well-suited for road-warrior and site-to-site scenarios but operates at Layer 3, making it difficult to use for internetworking (despite this, it is more commonly used in DN42 than other protocols)

OpenVPN

OpenVPN is a mature VPN protocol which is typically used for road-warrior and site-to-site scenarios but can be customized to fit most use cases. It is also quite slow compared to the alternatives, and does not run well on commodity routers.

Tinc

Tinc is a mesh peer-to-peer VPN protocol which is useful for internetworking scenarios, and has seen some adoption in DN42

GRE

GRE, or Generic Routing Encapsulation, is well-suited to peering since it can carry any Layer 3 protocol and does not have overhead for encryption (by default)

SIT

SIT is a commonly used encapsulation protocol for transporting IP packets with minimal MTU overhead

IPsec

IPsec, a protocol for encrypting packets, supports several transport modes that can be used to establish encrypted connections allowing IP transport. Like OpenVPN, it has quite a bit of encryption overhead, but this can be mitigated using devices with IPsec offloading or hardware-accelerated encryption.

BGP

There are a number of BGP daemons with varying features to choose from.

Testing should consider how easy it is to configure, which features it supports, the level of maturity and maintenance, and compatibility with operating systems.

Bird/Bird2

Bird or Bird2 are stable BGP implementations which support most necessary functionality, though they can be clunky to administer

Quagga

Quagga is a powerful and well-maintained BGP daemon which supports advanced features like BGP multipathing, and is fairly easy to administer

OpenBGPD

OpenBGPD is a mature BGP daemon created for BSD-based operating systems by the OpenBSD team

RPKI

All BGP daemons must support RPKI. which is used to verify route signatures to prevent BGP hijacking

Vendor

If using a routing OS or routing hardware, then the existing implementation is likely the only choice

Operating Systems/Firmware

There are several operating systems and firmware options to choose from for running the router.

Testing should consider performance, support for various BGP/VPN software, hardware/virtualization support, and how easy it is to configure and automate. A bonus is that it is compatible with the Looking Glass software.

Linux

Any flavor of Linux, using open source BGP daemons and VPN software, is easily capable of doing the routing needed

FreeBSD

FreeBSD, much like Linux, has many options for BGP daemons and VPN software, and is often used as it is considered a more stable and hardened operating system

VyOS

VyOS is a powerful router firmware based on Debian which is configured via a CLI and supports most of the needed functionality

EdgeOS

EdgeOS is a fork of VyOS created for the Ubiquiti EdgeRouter line, which also features a web GUI, however it typically lags behind VyOS in updates

Untangle

Untangle is a powerful router OS configured with a web GUI, often used for its advanced firewalling/filtering solutions

pfSense

pfSense is a popular router firmware configured using a web GUI which implements most of the needed features and supports plugins, though there has been some controversy about their recent development practices

Hardware

There are a number of hardware router options to evaluate, including virtualizing the router.

Testing should consider performance (including acceleration features), OS/firmware support, and management/orchestration.

Protectli

Protectli devices are designed to run open-source router firmware, and are likely the most flexible hardware option

EdgeRouter

The EdgeRouter runs a fork of VyOS with good support for most of the required technologies, though the firmware may be slightly out of date

Generic PC

Any generic PC with the necessary networking hardware can run various router OSs supporting BGP and VPNs, or run Linux/FreeBSD with the necessary packages installed

Virtualized

One of the most flexible options for running many router OSs is to virtualize them in vCenter and use Software-Defined Networking to connect them

Peers

In order to connect to the DN42 network, you must find peers to connect to that have routes to the rest of the network. The more the better.

PingFinder

The DN42 PingFinder is a good way to find the lowest-latency peers

IRC

People often come to the IRC channel looking for peers

Email

Some people advertise that they are on DN42 on their blogs or social media and can be contacted to request to peer

Registration

In order to participate in the DN42 network, you must register for a number of internetwork resources like address space

Person

Objects in the DN42 registry are usually associated with a person object containing contact details and a unique identifier

Organization

Objects in the DN42 registry can also be associated with organization objects, which have member Person objects

IPv4/IPv6 Space

DN42 supports both IPv4 addresses (in the range 172.20.0.0/14) and IPv6 ULAs (fd00::/8), which must be selected from the available pool of addresses

Signing Key

A public key can optionally be included in the registration, which is used to verify changes to the registry and routes that are signed using ROA

ASN

The primary identifier for a registered DN42 network is the Autonomous System Number, which always starts with the AS424242

DNS Domain

Domains ending in .dn42 can optionally be registered for and pointed to shared or self-hosted authoritative nameservers

Services

Services that can be hosted on the configured network, which will become available to other DN42 members

RPKI Validator

Validates route signatures that arrive in BGP messages, used to prevent BGP hijacking

RPKI Server

Responds to requests by the router to verify a route's signature, given its internal datastore of valid keys

Collector Daemon

Collects signing keys from the registry to determine whether a route must be checked and is valid, or should not be checked

BGP Looking Glass

A BGP looking glass displays what routes are known by the router in a web portal, and can look up additional information like ASNs

Webserver

The webserver looks up the collected routes and displays them to a visitor

Collector Daemon

A daemon reaches out to the router and collects information about which routes have been added

Authoritative DNS Server

An authoritative DNS server responds to queries for a specific domain's records

Data Storage Backend

A data storage backend, either BIND files or a database as required by the particular DNS server, stores the records

DNS Server

An authoritative DNS server like PowerDNS or BIND, which responds to queries for a specific .dn42 domain(s)

Automation

Adding tooling to simplify what will likely become common tasks

Adding Peers

Adding peers, including setting up VPN tunnels, is a repetitive and relatively easy-to-automate process

Deploying Services

Setting up services with the right IPs and reachability via DNS can be automated

DNS

Using tools like DNSControl, adding and removing DNS records can be easily automated

Documentation

Documentation that can help for maintaining and recreating the network

How BGP Works

A high-level overview of how the BGP protocol works, including a technical breakdown, RPKI overview, and generic troubleshooting steps

Setting up BGP on ...

Instructions for how to set up BGP on the router

Setting up RPKI

Instructions for both setting up an RPKI validator and connecting the router to it

Joining DN42

Step-by-step instructions for registering to join DN42 and finding peers

BGP over VPNs

Low-level explanation of how BGP works over VPN tunnels

BGP Looking Glass

Instructions for how to set up the looking glass

Resources

Additional resources which must be requests

Static Public IP Address

To peer with others, the VPN server must be exposed to the outside world via a public IP address, which should be static

DNS Record

To make it easier to connect, the VPN server should have a DNS record

Routers or vCenter

Used for both testing and deployment of the network

Access Network

A network which end-user devices can join to access the DN42 network

NAT Gateway

A NAT gateway used to allow access to the rest of the IPv4 DN42 network

VPN Server

VPN concentrator which allows access to the internal, NATted network

Clone this wiki locally