I understand that Extended Unique Identifier (EUI-64) allows a host to automatically assign itself a 64-bit interface identifier IID for an IPv6 address.

My question is: What is the purpose of using EUI-64, and what is the relationship between EUI-64bit and IPv6-128bit?

2 Answers 2


One of the methods for assigning IPv6 addresses is called Stateless Address Autoconfiguration (SLAAC), which uses a modified EUI-64 for the Interface ID portion of the IPv6 address. Using the modified EUI-64 is a way the help ensure any self-generated address on a link is unique. Other methods for that have been used, too, since SLAAC was described in the RFC.

An IPv6 address consists of the Global Routing Prefix assigned by the ISP or RIR, the Subnet ID assigned by the network administration, and the Interface ID. RFC 4291, IP Version 6 Addressing Architecture, Section 2.5.4, Global Unicast Addresses, describes this:

   The general format for IPv6 Global Unicast addresses is as follows:

   |         n bits         |   m bits  |       128-n-m bits         |
   | global routing prefix  | subnet ID |       interface ID         |

SLAAC uses the 48-bit (EUI-48) MAC address of an interface to generate the 64-bit modified EUI-64 for the Interface ID of an IPv6 address. Appendix A of RFC 4291 describes how to create an Interface ID using the MAC address. Basically, you split the MAC address into two 24-bit parts, insert 16 bits (FFFE) in between the two parts, and invert the Universal/Local bit.

Using SLAAC, IPv6 hosts can create thier own IPv6 addresses. Some people are concerned that a host address can uniquely identify a host using SLAAC, regardless of the network. This led to Privacy Extensions, and some OSes like Windows and some Linux distributions to generate and use random Interface IDs by default.

  • Thank you for this explanation. So I can say global routing prefix plus subnet ID both 64bit long, and interface ID is 64bit with results 128bit total IPv6, right ? Nov 1, 2015 at 16:49
  • In most cases the Global Routing Prefix + Subnet ID = 64 bits and the Interface ID is 64 bits.There are a few exception to this (loopbacks, point-to-point links, etc.), but the entire IPv6 address is 128 bits. Using SLAAC requires 64 bits for the Interface ID.
    – Ron Maupin
    Nov 1, 2015 at 16:54

Originally MAC addresses were assigned on a one per device basis. At that rate exhaustion would take a very long time. However gradually both the scope of use of MAC addresses and the amount of network devices being made has expanded. The IEEE was concerned that this would lead to exhaustion.

So the IEEE introduced EUI-64, a larger address and encouraged new protocols to use it. Existing protocols kept using 48-bit MAC addresses for compatibility.

Historically there was a distinction between EUI-48 and MAC-48, even though addresses for both were allocated from the same pool. Two seperate mappings were defined from EUI-48/MAC-48. Both mappings worked by inserting special values into the middle of the address, but the special values were different for EUI-48 and MAC-48. EUI-48 used FF-FE while MAC-48 used FF-FF.

IPv6 adopted EUI-64 for station identifiers, but with a couple of modifications.

  1. 48 bit MAC addresses were treated as EUI-48 when mapping them to EUI-64. I have not found a clear explanation of why this was done.
  2. The local/global bit was inverted. This was done to make it easier for network operators to type in local-scope identifiers.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.