Config Lab: IPv6 EUI-64 Addressing 1
Do you know how to take an interface MAC address and determine what IPv6 address the interface would use when using EUI-64? Could you then do the reverse: take the IPv6 address, and predict what MAC address is used for the interface? This latest lab asks you to configure IPv6 addresses, but with a twist: use modified EUI-64, but starting with a desired IPv6 address. Your job: calculate the prefix and MAC address that you need so that the router chooses the IPv6 addresses requested in the lab.
The Lab Exercise
Requirements
Routers can be configured with full IPv6 unicast addresses on their interfaces, but they can also be configured using the modified EUI-64 address assignment feature. With this feature, the router creates the EUI-64 value by taking the interface MAC address (48 bits, or 12 hex digits), inverts the 7th bit, and inserts hex FFFE into the middle. Then it combines the 64-bit prefix configured on the ipv6 address interface subcommand, with this EUI-64 calculated 64-bit value, to create the interface IPv6 address.
In this lab, configure all router interfaces using the modified EUI-64 feature to create the IPv6 addresses listed in the table. The specific rules for this lab are:
- Use EUI-64 addressing on all router interfaces.
- Use the mac-address command to configure each interface’s MAC address, so that the resulting IPv6 address will match table 1.
- Assume all router interfaces shown in the lab are up and working.
Device | Interface | IPv6 Address |
R1 |
GigabitEthernet0/1 |
2000::12FF:FE34:5678 |
R1 | GigabitEthernet0/2 | 2001:BAE:274F:BAED:AE13:72FF:FE94:6256 |
R2 | GigabitEthernet0/1 | 2000::C281:ABFF:FEED:C724 |
R2 | GigabitEthernet0/2 | 2001:BA82:B0AE:CAE:7A24:FBFF:FECE:A103 |
R3 | GigabitEthernet0/1 | 2000::214:ABFF:FEC2:8ABE |
R3 | GigabitEthernet0/2 | 2001:BA81:8326:2753:AE13:FEFF:FEDA:BECA |
R4 | GigabitEthernet0/1 | 2000::AEED:ABFF:FEEC:FDAC |
R4 | GigabitEthernet0/2 | 2001:BEDE:AB81:9173:9A76:12FF:FE34:7654 |
Table 1 – Final IPv6 Address Assignments
Figure 1: EUI-64 IPv6 Addressing Topology
Initial Configuration
Examples 1, 2, 3, and 4 show the beginning configuration state of R1, R2, R3, and R4.
hostname R1
!
ipv6 unicast-routing
!
interface GigabitEthernet0/1
no shutdown
!
interface GigabitEthernet0/2
no shutdown
Example 1: R1 Config
hostname R2
!
ipv6 unicast-routing
!
interface GigabitEthernet0/1
no shutdown
!
interface GigabitEthernet0/2
no shutdown
Example 2: R2 Config
hostname R3
!
ipv6 unicast-routing
!
interface GigabitEthernet0/1
no shutdown
!
interface GigabitEthernet0/2
no shutdown
Example 3: R3 Config
hostname R4
!
ipv6 unicast-routing
!
interface GigabitEthernet0/1
no shutdown
!
interface GigabitEthernet0/2
no shutdown
Example 4: R4 Config
Config Lab Intro Video
Coming Soon!
The above lab intro – the text, figures, and initial configuration – tells you all you need to know. But if you want a little more, with a little different slant on what to do in this lab, watch this lab intro video!
Answer Options - Click Tabs to Reveal
You can learn a lot and strengthen real learning of the topics by creating the configuration – even without a router or switch CLI. In fact, these labs were originally built to be used solely as a paper exercise!
To answer, just think about the lab. Refer to your primary learning material for CCNA, your notes, and create the configuration on paper or in a text editor. Then check your answer versus the answer post, which is linked at the bottom of the lab, just above the comments section.
You can also implement the lab using the Cisco Packet Tracer network simulator. With this option, you use Cisco’s free Packet Tracer simulator. You open a file that begins with the initial configuration already loaded. Then you implement your configuration and test to determine if it met the requirements of the lab.
(Use this link for more information about Cisco Packet Tracer.)
Use this workflow to do the labs in Cisco Packet Tracer:
- Download the .pkt file linked below.
- Open the .pkt file, creating a working lab with the same topology and interfaces as the lab exercise.
- Add your planned configuration to the lab.
- Test the configuration using some of the suggestions below.
You can also implement the lab using Cisco Modeling Labs – Personal (CML-P). CML-P (or simply CML) replaced Cisco Virtual Internet Routing Lab (VIRL) software in 2020, in effect serving as VIRL Version 2.
If you prefer to use CML, use a similar workflow as you would use if using Cisco Packet Tracer, as follows:
- Download the CML file (filetype .yaml) linked below.
- Import the lab’s CML file into CML and then start the lab.
- Compare the lab topology and interface IDs to this lab, as they may differ (more detail below).
- Add your planned configuration to the lab.
- Test the configuration using some of the suggestions below.
Download this lab’s CML file!
Network Device Info:
The CML topology matches the lab topology.
Lab Answers Below: Spoiler Alert
Lab Answers: Configuration (Click Tab to Reveal)
Answers
Figure 1: EUI-64 IPv6 Addressing Topology
interface GigabitEthernet0/1
mac-address 0200.1234.5678
ipv6 address 2000::/64 eui-64
!
interface GigabitEthernet0/2
mac-address ac13.7294.6256
ipv6 address 2001:BAE:274F:BAED::/64 eui-64
Example 5: R1 Config
interface GigabitEthernet0/1
mac-address c081.abed.c724
ipv6 address 2000::/64 eui-64
!
interface GigabitEthernet0/2
mac-address 7824.fbce.a103
ipv6 address 2001:BA82:B0AE:CAE::/64 eui-64
Example 6: R2 Config
interface GigabitEthernet0/1
mac-address 0014.abc2.8abe
ipv6 address 2000::/64 eui-64
!
interface GigabitEthernet0/2
mac-address ac13.feda.beca
ipv6 address 2001:BA81:8326:2753::/64 eui-64
Example 7: R3 Config
interface GigabitEthernet0/1
mac-address aced.abec.fdac
ipv6 address 2000::/64 eui-64
!
interface GigabitEthernet0/2
mac-address 9876.1234.7654
ipv6 address 2001:BEDE:AB81:9173::/64 eui-64
Example 8: R4 Config
Commentary, Issues, and Verification Tips (Click Tabs to Reveal)
Commentary
The EUI-64 process uses as input the MAC address of the interface. Cisco devices use a MAC address from a couple of sources: either the MAC address assigned to the interface by the manufacturer, or the address configured with the mac-address command. This lab uses a configured MAC address so that the address value is more obvious. Note that non-Ethernet interfaces like serial interfaces do not have MAC addresses, so when building an IPv6 address for a serial interface, IOS borrows the MAC address from lowest numbered Ethernet interface on the device.
The EUI-64 process takes the MAC address (12 hex digits), inserts FFFE in the middle, and inverts the 7th bit. For example, if the MAC address 1234.5678.1234 was used, this first split would result in 1234.56 and 78.1234. Then, the 16-byte string ‘FF FE’ is placed between them; this results in 1234.56FF.FE78.1234. Finally, the 7th bit counting from the left, started at 1, is inverted (if it was 1 it would be come 0 and vise versa); this results in 1034.56FF.FE78.1234.
Table 2 re-lists the IPv6 addresses you should see by the end of the lab, along with the prefix value. You should have configured the prefix in the ipv6 address prefix/prefix-length eui-64 command, not the entire IPv6 address from the table. With the eui-64 parameter, the router completes the last part of the IPv6 address.
Rx | Int. | IPv6 Address | Prefixes |
R1 | G0/1 | 2000::12FF:FE34:5678 | 2000::/64 |
R1 | G0/2 | 2001:BAE:274F:BAED:AE13:72FF:FE94:6256 | 2001:BAE:274F:BAED::/64 |
R2 | G0/1 | 2000::C281:ABFF:FEED:C724 | 2000::/64 |
R2 | G0/2 | 2001:BA82:B0AE:CAE:7A24:FBFF:FECE:A103 | 2001:BA82:B0AE:CAE::/64 |
R3 | G0/1 | 2000::214:ABFF:FEC2:8ABE | 2000::/64 |
R3 | G0/2 | 2001:BA81:8326:2753:AE13:FEFF:FEDA:BECA | 2001:BA81:8326:2753::/64 |
R4 | G0/1 | 2000::AEED:ABFF:FEEC:FDAC | 2000::/64 |
R4 | G0/2 | 2001:BEDE:AB81:9173:9A76:12FF:FE34:7654 | 2001:BEDE:AB81:9173::/64 |
Table 2 – Final IPv6 Address Assignments
Table 3 then shows some help in seeing the MAC address needed to make the router calculate the desired IPv6 address. The table lists the unabbreviated last 16 hex digits of the IPv6 address from table 1. In that form, those last 16 hex digits make it obvious where the FFFE sits. All you have to do to figure out what MAC address to use is to remove the FFFE, and then invert that 7th bit. The right-most column lists that MAC address for each case, which you should see in the various mac-address address commands in the configuration examples.
Rx | Int. | Unabbreviated 2nd Half | Resulting MAC Address |
R1 | G0/1 | 0000:12FF:FE34:5678 | 0200:1234:5678 |
R1 | G0/2 | AE13:72FF:FE94:6256 | AC13:7294:6256 |
R2 | G0/1 | C281:ABFF:FEED:C724 | C081:ABED:C724 |
R2 | G0/2 | 7A24:FBFF:FECE:A103 | 7824:FBCE:A103 |
R3 | G0/1 | 0214:ABFF:FEC2:8ABE | 0014:ABC2:8ABE |
R3 | G0/2 | AE13:FEFF:FEDA:BECA | AC13:FEDA:BECA |
R4 | G0/1 | AEED:ABFF:FEEC:FDAC | ACED:ABEC:FDAC |
R4 | G0/2 | 9A76:12FF:FE34:7654 | 9876:1234:7654 |
Table 3 – Prefixes and MAC Addresses
For this lab, there were 8 different IPv6 addresses given, for each of these the prefix must be extracted. For the eight different ipv6 address ipv6-prefix/64 eui-64 interface subommands, they use the prefixes as listed in Table 3.
Additionally, once you calculate the MAC address that will result in the desired IPv6 address, you need to configure the mac-address address interface subcommand. For example, on R1’s G0/1 interface, the goal is to use EUI-64 to set the address to 2000::12FF:FE34:5678. The last 16 hex digits, unabbreviated, is 0000:12FF:FE34:5678. Remove the FFFE and you have 0000:1234:5678. Insert the 7th bit and you have 0200:1234:5678. As a result, R2’s G0/1 interface lists the mac-address 0200.1234.5678 command.
Known Issues in this Lab
This section of each Config Lab Answers post hopes to help with those issues by listing any known issues with Packet Tracer related to this lab. In this case, the issues are:
# | Summary | Detail |
1 | Packet Tracer performs EUI-64 incorrectly when the 7th bit of the MAC is a 1. | When performing the 7th-bit bit-flip, PT sets the 7th bit to 1, rather than flipping or inverting the bit. So, if the 7th bit of the MAC address is a 1, PT leaves the bit as a 1. A real Cisco router would flip the bit to 0. |
Why Would Cisco Packet Tracer Have Issues?
(Note: The below text is the same in every Config Lab.)
Cisco Packet Tracer (CPT) simulates Cisco routers and switches. However, CPT does not run the same software that runs in real Cisco routers and switches. Instead, developers wrote CPT to predict the output a real router or switch would display given the same topology and configuration – but without performing all the same tasks, an actual device has to do. On a positive note, CPT requires far less CPU and RAM than a lab full of devices so that you can run CPT on your computer as an app. In addition, simulators like CPT help you learn about the Cisco router/switch user interface – the Command Line Interface (CLI) – without having to own real devices.
CPT can have issues compared to real devices because CPT does not run the same software as Cisco devices. CPT does not support all commands or parameters of a command. CPT may supply output from a command that differs in some ways from what an actual device would give. Those differences can be a problem for anyone learning networking technology because you may not have experience with that technology on real gear – so you may not notice the differences. So this section lists differences and issues that we have seen when using CPT to do this lab.
Beyond comparing your answers to this lab’s Answers post, you can test in Cisco Packet Tracer (CPT) or Cisco Modeling Labs (CML). In fact, you can and should explore the lab once configured. For this lab, once you have completed the configuration, try these verification steps.Â
- From the CLI of each router, verify the address calculated by the device when it uses EUI-64; this can be done with the show ipv6 interface or show ipv6 interface brief commands.
Config Lab Review Video
Coming in January!
Want to hear more about this lab’s solution? Check out the video to the left.
i don’t understand how you game up with the mac address for each interface. example for router 1.
interface GigabitEthernet0/1
mac-address 0200.1234.5678
how did come up wth mac-address
mac-address 0200.1234.5678
Thank you,
Hi Denis,
Check out the “Lab Commentary” tab, which has some detailed notes about how to come up with the MAC addresses. If it’s not clear at that point, feel free to follow up.
Thanks,
Wendell
I’m a beginner in networking so I might have missed something, but when I configure the “0200.1234.5678 mac-address” command on on R1’s G0/1 interface, and then configure the “ipv6 address 2000::/64 eui-64” command, the resulting ipv6 address becomes 2000::200:12FF:FE34:5678 instead of 2000::12FF:FE34:5678. The only thing I see not happening is the flip of the seventh bit, which I fail to understand why. I see that you have the right answers in the answer key already, I’m just curious to why this happens.
Thank you for your time!
Mehdi,
Whoops. Somewhere in the edit process I lost the IPv6 issues from the PT issues tab. I won’t have time to do a full review until next week, but I did add one to this post just now.
The short version: There’s a bug in Cisco Packet Tracer in its EUI-64 logic. When the MAC address has a binary 1 in the 7th bit, PT does not invert the bit for EUI-64. Real devices do. So that particular part of lab, when done in PT, shows the wrong number.
Sorry for forgetting to leave that note in the Packet Tracer Issues tab!
Wendell
as of this typing version 8.2.0.0162 still has this issue…
seems like an easy fix…
Until i finally decided to read the commentaries… I have one hour cycling between, commands searching where was my error.
if you use 0200 it stays ::200
if you use 2000 then it changes ::2200
For any others that come along… the above comment has to do with Cisco Packet Tracer’s behavior. A real router would convert the initial hex of 02 to 00. FYI.
Wendell,
Yes I bumped into the same thing. CPT is not inverting the 7th bit so as a result the configured IPv6 ADDRESS is matching the current mac address for each interface. Thanks for the CPT note. Time to get CML as the standard in these labs. 🙂
Just for grins, to make these hosts pingable, I’d need to either add routes or OSPF, correct (plus assign each an IPV6 address)?
Absolutely!
Hi, What is the point of creating two different IPv6 addresses on each interface? For example, R4’s g0/2 lists: FE80::9A76:12FF:FE34:7654 and 2001:BEDE:AB81:9173:9A76:12FF:FE34:7654. Is one address (FE80…) link-local and the other (2001…) is globally routable beyond the subnet? Thanks!
Lucas,
You got it! All interfaces that support IPv6 MUST have a link local address. They MAY have one or more routable unicast addresses, like the Global Unicast Addresses (GUAs) shown here in this lab.
If I want to ping between PCs, how should I configure the core switch, SW5?
Hi Matthew,
The core switch config is fine as is for that purpose. But to answer your question, that switch needs a working VLAN (in this case, VLAN 1), with the four ports connected to the four routers working and assigned to VLAN 1. That’s all true based on the default config settings.
However, if you were trying to get pings to work between PCs:
1) You need IPv6 routes in the routers. EG, you could enable OSPF on all the routers, on interfaces G0/1 and G0/2:
ipv6 router ospf 1
router-id 1.1.1.1 (change for each router)
int g0/1
ipv6 ospf 1 area 0
int g0/2
ipv6 ospf 1 area 0
2) Enable IPv6 on the PCs. Easiest way to get it working is to choose the dynamic options in the PC settings in CPT. Then to test, you’ll need to use the ipconfig command to see the address assigned to a PC, and then say ping that address from another PC. Or you could use static settings, and choose an easier-to-type IPv6 address for each PC.
Hope this helps…
Wendell
Thank you for helping me bring the knowledge together, Mr. Odom. I tried enabling OSPF and configuring the router IDs and the ping worked!
Wonderful! Glad it worked out.
I accidentally came up with a formula for converting the 7th bit without remembering the conversion table, hope it finds someone as lazy as me:
1)convert the hex digit to decimal, lets call it X
2)calculate floor(X / 2), if the result is an even number then the converted value is X + 2 , otherwise if the result is an odd number the converted value is X – 2.
Example 1:
hex digit = A =to decimal> X = 10
floor(X / 2) = 5 => it is an odd number
so the converted value is X – 2 = 8
Example 2:
hex digit = 5 =to decimal> X = 5
floor(X / 2) = 2 => it is an even number
so the converted value is X + 2 = 7
Example 3:
hex digit = 7 =to decimal> X = 7
floor(X / 2) = 3 => it is an odd number
so the converted value is X – 2 = 5
Example 4:
hex digit = B =to decimal> X = 11
floor(X / 2) = 5 => it is an odd number
so the converted value is X – 2 = 9
R4 gi 0/1 made me smile