Skip to content

Latest commit

 

History

History

protocols

Routing Protocols

This is a collection of start and stop scripts for several routing protocols. The start scripts are executed in very instance. The stop script kill all instances at once so far (TODO). Feel free to modifiy them and add new scripts. Use ./software.py start <protocol> to call protocols/<protocol>_start.sh on each virtual node (network namespace).

All of the following protocols are proactive protocols. They are also written in the C programming language - unless stated otherwise.

B.A.T.M.A.N.-adv.

  • website
  • distance vector
  • successor of batmand
    • batmand is a layer 3, user space daemon
  • routes layer 2 packets (bat0 interface can be bridged)
  • Linux kernel module
  • used by most Freifunk communities

Babel

BMX 6

  • website
  • distance vector
  • fork of batmand

BMX 7

  • Website
  • distance vector
  • rewrite of BMX 6 with trusted nodes / authentication mechanism

CJDNS

  • CJDNS
  • distance vector
  • source routing
  • used primarily as overlay over the Internet

OLSRd

OLSR2

  • website
  • link state
  • rewrite of OLSR 1 as a framework

Yggdrasil

  • website
  • research project, geared towards P2P Matrix, written in Go
  • Ironwood routing library for Yggdrasil 0.4.x
  • Pinecone is very similar to Ironwood, meant for P2P Matrix (some documentation)
  • runs as overlay over Internet with manual peering
    • 5000 nodes

  • general algorithm (0.3.x/0.4.x/0.5.x)
    • distance vector
    • spanning tree
    • end to end encryption (node identifiers are derive from crypto keys)
  • Videos
  • each minor version so far is a different (incompatible) routing protocol
  • the research network transitions to each new iteration of the protocol

Yggdrasil 0.3.x

Yggdrasil blog

  • spanning tree
  • switch to new DHT (Chord) from Kademlia

Yggdrasil 0.4.x

Yggdrasil blog

  • spanning tree
  • source routing
  • uses new linear DHT design (SNEK)

Yggdrasil 0.5.x

Yggdrasil blog

  • spanning tree
  • greedy routing (instead of source routing)
  • leave nodes send bloom filters towards root