@@ -42,6 +42,7 @@ informative:
4242 RFC1918 :
4343 RFC1122 :
4444 RFC2516 :
45+ RFC3021 :
4546 RFC3046 :
4647 RFC3442 :
4748 RFC6877 :
@@ -91,65 +92,197 @@ support this mechanism.
9192
9293# Introduction
9394
94- An IPv4 address functions as a service endpoint identifier --
95- either for a client seeking access to a service, or a server
96- providing one. The BSD socket API, present in virtually every
97- operating system and language runtime, expresses this directly :
98- a call to `connect(AF_INET, "192.0.2.1", 80)` is a statement
99- about which service to reach, not about routing or link-layer
100- resolution. The host implements IPv4 natively;
95+ Operators have been able to build IPv6-only infrastructure for
96+ years. The routing protocols, the address space and the tooling
97+ are all in place, and IPv6-only control planes run in production
98+ in datacenter fabrics and access networks today. Almost all of
99+ those networks nonetheless carry a parallel IPv4 architecture,
100+ because the applications, devices and systems running on top of
101+ them continue to require IPv4 reachability. A network team that
102+ has built a clean IPv6-only fabric finds itself maintaining IPv4
103+ subnets, IPv4 gateway addresses and ARP alongside it
104+ indefinitely.
105+
106+ This document addresses that situation by separating two things
107+ that have long been treated as one.
108+
109+ # # Two Kinds of IPv4
110+
111+ The IPv4 that applications require is reachability to and from
112+ everything beyond the first hop : the public IPv4 Internet, and
113+ equally the internal services to which applications still open
114+ IPv4 sockets. An IPv4 address here serves as a service endpoint
115+ identifier, for a client seeking a service or a server providing
116+ one. The BSD socket API, present in virtually every operating
117+ system and language runtime, expresses this directly : a call to
118+ ` connect(AF_INET, "192.0.2.1", 80)` is a statement about which
119+ service to reach, not about routing or link-layer resolution.
120+ This demand is real and durable, and this document does not
121+ question it.
122+
123+ The IPv4 that networks deploy in order to satisfy that demand is
124+ a different thing : an IPv4 subnet on the local segment, a
125+ broadcast domain, ARP, and a default gateway that must be the
126+ host's on-link neighbor. No application asks for any of it. It
127+ is the architecture that has historically been required to
128+ deliver the first thing, and the two have been conflated for so
129+ long that needing to reach IPv4 has been taken to entail being
130+ attached to an IPv4 network. Separating them is the subject of
131+ this document; the mechanism defined below is a consequence of
132+ the separation rather than the point of it.
133+
134+ On many segments the local part was never used. Access networks
135+ and hosting segments commonly suppress lateral traffic by
136+ design, through port isolation, split horizon or private VLANs :
137+ subscribers do not address subscribers, and tenants do not
138+ address tenants. On such a segment the only IPv4 destination
139+ ever resolved on-link is the gateway, and the subnet exists so
140+ that ARP has a jurisdiction within which to operate.
141+
142+ That a subnet may contain nothing beyond the ends of a link is
143+ long established. {{RFC3021}} standardised 31-bit prefixes by
144+ observing that the network and broadcast addresses carry no
145+ meaning on a point-to-point link. A large access subnet with
146+ lateral traffic suppressed is the same observation at scale : the
147+ netmask acts as a compression scheme for a set of host routes,
148+ and ARP as the corresponding decompressor.
149+
150+ # # The Local IPv4 Dependency Stack
151+
152+ What rests on the local network is a stack of dependencies, from
153+ the bottom up :
154+
155+ - The IPv4 subnet establishes on-link jurisdiction. The netmask
156+ is the decision procedure determining whether a destination is
157+ resolved locally or handed to a gateway.
158+ - ARP enforces that decision on multi-access links. It does not
159+ make the determination; it acts on one already made.
160+ - A first-hop redundancy protocol exists because the subnet
161+ requires a gateway address and ARP admits only one owner for
162+ it, so any resilient deployment must hold an election. VRRP,
163+ HSRP and CARP address exactly this.
164+ - Address pools are carved to follow the subnetting : sized per
165+ service area, allocated ahead of demand, and renumbered when
166+ demand moves.
167+ - The IPv4 host address sits on top. It is the only layer any
168+ application asked for.
169+
170+ Alongside the stack rather than within it sits a policing
171+ apparatus : DHCP snooping, dynamic ARP inspection and binding
172+ tables. It exists because the base of the stack is an
173+ unauthenticated broadcast protocol feeding a table that permits
174+ only one answer to exist.
175+
176+ ~~~
177+ Conventional This document
178+
179+ +----------------------+ +----------------------+
180+ | IPv4 host address | | IPv4 host address |
181+ +----------------------+ +----------------------+
182+ | carved address pools | | IPv6 Neighbor |
183+ +----------------------+ | Discovery |
184+ | FHRP | +----------------------+
185+ +----------------------+
186+ | ARP |--+ DHCP snooping, dynamic ARP
187+ +----------------------+ | inspection, binding tables
188+ | IPv4 subnet |
189+ +----------------------+
190+ ~~~
191+
192+ None of this was poor engineering. ARP was specified on the
193+ assumption that it operated alone on the link, which in 1982 it
194+ did; there was no adjacent resolution protocol to design
195+ against. What did not follow was revision. IPv6 arrived on the
196+ same links carrying a complete neighbor resolution service, and
197+ IPv4 link-layer resolution was never reconsidered in its light.
198+ The prevailing dual-stack model held the two stacks deliberately
199+ independent instead. IPv4 continues to resolve as though it were
200+ alone on the link, which it has not been for a long time.
201+
202+ # # Removing the Base Layer
203+
204+ Removing the base layer removes the need for those above it.
205+
206+ With no IPv4 prefix on the segment, every IPv4 destination is
207+ off-link by construction, and ARP retains one vestigial
208+ function : locating the gateway. This is not hypothetical.
209+ Hosting providers including Hetzner, OVH and Scaleway have
210+ assigned /32 host addresses with off-link IPv4 gateways for
211+ years, each using a different gateway address and a different
212+ per-OS configuration recipe -- Linux `pointopoint`, netplan
213+ `on-link : true`, explicit post-up routes -- documented in
214+ provider wikis and in no RFC, and not interoperable with one
215+ another.
216+
217+ The sentinel address defined in this document removes the
218+ remaining function. A host that receives it as its IPv4 default
219+ gateway resolves the first-hop link-layer address from the IPv6
220+ neighbor cache it already maintains, and ARP is not used at all.
221+
222+ The layers above lose their object in turn. With no gateway
223+ address on the link, there is no address for a redundancy
224+ protocol to elect an owner for, and any number of routers may
225+ present the sentinel simultaneously without coordination. With
226+ no subnetting to follow, address pools become flat : any address
227+ may be assigned anywhere in the deployment, and none is stranded
228+ by the sizing of a prefix. The policing apparatus reduces to a
229+ single rule, because the first-hop router is the only legitimate
230+ source of an ARP reply.
231+
232+ What remains is IPv6 Neighbor Discovery, a flat pool, and the
233+ host's own IPv4 address : a /32 resting directly on the neighbor
234+ discovery the segment already operates.
235+
236+ This is not a novel arrangement at the host. A VPN connection
237+ provides exactly it : a /32 with no subnet, no ARP, no local IPv4
238+ network, and a next-hop that is not on-link in any classical
239+ sense. Every mainstream operating system, and every application
240+ running on one, handles subnet-less IPv4 on tunnel interfaces
241+ routinely, closed platforms included. What this document changes
242+ is not a host's capacity to operate that way, but the means by
243+ which it is told to.
244+
245+ # # The Mechanism
246+
247+ This document defines a sentinel IPv4 address, `IPV4-SENTINEL`,
248+ that signals to a host stack that link-layer resolution for the
249+ IPv4 default gateway is derived from the link-layer address
250+ entry for the IPv6 default router in the neighbor cache
251+ {{RFC4861}}, rather than via ARP. The IPv4 routing table entry
252+ is unchanged; only the next-hop resolution path is modified.
253+ This eliminates the need for IPv4 subnets and ARP on the local
254+ segment, and with them the requirement for tunneling or
255+ translation at the first hop. The host implements IPv4 natively;
101256routers recognise and forward IPv4 packets and will continue to
102- do so. What this document changes is solely how the host resolves
103- the link-layer next-hop for the first hop.
104-
105- Networks transitioning to IPv6-only segments still need to carry
106- IPv4 traffic for dual-stack hosts. Traditional mechanisms such as
107- dual-stack, tunneling, and translation all reintroduce IPv4 at
108- the infrastructure level. This document defines a sentinel
109- IPv4 address, `IPV4-SENTINEL`, that signals to a host stack that
110- link-layer resolution for the IPv4 default gateway is derived
111- from the link-layer address entry for the IPv6 default router in
112- the neighbor cache {{RFC4861}}, rather than via ARP. The IPv4
113- routing table entry is unchanged; only the next-hop resolution
114- path is modified. This eliminates the need for IPv4 subnets and
115- ARP on the local segment, removing the requirement for tunneling
116- or translation at the first hop.
117-
118- This problem is already being solved in production, but
119- inconsistently. Hosting providers including Hetzner, OVH, and
120- Scaleway independently deploy /32 host addresses with off-link
121- IPv4 gateways using per-OS workarounds (Linux pointopoint, netplan
122- on-link : true, explicit post-up routes). None of this is
123- documented in any RFC, and the implementations are not
124- interoperable across providers. This draft standardises the
125- pattern with a single sentinel address that host stacks can
126- implement natively. Alternative
127- approaches (a new DHCPv4 option, or implicit behaviour when
128- no router is specified) would both require DHCPv4 client
129- changes across every OS implementation; given typical
130- deployment timescales, meaningful coverage would take a decade
131- at best.
257+ do so. What this document changes is solely how the host
258+ resolves the link-layer next-hop for the first hop.
259+
260+ Alternative approaches -- a new DHCPv4 option, or implicit
261+ behaviour when no router is specified -- would both require
262+ DHCPv4 client changes across every OS implementation; given
263+ typical deployment timescales, meaningful coverage would take a
264+ decade at best.
132265
133266The cost of a new DHCPv4 option is also not confined to client
134267stacks. An operator's billing, provisioning, inventory,
135268monitoring, NOC tooling and validation logic all encode what an
136269IPv4 gateway looks like, and a new option changes that shape in
137- every one of them at once. A sentinel address changes none of it :
138- to every system that reads or stores a lease it is an ordinary
139- IPv4 gateway address, syntactically and semantically valid, and
140- it passes through unaltered. The only component that has to know
141- the value is special is the host stack performing next-hop
142- resolution.
143-
144- The sentinel address approach requires no changes to
145- DHCPv4 clients or servers and is incrementally deployable
146- today. Updated and unmodified hosts coexist on the same segment
270+ every one of them at once. A sentinel address changes none of
271+ it : to every system that reads or stores a lease it is an
272+ ordinary IPv4 gateway address, syntactically and semantically
273+ valid, and it passes through unaltered. The only component that
274+ has to know the value is special is the host stack performing
275+ next-hop resolution.
276+
277+ The sentinel address approach therefore requires no changes to
278+ DHCPv4 clients or servers and is incrementally deployable today.
279+ Updated and unmodified hosts coexist on the same segment
147280indefinitely, and a segment may be converted one host at a time.
148281There is no flag day or mandatory switch-over point.
149282
150283The mechanism has been verified to work without changes to
151- applications or DHCPv4 client configuration on Windows 11, macOS,
152- Android, iOS, Linux, FreeBSD, and ChromeOS.
284+ applications or DHCPv4 client configuration on Windows 11,
285+ macOS, Android, iOS, Linux, FreeBSD, and ChromeOS.
153286
154287This document addresses the host-side first-hop gap left open
155288by {{I-D.ietf-intarea-v4-via-v6}}, which defines router-to-router
0 commit comments