EUI-64 Process and Randomly Generated IPv6 Addresses

When the client receives SLAAC or SLAAC with stateless RA message, the client required to generate its own Interface ID. The client gets the prefix portion of the IPv6 address from the RA message but the RA message did not hold the information about the interface ID for the client. Therefore the client must create its own Interface ID. The Interface ID can be created using the EUI-64 process (Derived from MAC address ) or a randomly generated 64-bit number.

EUI-64 Process

Extended Unique Identifier (EUI) or modified EUI-64 is the process defined by IEEE. This process uses a client’s 48-bit Ethernet MAC address and inserts an extra 16 bits in the middle of the 48-bit MAC address to create a 64-bit Interface ID. Ethernet MAC addresses are usually represented in hexadecimal and made up of two parts:

  • Organizationally Unique Identifier (OUI)– An OUI is a 24-bit number that uniquely identifies a vendor or manufacturer of the device. They purchased and assigned by the IEEE. The OUI is basically the first three octets of a MAC address.
  • Device Identifier– The device identifier is a unique 24-bit (6 hexadecimal digits) value within a common OUI. The last three octets of the MAC address is device identifier.

An EUI-64 Interface ID represented in binary and made up of three parts:

  • 24-bit OUI from the client MAC address, but the 7th bit is reversed. This means that if the 7th bit is a 1, it becomes a 0, and vice versa.
  • 24-bit Device Identifier from the client MAC address
  • The inserted 16-bit value FFFE (in hexadecimal) between OUI and Device Identifier.

Following is the EUI-64 process using the MAC address of 45:70:fa:b5:f8:75.  The figure also illustrates the process.

  • Get the mac address of the PC or device for example 45:70:fa:b5:f8:75
  • Insert ff:fe in the middle: 45:70:fa:ff:fe:b5:f8:75
  • Reorder to IPv6 notation 4570:faff:feb5:f875
  • Now it’s 4 hextet, convert the first octet from hexadecimal to binary: 45-> 01000101
  • Flip the 7th bit: 01000101 ->01000111
  • convert octet back to hexadecimal:01000111 ->47
  • Change the first octet with newly calculated one: 4770:faff:feb5:f875
  • Insert the link-local prefix at the beginning : fe80::4774:f2ff:feb1:a87f

EUI 64 Process.png

An easy way to find that an address was more than likely created using EUI-64 is the FFFE located in the middle of the Interface ID. We can use MAC address to fined out the interface ID, this is the benefit of EUI-64. The Network administrators can easily track an IPv6 address to an end-device using the unique MAC address. but, this also caused privacy among users, because their packets can be traced to the actual physical computer. So, we can use a randomly generated Interface ID in its place.

Randomly Generated Interface IDs

The device can use a randomly generated Interface ID instead of using the MAC address and the EUI-64 process, Depending on the operating system. For example,  Windows Vista uses a randomly generated Interface ID instead of one created with EUI-64. Windows XP and previous Windows operating systems used EUI-64. After the Interface ID is established, both through the EUI-64 process or through random generation, it can be combined with an IPv6 prefix in the RA message to create a global unicast address. To avoid IP address duplicate addressing the client can use DAD (duplicate address detection). This is similar to ARP request for its own address.