Module 7 of 45 · Foundations

IPv6: the internet's present address plan

30 min 5 outcomes 2 diagrams + 3 knowledge checks

An IPv6 address is two halves of equal size: a 64-bit network prefix that says which segment you are on, and a 64-bit identifier that says which interface on that segment you are. Hosts normally build the second half for themselves, nothing is translated on the way out, and on 28 March 2026 the share of Google's worldwide users arriving over IPv6 read 50.10 percent for the first time. Everything below is why those three statements are true and what follows from each of them.

By the end of this module you will be able to:

  • Read a 128-bit IPv6 address and name its parts
  • Explain why every LAN segment is a /64
  • Contrast SLAAC and DHCPv6, and say when each is used
  • Recognise link-local and unique local addresses in real interface output
  • State, with source and date, how much of the internet runs IPv6 today

28 March 2026: Google's published IPv6 figure passed half its users

Google publishes a public statistics page showing the share of users who reach Google over rather than over IPv4. On 28 March 2026 that figure read 50.10 percent, the first time the measurement had passed half of its worldwide users. There was no announcement, no protocol change and no switchover. A line on a chart crossed a level, and the level happened to be one people find memorable.

The number is worth reading carefully, because it is a specific claim rather than a general one. It counts users who arrive at Google properties, seen from Google's own servers, on that date. It is not a count of networks, not a count of devices, and not a statement that half the internet has switched off IPv4. What it does establish is that for a service with worldwide reach, the median user is now as likely to arrive over IPv6 as over IPv4.

That is the part that changes an organisation's work. Once the median user is on IPv6, an IPv6 path that is quietly broken is no longer an edge case affecting a few enthusiasts. It is half your traffic, hidden behind clients that are polite enough to fall back to IPv4 and never tell anyone. The rest of this page builds the vocabulary you need to look at that half of the traffic and know what you are seeing.

A single published measurement crossed 50 percent for the first time. What should change in the way an organisation designs and tests a service the day after that happens?

An IPv6 address is a plan, not a number

Only the middle sixteen bits are yours to plan, because everything below the /64 is interface identifier, and the tree spends those bits on office, guest and server segments, so an IPv6 subnet is sized by purpose and never by the number of hosts it will hold.

Read an IPv6 address as a plan: a delegated global routing prefix, sixteen subnet bits you allocate as /64 segments, and an interface identifier the host builds with SLAAC (RFC 4862) or DHCPv6 (RFC 8415).

An IPv6 address is a plan, not a number Two stacked regions. The top region decomposes one example address into three full width rows: bits 1 to 48 are the global routing prefix delegated by a provider or regional registry; bits 49 to 64 are the subnet id, highlighted, where sixteen bits give 65,536 segments to plan by site and purpose rather than by host count; bits 65 to 128 are the interface identifier that SLAAC builds under RFC 4862 or DHCPv6 assigns under RFC 8415. A labelled arrow carries the middle sixteen bits down to the bottom region, an allocation tree whose root is the site delegation and whose three branches are office, guest and server segments, each a /64. ONE ADDRESS, 128 BITS, RFC 8200 2001:0db8:1a2b:0007:0000:0000:0000:0001 BITS 1 TO 48 2001:0db8:1a2b Global routing prefix Delegated by your provider or a regional registry; you never choose these bits. BITS 49 TO 64 0007 Subnet id Sixteen bits give 65,536 segments. Plan by site and purpose, not by host count. BITS 65 TO 128 0000:0000:0000:0001 Interface identifier SLAAC builds it (RFC 4862), or DHCPv6 assigns it instead (RFC 8415). SITE ALLOCATION 2001:0db8:1a2b::/48 65,536 segments of /64 to allocate SEGMENT 1 2001:0db8:1a2b:0001::/64 Office VLAN SEGMENT 2 2001:0db8:1a2b:0002::/64 Guest VLAN SEGMENT 3 2001:0db8:1a2b:0003::/64 Server VLAN the middle sixteen bits are what you plan always a /64, never smaller one per VLAN, not per host count spare capacity by design

