Giter Site home page Giter Site logo

specs's People

Contributors

decanus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

specs's Issues

Reliability: MVDS over UB

Problem

Due to the routing in our MANET, we have very unreliable data consistency which could result in messages not reaching their destination.

Solution

We run MVDS over Ultralight beam in order to ensure message delivery.

ACKs are returned whenever node N has done its duties which are either broadcasting the message to a given service, or sending it to node N + 1.

Routing: With or Without Target

Problem

Due to the fact that our MANET is supposed to handle various different scenarios we also have different routing requirements, for example in a chat context messages should be routed to a specific target as fast as possible. However when we are broadcasting ethereum transactions a flooding type system may be perfectly legitimate.

Solution

Allow for various routing methodologies that can messages can either be sent to a specific target, service provider or broadcasted within the network. This should also affect metering, messages that affect less nodes should cause less to be "metered".

Acceptance criteria

Nodes are able to receive messages in various means, being sent them directly or receiving them through broadcasts. Nodes should also provide "static" identifiers in order for messages to be able to be forwarded to them directly.

Identity

Problem

Currently in the UB.swift the node ID is based on the on the Transport. This isn't optimal as there is no verifiability that a message really originally came from a certain node. Any malicious node could change who the sender was.

Solution

Nodes should hold private keys with which they sign to ensure that they really are the original sender of a message, this means no middle node can change the original sender.

Notes

Versioning: Version Negoation

Problem

Currently there is no version negotiation between clients. This means that clients may try communicating to incompatible clients and fail.

Acceptance Criteria

Design a Handshake that includes version negotiation so clients communicate correctly.

Topics in Messages

Problem

Currently, in the current CoreBluetooth Transport, we communicate all message over the same Characteristic. So, to differentiate between message types, we need additional processing (decoding headers) to determine if the received message is something we care about. Note that Characteristics are a Bluetooth specific concept.

More research is needed w.r.t. topics and messaging to ensure that we don't pollute the network.

Accounting: Bandwidth metering

Problem

  1. Leeches: Some nodes put too much of a burden on the network
  2. Capacity: Some nodes are helping nodes by relaying messages but they have limited capacity

Solution

Keep track of how much each node contributes and takes from the network based on local information. Similar to Bittorrent seed ratio.

Acceptance criteria

Detect, store and display bandwidth UP and DOWN for each connected peer. This can for example be stored to an in-memory DB and printed to STDOUT at some interval.

If bandwidth can't be directly detected, this may be approximated with message count.

Not in scope

This issue is purely about the accounting aspect. Explicitly out of scope are:

  • Incentives build on top of this
  • any form of settlement

Consequences such as:

  • disconnects
  • feedback of capacity
  • tit for tat / throttling strategies a la Bittorrent

are also out of scope, but can be natural follow up issues to this.

Notes

  • It might be useful to distinguish between originating sender and relayer in terms of who acts as a cost to the network
  • If there are other limited resources identified outside of BW, these can also potentially be limited (disk/computed/connections/etc)

Misc:

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.