IPv6 – SLAAC EUI-64 Address Format

UPDATE on 22 Mar 2018:
Article is correctly describing what is SLAAC and why is needed and describes how SLAAC uses RFC 2373 to generate interface IPv6 address. The thing is that today RFC 7217 describes an enhanced new way of SLAAC algorithm to improve user security and protect hosts from attacks. Details are available here in my new article about SLAAC.

Stateless autoconfiguration or SLAAC

SLAAC is a method in which the host or router interface is assigned a 64-bit prefix, and then the last 64 bits of its address are derived by the host or router with help of EUI-64 process which is described in next few lines. SLAAC uses NDP protocol to work.ipv6

As the format of the EUI-64 format is seen quite frequently, covering its details seems important too.

EUI-64 Address Format

EUI-64 in Automatic configuration is the most important aspect of IPv6 addressing. This is because an IPv6 host needs to be sure that the autoconfigured addresses are unique on a global level. 
There are two parts of this answer. The first part is about setting the prefix for this local network. Of course, all hosts in this network need to have NETWORK part of the address same, if not, they will not be able to communicate. This part is a job for network administrator, after he defines the network prefix the second part will make the rest. That second part is the autoconfiguration of the address. But there is another question here that needs to be asked. What format should be used by the host for these addresses in order to ensure that there will not accidentally be two or more equal addresses autoconfigured? The EUI-64 is that format.

With the EUI-64 format, the configuration of the interface ID takes place locally by the host in order to make it globally unique. The host requires already known and a globally unique piece of information. The piece of information must not exceed beyond 64 bits because by definition EUI-64 needs a 64-bit interface ID and a 64-bit prefix. But it is important for this information to be both from a known source as well as long enough to become globally unique.

Ethernet hosts and intermediary devices with Ethernet interfaces make use of their 48-bit MAC addresses as a source for making EUI-64 addressing. The host requires to derive the 16 bits from some other source as the MAC address is 48 bits long and the process of EUI-64 makes up the last 64 bits of an IPv6 address. As per the standard of the IEEE EUI-64 the hex value, FFFE is placed into the centre of the MAC address. After that, EUI-64 sets the 7th universal/local sign bit in the field of Interface ID address which it actually the bit that says if that address is locally generated by SLAAC using EUI-64 process or it’s received from DHCP. This is done in order to indicate the global scope.

EUI-64 at work

In the picture below, you can see EUI-64 at work. The picture is from RFC 2373  page 19 where actual EUI-64 is defined. You see the 7th-bit is written as “1”, that is the universal/local bit. You also see 11111111 11111110 in the middle of the address. That is the FFFE in hex that is squeezed between two parts of physical MAC address of that interface on which the address is beeing generated. The ccccccccc’s are firs the part of MAC address called Organizationally Unique Identifier (OUI) and mmmmmmmmm’s are the second part called Network Interface Controller (NIC). From here’s the name of the process EUI-64. Making 48bit MAC address longer using FFFE after EUI!

   |0              1|1              3|3              4|4              6|
   |0              5|6              1|2              7|8              3|
   +----------------+----------------+----------------+----------------+
   |cccccc1gcccccccc|cccccccc11111111|11111110mmmmmmmm|mmmmmmmmmmmmmmmm|
   +----------------+----------------+----------------+----------------+

Let’s explain with a real deal example.

You have a IPv6 network prefix, usually this one is received with RA router advertisements in NDP protocol. This prefix is 2001:1234:AD:5555 and a MAC address of 00-1C-C4-CF-4E-D0, the resulting EUI-64 address is

2001:1234:AD:5555:21C:C4FF:FECF:4ED0/64

In this the bold portion of the address is actually the complete interface ID. The configuration of this address on a router’s Fast Ethernet interface as shown in the example.

Example Configuring a EUI-64 IPv6 Address:

R3(config)# int fa0/1
R3(config-if)# ipv6 address 2001:1234:AD:5555::/64 eui-64

The show command is the relevant way to view the result. In the given example is a sample of the show ipv6 interface brief command. You can find the global unicast addresses as well as the link-local address assigned to this interface. You can see in the example the interface Fa0/1 with the aggregatable global unicast address configured in the given example, and the automatically created link-local unicast address by the router.

Example About checking an IPv6 Interface’s Configured Addresses:

R3# show ipv6 interface brief
FastEthernet0/0        [up/up]
    FE80::21C:C4FF:FECF:4ED0
    2001:1234:AD:5555:21C:C4FF:FECF:4ED0

As per the example the shaded part or section of the unicast address shows the EUI-64-derived part or portion of the address. In order to see the full productivity or output, it is important to omit or skip the brief keyword and to specify the interface, as per the example 20-3. In the given example, the router clearly informs regarding the address that it was derived by EUI-64 by the “[EUI]” at the end of the global unicast address.

 

2 Comments

  1. Levente October 29, 2017

Leave a Reply