NNCP over Yggdrasil

NNCP can be run over Yggdrasil in two ways:

  1. By using the standard Yggdrasil stack you may have already installed on a system;

  2. By using the Yggdrasil node built in to NNCP.

The two are interchangeable.

You might use option 1 if:

  • You already have Yggdrasil on your system and don’t want to make it more complicated
  • You want the greatest control over Yggdrasil
  • You don’t want your peer to be dependent on NNCP to stay up

You might use option 2 if:

  • You don’t want Yggdrasil to open a tun interface on the system
  • You don’t want to permit Yggdrasil traffic to anything but NNCP, and don’t want to have to firewall it
  • You aren’t already running Yggdrasil

Option 2 is documented in the NNCP docs.

Either way, you may want to find a Yggdrasil public peer.

According to the NNCP documentation, NNCP is intended to help build up small size ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant networks for fire-and-forget secure reliable files, file requests, Internet Email and commands transmission. All packets are integrity checked, end-to-end Encrypted, explicitly authenticated by known participants public keys. Onion encryption is applied to relayed packets. Each node acts both as a client and server, can use push and poll behaviour model. Also there is multicasting area support.

When things are difficult – maybe there’s been a disaster, or an invasion (this page is being written in 2022 just after Russia invaded Ukraine), or maybe you’re just backpacking off the grid – there are tools that can help you keep in touch, or move your data around. This page aims to survey some of them, roughly in order from easiest to more complex.

NNCP lets you securely send files, or request remote execution, between systems. It uses asynchronous communication, so the source and destination need never be online simultaneously. NNCP can route requests via intermediate devices – other NNCP nodes, USB sticks, tapes, radios, phones, cloud services, whatever – leading to a network that is highly resilient and flexible. NNCP makes it much easier to communicate with devices that lack Internet connectivity, or have poor Internet.

NNCP has built-in support for running over TCP, with nncp-daemon and nncp-call/caller. NNCP’s own use cases page talks about various use cases for NNCP. Some of them, such as the no link page, cover use of nncp-xfer; others, such as the one-way broadcasting page go over nncp-bundle.