Skip to main content IPv6 | IoT Worker

IPv6

If you think of IPv6 as “changing IPv4 addresses from 32 bits to 128 bits”, this article would not need to exist. What actually makes IPv6 a different network model is not just that the address got longer. It also rewrites several default assumptions that had been bothering IPv4 networks for a long time: address scarcity, widespread NAT, separate ARP, messy fragmentation boundaries, and host configuration that depends heavily on centralized assignment.

IPv6 is not a single patch. It is a plan for resetting boundaries. It answers “what to do when public addresses run out”, but it also answers “where should neighbor discovery, control messages, autoconfiguration, and end-to-end reachability actually live?”

IPv6 is not just “longer addresses”. It expands the address space while also rewriting the default model for host addressing, neighbor discovery, autoconfiguration, and network control

Why It Appears

IPv4 kept working for a long time, but that does not mean its default assumptions were not slowly being worn through by reality. The most obvious problem is address space:

  • Public IPv4 addresses are limited
  • NAT became a large-scale reality
  • End-to-end reachability increasingly depends on state and policy at boundary devices

But IPv6 is not only trying to solve that one issue. IPv4 also accumulated a long list of operational problems:

  • ARP exists as a separate link-discovery mechanism
  • Fragmentation semantics add complexity for paths and middleboxes
  • Autoconfiguration and parameter delivery rely heavily on extra protocol combinations
  • Network control information is scattered, and boundaries are not always clear

IPv6’s value is that it does not only fix “not enough addresses”. It also rethinks those boundaries at the same time.

The Background It Came From

IPv6 came out of IETF long-term evolution, not a single vendor optimization. It faced an Internet that was already heavily deployed with IPv4 and was already under real operational pressure.

That made its design priorities very clear:

  • The address space had to be large enough that NAT would no longer be the default patch
  • Hosts needed to configure themselves more naturally
  • Network control messages needed to be pulled into the protocol system more explicitly
  • The intermediate devices needed less complex rescue logic

So IPv6 may look like a lower-layer protocol upgrade, but in practice it also changes the behavior model of hosts, links, local discovery, and boundary devices.

Grasp the Main Model First

When reading IPv6, keep four things in mind:

  • The address space is huge, so scarcity is no longer the default assumption
  • Neighbor discovery no longer uses ARP; it is folded into ICMPv6
  • Hosts can obtain addresses through stateless autoconfiguration
  • Paths and middleboxes are not expected to do as much rescue work by default

You can compress it like this:

IPv4:
IP + ARP + ICMP + DHCP + NAT(as a practical default)

IPv6:
IPv6 + ICMPv6(NDP / control messages) + SLAAC / DHCPv6 + a much weaker dependency on NAT

This does not mean IPv6 has no complexity. It means the complexity has been moved to new places.

The Most Common Main Path

A typical IPv6 host bring-up can be simplified like this:

sequenceDiagram participant H as Host participant R as Router participant N as Neighbor Host H->>R: Router Solicitation R->>H: Router Advertisement Note over H: Build IPv6 address / default route / prefix info H->>N: Neighbor Solicitation N->>H: Neighbor Advertisement Note over H,N: Complete local neighbor resolution H->>R: IPv6 Packet to remote network

The most important change is not the packet names. It is that:

  • Link discovery, router advertisement, and neighbor resolution are folded into ICMPv6
  • A host does not necessarily need to run DHCP before it can have an address
  • The boundary between local discovery and cross-subnet forwarding becomes clearer

Why IPv6 No Longer Uses ARP

This is one of the most important changes to remember first.

In IPv4:

  • IP handles network-layer addressing
  • ARP resolves a local next-hop IP into a MAC address

IPv6 moves that job into the Neighbor Discovery part of ICMPv6 (NDP). The value of that choice is not just “one less protocol”. It is that local-link discovery, advertisement, and control information now fit into one control-message framework.

That means:

  • Local neighbor discovery no longer depends on a separate ARP broadcast
  • Neighbor resolution, address conflict detection, and router discovery are unified into one mechanism
  • The role of ICMPv6 is much more central than ICMP in IPv4

If you still think of IPv6 as “just longer addresses”, you will miss how it rewrites the local-link control model.

Why ICMPv6 Is More Like the Skeleton Than a Side Protocol

In the IPv4 world, ICMP is often treated as a diagnostics protocol or a ping protocol. That understanding is no longer enough in IPv6.

In IPv6, ICMPv6 does not only handle:

  • Error feedback
  • Echo request / reply

