Crate rings_node

source ·
Expand description

rings-node

rings-node cargo docs

ICE Scheme:

  1. Peer A: { create offer, set it as local description } -> Send Offer to Peer B
  2. Peer B: { set receiveed offer as remote description create answer set it as local description Send Answer to Peer A }
  3. Peer A: { Set receiveed answer as remote description }

Keywords

  • Candidate
    • A CANDIDATE is a transport address – a combination of IP address and port for a particular transport protocol (with only UDP specified here).
    • If an agent is multihomed, it obtains a candidate from each IP address.
    • The agent uses STUN or TURN to obtain additional candidates. These come in two flavors: translated addresses on the public side of a NAT (SERVER REFLEXIVE CANDIDATES) and addresses on TURN servers (RELAYED CANDIDATES).
                 To Internet
                     |
                     |
                     |  /------------  Relayed
                 Y:y | /               Address
                 +--------+
                 |        |
                 |  TURN  |
                 | Server |
                 |        |
                 +--------+
                     |
                     |
                     | /------------  Server
              X1':x1'|/               Reflexive
               +------------+         Address
               |    NAT     |
               +------------+
                     |
                     | /------------  Local
                 X:x |/               Address
                 +--------+
                 |        |
                 | Agent  |
                 |        |
                 +--------+
                     Figure 2: Candidate Relationships
  • Channel In the WebRTC framework, communication between the parties consists of media (for example, audio and video) and non-media data. Non-media data is handled by using the Stream Control Transmission Protocol (SCTP) encapsulated in DTLS.
                               +----------+
                               |   SCTP   |
                               +----------+
                               |   DTLS   |
                               +----------+
                               | ICE/UDP  |
                               +----------+

The encapsulation of SCTP over DTLS (see RFC8261) over ICE/UDP (see RFC8445) provides a NAT traversal solution together with confidentiality, source authentication, and integrity-protected transfers. The layering of protocols for WebRTC is shown as:

                                 +------+------+------+
                                 | DCEP | UTF-8|Binary|
                                 |      | Data | Data |
                                 +------+------+------+
                                 |        SCTP        |
                   +----------------------------------+
                   | STUN | SRTP |        DTLS        |
                   +----------------------------------+
                   |                ICE               |
                   +----------------------------------+
                   | UDP1 | UDP2 | UDP3 | ...         |
                   +----------------------------------+

Architecture

+-----------------------------------------------------------------------------------------+
|                                         RINGS                                           |
+-----------------------------------------------------------------------------------------+
|   Encrypted IM / Secret Sharing Storage / Distributed Content / Secret Data Exchange    |
+-----------------------------------------------------------------------------------------+
|                  SSSS                  |  Perdson Commitment/zkPod/ Secret Sharing      |
+-----------------------------------------------------------------------------------------+
|                     |       dDNS       |                 Sigma Protocol                 |
+      K-V Storage    +------------------+------------------------------------------------+
|                     |  Peer LOOKUP     |          MSRP        |  End-to-End Encryption  |
+----------------------------------------+------------------------------------------------+
|            Peer-to-Peer Network        |                                                |
|----------------------------------------+               DID / Resource ID                |
|                 Chord DHT              |                                                |
+----------------------------------------+------------------------------------------------+
|                Trickle SDP             |        ElGamal        | Persistence Storage    |
+----------------------------------------+-----------------------+------------------------+
|            STUN  | SDP  | ICE          |  Crosschain Binding   | Smart Contract Binding |
+----------------------------------------+------------------------------------------------+
|             SCTP | UDP | TCP           |             Finate Pubkey Group                |
+----------------------------------------+------------------------------------------------+
|   WASM Runtime    |                    |                                                |
+-------------------|  Operation System  |                   ECDSA                        |
|     Browser       |                    |                                                |
+-----------------------------------------------------------------------------------------+

Modules

An Backend HTTP service handle custom message from MessageHandler as CallbackFn.
An efficient command tool of using ring-node.
A bunch of wrap errors.
A jsonrpc-server of rings-node.
A jsonrpc-client.
Logging configuration contains both node and browser.
A prelude is provided which imports all the important data types and traits of ring-network.
Processor of rings-node jsonrpc-server.
Seed and SeedLoader use for getting peers from endpoint.
rings-node service run with Swarm and chord stabilization.
Utilities for configuration and build.