IPv6 is not IPv4 with longer addresses — several IPv4 habits (broadcast, ARP, NAT-as-normality, one-address-per-interface) simply do not carry over. But the addressing itself is where fluency starts: 128 bits, written as eight 16-bit hextets separated by colons, with two compression rules — leading zeros in any hextet may be dropped, and one run of consecutive zero hextets may collapse to :: (once per address, or ambiguity would follow). So 2001:0db8:0000:0000:0000:0000:0000:0001 is written 2001:db8::1.
Address types
- Global unicast (2000::/3) — the public, routable space; today's allocations mostly sit in 2000–3fff. Typically a site receives a /48, a building or VRF a /56 slice, and every LAN a /64.
- Link-local (fe80::/10) — auto-generated on every IPv6 interface, valid only on its link, never routed. Routing protocol adjacencies, next hops and Neighbor Discovery all run over link-local — an IPv6 routing table's next hops are fe80 addresses.
- Unique local (fc00::/7, in practice fd00::/8) — the RFC 1918 analogue: pick a random /48 under fd00, route it internally, never announce it globally.
- Multicast (ff00::/8) — replaces broadcast. Well-known groups: ff02::1 all nodes on link, ff02::2 all routers, ff02::5 and ff02::6 for OSPFv3, ff02::a EIGRP, plus solicited-node groups covered in the next chapter.
- Anycast — no reserved range: configure the same unicast address in multiple places and routing delivers to the nearest instance.
Subnetting without the pain
IPv6 subnetting is nibble arithmetic, not subnet-mask gymnastics. Every hex digit is 4 bits, so a /48 to /64 span is exactly four hex digits of subnet ID: 2001:db8:acad::/48 yields subnets 2001:db8:acad:0000::/64 through 2001:db8:acad:ffff::/64 — 65,536 LANs, enumerable by counting in hex. Standard practice: /64 for every host-bearing segment (SLAAC requires it), /127 for router point-to-point links (RFC 6164), /128 for loopbacks. Address scarcity is not a design input; plan for readability and aggregation instead — align sites and functions on nibble boundaries so ACLs and route summaries stay one line long.
Interfaces carry sets of addresses
An IPv6 interface normally holds several addresses at once: its link-local, one or more global unicasts, and memberships of the relevant multicast groups. This is by design — renumbering, multihoming and privacy addressing all lean on multiple simultaneous addresses with lifetimes, rather than IPv4's one-address model.
R1(config)# ipv6 unicast-routingR1(config)# interface gi0/0R1(config-if)# ipv6 address 2001:db8:acad:10::1/64R1# show ipv6 interface brief gi0/0GigabitEthernet0/0 [up/up] FE80::5254:FF:FE01:AB01 2001:DB8:ACAD:10::1
Fluency drill: compress and expand addresses until :: placement is automatic, and practise carving a /48 into /64s by counting hex. Every subsequent IPv6 topic — ND, SLAAC, OSPFv3, dual-stack design — assumes the notation costs you nothing.