Documentation
¶
Overview ¶
Package relay contains the components necessary to implement the "autorelay" feature.
Warning: the internal interfaces are unstable.
System Components:
- A discovery service to discover public relays.
- An AutoNAT client used to determine if the node is behind a NAT/firewall.
- One or more autonat services, instances of `AutoNATServices`. These are used by the autonat client.
- One or more relays, instances of `RelayHost`.
- The AutoRelay service. This is the service that actually:
AutoNATService: https://github.com/RTradeLtd/libp2px/pkg/autonat-svc AutoNAT: https://github.com/RTradeLtd/libp2px/pkg/autonat
How it works:
- `AutoNATService` instances are instantiated in the bootstrappers (or other well known publicly reachable hosts)
- `AutoRelay`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
- func Advertise(ctx context.Context, advertise cdisc.Advertiser)
- func Filter(addrs []ma.Multiaddr) []ma.Multiaddr
- type AutoRelay
- func (ar *AutoRelay) ClosedStream(network.Network, network.Stream)
- func (ar *AutoRelay) Connected(network.Network, network.Conn)
- func (ar *AutoRelay) Disconnected(net network.Network, c network.Conn)
- func (ar *AutoRelay) Listen(network.Network, ma.Multiaddr)
- func (ar *AutoRelay) ListenClose(network.Network, ma.Multiaddr)
- func (ar *AutoRelay) OpenedStream(network.Network, network.Stream)
Constants ¶
View Source
const (
// RelayRendezvous defines the dht rendezvous lookup key
RelayRendezvous = "/libp2p/relay"
)
Variables ¶
View Source
var ( // DesiredRelays indicates the minimum number of desired relays DesiredRelays = 1 // BootDelay defines the boot delay for our autorelay BootDelay = 20 * time.Second // DefaultRelays are the known PL-operated relays DefaultRelays = []string{ "/ip4/147.75.80.110/tcp/4001/p2p/QmbFgm5zan8P6eWWmeyfncR5feYEMPbht5b1FW1C37aQ7y", "/ip4/147.75.195.153/tcp/4001/p2p/QmW9m57aiBDHAkKj9nmFSEn7ZqrcF1fZS4bipsTCHburei", "/ip4/147.75.70.221/tcp/4001/p2p/Qme8g49gm3q4Acp7xWBKg3nAa9fxZ1YmyDJdyGgoG6LsXh", } )
View Source
var ( // AdvertiseBootDelay is purposefully long to require some node stability before advertising as a relay AdvertiseBootDelay = 15 * time.Minute // AdvertiseTTL is the timeout for advertisements AdvertiseTTL = 30 * time.Minute )
Functions ¶
Types ¶
type AutoRelay ¶
type AutoRelay struct {
// contains filtered or unexported fields
}
AutoRelay is a Host that uses relays for connectivity when a NAT is detected.
func NewAutoRelay ¶
func NewAutoRelay(ctx context.Context, logger *zap.Logger, bhost *basic.BasicHost, discover cdisc.Discoverer, router routing.PeerRouting, static []peer.AddrInfo) *AutoRelay
NewAutoRelay returns an initialized AutoRelay host
func (*AutoRelay) ClosedStream ¶
ClosedStream satisfies the network.Notifiee interface
func (*AutoRelay) Disconnected ¶
Disconnected satisfies the network.Notifiee interface
func (*AutoRelay) ListenClose ¶
ListenClose satisfies the network.Notifiee interface
Click to show internal directories.
Click to hide internal directories.