frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

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

https://theushen.medium.com/designing-an-ipv6-native-p2p-transport-lessons-from-building-i6p-b8ca216d1d73
21•TheusHen•3d ago

Comments

TheusHen•3d ago
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.

bflesch•1h ago
Thanks for sharing. I want to ask you something: I understand that with IPv6 the idea is that every household receives several of IPv6 addresses so that every single IoT device has their unique IPv6 address and there is no NAT needed.

Would it be possible to use a dozen of IPv6 addresses at the same time? Like send one UDP packet over certain IPv6 interface, next packet over another IPv6 interface, and so on. If both sending and receiving end have access to multiple IPv6 addresses I can see how this significantly increases complexity for tracking.

Could you split up the traffic across dozens or hundreds of IPv6 source addresses?

neilalexander•1h ago
If you assign a subnet to a host, or allow the host to claim multiple addresses via ND from the link subnet, then you can use as many addresses as you want. You could give every process on your machine its own IPv6 address for example.
bflesch•58m ago
Yes, and if your host has access to several IPv6 addresses and maybe an IPv4 address it'd be nice to have something like wireguard actually utilize all of them in some random order. Same on the receiving end, wireguard server listenes both on IPv4 and IPv6 at same time and internally puts received packets in the proper order.

I feel this would create significant struggles for any surveillance software because most firewalls I know are modeled on a source address / target address basis.

If you have access to enough source IPv6 addresses you might even put your whole wireguard traffic into ICMP packet payload?

vaylian•28m ago
> via ND

What is ND? Do you have a link with details?

pastage•1h ago
It is quite easy todo 100 lines of Python, you can even send ip packets with faked source adress.
bflesch•49m ago
Packets with fake source address can easily be spotted, and will raise an alert. In terms of using multiple interfaces for a single service it might be easy to hack together in a python script, but last time I checked the linux kernel support for bundling multiple interfaces is limited to redundancy and failover.

What I'd like to have is a single service dynamically using many network interfaces with randomized packet timings and randomized packet scheduling (5 packets on first interface, pause on 2nd, some on third interface, sometimes send traffic simultaneously).

ale42•35m ago
Networks are supposed to do egress filtering to prevent any packets with fake IPs from ever leaving the network. In practice it's not always so, but it mostly is. So you'd be limited to fake IP addresses in your own network, and doing so might raise alerts depending on the network infrastructure you live in.
krab•56m ago
> Could you split up the traffic across dozens or hundreds of IPv6 source addresses?

Yes

> I can see how this significantly increases complexity for tracking

Not really. You just track at some prefix level. In general, the ISP will hand out a /64 per consumer so that's what you can track. From there, you can build more complex and more precise grouping rules for tracking.

bflesch•47m ago
I'd mix in some IPv4 of course, maybe pipe some of the connection via VPN interface so the physical route is not same for all packets.
jasonjayr•56m ago
IIRC you could still track because all those mutiple IPv6 addresses will have the same prefix.
jeroenhd•13m ago
The biggest tracking hurdle is to figure out if the ISP that handed out the block of addresses is handing out /64s, /56s, or /48s. The network provided to you is functionally the same as the IP address assigned to you with IPv4.

In theory I could rent an IPv4 /29 (of which 6 addresses are usable) for like 20 euros a month from my home ISP to cause the same confusion but I doubt it'd confuse trackers to use those.

darkr•4m ago
yes - this is also part of the privacy extensions spec: https://datatracker.ietf.org/doc/html/rfc4941
lxgr•25m ago
> 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.

Giefo6ah•19m ago
That simple, implicit standard exists since RFC793:

  Simultaneous initiation is only slightly more complex, as is shown in
  figure 8.  Each TCP cycles from CLOSED to SYN-SENT to SYN-RECEIVED to
  ESTABLISHED.



      TCP A                                            TCP B

  1.  CLOSED                                           CLOSED

  2.  SYN-SENT     --> <SEQ=100><CTL=SYN>              ...

  3.  SYN-RECEIVED <-- <SEQ=300><CTL=SYN>              <-- SYN-SENT

  4.               ... <SEQ=100><CTL=SYN>              --> SYN-RECEIVED

  5.  SYN-RECEIVED --> <SEQ=100><ACK=301><CTL=SYN,ACK> ...

  6.  ESTABLISHED  <-- <SEQ=300><ACK=101><CTL=SYN,ACK> <-- SYN-RECEIVED

  7.               ... <SEQ=101><ACK=301><CTL=ACK>     --> ESTABLISHED

                Simultaneous Connection Synchronization

                               Figure 8.
Every stateful firewall supports this. All you need to communicate off-band is IP addresses and ports.
egberts1•21m ago
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).

jeroenhd•17m ago
From what I recall, one downside to SCTP is that things like resuming from different IP addresses and arbitrarily changing the amount of connections per socket didn't work well in standard SCTP. Plus the TLS story isn't as easy. QUIC makes that stuff easier to work with from an application perspective.

