Giter Site home page Giter Site logo

routing's Introduction

routing

Routing - a specialised storage DHT

Crate Travis Appveyor Coverage
Build Status Build status Coverage Status

| API Documentation| MaidSafe System Documention | MaidSafe web site | Safe Community site |

#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.

###Pre-requisite: libsodium is a native dependency for sodiumxoide. Thus, install sodium by following the instructions here.

For windows, download and use the prebuilt mingw library. Extract and place the libsodium.a file in "bin\x86_64-pc-windows-gnu" for 64bit System, or "bin\i686-pc-windows-gnu" for a 32bit system.

##Todo Items

  • Set up facade design pattern
  • Test facade pattern
  • Set up accumulator
  • Accumulator tests
  • Message header
  • Message header tests
  • API version 0.0.6
  • Bootstrap handler implementation
  • Bootstrap handler test
  • Create sort and bucket index methods
  • Implement routing table
  • Test routing table
  • Implement sentinel (initial)
  • Finalise sentinel in line with tests
  • Implement client node
  • Test sentinel
  • Implement routing message types (Connect FindNode)
  • Test message types
  • Implement Get Put Post messages
  • Version 0.0.8
  • Move bootstrap out of routing
  • Complete Client Interface (Facade)
  • Complete Routing Node Interface to accomodate churn
  • Add caching to node interface
  • Implement routing node (100%)
  • Handle PMID Caching
  • Handle Cache / Get / Check calls
  • Split Messages and handle message
    • GetData HandleGetData
    • GetDataResponse HandleGetDataResponse
    • GetClientKey HandleGetClientKey
    • GetClientKeyResponse HandleGetClientKeyResponse
    • GetGroupKey HandleGetGroupKey
    • GetGroupKeyResponse HandleGetGroupKeyResponse
    • Post HandlePost
    • PostResponse HandlePostResponse
    • PutData HandlePutData
    • PutDataResponse HandlePutDataResponse
    • PutKey HandlePutKey
  • Implement routing connections management
  • Sentinel:
    • Handover existing implementation
    • Account transfer merge
    • Group response merge
    • Signature checks
    • QA Sentinel including code review from system design perspective
  • Check Authority (Ensure use and implementation of Authority is in line with the design doc / blog.)
  • Examples:
    • zero state network
    • Routing Node with type erased cache
    • Routing Client accepting key, value as string for GET/PUT
    • Local Network Test. 12 Linux, 2 OSX, 2 WIN
    • 101 Droplet test
  • Version 0.1.6 (crates.io)
  • Address re-location (security essential)

routing's People

Contributors

chandraprakash avatar dirvine avatar elavoie avatar hitman401 avatar inetic avatar maqi avatar steveklabnik avatar ustulation avatar vtnerd avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.