7.1 The address space that ended scarcity

IPv6 does the same job as IPv4. It carries packets between networks, it is routed hop by hop, and it makes no promise that any individual packet arrives. The change is the size of the address: 32 bits became 128 bits. Every other difference in this module follows from that one decision.

Because 128 bits would be unreadable in the dotted decimal style of an in IPv4, IPv6 is written in hexadecimal: eight groups of four hex digits, separated by colons. Written out in full, an address looks like 2001:0db8:0000:0000:0000:0000:0000:0001. Nobody writes them that way, because two shortenings are allowed. Leading zeros inside a group may be dropped, so 0db8 becomes db8. One run of consecutive all-zero groups may be replaced by a double colon. Apply both and the same address reads 2001:db8::1.

The double colon may appear only once in an address, and the reason is worth understanding rather than memorising. The reader of an address works out how many zero groups the double colon stands for by subtracting the groups that are written from eight. With two double colons in one address there would be no way to tell how many of the missing groups belonged to each, so the address would have more than one valid reading. One is unambiguous; two is a guess.

That is the whole of the notation. The pay-off is what the extra bits do to the behaviour of the people who run networks. Under IPv4, address space was scarce enough to become an asset in its own right: something to be requested, justified, conserved, audited, reclaimed from a team that had stopped using it, and shared between many devices by rewriting packets in flight. Long-lived working practices grew up around that scarcity, and so did a good deal of internal politics.

The design goal of a 128-bit address was to make addresses boring. When a site can have as many addresses as it can think of uses for, nobody competes for them, nobody conserves them, and the interesting questions move back to where they belong: routing, naming, and who is allowed to reach what. An address plan under IPv6 is a piece of documentation design rather than a rationing exercise.

Reading the notation is only half of reading an address. The other half is knowing where the 128 bits split, because the split is what tells you which part identifies the segment and which part identifies the machine sitting on it.

7.2 The /64 rule and what lives inside it

Every ordinary IPv6 segment is a /64. The first 64 bits are the network prefix, the last 64 bits are the . In 2001:db8:4a3c:12::5c on a /64, the prefix is 2001:db8:4a3c:12::/64 and the identifier is the part after it. The prefix length is written in the same notation you already use for IPv4, and it means exactly the same thing: this many leading bits are the network.

The /64 is not an arbitrary convention. It is what the default address configuration mechanism needs in order to work. Under , specified in RFC 4862, a host builds its own global address by taking the prefix a router advertises on the link and appending a 64-bit identifier of its own. Advertise anything narrower than a /64 on a segment carrying ordinary hosts and there is no room for the identifier, so the hosts on that segment stop configuring themselves. The rule exists because of the mechanism, and it is the mechanism, not tradition, that you would be arguing with.

This inverts the arithmetic taught in the previous module. In IPv4 you sized a by counting the hosts you expected, choosing the smallest prefix that held them with a little headroom, and then defending the addresses you had left over. Under IPv6 that calculation does not exist. Every segment is the same size, and the size is far larger than any segment will use. What you allocate instead is segments.

A site is typically given a /48 by its provider, and the design work is cutting /64s out of it. Between bit 48 and bit 64 there are sixteen bits of subnet identifier, which is far more segments than a single site will ever number. Because the space is not scarce, the only sensible way to use it is to make it readable: give each site, building, floor or function a block that a person can recognise on sight, leave wide gaps between blocks, and never pack the allocation tightly to save space you are not short of. A prefix you can read in a firewall log without opening a spreadsheet is worth more than a prefix that wastes nothing.

There is one honest exception worth knowing so that real output does not surprise you. Links that carry only two routers and no ordinary hosts have nothing doing stateless autoconfiguration on them, so operators commonly number those with something much narrower than a /64. If you meet one in a routing table, it is not a mistake. Every link where hosts live is a /64.

