Documentation
¶
Overview ¶
The relay package contains host implementations that automatically advertise relay addresses when the presence of NAT is detected. This feature is dubbed `autorelay`.
Warning: the internal interfaces are unstable.
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.
Index ¶
- Constants
- Variables
- type AutoRelayHost
- func (h *AutoRelayHost) ClosedStream(inet.Network, inet.Stream)
- func (h *AutoRelayHost) Connected(inet.Network, inet.Conn)
- func (h *AutoRelayHost) Disconnected(_ inet.Network, c inet.Conn)
- func (h *AutoRelayHost) Listen(inet.Network, ma.Multiaddr)
- func (h *AutoRelayHost) ListenClose(inet.Network, ma.Multiaddr)
- func (h *AutoRelayHost) OpenedStream(inet.Network, inet.Stream)
- type RelayHost
Constants ¶
View Source
const (
RelayRendezvous = "/libp2p/relay"
)
Variables ¶
View Source
var ( DesiredRelays = 3 BootDelay = 60 * time.Second )
View Source
var (
AdvertiseBootDelay = 5 * time.Second
)
Functions ¶
This section is empty.
Types ¶
type AutoRelayHost ¶
AutoRelayHost is a Host that uses relays for connectivity when a NAT is detected.
func NewAutoRelayHost ¶
func NewAutoRelayHost(ctx context.Context, bhost *basic.BasicHost, discover discovery.Discoverer) *AutoRelayHost
func (*AutoRelayHost) ClosedStream ¶
func (h *AutoRelayHost) ClosedStream(inet.Network, inet.Stream)
func (*AutoRelayHost) Disconnected ¶
func (h *AutoRelayHost) Disconnected(_ inet.Network, c inet.Conn)
func (*AutoRelayHost) ListenClose ¶
func (h *AutoRelayHost) ListenClose(inet.Network, ma.Multiaddr)
func (*AutoRelayHost) OpenedStream ¶
func (h *AutoRelayHost) OpenedStream(inet.Network, inet.Stream)
Click to show internal directories.
Click to hide internal directories.