MaidSafe-Routing

Kademlia-like DHT with NAT Traversal

Description

A Distributed Hash Table (DHT) that utilises Kademlia-like routing tables for scalability with D1HT speed. Used in conjunction with RUDP this library will provide a very robust DHT implementation.

Features

  • Support for Store and Delete operations
  • Complete network reconfiguration in a time period from 20ms to 5 seconds maximum (as compared with 60 minutes for existing DHT's)
  • Node Identification guaranteed via PKI provided by MaidSafe-Passport (no Spartacus attacks)
  • Inbuilt machinery for rank system (remove misbehaving nodes)
  • Asymmetric encryption provided node identification to prevent Sybil attacks
  • Encrypted end to end communications
  • Encrypted per hop communications (at RUDP level using different keys)
  • 2^512 bit address space
  • Opportunistic caching (i.e. resistant to any denial of service attack)
  • Recursive algorithm, enabling simpler traversal of NAT routers
  • Send/Ack system to ensure message is checked as forwarded at any node (with zero speed impact on sending)
  • RUDP integration to provide resistance to 'man in the middle' attacks

Programming languages

Core

C++11 compatible with GCC (4.7 and above), Clang (3.3 and above) and MSVC 2012 (with no dependency on CTP releases). Tested on Windows 32/64 bit, Linux 32/64 bit (dependent on GCC version) and OSX (Mountain Lion and above).

Status

This library is considered BETA quality and is provided with a full test suite and QA suite. This can be considered for use in production quality systems.

Roadmap

This library is still to be reworked for speed enhancements but this is scheduled as imminent. This should not affect current capability except for speed (which will improve) and enhancements which will all provide a more robust framework.

  • Upgrade to Generic programming
  • Implement exceptions and exception safety
  • Implement more fully, ranking mechanism to identify unusual behaviour (huge task and likely to continually improve over time)
  • Decide on shared ranking with other layers of system.

Links