One thing that does carry over from IPv4 unchanged is the warning at the end of the previous module: a /64 boundary is a delivery boundary, not a security boundary. Two devices on the same /64 reach each other directly, whatever the policy on the router says, and a device that moves between segments changes its prefix without changing what it is allowed to do.

Knowing where the address splits raises the obvious question of who fills in each half. The prefix comes from the router. The identifier is where IPv6 behaves quite unlike the network most people learned on.

7.3 How hosts get addresses without asking

An IPv6 host does not wait for a server to give it an address. It configures the first one for itself the moment the interface comes up, and it can reach the rest of the segment before anything on the network has been consulted.

The sequence in RFC 4862 is short. When an interface is enabled, the host forms a by combining the well-known link-local prefix, fe80::/10, with an interface identifier. Before using it, the host checks that nobody else on the link already holds it, a step called duplicate address detection. It then listens for router advertisements. If a router is present and advertising a prefix, the host combines that prefix with its identifier and now holds a global address as well. No server was asked, and no server holds a record of the result.

The link-local address stays for the life of the interface, and it is not decoration. The signalling that hosts and routers use to find each other on a segment, which IPv6 calls neighbour discovery, runs over link-local addresses rather than global ones, and so do the router advertisements themselves. An interface showing only an fe80:: address is therefore not automatically faulty. It is a host that has configured itself correctly and heard no router advertisement, which is a statement about the segment rather than about the host.

The identifier half is a choice, not a fact about the hardware. A host may derive it from its , generate it at random, or rotate it periodically for privacy. Rotation is now normal client behaviour, which is why a laptop routinely shows several global IPv6 addresses at once and why an address is a weak identifier for anything you intend to audit. Pin identity to the device or the user, not to the number in the log line.

, specified in RFC 8415, is the mechanism for the cases where self-configuration is not what the organisation wants. A DHCPv6 server can hand out addresses and prefixes and keep a record of which client holds what, which is what a regulated estate usually needs, and it can supply settings such as resolver addresses whether or not it is supplying addresses at all. That last point is the source of a common and confusing fault: a host can hold a perfectly valid global address obtained by autoconfiguration and still resolve no names at all, because addressing and resolver configuration arrived, or failed to arrive, by different routes.

The choice between them is a management question rather than a technical one. Use stateless autoconfiguration where you want segments that work with no dependency to fail, which covers most user networks. Use DHCPv6 where somebody has to be able to answer "which device held this address at 14:20 on Tuesday" from a record rather than an inference. Many estates run both, and the failure mode above is what happens when nobody wrote down which one supplies which piece.

The last address type you need to recognise is the site-internal one. come from the fc00::/7 range that RFC 4193 sets aside, and the half of that range defined for local assignment is why these addresses start with fd in real output. They are built around a randomly chosen identifier, so two organisations that later merge are very unlikely to find their internal ranges clashing, which is exactly the problem that private IPv4 addressing created at every acquisition. Routers on the public internet are expected to ignore them.

That makes unique local addressing the nearest IPv6 analogue of private IPv4 space, and it is important to be precise about how far the analogy goes. It is a scoping decision. It says where an address is meaningful. It does not say who may connect to it, and it is not a substitute for a firewall.

Common misconception

Letting hosts configure their own addresses is a security hole.

Addressing is not authorisation. Stateless autoconfiguration decides what a host calls itself, not what it is allowed to reach, and an attacker who is already on your segment can pick any address they like whether or not you run a server that hands them out. The controls that actually decide reachability sit elsewhere: port-level admission control on the link, and a stateful firewall at the boundary that permits what policy says and drops the rest. If the requirement is an audit record of who held which address, that is a reason to add DHCPv6 or neighbour-table logging, not a reason to distrust autoconfiguration. Treating the addressing mechanism as the security control is how estates end up with neither.

Autoconfiguration gives every host a global address that is valid anywhere on the internet. To an engineer trained on private addressing behind a translator, that sounds like the removal of a defence, and it is worth settling what was actually being defended.

7.4 No NAT by design

