File List
Not logged in

The union of all files from all check-ins in directory wiki_references/2017/software/MaidSafe_net/src_from_GitHub/the_repository_clones/routing   [history]


Routing

Maintainer: Andreas Fackler (andreas.fackler@maidsafe.net)

Routing - a specialised storage DHT

Crate Documentation Linux/OS X Windows Issues
Documentation Build Status Build status Stories in Ready
MaidSafe website SAFE Dev Forum SAFE Network Forum

Overview

A secured DHT, based on a kademlia-like implementation, but with some very stark differences. This is a recursive as opposed to iterative network, enabling easier NAT traversal and providing more efficient use of routers and larger networks. This also allows very fast reconfiguration of network changes, aleviating the requirement for a refresh algorithm. A recursive solution based on a network protocol layer that is 'connection oriented' also allows a close group to be aligned with security protocols.

This library makes use of Public-key cryptography to allow a mechanism to ensure nodes are well recognised and cryptographically secured. This pattern allows the creation of a DHT based PKI and this in turn allows a decentralised network to make use of groups as fixed in relation to any address. This is particularly useful in a continually fluid network as described here, creating a server-less and autonomous network.

This is a very under researched area. For a general introduction to some of the ideas behind the design related to XOR Space, watching The SAFE Network from First Principles series is recommended. The slides for XOR Distance Metric and Basic Routing lecture are also available here. The last video from the series on how the same ideas were applied to decentralised BitTorrent trackers is available here. A proper formalisation of the Routing algorithm is in progress.

Logging

Messages are logged via the standard log crate, and where enabled, printed via env_logger. By default this prints messages of level "warn" and higher ("error"), but not lower levels ("info", "debug", "trace"). The level can be set explicitly (any of the above or "off"), e.g.:

export RUST_LOG=routing=info

Optionally, the following sub-targets can be controlled independently:

Example:

export RUST_LOG=routing=info,stats=off

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the MaidSafe Contributor Agreement (CONTRIBUTOR), shall be dual licensed as above, and you agree to be bound by the terms of the MaidSafe Contributor Agreement.