Still a fascinating protocol, doomed to be used exclusively as a weird middle layer for websockets and as a carrier protocol for internal telco networks.

Network of Scottish X accounts go dark amid Iran blackout

https://www.heraldscotland.com/news/25759181.network-scottish-x-accounts-go-dark-amid-iran-blackout/
76•TiredOfLife•1h ago•11 comments

Cowork: Claude Code for the rest of your work

https://claude.com/blog/cowork-research-preview
1029•adocomplete•16h ago•455 comments

FOSS in times of war, scarcity and (adversarial) AI [video]

https://fosdem.org/2026/schedule/event/FE7ULY-foss-in-times-of-war-scarcity-and-ai/
38•maelito•2h ago•21 comments

Show HN: An iOS budget app I've been maintaining since 2011

https://primoco.me/en/
25•Priotecs•1h ago•9 comments

Text-Based Web Browsers

https://cssence.com/2026/text-based-web-browsers/
120•pabs3•7h ago•49 comments

U.S. Emissions Jumped in 2025 as Coal Power Rebounded

https://www.nytimes.com/2026/01/13/climate/us-emissions-2025-coal-power.html
88•fleahunter•2h ago•79 comments

TimeCapsuleLLM: LLM trained only on data from 1800-1875

https://github.com/haykgrigo3/TimeCapsuleLLM
631•admp•20h ago•261 comments

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

https://theushen.medium.com/designing-an-ipv6-native-p2p-transport-lessons-from-building-i6p-b8ca...
21•TheusHen•3d ago•17 comments

Postal Arbitrage

https://walzr.com/postal-arbitrage
426•The28thDuck•18h ago•213 comments

Deconstructing the LuaJIT Pseudo Memory Leak

https://blog.openresty.com/en/luajit-plus/
9•dgares•3d ago•1 comments

Floppy disks turn out to be the greatest TV remote for kids

https://blog.smartere.dk/2026/01/floppy-disks-the-best-tv-remote-for-kids/
660•mchro•23h ago•372 comments

The chess bot on Delta Air Lines will destroy you (2024) [video]

https://www.youtube.com/watch?v=c0mLhHDcY3I
252•cjaackie•16h ago•231 comments

Some ecologists fear their field is losing touch with nature

https://www.nature.com/articles/d41586-025-04150-w
129•Growtika•5d ago•63 comments

Unauthenticated remote code execution in OpenCode

https://cy.md/opencode-rce/
344•CyberShadow•1d ago•112 comments

Implementing a web server in a single printf() call (2014)

https://tinyhack.com/2014/03/12/implementing-a-web-server-in-a-single-printf-call/
60•nateb2022•4d ago•5 comments

The Cray-1 Computer System (1977) [pdf]

https://s3data.computerhistory.org/brochures/cray.cray1.1977.102638650.pdf
102•LordGrey•3d ago•53 comments

Date is out, Temporal is in

https://piccalil.li/blog/date-is-out-and-temporal-is-in/
401•alexanderameye•20h ago•164 comments

The Inevitable Rise of the Art TV

https://www.wired.com/story/art-frame-tv-trends/
4•m463•5d ago•0 comments

Fabrice Bellard's TS Zip (2024)

https://www.bellard.org/ts_zip/
179•everlier•15h ago•73 comments

Apple picks Gemini to power Siri

https://www.cnbc.com/2026/01/12/apple-google-ai-siri-gemini.html
881•stygiansonic•20h ago•544 comments

LLVM: The bad parts

https://www.npopov.com/2026/01/11/LLVM-The-bad-parts.html
349•vitaut•22h ago•69 comments

Chromium Has Merged JpegXL

https://chromium-review.googlesource.com/c/chromium/src/+/7184969
150•thunderbong•5h ago•41 comments

Show HN: AI in SolidWorks

https://www.trylad.com
169•WillNickols•19h ago•90 comments

Anthropic made a mistake in cutting off third-party clients

https://archaeologist.dev/artifacts/anthropic
318•codesparkle•1d ago•206 comments

Zirgen: Compiler for a Domain-Specific Language

https://github.com/risc0/zirgen
13•0xkato•4d ago•0 comments

Why BM25 queries with more terms can be faster (and other scaling surprises)

https://turbopuffer.com/blog/bm25-latency-musings
32•_peregrine_•4d ago•0 comments

Windows 8 Desktop Environment for Linux

https://github.com/er-bharat/Win8DE
208•edent•22h ago•199 comments

Show HN: Yolobox – Run AI coding agents with full sudo without nuking home dir

https://github.com/finbarr/yolobox
97•Finbarr•17h ago•69 comments

F2 (YC S25) Is Hiring

https://www.ycombinator.com/companies/f2/jobs/cJsc7Fe-product-designer
1•arctech•13h ago

The struggle of resizing windows on macOS Tahoe

https://noheger.at/blog/2026/01/11/the-struggle-of-resizing-windows-on-macos-tahoe/
2657•happosai•1d ago•1140 comments