logoalt Hacker News

Designing an IPv6-native P2P transport – lessons from building I6P

47 pointsby TheusHenlast Friday at 3:17 PM36 commentsview on HN

Comments

lxgrtoday at 11:54 AM

> IPv6 restores globally routable addresses to every node, letting peers connect without contortions.

Global routeability doesn't automatically mean global reachability.

Many consumer and professional routers will block inbound TCP connections, and incoming UDP traffic without at least similar outbound UDP traffic preceding it, so you will still need hole punching.

Hole punching does get significantly more easy with v6, though, since there's really only one way to do "outbound connections only" firewalling (while there's several ways to port translate, some really hostile to hole punching).

Arguably one thing that's missing is a very simple, implicit standard that allows signalling a willingness to accept an inbound TCP connection from a given IP/port that such stateful firewalls can honor, similar to how they already implicitly do it for UDP, but with HTTP 3 running over UDP, the point might well be moot soon.

show 3 replies
KolmogorovComptoday at 2:50 PM

Tangentially related, but any feedback from devs using P2P? Usable for consumers, or too many peers not able to connect? using WebRTC or something more high-level like peerjs?

What's the landscape today?

egberts1today at 11:59 AM

If it weren't for Internet infrastructure hobbling SCTP (via firewall), SCTP provides the same QUICC (session multiplexing) within same 5-tuple and with way much lower packet overhead and smaller code base too.

As with any network protocol design, the tradeoff is slighty gained from versatility over loss of privacy. So it depends on your triage of needs: security, privacy, confidentiality.

Now with the latest "quadage", unobservability (plausible deniability).

show 2 replies
TheusHenlast Friday at 3:19 PM

Author here.

This article focuses on the transport-layer design, not a torrent client replacement. The goal is to provide a reusable IPv6-native P2P connection layer (QUIC-based, NAT-free) that existing clients or new applications can integrate without touching their higher-level logic.

Feedback on design trade-offs is very welcome.

show 3 replies
mrbluecoattoday at 3:03 PM

> globally routable addresses ... simpler security

I don't believe those are synonymous.

immibistoday at 2:13 PM

After closing three popups, I closed the page.

j4nektoday at 1:35 PM

to me this all seems heavy much vibed - take a look at the github repo

apitoday at 12:53 PM

A number of existing P2P things already do this, though usually with UDP.