Dlaczego bit U / L jest odwrócony w EUI64?

13

Ta inwersja jest bijectywna, więc nie mogę zrozumieć, do czego to służy.

Silviu
źródło
1
Czy jakaś odpowiedź ci pomogła? jeśli tak, powinieneś zaakceptować odpowiedź, aby pytanie nie wyskakiwało wiecznie, szukając odpowiedzi. Alternatywnie możesz podać i zaakceptować własną odpowiedź.
Ron Maupin

Odpowiedzi:

16

RFC 4291 zawiera instrukcje dotyczące tworzenia adresu 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|
+----------------+----------------+----------------+----------------+

A RFC 2373 zapewnia „dlaczego” za siódmym bitem:

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.

Ale to trochę kęs. Mówiąc prościej… W architekturze adresu MAC siódmy bit oznacza, czy adres MAC został przypisany uniwersalnie czy lokalnie. Wartość 0 wskazuje, że adres jest administrowany uniwersalnie. Na przykład, gdy IANA przypisuje unikatowy identyfikator organizacyjny (OUI) dostawcy karty NIC, siódmym bitem będzie 0, co oznacza, że ​​OUI został przypisany uniwersalnie. Jeśli użytkownik ręcznie zmieni swój adres MAC, ten siódmy bit zostanie ustawiony na 1, wskazując, że adres Ethernet był administrowany lokalnie .

Istnieje również więcej informacji na ten temat w PacketLife .

Eddie
źródło
Nadal nie rozumiem. Jeśli administrator nie chce 0200, może po prostu ręcznie skonfigurować adres / 128 ipv6 według własnego uznania, niezależnie od tego, co zrobią z konfiguracją adresu mac. Jedyną możliwą korzyścią, którą tu widzę, jest sytuacja, w której lokalnego adresu linku nie można zmienić ręcznie, co byłoby jedynym scenariuszem, w którym administrator widziałby korzyść. Innymi słowy, jako administrator, jeśli mam problem z adresem eui-64 ipv6 wyświetlającym 0200, to po prostu ręcznie zmienię ten adres, zakładając, że mogę ręcznie zmienić adres lokalny link
Lobi
a ten link wskazuje, że możliwa jest ręczna konfiguracja adresu lokalnego dla łącza. community.cisco.com/t5/ipv6/…
lobi
„Wartość 0 oznacza, że ​​adres jest administrowany uniwersalnie”. Czy nie jest odwrotnie?
Nakrule
7

Odbywa się to w celu sklasyfikowania ręcznie przypisane adresy, takie jak prefix::1, prefix::2itd. Jako lokalny.

Załóżmy, że konfigurujesz sieć w prefiksie 2001:db8:dead:beef::/64. Prawdopodobnie będziesz używać adresów IP opartych na MAC dla większości swoich węzłów. Jednak w przypadku niektórych węzłów, takich jak serwer DNS, serwer katalogów itp., Będziesz chciał użyć adresów, które są łatwiejsze do wpisania i łatwiejsze do zapamiętania niż adresy oparte na MAC. W przypadku serwera DNS prawdopodobnie będziesz chciał użyć

2001:db8:dead:beef::53

Zauważ, że bit U / L jest ustawiony na 0 - co z powodu inwersji bitu klasyfikuje identyfikator hosta jako lokalny.

jch
źródło
0

W skrócie, ponieważ w ethernetowym MAC siódmy bit jest zdefiniowany jako lokalny / # globalny, podczas gdy w IPv6 siódmy bit w 64-bitowym interfejsie ID jest zdefiniowany jako globalny / # lokalny.

Łobotomik
źródło
0

EUI 64 oznacza tylko adres MAC (48 bitów), który ma

..:FF:FE:.. 

w środku, aby wypełnić wszystkie 64 bity. Stąd nazwa EUI-64. Dokładnie mówiąc , masz na myśli zmodyfikowany EUI-64, co oznacza EUI-64 w połączeniu z bitflipem siódmego bitu.

Siódmy bit został zmieniony, ponieważ w adresach MAC ten siódmy bit wskazywał różnicę między lokalnym (0) a globalnym (1). Lokalny w tym sensie to na przykład interfejs szeregowy.

Ponieważ wszystko to polega na automatycznym utworzeniu adresu publicznego, który będzie na globalnym interfejsie (w kategoriach MAC), dałoby to 1 na 7 pozycji. Zmienili to trochę, więc nie musisz zapisywać adresu dołka, a możesz napisać skrótem „::”

Przykład (z 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.

Krótka odpowiedź Nawet jeśli każdy adres MAC skończyłby na adresie IPv6, który miałby liczbę HEX większą niż 0 na pewnej pozycji w adresie IPv6. Dzięki temu można mieć Zera, aby można było używać notacji skróconej.

Dorian Gaensslen
źródło