Skip to content

Commit

Permalink
add autorelay documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
vyzo committed Oct 23, 2018
1 parent 5c21f1c commit 326dc68
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions p2p/host/relay/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
The relay package contains host implementations that automatically
advertise relay addresses when the presence of NAT is detected. This
feature is dubbed `autorelay`.
System Components:
- AutoNATService instances -- see https://github.com/libp2p/go-libp2p-autonat-svc
- One or more relays, instances of `RelayHost`
- The autorelayed hosts, instances of `AutoRelayHost`.
How it works:
- `AutoNATService` instances are instantiated in the
bootstrappers (or other well known publicly reachable hosts)
- `RelayHost`s are constructed with
`libp2p.New(libp2p.EnableRelay(circuit.OptHop), libp2p.Routing(makeDHT))`.
They provide Relay Hop services, and advertise through the DHT
in the `/libp2p/relay` namespace
- `AutoRelayHost`s are constructed with `libp2p.New(libp2p.Routing(makeDHT))`
They passively discover autonat service instances and test dialability of
their listen address set through them. When the presence of NAT is detected,
they discover relays through the DHT, connect to some of them and begin
advertising relay addresses. The new set of addresses is propagated to
connected peers through the `identify/push` protocol.
*/
package relay

0 comments on commit 326dc68

Please sign in to comment.