The usecase I have for IPv6 UDP (not solvable with IPv4) is transparently proxying TCP/UDP connections.
For ex, our DNS resolver always answers with our app’s fly IPs for all DNS requests from our clients. That is, say example.com
from client-A gets 2a09:8080:1::abcd
, while example.com
from client-B gets 2a09:8080:1::1234
(assuming both of those IPv6 are assigned to our fly app).
Then, when a UDP/TCP request from client-A hits 2a09:8280:1::abcd
, the fly app (reading from the mapping set by the DNS server) proxies those packets to example.com
. Think of it like a fragile NAT-PT (which in itself is fragile).
This is only possible with IPv6 because of its abundance. Say, I vend 100K IPv6 addresses (assuming fly considers it fair-use), I can assign one IPv6 address per client-IP per DNS query and still not exhaust my supply, while persisting a route mapping for (client-IP, proxy-IP, dest-IP)
tuple for 10 days to a month.