11

This inversion is bijective, so I can't figure out what is it's use.

  • 1
    Did any answer help you? if so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you could provide and accept your own answer. – Ron Maupin Aug 11 '17 at 2:32
15

RFC 4291 provides instructions on how to create the EUI64 address:

Links or Nodes with IEEE 802 48-bit MACs

[EUI64] defines a method to create an IEEE EUI-64 identifier from an
IEEE 48-bit MAC identifier.  This is to insert two octets, with
hexadecimal values of 0xFF and 0xFE (see the Note at the end of
appendix), in the middle of the 48-bit MAC (between the company_id
and vendor-supplied id).  An example is the 48-bit IEEE MAC with
Global scope:

|0              1|1              3|3              4|
|0              5|6              1|2              7|
+----------------+----------------+----------------+
|cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|
+----------------+----------------+----------------+

where "c" is the bits of the assigned company_id, "0" is the value of
the universal/local bit to indicate Global scope, "g" is
individual/group bit, and "m" is the bits of the manufacturer-
selected extension identifier.  The interface identifier would be of
the form:

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

And RFC 2373 provides the 'why' behind flipping the 7th bit:

The motivation for inverting the "u" bit when forming the interface
identifier is to make it easy for system administrators to hand
configure local scope identifiers when hardware tokens are not
available.  This is expected to be case for serial links, tunnel end-
points, etc.  The alternative would have been for these to be of the
form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler ::1,
::2, etc.

But that is a bit of a mouthful. So in simpler terms... In MAC address architecture, the 7th bit signifies whether the MAC address was universally or locally assigned. A value of 0 indicates the address is universally administered. For instance, the when IANA assigns an Organizationally Unique Identifier (OUI) to a NIC card vendor, the 7th bit will be 0, indicating the OUI was universally assigned. Should a user manually change their MAC address, this 7th bit would be set to 1, indicating the Ethernet address was locally administered.

There is also some more information about this at PacketLife.

  • I still don't get it. If an admin doesn't want 0200, then he/she can just manually configure the /128 ipv6 address as they see fit, regardless of what they do with their mac address configuration. The only possible benefit I see here is in a situation where the link local address can't be manually changed, which would be the only scenario where an admin would see a benefit. In other words, as an admin if I have a problem with my eui-64 ipv6 address showing 0200, then I'll just manually change that address, assuming I can manually change my link-local address – lobi Dec 13 '18 at 23:41
  • and this link indicates that manually configuring a link-local address is possible community.cisco.com/t5/ipv6/… – lobi Dec 13 '18 at 23:43
  • "A value of 0 indicates the address is universally administered". Isn't it the opposite? – Nakrule Jun 19 at 5:59
6

It is done to classify hand-assigned addresses such as prefix::1, prefix::2 etc. as local.

Suppose that you're setting up a network in prefix 2001:db8:dead:beef::/64. You'll probably use MAC-based IPs for most of your nodes. For some nodes, however, such as the DNS server, the directory server, etc., you'll want to use addresses that are easier to type and easier to memorise than the MAC-based addresses. For the DNS server, you'll probably want to use

2001:db8:dead:beef::53

Note that the U/L bit is set to 0 — which, due to the bit's inversion, classifies the host-id as local.

0

In short, because in the ethernet MAC, seventh bit is defined to mean local/#global, while in IPv6 seventh bit in the 64-bit interface ID is defined to mean global/#local.

0

EUI 64 means only an MAC Address (48Bit) which has

..:FF:FE:.. 

in the middle of it to fill up all the 64bits. Hence the name EUI-64. To be exactly you mean modified EUI-64 which means the EUI-64 combined with a bitflip of the 7th bit.

The Seventh bit is changed because in the MAC Addresses this 7th bit indicated the difference between a local one (0) and global (1). Local in this sense is, for example, a Serial interface.

Since all this is to automatically create a public address which all will be on an interface which is global (in MAC terms) this would result in a 1 at the 7th position. They changed that bit, so you don't have to write down the hole address and you can you the Shorthand notation of "::"

Example (from the RFC 2373):

...
The alternative would have been for these to be of the
form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler ::1,
::2, etc.

Short Answer Even though every MAC Adress would end up in an IPv6 Address which would have a HEX Number higher than 0 at some position in the IPv6 Address. This makes it possible to have Zeros there so you could use the shorthand notation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.