MaidSafe-RUDP

Implementation of Reliable UDP

Description

TCP is a reliable connection oriented protocol that cannot traverse NAT routers (with any real capability) UDP is an unreliable connectionless protocol that can traverse many NAT routers with ease.

MaidSafe-RUDP is a reliable pseudo connected protocol that can traverse more NAT routers than plain UDP when used in conjunction with MaidSafe-Routing. It is impervious to 'man in the middle' attacks with no requirement for a key exchange protocol to exist at the network level.

Features

  • Implements hundreds / thousands of connections per computer (depending on hardware)
  • Provides encrypted communications (keys can be passed into API per connection)
  • Used in conjunction with MaidSafe-Routing this library implements a network that is entirely resistant to 'man in the middle' attacks
  • Used in conjunction with MaidSafe-Routing this library implements a network that can traverse even symmetric NAT routers
  • Capable of multiplexing multiple RUDP connections to single UDP port (increasing connection capabilities)

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 at this time. There is currently a limit on message size that requires attention at the earliest convenience.

Roadmap

  • Refactor for type safety
  • Refactor for exception handling
  • Implement a data channel or interleaved message handling (to remove any size restrictions)
  • Further work on rejecting slowing nodes (potential damage caused by hack attempts including slowing connections down)
  • Improve messages per second capability (throughput), which is currently circa 8000 for 100 Byte messages

Links