EUI-64

1. Introduction to EUI-64

In IPv6, every device needs a unique address to communicate on the network. To make this easier, IPv6 offers several ways to automatically assign addresses and one of them is called EUI-64.

EUI-64 in IPv6 is a method that allows a device to automatically generate the host portion of its IPv6 address (called the Interface ID) using its MAC address.

IPv6 Address Structure Recap

An IPv6 address is made of 128 bits, divided into two main parts:

IPv6 address structure
  • Network Prefix (first 64 bits): Provided by the router. It identifies the network part of the address.
  • Interface ID (last 64 bits): Uniquely identifies the device on that network.

But here’s the challenge:

MAC address vs Interface ID size

Devices already have a built-in identifier the MAC address but it’s only 48 bits, while the Interface ID needs to be 64 bits.

So how do we create a 64-bit Interface ID from a 48-bit MAC address?

That’s exactly what the EUI-64 method does.

This method takes the device’s MAC address and transforms it into a valid Interface ID, automatically and without manual intervention.

Using a few simple rules, the MAC address is expanded into a complete 64-bit Interface ID that can be used in an IPv6 address.

2. How EUI-64 Works

To create a 64-bit Interface ID from a 48-bit MAC address, EUI-64 follows three simple steps:

  1. Split the MAC address in two halves
  2. Insert the fixed value FF:FE in the middle
  3. Invert the 7th bit of the first byte (the Universal/Local bit)

Let’s break it down with a real example.

EUI-64 in IPv6 step by step conversion from MAC address to Interface ID

Final Interface ID → 02:1A:2B:FF:FE:3C:4D:5E

Now, this 64-bit Interface ID can be used to build an IPv6 address when combined with a /64 network prefix.

3. Configure EUI-64 on Cisco Routers

Now let’s apply the EUI-64 method in a real network scenario using a Cisco router.

We’ll configure interface GigabitEthernet0/1 on R1 to automatically generate its Global Unicast Address (GUA) using the prefix 2001:db8:0:1::/64 and the EUI-64 format.

EUI-64 in IPv6 topology with router R1 generating interface ID from MAC address

Step 1: Check the MAC address

We first look at the physical MAC address of the interface.

R1# show interface GigabitEthernet0/1  
GigabitEthernet0/1 is up, line protocol is up  
  Hardware is iGbE, address is 001a.2b3c.4d5e (bia 001a.2b3c.4d5e)  
  MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,  
     reliability 255/255, txload 1/255, rxload 1/255  
  Encapsulation ARPA, loopback not set  
  Keepalive set (10 sec)  
  Full-duplex, 1000Mb/s, media type is RJ45  
 /// Output OMMITED for brievety

This MAC address will be used as the base for generating the Interface ID.

Step 2: Configure the interface

We enable IPv6 routing and assign the address using the eui-64 keyword:

R1(config)# ipv6 unicast-routing
R1(config)# interface GigabitEthernet0/1
R1(config-if)# ipv6 address 2001:db8:0:1::/64 eui-64

Here’s what this command does:

  • It tells the router:
    ➤ “Use the prefix 2001:db8:0:1::/64”
    ➤ “Generate the remaining 64 bits (Interface ID) automatically using EUI-64”

Step 3: Verify the result

We check if the router successfully generated the full IPv6 address:

R1# show ipv6 interface brief  
GigabitEthernet0/0    [administratively down/down]  
  unassigned  
GigabitEthernet0/1    [up/up]  
  IPv6 address: 2001:DB8:0:1:021A:2BFF:FE3C:4D5E  
  Link-local address: FE80::21A:2BFF:FE3C:4D5E  

Breakdown of the result:

  • Original MAC: 00:1A:2B:3C:4D:5E
  • EUI-64 transformation:
    ➤ Inserted FF:FE in the middle
    ➤ Inverted the 7th bit of the first byte (00 → 02)
    ➤ Result: 02:1A:2B:FF:FE:3C:4D:5E
  • Final IPv6 address:
    2001:DB8:0:1:021A:2BFF:FE3C:4D5E

This same method is also used automatically for the link-local address, which starts with FE80::.

4. Should You Use EUI-64?

EUI-64 is supported on routers, but it’s not recommended for Global Unicast Addresses (GUAs).

Why Avoid EUI-64 on Routers?

  • The address is long and hard to read
  • It makes troubleshooting and documentation more difficult
  • You lose consistent naming like ::1 for Router 1, ::2 for Router 2

What to Do Instead

Use static, simple IPv6 addresses:

R1(config-if)# ipv6 address 2001:db8:0:1::1/64

This keeps your addressing scheme predictable and easy to manage.

Use EUI-64 in the following situations:

  • End devices: PCs, phones, IoT sensors
  • Link-local address generation (ipv6 enable automatically uses EUI-64)
  • SLAAC environments where hosts self-configure without DHCPv6

These are scenarios where automation is beneficial, and the address doesn’t need to be memorized or manually assigned.

This is important to know for your CCNA.
Make sure you understand how EUI-64 works, and practice it in the lab, it’s a topic you’ll likely see in both the exam and real networks.