Eric's Tech Notes

HOWTO guides to sometimes complicated tasks

3GPP EPC IPv6 Design

This HOWTO assumes you have IPv4 understanding and EPC design experience. First we need to understand how the IPv6 addresses are assigned and used in a general sense. Once we have a good idea of the mechanics we need to differentiate between transport/control plane and user plane and how 3GPP decided to do it with PGW. References used to create this content involve: Google Book Link

The transport & control plane makes up your S1, S5, S6a, S10, S11, and S13 along with all the links in EPC. User plan is the MS/UE’s IP interface and anything from SGi downwards to internet.

IPv6 Address Lifecycle

IPv6 hosts usually operate with multiple addresses per interface, and each address has a set of timers indicating how long and for what purposes the corresponding address can be used. In IPv6, addresses are assigned with a preferred lifetime and valid lifetime. These lifetimes are used to form timeouts that move an address from one state to another in an address’s state machine.

IPv6 Life Cycle

The above figure shows the life cycle of an IPv6 address. An address is in the preferred state when it is available for general use and is available as either a source or destination IPv6 address. A preferred address becomes deprecated when its preferred timeout occurs. When it becomes deprecated, it may still be used for existing transport (e.g., TCP) connections but is not to be used for initiating new connections. When an address is first selected for use, it enters a tentative or optimistic state. When in the tentative state, it may be used only for the IPv6 Neighbor Discovery protocol. It is not used as a source or destination address for any other purposes. While in this state the address is being checked for duplication, to see if any other nodes on the same network are already using the address. The procedure for doing this is called duplicate address detection (DAD) and is described in more detail in ICMPv6 section below. An alternative to conventional DAD is called optimistic DAD [RFC4429], whereby a selected address is used for a limited set of purposes until DAD completes. Because an optimistic use of an address is really just a special set of rules for DAD, it is not a truly complete state itself. Optimistic addresses are treated as deprecated for most purposes. In particular, an address may be both optimistic and deprecated simultaneously, depending on the preferred and valid lifetimes.

Interface Identifiers

EUI = Extended Unique Identifier
OUI = Organizationally Unique Identifier (maintained by IEEE registration authority)
IID = Interface Identifier

Link-local and some global addresses use IIDs in the last 64 bit portion of the IPv6 address. IIDs are typically formed from the link-layer MAC address via modified EUI-64 format or a randomized process typically seen in Apple operating systems today.

EUI-64 (non-modified method) consists of a 24 bit OUI allocated by IEEE-RA followed by 40 bit extended identifier typically set by the manufacturer/organization. Many IEEE standard compliant interfaces like Ethernet use EUI-48 format (MAC addresses) where you only have 24 bits after the OUI.

In both EUI-64 and EUI-48 format you will have the u bit and g bit as show in the figure below. The u bit represents if it’s universally administered (0) or locally administered (1) and the g bit represents if it’s an individual (0) or group/multicast-type (1) address.


Now the modified EUI-64 format is a EUI-48 that’s been modified into a EUI-64 type IID. The process involved setting the u bit to 1 to represent locally administered and inserting FFFE in the middle of the 6 bytes of EUI-48. For example if you have you would change the 00 to 02 since the u bit is set to 1 and between 22 and 33 you would insert FF.FE which results in 02.11.22.FF.FE.33.44.55. This is your modified EUI-64 address. Note the g bit stays untouched as 0 for link-local addresses.
Other great reference:

ICMPv6 Basics


DHCPv6 Basics

DHCPv6(RFC3315) messages are encapsulated as UDP/ IPv6 datagrams, with client port 546 and server port 547. Messages are sent using a host’s link-scoped source address to either relay agents or servers. There are two message formats, one used directly between a client and a server, and another when a relay is used.


Works like DHCPv4 where address and all options are sent.
In the stateless mode, IPv6 clients are assumed to self-configure their IPv6 addresses but require additional information (e.g., DNS server address) obtained using DHCPv6. Another option exists for deriving the location of a DNS server using ICMPv6 Router Advertisement messages via (RFC6106).

Control & Transport Plane

IPv6 assignments to services and interfaces along with OSPFv3 and BGP for IPv6.

User Plane

Setting required to do dual stack.

Conclusion and Thoughts

how to migrate to IPv6 form IPv4

Download Traces for entire EPC Call