Participation

username,hole_punch_count

dennis raspberry pi,504046
[email protected],291582
guillaume ProtonVPN,171077
[email protected],107362

dennis macbook pro,3673
elena,574
dennis server,72
Max 1,26

Overall Hole Punch Outcomes

output.png

  1. UNKNOWN - There was no information why and how the hole punch completed
  2. NO_CONNECTION - The client could not connect to the remote peer via any of the provided multi addresses. At the moment this is just a single relay multi address.
  3. NO_STREAM - The client could connect to the remote peer via any of the provided multi addresses but no /libp2p/dcutr stream was opened within 15s. That stream is necessary to perform the hole punch.
  4. CONNECTION_REVERSED - The client used one or more relay multi addresses to connect to the remote peer, the /libp2p/dcutr stream was not opened within 15s, and we still end up with a direct connection. This means the remote peer successfully reversed it.
  5. CANCELLED - The user stopped the client (also returned by the rust client for quic multi addresses)
  6. FAILED - The hole punch was attempted multiple times but none succeeded OR the /libp2p/dcutr was opened but we have not received the internal start event OR there was a general protocol error.
  7. SUCCESS - Any of the three hole punch attempts succeeded.

Hole Punch Outcomes - Single Multiaddress Served

output.png

<aside> 💡 When a client requests a peer to hole punch it is sometimes only server a single Multiaddress to hole punch and sometimes the complete list of advertised Multiaddresses of a remote peer. The graph above shows the case where only a single Multiaddress was served to the client.

</aside>

Hole Punch Outcomes - All Multiaddresses Served

output.png

<aside> 💡 When a client requests a peer to hole punch it is sometimes only server a single Multiaddress to hole punch and sometimes the complete list of advertised Multiaddresses of a remote peer. The graph above shows the case where all Multiaddresses were served to the client.

</aside>

Hole Punch Success Rate over Time

output.png

<aside> 💡 This graph ignores all other outcomes besides SUCCESS and FAILED. It shows the ratio of SUCCESS/(SUCCESS + FAILED )

</aside>