Repository navigation
Internet NAT64 gateway #684
Description
Activity
- changed the title
[-]NAT64 for IPv6-Only Instances on Galactic VPC[/-][+]Internet NAT64 Gateway for Galactic VPC[/+]on Aug 25, 2026 Dependency note: NAT64 alone doesn't get an IPv6-only instance anywhere — without DNS64, a name that has no AAAA record simply fails to resolve, and the instance never gets a synthesized address to hand this gateway in the first place. DNS64 is a required dependency for this enhancement to deliver working IPv4 reachability end to end (see the Goals above: validation is explicitly end-to-end with DNS64).
That DNS64 work is out of scope for this issue and is tracked separately in #792. This issue's scope stays limited to the NAT64 translation data path and its session/SID architecture, per the Non-Goals above.
- added sub-issues
on Sep 14, 2026 35 remaining items
- added a sub-issue
on Oct 4, 2026 Status: phase 1 of the data path has merged.
- NAT64 egress in
galactic-nat: feat(nat): Add NAT64 egress by generalizing the NAT66 tier into galactic-nat #525 - ICMP: echo and echo responder (feat(nat): Translate ping through NAT64 and add an opt-in echo responder #666), ICMPv4 error translation (feat(nat): Translate ICMPv4 errors through NAT64 #667), Packet Too Big (feat(nat): Tell a sender when its reply is too big to re-encapsulate #669)
- A list of NAT64 prefixes in the CNI (feat(cni): Accept a list of NAT64 prefixes #678), refusing non-global IPv4 (feat(nat): Refuse NAT64 to non-global IPv4 #679), and the Well-Known Prefix (feat(nat): Translate the NAT64 Well-Known Prefix #693)
Still needed before close: end-to-end validation with DNS64 (#689; the docs PR #643 is open). Phase 2 (anycast SID and regional session state) stays deferred. It should get its own issue if it goes on the roadmap. Keeping this open until it's live for users.
- NAT64 egress in
Review against the phase 1 goals, on main today:
- Done: shard-based NAT64 egress, per-tenant isolation through the SRv6 Argument (Egress shard routes carry no per-tenant Argument, so same-node tenants can share a translation #538), ICMP translation, the Well-Known Prefix, and refusing non-global IPv4. Staging confirms each of these over both the operator prefix and the Well-Known Prefix.
- Open: the as-built docs (Document the as-built NAT64 gateway solution #632).
- New gaps: there is no per-tenant session limit or visibility, so one tenant can evict others' sessions (One tenant can evict other tenants' NAT sessions #721), and nothing scrapes or alerts on shard health (Operators can't see or alert on NAT egress health #722).
DNS64 is its own enhancement in #689, not a sub-issue of this one.
Production runs a release that predates the ICMP, Well-Known Prefix and non-global refusal work, so this stays open until that release ships too.
- removed a parent issue
on Oct 4, 2026 - changed the title
[-]Internet NAT64 gateway for Galactic VPC[/-][+]Internet NAT64 gateway[/+]on Oct 4, 2026 - removed a sub-issue
on Oct 4, 2026 NAT64 phase 1 is live for users at every production edge site. Production follows the newest galactic release, which is v0.5.3. That release includes the ICMP translation, Well-Known Prefix and non-global IPv4 refusal work that the earlier release was missing.
Follow-up work has its own issues:
- Document the as-built NAT64 gateway solution #632: as-built docs
- Implement DNS64 for IPv6-only instance #689: DNS64, a separate enhancement
- One tenant can evict other tenants' NAT sessions #721: no per-tenant session limit or visibility
- Operators can't see or alert on NAT egress health #722: no monitoring or alerts on shard health
Phase 2 (anycast SID and regional session state) stays deferred. It needs a new issue if it goes on the roadmap.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
High-Level Summary
Add NAT64 to Galactic VPC's Internet Gateway (IGW): a stateful IPv6-to-IPv4 translation service that lets IPv6-only compute instances reach the legacy IPv4 internet without a dual-stack NIC, a bump-in-the-wire NAT appliance, or any change to the instance's networking config. Tenants provision IPv6-only instances as they do today; outbound traffic to IPv4-only destinations is translated at the IGW and returned untranslated to the originating instance.
Motivation
Galactic VPC's IPv6-only instance type has no path to the IPv4 internet today, and a meaningful chunk of the internet — legacy APIs, vendor endpoints, CDNs without AAAA records — is still IPv4-only. Tenants adopting IPv6-only compute to cut address management overhead currently have to choose between reverting to dual-stack (defeating the point) or running their own NAT64 translator inside the VPC, which pushes an operational burden onto the tenant that we're better positioned to run centrally and correctly. This is table-stakes connectivity for any provider offering IPv6-only compute; without it, IPv6-only is a curiosity, not a real deployment option. RFC 6146 defines the mechanism — nothing novel required on the standards side, this is about integrating it cleanly into our SRv6/IGW data plane and making it operate at Datum scale.
Goals
Phase 1 (ships first — closes the gap; nothing in the fabric provides IPv4 egress today):
Phase 2 (deferred until Phase 1's one real limitation — a shard restart breaks the sessions it was servicing — is a demonstrated operational problem, not built speculatively ahead of that evidence):
Non-Goals