It also handles:

  • Router Solicitation / Advertisement
  • Neighbor Solicitation / Advertisement
  • Path MTU feedback

So IPv6 pulls a large part of the network control plane into ICMPv6. That is why aggressively blocking all ICMPv6 is much more damaging than crudely filtering ICMP in IPv4.

Why SLAAC and DHCPv6 Are Not Simple Substitutes

In IPv4, many people naturally think of DHCP when they think of “getting an address”. IPv6 changes that default model.

A host can get an IPv6 address in two common ways:

  • SLAAC: build the address automatically from prefix and local interface information
  • DHCPv6: obtain the address or other configuration through a dedicated protocol

These are not simple “choose one instead of the other” replacements. They are more like different divisions of labor under different network policies:

  • Some networks care more about autonomy and automatic address formation
  • Some networks care more about centralized allocation and policy control
  • Some networks split address formation from other configuration delivery

So when you read IPv6 configuration, do not treat DHCPv6 as just the IPv4 DHCP equivalent projected forward.

Why IPv6 Tries to Weaken NAT’s Role

One of IPv6’s most important goals is to stop making NAT the default patch for address scarcity.

The reasoning is straightforward:

  • If the address space is large enough, hosts do not need to hide behind address rewriting by default
  • If end-to-end address semantics can be preserved, many connections and protocols become simpler
  • The traversal, state timeout, return-path conditions, and protocol adaptation problems introduced by NAT are not a natural network-layer default

That does not mean real IPv6 networks never use any address rewriting or boundary policy. It means:

  • IPv6 no longer treats NAT as the default survival mode
  • Reachability and security should not be permanently tied to address sharing and translation

So the relationship between NAT and IPv6 is not “IPv6 comes with a more advanced NAT”. It is “IPv6 tries to make NAT stop being the foundation”.

Why IPv6 Also Raises New Troubleshooting Barriers

IPv6 rewrites many default assumptions. The benefits are large, but so are the new failure shapes:

  • There may be many addresses, so there is no longer a single “main address” mental model
  • Local discovery problems land in ICMPv6 / NDP
  • The combination of autoconfiguration and centrally managed configuration is more complex
  • In dual-stack deployments, the same business problem may only fail on IPv4 or only on IPv6

So “IPv6 is supported” does not mean troubleshooting becomes easier. It just means the boundary moved.

What to Look At in Packet Capture

The easiest way to get lost in IPv6 captures is to start by memorizing address compression rules or extension-header details. A better order is below.

First check how the host got its address and default route

Confirm:

  • Whether there is a Router Advertisement
  • How the address was formed
  • Whether the default route came from the expected router

Many “IPv6 is not working” cases do not even reach transport. The host is already off track during attachment.

Then check whether neighbor discovery is working

Focus on:

  • Neighbor Solicitation / Advertisement
  • Address conflict detection
  • Whether the local neighbor cache is stable

This is what ARP handled in IPv4. In IPv6, the mental model has to switch to NDP.

Finally check whether failures are exposed properly by ICMPv6

Many path problems, MTU problems, and destination-unreachable cases in IPv6 rely more heavily on ICMPv6 being correctly handled and allowed.

If that layer is blocked, many symptoms collapse into:

  • Upper-layer connection timeout
  • Large packets failing occasionally
  • Path issues that can only be guessed at

What Engineering Should Actually Think About IPv6 Today

  • Do not think of IPv6 as “IPv4 with more bits”. It changes the default network assumptions
  • Do not treat ICMPv6 as an accessory protocol. It is closer to the control-plane skeleton in IPv6
  • Do not treat SLAAC and DHCPv6 as a simple replacement pair. They usually share different configuration responsibilities
  • Do not assume IPv6 should still follow NAT-era mental models. Many boundaries are deliberately being weakened
  • Do not ignore dual-stack reality. Many production issues are not “the network is broken” but “IPv4 and IPv6 paths behave differently”

Further Reading

  • IP - how IPv4 reachability and fragmentation boundaries worked before IPv6
  • NDP - how IPv6 neighbor discovery, router discovery, and address probing are folded into ICMPv6
  • ARP - why IPv6 chose not to keep using ARP as a separate local discovery path
  • ICMP - why ICMP in IPv4 and ICMPv6 in IPv6 do not have the same role
  • DHCP - the difference between IPv4 address assignment and IPv6 autoconfiguration
  • NAT - why IPv6 tries to push NAT out of the default stage

References