IPv6 gives every device an address that works end to end, with nothing rewriting it in flight. Default-deny for unsolicited inbound traffic still exists. It comes from a stateful firewall applying a written policy, which is where it should have been coming from all along.

Start with what actually does, because the security reputation it enjoys is a side effect rather than a purpose. A translating router rewrites addresses and ports so that many internal devices share one public address, and it keeps a mapping each outbound conversation to the translated address and port it went out as. A packet arriving from outside is forwarded only if it matches an entry in that table. Unsolicited inbound traffic is dropped because there is no entry to match it against, not because anyone wrote a rule saying it should be.

Once that is clear, the IPv6 design reads differently. Removing translation removes address sharing and the state table that made it work. It does not remove filtering, because filtering was never the same function. An IPv6 edge firewall holding state on outbound flows and dropping unsolicited inbound gives you precisely the behaviour the translator gave you, with two differences that both favour IPv6: the behaviour is written down as policy you can read, review and test, and it can be changed for one service without breaking the addressing of everything else.

The other thing you get back is evidence, and this is the part that matters most for the troubleshooting work later in the course. Behind translation, a log entry at the far end names the shared public address of a whole office, so answering "which machine did this" means correlating timestamps against translation logs that may or may not have been kept. With global addressing the log line names the host. The same is true in reverse: a support engineer can be given an address and reach the actual device, rather than negotiating a port-forwarding rule that has to be maintained by somebody who has left.

None of this means translation disappears from your working life. It is still how most IPv4 access is delivered, and the applied stage takes the full argument apart in the module on NAT and state, including the machinery that lets IPv6-only networks still reach IPv4-only services.

Common misconception

Without NAT, every device on an IPv6 network is exposed to the internet.

Reachable and permitted are different words. A global address means a packet could be addressed to that device; whether one arrives is decided by the firewall in front of it. An IPv6 edge firewall configured to permit return traffic for outbound flows and drop everything else produces exactly the inbound behaviour a translator produced, as an explicit rule set rather than an accident of a translation table. The genuine risk in the transition is different and more mundane: an estate that assumed translation was doing the filtering may have no IPv6 policy written at all, so the IPv6 path is open while the IPv4 path is closed. The fix is to write the policy, not to reintroduce translation.

Global addressing, self-configuring hosts and a firewall doing the filtering describe how IPv6 is meant to work. Whether it is actually working at that scale yet is a question of measurement, and measurement is where most confident statements about IPv6 fall apart.

7.5 IPv6 is the present

Two independent measurements settle the question of how far along this is, and the gap between them is the lesson. Google's public IPv6 statistics page recorded 50.10 percent of its worldwide users arriving over IPv6 on 28 March 2026. APNIC Labs, measuring a different population in a different way, puts global IPv6 capability at 42 to 43 percent, with India and France both above 70 percent. The APNIC figure is a rolling one rather than a fixed reading, so quote it from the page on the day you use it rather than from memory.

The two sources disagree by several points, and neither of them is wrong. Google is reporting the users who arrive at Google properties, seen from Google's own servers. APNIC Labs is estimating whether end users are capable of IPv6 at all, by running a measurement from a sample of users across the internet and weighting the results by how many users each economy actually has, because the raw sample is not spread evenly. Different populations, different vantage points, different questions, therefore different answers.

That habit has a name worth keeping: . Quote a network statistic with its source, its method and its date, or do not quote it. A figure repeated without those three is untraceable within a week, and adoption figures in particular are quoted years after the measurement that produced them. When somebody tells you IPv6 adoption is at some number, the useful reply is to ask who was counted.

The averages also matter less than they look, because no organisation serves the global average. If your users are in India, the relevant figure is above 70 percent and an IPv4-only service is a visible handicap. If your users are on one corporate network in one country, the relevant figure is whatever that network does, which you can find out directly rather than inferring from a worldwide chart. Both Google and APNIC publish their figures broken down by country, which is the level at which a decision gets made.

IPv6 is the road, and IPv4 is the diversion kept open

