This article is contributed by @Cang_Household .
This article details some standard and advanced knowledge. The official support may not cover the knowledge detailed here. As usual, (the lawyers would argue that) you are responsible for all the changes made on your devices and plans. This article does not provide warranties of any kind. By following the knowledge detailed in this article, you agree to hold both the article authors and Verizon harmless.
DHCPv6 Identity Association (IA)
An identity association is a logic container that groups one or more IPv6 assignments between a client and a server.
Among the modes of IAs, there are IA_TA (Temporary Address), IA_NA (Non-Temporary Address), IA_PD (Prefix Delegation), and etc. Temporary addresses can be privacy-enhanced ephemeral addresses. Prefix Delegation assigns one or more address blocks to clients.
DHCPv6 Prefix Delegation (PD)
DHCPv6 Prefix Delegation is the mechanism by which a DHCPv6 server assigns an IPv6 prefix (IA_PD) to a client. The prefix, or a part thereof, can be assigned to local networks, used internally for control-plane addressing, or be further delegated to downstream clients.
Verizon implements the following IPv6 addressing mechanism.
- A customer promise edge router (CPE) sends an ICMPv6 Router Solicitation (RS) to discover the upstream default gateway.
- A upstream router responds with an ICMPv6 Router Advertisement (RA) that provides default route information and sets the Managed flag = 1.
- The CPE initiates DHCPv6 stateful configuration: Solicit, Advertise (server), Request, and Reply (server).
- The upstream may grant a /56 prefix with Option 26 (IA Prefix).
- Conversely, the upstream may deny a prefix with Option 13 (Status Code), Code 6 (NoPrefixAvail). This typically means DHCPv6 is not enabled in the region.
- A Verizon CPE will assign a /64 prefix to the LAN, and use another /64 to address the WAN interface.
- <prefix/56>::/64 will be assigned to LAN. <prefix/56>::1/64 is assigned to LAN interface.
- <prefix/56>ff::1/64 will be assigned to WAN interface. This control-plane address is exposed over the Internet should the WAN ICMPv6 is enabled or the GUI from WAN is enabled.
For endpoint to endpoint IPv6 routing, intermediate routers between the endpoints do not need to have globally routable IPv6 addresses because using the link-local IPv6 addresses is more than sufficient.
There are currently no plans on rolling out IPv6 on NG-PON 2 circuits.
There are currently no plans on rolling out IPv6 on static IP circuits.
Static Routes
Static routes should be used when a /64 subnet of the assigned /56 block is used as a transit network to reach other /64 subnets.
There are plans on implementing a bash script that would update all relevant static routes if the dynamic /56 prefix were to change.
GPON Packet Padding
Some ONT/OLT combinations would add paddings to packets that are less than 100 megabytes in size., but would not correct the checksum. Apparently, it was needed for some older ActionTec routers (but isn't IPv6 deployment is a recent phenomenon?). NICs would reject these packets and cause packet losses.
As of Jan 27, 2025, an ONT/OLT firmware update was pumped out rather laboriously to reach the majority of the footprint.
An ACS command was issued to about 10k routers to see if these customers would still call in to complain about packet losses. The roll out is reflected in APNIC IPv6 Adoption probes.
Vendor Specific Configurations
I only have the following equipment at hand for testing. The following vendor configurations should be generalizable to other enterprise or consumer vendors. Disclaimer: Neither the article authors, nor Verizon, endorse any of their products.
Mikrotik
To request a /56 prefix, use DHCPv6 Client on WAN interface. Prefix length is 56.
Strictly speaking, to route across networks, the router itself does not need a global unicast IPv6 address. Unless you need the router's WAN interface to be globally accessible, which has security ramifications. I choose 00::1/64 as the subnet for the WAN interface. You don't need such a large subnet, but whatever.
[TODO: there is a way to get a deterministic address as <prefix_from_56_pool>00::1/64
For internal networks, you can assign further /64 subnets to them. The distribution of addresses can be SLAAC or DHCPv6. For DHCPv6, there is currently no way to make a smaller /64 pool to dynamically reference the prefix of the larger /56 pool.
Directly Connected routes are automatically populated as expected.
Cisco IOS XE
Vanilla Box (Alpine Linux)