¿Por qué se invierte el bit U / L en EUI64?

13

Esta inversión es biyectiva, así que no puedo entender para qué sirve.

Silviu
fuente
1
¿Alguna respuesta te ayudó? Si es así, debe aceptar la respuesta para que la pregunta no siga apareciendo para siempre, buscando una respuesta. Alternativamente, puede proporcionar y aceptar su propia respuesta.
Ron Maupin

Respuestas:

16

RFC 4291 proporciona instrucciones sobre cómo crear la dirección EUI64:

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|
+----------------+----------------+----------------+----------------+

Y RFC 2373 proporciona el "por qué" detrás de voltear el séptimo 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.

Pero eso es un poco bocado. Entonces, en términos más simples ... En la arquitectura de la dirección MAC, el séptimo bit significa si la dirección MAC se asignó universal o localmente. Un valor de 0 indica que la dirección se administra universalmente. Por ejemplo, cuando la IANA asigna un Identificador Organizacionalmente Único (OUI) a un proveedor de tarjetas NIC, el 7º bit será 0, lo que indica que la OUI fue asignada universalmente. Si un usuario cambia manualmente su dirección MAC, este 7º bit se establecerá en 1, lo que indica que la dirección Ethernet se administró localmente .

También hay más información sobre esto en PacketLife .

Eddie
fuente
Aún no lo entiendo. Si un administrador no quiere 0200, entonces él / ella puede configurar manualmente la dirección / 128 ipv6 como mejor le parezca, independientemente de lo que hagan con su configuración de dirección mac. El único beneficio posible que veo aquí es en una situación en la que la dirección local del enlace no se puede cambiar manualmente, que sería el único escenario en el que un administrador vería un beneficio. En otras palabras, como administrador si tengo un problema con mi dirección ipv6 eui-64 que muestra 0200, entonces simplemente cambiaré manualmente esa dirección, suponiendo que pueda cambiar manualmente mi dirección local de enlace
lobi
y este enlace indica que es posible configurar manualmente una dirección local de enlace community.cisco.com/t5/ipv6/…
lobi
"Un valor de 0 indica que la dirección se administra universalmente". ¿No es lo contrario?
Nakrule
7

Se hace para clasificar las direcciones asignadas a mano, como prefix::1, prefix::2etc. , como locales.

Supongamos que está configurando una red en prefijo 2001:db8:dead:beef::/64. Probablemente usará IP basadas en MAC para la mayoría de sus nodos. Sin embargo, para algunos nodos, como el servidor DNS, el servidor de directorio, etc., querrá usar direcciones que sean más fáciles de escribir y más fáciles de memorizar que las direcciones basadas en MAC. Para el servidor DNS, probablemente querrás usar

2001:db8:dead:beef::53

Tenga en cuenta que el bit U / L se establece en 0, que, debido a la inversión del bit, clasifica el ID de host como local.

jch
fuente
0

En resumen, porque en el MAC de Ethernet, el séptimo bit se define para significar local / # global, mientras que en IPv6 el séptimo bit en la ID de interfaz de 64 bits se define como global / # local.

Lobotomik
fuente
0

EUI 64 significa solo una dirección MAC (48 bits) que tiene

..:FF:FE:.. 

en el medio para llenar todos los 64 bits. De ahí el nombre EUI-64. Para ser exactos, se refiere a EUI-64 modificado, lo que significa que EUI-64 se combina con un bitflip del séptimo bit.

El séptimo bit cambia porque en las direcciones MAC este séptimo bit indica la diferencia entre uno local (0) y global (1). Local en este sentido es, por ejemplo, una interfaz en serie.

Como todo esto es crear automáticamente una dirección pública que estará en una interfaz que es global (en términos de MAC), esto daría como resultado un 1 en la séptima posición. Cambiaron ese bit, por lo que no tiene que escribir la dirección del agujero y puede usar la notación abreviada de "::"

Ejemplo (del 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.

Respuesta corta A pesar de que cada dirección MAC terminaría en una dirección IPv6 que tendría un número HEX mayor que 0 en alguna posición en la dirección IPv6. Esto hace posible tener ceros allí para que pueda usar la notación abreviada.

Dorian Gaensslen
fuente