The upper lane carries the host's own global address end to end, while the lower lane works only because a NAT holds state deciding which reply may return, so an IPv4 answer depends on something an IPv6 answer never needs.

IPv6 is the road and IPv4 is the diversion kept open by translation and state; Google measured 50.10 percent of its worldwide users on IPv6 on 28 March 2026 (Google IPv6 statistics).

IPv6 is the road, and IPv4 is the diversion kept open Two lanes stacked one above the other. The upper lane, emphasised, is native IPv6: a host holding a global address on a /64 segment, a path where no middlebox rewrites anything, and a server answering on AAAA, with labelled arrows between the three. The lower lane is IPv4 kept open: a private address shared by many hosts, a NAT that rewrites and then keeps a state table deciding which reply may return, and a server answering on A. Two labelled arrows cross from the upper lane to the lower one: a browser falling back when there is no AAAA record, and NAT64 with DNS64 translating for an IPv6-only host. A callout below carries the Google measurement of 28 March 2026. LANE 1 Native IPv6: the road No translation anywhere on the path Host has a global address Every LAN segment is a /64 Routed end to end No middlebox rewrites theaddress Server answers on AAAA The address in the answeris the address on the wire the address is globally routable the name resolved to an AAAA record LANE 2 IPv4: the diversion kept open Kept working by translation and by state A private address inside Many hosts share onepublic address NAT rewrites, then waits A state table decideswhich reply gets back in Server answers on A The address on the wire isnot the host's own a private address cannot cross the reply must match a live entry no AAAA record, so the browser takes the IPv4 lane NAT64 and DNS64 translate for an IPv6-only host IPv6 is the present, not the future Google measured 50.10 percent of its worldwide users on IPv6 on 28 March 2026 (Google IPv6statistics).The IPv4 lane stays open for services that are still IPv4-only, not because IPv6 is unfinished.

What sits behind those percentages, almost everywhere, is operation: hosts and networks running IPv4 and IPv6 at the same time, with both usable, and the application choosing per connection. Clients do not choose naively. A modern client resolves a name, gets answers in both families, and starts an attempt on one while holding the other in reserve for a short delay, a behaviour usually called . Whichever family answers first wins the connection.

That politeness is the operational trap of the whole transition. A broken IPv6 path does not produce an error anybody reports. It produces a small extra delay on every connection and then a successful IPv4 connection, so the service looks healthy from the outside and slightly sluggish from the inside, for months. Dual-stack doubles the number of paths that can fail and halves the chance that a failure announces itself, which is why testing has to name the family explicitly instead of trusting that the page loaded.

Running both families indefinitely is not the destination either, because it means paying to operate two internets. The applied stage covers the mechanisms that let a segment start retiring IPv4 while keeping the devices that still need it, which is the approach usually called an . The operational guidance describing it is an Internet-Draft rather than a published RFC, which is a distinction the frontier modules take seriously and you should too.

Common misconception

IPv6 is the future. We will get to it when it matters.

It is the present, and the measurements say so. Google recorded 50.10 percent of its worldwide users arriving over IPv6 on 28 March 2026, and APNIC Labs puts capability above 70 percent in India and France. Those are counts of people reaching real services on an ordinary day, which means your staff and your customers are already arriving over IPv6 whether or not your architecture diagram mentions it. The real cost of waiting is not a missed deadline: a service that stays IPv4-only in 2026 is reached by a growing share of its users through somebody else's translation equipment, which is a dependency you did not choose, cannot see in your logs, and cannot fix when it degrades.

Notation, the /64 split, the two ways a host is configured, the missing translator and the published figures are each straightforward on their own. They arrive together, and unannounced, as a few lines of interface output that have to be read correctly before anything else about a fault can be worked out.

7.6 Check your understanding

A laptop's interface output shows three IPv6 addresses: 'inet6 fe80::1c2b:4aff:fe6d:9e01 prefixlen 64', 'inet6 2001:db8:4a3c:12::5c prefixlen 64' and 'inet6 fd41:9b2e:77c0:12::5c prefixlen 64'. Which one does the laptop use to reach a web server on the public internet?

