Modified EUI-64 Addressing Modified Extended Unique Identifier 64 (EUI-64) is the process that allows a host to assign itself a unique IPv6 address. The host’s MAC address is converted into a 64-bit identifier, called a Modified EUI-64, and this value is appended to a 64-bit network prefix learned by other means. This feature is an enhancement over IPv4 because it eliminates the need for manual configuration or DHCP. The IPv6 Modified EUI-64 format address is created based on the 48-bit MAC address of the interface. The MAC address is first separated into two 24-bit groups, the first being the OUI (organizationally unique identifier) and the other being NIC-specific. The 16-bit value of FFFE is then inserted between these two 24-bit groups to form the 64-bit EUI address. IEEE has chosen FFFE as a reserved value that can only appear in EUI-64 generated from the EUI-48 MAC address. Finally, the seventh bit from the left, or the universal/local (U/L) bit, needs to be inverted. This process can be seen in Figure 11-2. This bit identifies whether this Modified EUI-64 interface identifier is officially assigned or locally generated; in other words, whether it is universally or locally administered. If it is 0, the address is locally administered; if it is 1, the address is globally unique. It is worth noticing that in the original OUI portion, the globally unique addresses assigned by the IEEE have their U/L bit always set to 0, whereas locally created addresses have it set to 1. In other words, the meaning of the U/L bit in the Modified EUI-64 is inverted when compared to the meaning assigned by IEEE. This is the reason for calling this address the Modified EUI-64. Therefore, when the bit is inverted, it maintains its original value. Using EUI-64 AddressingAt the command line, the configuration of Modified EUI-64 addressing is very simple, but we are interested in the outcome rather than just the process of implementation here. Therefore, we will first look to see what the 48-bit MAC address of the FastEthernet0/1 interface is: R1#sh int e0/0 | i bia Hardware is AmdP2, address is aabb.cc00.0100 (bia aabb.cc00.0100) R1#
Have you been looking for a better way to model your network infrastructure? Check out what we're doing with NetBox! Open source and widely extensible, NetBox has enabled thousands of organizations to automate their networks like never before possible.
One of IPv6's key benefits over IPv4 is its capability for automatic interface addressing. By implementing the IEEE's 64-bit Extended Unique Identifier (EUI-64) format, a host can automatically assign itself a unique 64-bit IPv6 interface identifier without the need for manual configuration or DHCP. This is accomplished on Ethernet interfaces by referencing the already unique 48-bit MAC address, and reformatting that value to match the EUI-64 specification. RFC 2373 dictates the conversion process, which can be described as having two steps. The first step is to convert the 48-bit MAC address to a 64-bit value. To do this, we break the MAC address into its two 24-bit halves: the Organizationally Unique Identifier (OUI) and the NIC specific part. The 16-bit hex value 0xFFFE is then inserted between these two halves to form a 64-bit address. Why 0xFFFE? As explained in the IEEE's Guidelines for EUI-64 Registration Authority, this is a reserved value which equipment manufacturers cannot include in "real" EUI-64 address assignments. In other words, any EUI-64 address having 0xFFFE immediately following its OUI portion can be recognized as having been generated from an EUI-48 (or MAC) address. The second step is to invert the universal/local (U/L) flag (bit 7) in the OUI portion of the address. Globally unique addresses assigned by the IEEE originally have this bit set to zero, indicating global uniqueness. Likewise, locally created addresses, such as those used for virtual interfaces or a MAC address manually configured by an administrator, will have this bit set to one. The U/L bit is inverted when using an EUI-64 address as an IPv6 interface ID. Again, you're probably wondering why this is done. The answer lies buried in section 2.5.1 of RFC 2373:
The important part to remember here is that the scope of the address never changes: global addresses are still global and local addresses are still local. Rather, the meaning of the bit is inverted for convenience, so the value of the bit must be inverted as well. We can see this conversion in action when we assign an IPv6 address to a router interface. First, take note of the interface's MAC address (this is typically the same as its burned-in address, or BIA). Router# show interface f0/0 FastEthernet0/0 is up, line protocol is down Hardware is Gt96k FE, address is 0012.7feb.6b40 (bia 0012.7feb.6b40) ...After assigning an EUI-64-designated IPv6 address to the interface, we can verify that the interface ID has been drawn from the MAC address in the process described for both the assigned and the link local address: Router(config)# interface f0/0 Router(config-if)# ipv6 address 2001:db8::/64 eui-64 Router(config-if)# do show ipv6 interface f0/0 FastEthernet0/0 is up, line protocol is down IPv6 is enabled, link-local address is FE80::212:7FFF:FEEB:6B40 [TEN] No Virtual link-local address(es): Global unicast address(es): 2001:DB8::212:7FFF:FEEB:6B40, subnet is 2001:DB8::/64 [EUI/TEN] ...
Support PacketLife by buying stuff you don't need!
Ujjwal Chakroborty
Just in one word that is Superb
Joey Boyer
Very solid write-up. As always, thanks much.
Jeroen Zwarts
There is a privacy issue with this method: You can identify the computer (and with that probably the user as well) wherever it connects. To address those privacy concerns, RFC 3041 was written, which got obsoleted by RFC 4941 (Privacy Extensions for Stateless Address Autoconfiguration in IPv6) ftp://ftp.rfc-editor.org/in-notes/rfc4941.txt
Baljit
TREMENDOUS JOB OF EXPLAINING THIS NEW TOPIC THAT PERPLEXES EVERYONE !!! This is an excellent explanation. You should work for cisco !!!!!!!
Davide
Anil
This is the good explanation that i read for IPV6 address presentations. It is easy and explains to the point.
Sri
Very good explanation. Thanks a lot
Kloppix
Thanks for very good and easy to understand explanation! The world become much more beautiful ;)
Jevann
Explained better than the CCIE Internetwork Expert!!! Nice work!!
Ashra Rai
Clear and concise explanation, this is great!!
Tagni Ngounou
This is a very clear, sharp, on the target explanation. Like it. Please keep up the good job. thank you.
GC
qbonita paginaa!! aprendi!! UL :p
Guest
Great article. I just wonder what if I have a MAC address beginning with somethings else than 00. Let's say AC:13:87:AF:B1:C7 ? What do I have to do with the first byte?
sidjustice21
gaurav
kjotte
re: first byte If I read this right, you invert that bit regardless. This can be acheived by xor'ing the first byte with 0x02.
syed taukir
I appredciate the explantion in simple terms. My query is what happens in serial links for which there is not MAC address. What will the EUI-64 interface identifier be ?
KMiles
You know, this is the SECOND time I've used packetlife! You're bookmarked now!! (Really diggin' those big posters!). Your explaination of EUI-64 from MAC is awesome... I get it!! Thanks a bunch!!
Anon
Hey, If anyone was wondering how the U/L bit is set to indicate global scope (the 7th bit from the InterfaceID portion is turned to 1) First field from InterfaceID "0012" has 16bits so we know the 7th bit is there Each value being 4 bit long , 00 in hex = 0000 0000 in binary and when we turn 7th bit to 1 it will look like this: 0000 0010 which means 02 in hex So our first field from InterfaceID after we set the 7th bit will be 0212 or just add 0x02 as kjotte is saying but i didn't find an example with the actual calculation anywhere so i thougt to provide one ;-)
gumball
Better than Internetwork expert and nuggets - well done and thanks
Mike
not to be a pest but it confused me being new to ipv6 - it appears the address you made at the end is incorrect. That first E should be an F. No? Great Stuff - you are bookmarked with other great bloggers I have found so far.
stretch
@Mike: No. It helps to read the article, particularly the paragraph which begins, "Why 0xFFFE?" ;)
Mike
WOW - I read that as all F's. Sorry - must of been late. My bad!!!
pottse
Wondering about the /64 in the CLI statement "ipv6 address 2001:db8::/64 eui-64". In the Packet Tracer lab I have been doing to learn how to configure RIPng, Cisco has me use the following command: ipv6 address 2001:410:2:10::/65 eui-64 It seems to work, but I am having a hard time understanding exactly what the difference is between the /64 and /65 designation. Thanks in advance for responding, Elmer
stretch
@pottse: The /65 is most likely a typo. Autoconfigured EUI-64 addresses only work with /64 prefixes (as they're 64 bits in length).
Warren Sullivan
Thankyou so much, perfect explanation!!!
ae
The link you provide (http://standards.ieee.org/develop/regauth/tut/eui64.pdf) shows fffe and ffff in separated examples, can you elaborate on that?
Wave
Nice explanation. Very clear and concise.
Syed
Very good explanation. One question though, I am wondering about the following part, Router(config)# interface f0/0 Router(config-if)# ipv6 address 2001:db8::/64 eui-64 Router(config-if)# do show ipv6 interface f0/0 FastEthernet0/0 is up, line protocol is down IPv6 is enabled, link-local address is FE80::212:7FFF:FEEB:6B40 [TEN] No Virtual link-local address(es): Global unicast address(es): 2001:DB8::212:7FFF:FEEB:6B40, subnet is 2001:DB8::/64 [EUI/TEN] ...How did we get this IP address FE80::212:7FFF:FEEB:6B40?? I mean the initial 3 hex numbers, i.e. "FE8". I got the rest starting from 0212...... Also, what is the significance of Global Unicast Address (2001:DB8::212:7FFF:FEEB:6B40) and why it is different from link local address? Which one is the interface IP for f0/0? Please reply. Thanks in advance !
Eddie
@Syed Your answer lies here: This command sets the address of the interface to 2001:db8::/64, the parameter "eui-64" at the end of this command tells the router to generate the last 64 bits using EUI-64. As to your other questions. Per IPv6 protocol, each interface MUST have a locally scoped IPv6 address (called a Link Local Address, or LLA). IANA has reserved FE80::/10 for this very purposes -- this network exists on EACH IPv6 link, all over the world, but is not allowed to be routed. Hence, when you enabled IPv6 on fe0/0 (by configuring an IPv6 address), your router automatically generated the (required) Link Local Address. A Link Local Address is only valid on a particular link. Your router (using its Link Local Address) can speak to other machines on the same network (using their LLA), but it can't use its LLA address to speak across/beyond another router. To do that, it must use another type of address: Global Unicast address. In short, a Link Local Address can only be used for local network communication, while a Global Unicast address can be used anywhere on the IPv6 Internet (to include the local network). Hope this helps.
katy
hi thanks a million i really like the way you've explained the EUI-64 :)
Erdal
Router(config)#interface serial 0/0/0 EUI-64 generate last 64-bit from MAC address BUT...
James Brown
Thanks!!!! It's what I was looking for!!!!
badoko
I am looking for example of connection two routers by ospfv3 with IPv6
malayamas
Answer to Erdal Cisco router takes lowest available MAC address for serial links.
JJBladester
This explanation on EUI-64 addresses was exactly what the doctor ordered. Thank you. Concise wording and great images.
priyankar
Hi, many many thanks for this post of yours. Its freaking awesome. Regards,
Animesh
the following line states the need for generated EUI-64 addresses to be distinct from assigned EUI-64 address. "In other words, any EUI-64 address having 0xFFFE immediately following its OUI portion can be recognized as having been generated from an EUI-48 (or MAC) address." What would be the reason for such a distinction? Is there any particular reason? Thanks in advance,
Anil Ramachandran
I have a major doubt. I am clear on converting EUI48 to EUI64. With EUI-48 in mind, IEEE has kept the bits 0 and 1 of the first byte of the OUI always zero. Now, you are saying the logical meaning of bit 1 in EUI64 is the opposite of the corresponding bit's meaning in EUI48. If that is the case, we should follow the same guideline of flipping this bit in creating fresh EUI-64s as well, and not just translating an EUI-48 to EUI-64. (For instance IEEE 802.15.4 uses EUI64). In essence, if the address is globally unique, the first byte of the EUI64 would be the first byte of OUI bitwise OR-ed with 0x02. However, the IEEE guideline document on EUI64 (http://standards.ieee.org/develop/regauth/tut/eui64.pdf) says nothing of the sort. What's up with that?
eblip
Karl Max
Hi, the EUI-64 just work with MAC is leading by 00? like it: 00:64:a3:25:bb:ab. if my MAC Address is 11:64:a3:25:bb:ab? the result is: 16:64:a3:25:bb:ab? thank you!!!
sonia
while going through the topic "EUI-64 Interface ID Assignment" i was like "what is this thing"...thanks to you now its all clear syllable by syllable.
Drew
Great article, easy to read. I now understand EUI 64! Thanks!
A guest
Michelle
You explained this very confusing subject so clearly. Thank you!
Eric
Two comments/questions:
Yubaraj Panta
Excellent post. Like a lot.
N
What does [EUI/TEN] specify here? If IF is down, TEN shows up, when IF is up, TEN disappears. Thanks for the explanation. Comments have closed for this article due to its age. |