03-04-2013 11:36 PM - edited 03-01-2019 05:39 PM
In the ICND2 training manual it's specified that the U/L bit is set to 1 for global scope and 0 for local scope. However, the diagram didn't seem to be clear about which bits were which (all it says is U/L bit 000000UG - what's G?). So I hit the web, and I even have a book I bought in 2003 on IPv6.
Information is mixed: the Understanding IPv6 book from Microsoft Press says:
If the U/L bit is set to 0, the IEEE (through the designation of a unique company ID) has administered the address. If the U/L bit is set to 1, the address is locally administered.
And I find the various sites on the web to be equally inconsistent.
I found a page on Cisco's site that, again, defines it as it does in the ICND2 book: 1 for global and 0 for local.
Why the mass quantities of beer? I mean inconsistencies? Surely this is straightforward from the specification?
Solved! Go to Solution.
03-05-2013 09:17 AM
> Surely this is straightforward from the specification?
In a better world, perhaps :-( The footnote to appendix A in RFC 4291 indicates that even the standards writers can't get it right.
The general idea seems to be that if the host part is based on either a raw IEEE EUI-64 identifier or a mapped EUI-48 identifier (think ethernet MAC), it should be globally unique, so the IETF U/L bit is set to 1. Otherwise 0, which allows static locally assigned addreses such as 2001:db8::53 to be written conveniently. The IETF significance of the EUI-64 U/L bit is backwards from the EUI-48 significance. I haven't read the Microsoft book; was the context of your quote 48-bit layer-2 ethernet addresses or 64-bit layer 3 IPv6 mapped host parts? You should get different values for U/L depending on where you are using it.
The bit labelled "G" is the individual/group bit; it is 0 for unicast addresses and 1 for multicast addresses. Since most organizations aren't yet sending globally routed IPv6 multicast the G bit is usually 0. The multicast bit carries over to layer 2; for Ethernet compare the on-link MAC addresses of your multicast group memberships from your favorite client with its unicast addresses to highlight the difference. Packet captures will show this; on Linux so will "ip maddr show". The IPv4 groups start off with the IETF's special IEEE 0x01005e prefix and the IPv6 groups with the similarly allocated 0x3333. In both the IPv4 and IPv6 multicast cases, the "G" bit is 1 in the corresponding 48-bit multicast ethernet MAC. RFC 5342 goes into this in some detail.
-- Jim Leinweber, WI State Lab of Hygiene
03-10-2013 12:22 PM
EUI = Extended Unique Identifier
OUI = Organizationally Unique Identifier (maintained by IEEE registration authority)
IID = Interface Identifier
Link-local and some global addresses use IIDs in the last 64 bit portion of the IPv6 address. IIDs are typically formed from the link-layer MAC address via modified EUI-64 format or a randomized process typically seen in Apple operating systems today.
EUI-64 (non-modified method) consists of a 24 bit OUI allocated by IEEE-RA followed by 40 bit extended identifier typically set by the manufacturer/organization. Many IEEE standard compliant interfaces like Ethernet use EUI-48 format (MAC addresses) where you only have 24 bits after the OUI.
In both EUI-64 and EUI-48 format you will have the u bit and g bit as show in the figure below. The u bit represents if it’s universally administered (0) or locally administered (1) and the g bit represents if it’s an individual (0) or group/multicast-type (1) address.
Now the modified EUI-64 format is a EUI-48 that’s been modified into a EUI-64 type IID. The process involved setting the u bit to 1 to represent locally administered and inserting FFFE in the middle of the 6 bytes of EUI-48. For example if you have 00.11.22.33.44.55 you would change the 00 to 02 since the u bit is set to 1 and between 22 and 33 you would insert FF.FE which results in 02.11.22.FF.FE.33.44.55. This is your modified EUI-64 address. Note the g bit stays untouched as 0 for link-local addresses.
Other great reference: http://en.wikipedia.org/wiki/IPv6_address
03-05-2013 09:17 AM
> Surely this is straightforward from the specification?
In a better world, perhaps :-( The footnote to appendix A in RFC 4291 indicates that even the standards writers can't get it right.
The general idea seems to be that if the host part is based on either a raw IEEE EUI-64 identifier or a mapped EUI-48 identifier (think ethernet MAC), it should be globally unique, so the IETF U/L bit is set to 1. Otherwise 0, which allows static locally assigned addreses such as 2001:db8::53 to be written conveniently. The IETF significance of the EUI-64 U/L bit is backwards from the EUI-48 significance. I haven't read the Microsoft book; was the context of your quote 48-bit layer-2 ethernet addresses or 64-bit layer 3 IPv6 mapped host parts? You should get different values for U/L depending on where you are using it.
The bit labelled "G" is the individual/group bit; it is 0 for unicast addresses and 1 for multicast addresses. Since most organizations aren't yet sending globally routed IPv6 multicast the G bit is usually 0. The multicast bit carries over to layer 2; for Ethernet compare the on-link MAC addresses of your multicast group memberships from your favorite client with its unicast addresses to highlight the difference. Packet captures will show this; on Linux so will "ip maddr show". The IPv4 groups start off with the IETF's special IEEE 0x01005e prefix and the IPv6 groups with the similarly allocated 0x3333. In both the IPv4 and IPv6 multicast cases, the "G" bit is 1 in the corresponding 48-bit multicast ethernet MAC. RFC 5342 goes into this in some detail.
-- Jim Leinweber, WI State Lab of Hygiene
03-10-2013 09:29 AM
I was looking at the same RFC 4291 you were. How confusing. The Microsoft book was specifying the translation from 48-bit MAC to 64-bit IPv6 address.
03-10-2013 12:22 PM
EUI = Extended Unique Identifier
OUI = Organizationally Unique Identifier (maintained by IEEE registration authority)
IID = Interface Identifier
Link-local and some global addresses use IIDs in the last 64 bit portion of the IPv6 address. IIDs are typically formed from the link-layer MAC address via modified EUI-64 format or a randomized process typically seen in Apple operating systems today.
EUI-64 (non-modified method) consists of a 24 bit OUI allocated by IEEE-RA followed by 40 bit extended identifier typically set by the manufacturer/organization. Many IEEE standard compliant interfaces like Ethernet use EUI-48 format (MAC addresses) where you only have 24 bits after the OUI.
In both EUI-64 and EUI-48 format you will have the u bit and g bit as show in the figure below. The u bit represents if it’s universally administered (0) or locally administered (1) and the g bit represents if it’s an individual (0) or group/multicast-type (1) address.
Now the modified EUI-64 format is a EUI-48 that’s been modified into a EUI-64 type IID. The process involved setting the u bit to 1 to represent locally administered and inserting FFFE in the middle of the 6 bytes of EUI-48. For example if you have 00.11.22.33.44.55 you would change the 00 to 02 since the u bit is set to 1 and between 22 and 33 you would insert FF.FE which results in 02.11.22.FF.FE.33.44.55. This is your modified EUI-64 address. Note the g bit stays untouched as 0 for link-local addresses.
Other great reference: http://en.wikipedia.org/wiki/IPv6_address
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide