Skip to content

Blind relay for UDX over Protomux channels

License

Notifications You must be signed in to change notification settings

holepunchto/blind-relay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

blind-relay

Blind relay for UDX over Protomux channels. By acting as a blind relay, a host may accept pairing requests from other hosts and relay UDX stream messages between them, similar to Traversal Using Relays around NAT (TURN).

npm i blind-relay

Protocol

sequenceDiagram
    actor a as peer a
    actor r as relay
    actor b as peer b

    par
        a ->> r: pair { isInitiator: true, token, id, seq }
    and
        b ->> r: pair { isInitiator: false, token, id, seq }
    end

    note over r: The relay pairs peers a and b based on the token, allocates a new stream for both peers, and sends back the stream info

    par
        r -->> a: pair { isInitiator: true, token, id, seq }
    and
        r -->> b: pair { isInitiator: false, token, id, seq }
    end

    par
        a ->> r: unpair { token }

        note left of r: The relay deallocates the stream previously allocated to peer a
    and
        b ->> r: unpair { token }

        note right of r: The relay deallocates the stream previously allocated to peer b
    end
Loading

Messages

All types are specified as their corresponding compact-encoding codec.

pair (0)

  1. bitfield(1) Flags.
    1. isInitiator
  2. fixed32 Preexchanged token.
  3. uint Stream ID of the sender.
  4. uint Initial stream sequence no. of the sender.

unpair (1)

  1. bitfield(0) Flags, reserved.
  2. fixed32 Preexchanged token.

License

Apache-2.0

About

Blind relay for UDX over Protomux channels

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •