Dlaczego fe80 :: / 10 jest zarezerwowany dla lokalnych adresów linków, gdy fe80 :: / 64 jest faktycznie używany?

43

Rozumiem, że IPv6 rezerwuje prefiks fe80 :: / 10 dla lokalnych adresów linków i że hosty wybierają adres z prefiksem / 64.

Dlaczego zarezerwowane miejsce jest o wiele większe niż to, co jest faktycznie używane dla lokalnego łącza?

Craig Constantine
źródło

Odpowiedzi:

31

Myślę, że zakres link-local został ustawiony na / 10, aby po prostu lepiej „pasował” do innych zakresów, np. Site-local (zanim został zastąpiony unikalnym local).

Początkowo myślałem, że może to zezwalać na użycie wielu lokalnych sieci link na tym samym łączu, ale RFC 4291 wyraźnie stwierdza, że można użyć tylko fe80 :: / 64.

Jeremy Stretch
źródło
Czy ma to jakieś znaczenie w zakresie wdrażania SLAAC? ... czy SLAAC jest „przedrostkiem agnostycznym”?
Craig Constantine
1
SLAAC wymaga / 64, ale nie jest to tak naprawdę istotne, ponieważ adresy lokalne łącza nie są przypisywane przez SLAAC - w rzeczywistości SLAAC polega na tym, że już posiada adres lokalny łącza.
Kevin Keane
10

Wiesz, nigdy tego nie rozważałem.

Zakładam, że fe80 :: / 64 jest używany, ponieważ systemy następnie uruchamiają autokonfigurację adresu bezstanowego (SLAAC) w tym / 64. Pozostała część / 10 jest dostępna dla statycznie przypisanych adresów lokalnych i bloków sieci. Mam trudności z wymyśleniem znacznych przypadków użycia dla statycznych przypisań lokalnych, ale przypuszczam, że istnieją powody, dla których ludzie mogą chcieć to zrobić.

Jeff McAdams
źródło
Jakie jest znaczenie SLAAC i / 64? ... czy istnieje coś związanego z SLAAC w prefiksie / 64?
Craig Constantine
czasem statycznie przypisane adresy lokalne linków ułatwiają określenie, który węzeł jest następnym skokiem podczas routingu dynamicznego, tj. R1 to fe80 :: 1/64, R2 to fe80 :: 2/64 itp. Działa dobrze w laboratorium, może mniej więc w praktyce.
hrtednrup
@CraigConstantine - tak, SLAAC ma zakodowaną w protokole granicę / 64. To jest powód, dla którego nie można tworzyć podsieci mniejszych niż a / 64 w IPv6, z wyjątkiem podsieci używanych do routingu łączy (tj. Dla łącza punkt-punkt należy użyć / 127). W rzeczywistości istnieją inne protokoły, które mają również wypaloną granicę / 64.
Kevin Keane
Mamy przypadek użycia. System izolacji procesu, który musi uruchomić środowisko izolacji ze znanym adresem lokalnym dla łącza w celu identyfikacji opartej na IPv6. I nie możemy się doczekać DAD, ponieważ środowisko musi być gotowe w mikrosekundach lub milisekundach.
Wszechobecny
4

Filozofia projektowania stojąca za IPv6 polega na tym, że posiadanie rozsądnie ustrukturyzowanej przestrzeni adresowej jest ważniejsze niż zachowanie adresów. Nawiasem mówiąc, IPv4 został wymyślony z tym samym pomysłem (dlatego każde urządzenie ma 16 milionów adresów sprzężenia zwrotnego, ale zawsze używa tylko adresu 127.0.0.1, a większość adresów klasy D i E jest nieużywana).

Adresy lokalne dla łącza teoretycznie marnują miliardy adresów IP, ale nie jest to uważane za problem. Podobnie, przekazanie każdemu klientowi pełnego / 56 lub nawet / 48 jest technicznie bardzo marnotrawstwem, ale nie jest prawdziwym problemem.

Podejście to ma swoją ciemną stronę: twierdzenie, że IPv6 może nadać adres IP każdemu ziarnu piasku na świecie (lub niektórym takim) jest nonsensem, podobnie jak twierdzenie, że IPv4 może obsługiwać 4 miliardy urządzeń. W rzeczywistości, zanim zsumujesz wszystkie odpady w IPv6, przekonasz się, że limity są znacznie węższe (wciąż większe niż IPv4).

Kevin Keane
źródło
0

Myślę, że sprowadza się to do 2 rzeczy. Po pierwsze, nie można routować lokalnego łącza, więc nie jest potrzebny identyfikator podsieci. Zakłada się, że ponieważ nie można routować, że cokolwiek następującego po prefiksie aż do ostatnich 64 bitów będzie równe zeru. Po drugie, podobnie jak inne podobne prefiksy IPv6, prefiks to wszystko do ostatniego bitu „1”. Zachowuje to spójność.

Alan Higgins
źródło
1
Gdyby tak było, jak to działa, to były /9nie /10.
kasperd