A workstation on a new segment shows only an fe80:: address on its interface, and it cannot reach anything beyond the segment. What is the most likely explanation?

A laptop holds a valid global IPv6 address and can reach a server when given its address directly, but no hostname resolves. What does that pattern point to?

Core distinctions

  • An IPv6 address is 128 bits written as eight groups of four hexadecimal digits. Leading zeros in a group may be dropped and one run of all-zero groups may be replaced by a double colon, which can appear only once because a second one would make the address ambiguous.
  • Every ordinary segment is a /64: the first 64 bits are the network prefix and the last 64 bits are the interface identifier. The rule exists because stateless autoconfiguration needs that much room, and IPv6 subnetting means allocating /64s out of a /48 rather than counting hosts.
  • Stateless address autoconfiguration, specified in RFC 4862, has hosts build their own addresses from an advertised prefix. DHCPv6, specified in RFC 8415, is used where the organisation needs a record of who holds what, or where only the resolver settings are being supplied.
  • A link-local address from fe80::/10 is always present and never routed off the link, so an interface showing only fe80:: has configured itself correctly and heard no router advertisement. Unique local addresses come from the fc00::/7 range in RFC 4193 and are site-scoped, not filtered.
  • IPv6 has no translation by design. Default-deny for unsolicited inbound comes from a stateful firewall applying a written policy, which is auditable in a way a translation table never was, and global addressing means a log line names the actual host.
  • Google recorded 50.10 percent of its worldwide users arriving over IPv6 on 28 March 2026; APNIC Labs, on a different population and method, puts global capability at 42 to 43 percent, with India and France above 70 percent. Quote any such figure with its source, its method and its date.

Standards and sources cited in this module

  1. RFC 8200 (STD 86), Internet Protocol, Version 6 (IPv6) Specification

    Section 1, Introduction; Section 3, IPv6 Header Format

    The current IPv6 specification and the source for the move from 32-bit to 128-bit addresses used throughout Section 7.1.

  2. RFC 4862, IPv6 Stateless Address Autoconfiguration (IETF)

    Section 5.3, Creation of Link-Local Addresses; Section 5.5, Creation of Global Addresses

    The source for the /64 dependency in Section 7.2 and for the link-local formation and prefix-plus-identifier sequence in Section 7.3.

  3. RFC 8415, Dynamic Host Configuration Protocol for IPv6 (DHCPv6) (IETF)

    Section 1, Introduction

    Defines DHCPv6, including the supply of configuration parameters such as resolver addresses without addresses, which is the split behind the fault described in Section 7.3.

  4. RFC 4193, Unique Local IPv6 Unicast Addresses (IETF)

    Section 3, Local IPv6 Unicast Addresses

    Assigns the fc00::/7 range, explains the randomly chosen global identifier that keeps sites from clashing, and states that these addresses are not expected to be routed on the public internet. Used in Section 7.3.

  5. RFC 4787 (BCP 127), NAT Behavioral Requirements for Unicast UDP (IETF)

    Behavioural requirements; security considerations

    The behaviour specification for address translation, and the source for the statement in Section 7.4 that mapping behaviour does not determine the security properties of the device.

  6. Google IPv6 statistics (Google)

    Per-country adoption; worldwide users accessing Google over IPv6

    The published measurement behind the 50.10 percent figure recorded on 28 March 2026, used in the opening case and in Section 7.5.

  7. IPv6 measurement (APNIC Labs)

    Global and per-economy IPv6 capability

    The second measurement used in Section 7.5, giving global capability of 42 to 43 percent and India and France above 70 percent, on a different method and population from Google's.

Every address in this module was described as though the device holding it were plugged into something. For most users it is not: the prefix arrives, the router advertisement is heard and the first packet is sent across a radio link shared with everyone else in the building. The next module takes that first hop apart, and explains why the thing users actually feel about Wi-Fi is roaming rather than the headline speed on the box.

Module 7 of 45 · Foundations