IPv6: różnice między „prefiksem routowanym” a „prefiksem łącza”?

14

Jakie są dokładnie różnice między „prefiksem routingu” a „prefiksem łącza” dla IPv6?
Jak te różnice występują w wireshark-Trace? (jeśli obserwujesz hosta z przypisanym „prefiksem trasy” lub hosta z przypisanym „prefiksem łącza”).
Jak te różnice występują w Neighbor Discovery Protocol? (z punktu widzenia innego / zewnętrznego hosta)
Czy działają razem , te dwa typy przedrostków?

Erik
źródło

Odpowiedzi:

19

Najłatwiejszym sposobem na zrozumienie różnicy między nimi jest przykład pokazujący hierarchiczną naturę prefiksów.

Przykładowa hierarchia

ISP otrzymał prefiks z RIR (Regional Internet Registry), który w tym przykładzie założymy, że jest 2001:db8::/32. Ten prefiks różni się od tych przekazywanych klientom w tym sensie, że ISP będzie musiał ogłosić go za pośrednictwem BGP innym dostawcom, z którymi jest obserwowany.

ISP zamierza teraz przydzielić prefiksy klientowi. Najpierw przypisują 2001:db8:0:1::/64łącze łączące router ISP z routerem CPE (wyposażenie klienta). Jest to przedrostek łącza, ponieważ jest przypisany do łącza. Jako ogólną rekomendację powinny być wszystkie prefiksy linków w IPv6 /64.

Router ISP wyśle ​​reklamy routera informujące o tym prefiksie, a CPE użyje SLAAC do zbudowania adresu dla zewnętrznego interfejsu wskazującego na router ISP w obrębie /64. Załóżmy, że zewnętrzny interfejs ma adres IP 2001:db8:0:1:42:ff:fe00:42/64(w tym zapisie /64znajduje się przypomnienie, jaka jest długość prefiksu łącza, ale równie dobrze mogłem go pominąć).

Ten prefiks łącza jest wystarczający, aby router CPE mógł komunikować się z resztą świata, ale nie pomaga routerowi CPE w obsłudze klientów w sieci LAN podłączonej do jego interfejsu wewnętrznego. Router CPE potrzebuje prefiksu dla sieci LAN, która jest kierowana przez ten router CPE, dlatego nazywa się to prefiksem routowanym .

Routowany prefiks można skonfigurować statycznie lub przez DHCPv6. Dokładne szczegóły, w jaki sposób router CPE negocjuje długość prefiksu z serwerem DHCPv6 dostarczonym przez dostawcę usług internetowych, jest poza zakresem tej odpowiedzi. Wyszukiwanie delegacji prefiksu może powiedzieć ci więcej na ten temat. Załóżmy, że skończył się prefiks 2001:db8:1::/48. Na routerze ISP zostanie utworzony wpis tablicy routingu wskazujący, że 2001:db8:1::/48należy przekierować przez bramę 2001:db8:0:1:42:ff:fe00:42. Ten wpis w tabeli routingu jest cechą definiującą routowany prefiks.

Router CPE może mieć wiele wewnętrznych sieci LAN, z których /48może przydzielić /64prefiks łącza do każdej wewnętrznej sieci LAN. Jeśli założymy, że jedna z sieci LAN została przypisana 2001:db8:1:1::/64jako prefiks łącza, węzeł tego łącza może uzyskać adres 2001:db8:1:1::42:ff:fe00:43przez SLAAC. Ten węzeł może być routerem bezprzewodowym, który potrzebuje prefiksu swojego interfejsu bezprzewodowego. CPE może przypisać 2001:db8:1:100::/60jako routowany prefiks dla routera bezprzewodowego, a router bezprzewodowy może przypisać 2001:db8:1:100::/64jako prefiks łącza dla interfejsu bezprzewodowego.

Teraz w takiej konfiguracji mamy hierarchię prefiksów. Wszystkie są zagnieżdżone pod sobą:

  • 2001:db8::/32 BGP ogłosił prefiks
  • 2001:db8:1::/48 routowany prefiks
  • 2001:db8:1:100::/60 routowany prefiks
  • 2001:db8:1:100::/64 prefiks linku

Jak faktycznie obsługiwane są pakiety

Gdy router ISP odbiera pakiet, dla 2001:db8:0:1::/64którego jest prefiksem łącza, wykonuje wyszukiwanie sąsiada w celu znalezienia adresu MAC hosta w obrębie /64.

W ten sposób router ISP będzie potrzebował osobnego wpisu pamięci podręcznej sąsiada dla każdego adresu IP w prefiksie łącza.

Gdy router ISP odbiera pakiet, dla 2001:db8:1::/48którego jest routowanym prefiksem, dokonuje wyszukiwania sąsiada w celu znalezienia adresu MAC bramy 2001:db8:0:1:42:ff:fe00:42.

W ten sposób router ISP potrzebuje tylko jednej pamięci podręcznej sąsiada dla bramy, aby kierować pakiety na dowolny adres IP w ramach routowanego prefiksu. Ta właściwość ma kluczowe znaczenie dla skalowalności Internetu.

Obejście problemu braku routowanego prefiksu

Czasami klienci blokują się przed dostawcą usług internetowych, który dostarczy tylko prefiks łącza, a nie prefiks routowany. W takiej sytuacji klient może zainstalować demona, który reaguje na wykrywanie sąsiadów dla wszystkich adresów IP w ramach określonego podzakresu prefiksu łącza. Będzie to miało efekt podobny do konfigurowania tego prefiksu jako routowanego prefiksu. Ale ma kilka wad:

  • Ogólnie rzecz biorąc, prefiksy routowane powinny być krótsze niż /64, ale demon odpowiadający na żądania odnajdywania sąsiadów może utworzyć tylko „prefiks routowany”, który jest dłuższy niż /64.
  • Nieznacznie zwiększa to opóźnienie z powodu dodatkowej podróży w obie strony za każdym razem, gdy adres IP nie znajduje się w pamięci podręcznej sąsiada na routerze ISP.
  • Zwiększa obciążenie routera ISP ze względu na konieczność znacznie częstszego wykrywania sąsiadów. Jest całkiem prawdopodobne, że router ISP może przekazywać pakiety do znanego już prefiksu docelowego wyłącznie sprzętowo, ale wykrywanie sąsiadów będzie odbywało się w oprogramowaniu.
  • Zwiększa zużycie pamięci przez router ISP. Jeśli dostawca usług internetowych przydzieli routowany prefiks każdemu klientowi, może łatwo uciec z posiadaniem tylko jednego wpisu pamięci podręcznej sąsiada na klienta. Ale w przypadku demona sąsiada może to zmienić się w tysiące wpisów na klienta.

Obciążenie związane z przetwarzaniem na routerze ISP może być poważnym problemem. Niektóre routery nie było tak źle na obsługę zalew pakietów wymagających sąsiada odkrycie, że zamienił się w rzeczywistych ataków DoS, a stosując dłuższe prefiksy Link (w /120- 127zakres) zostały wykorzystane jako obejście takich ataków DoS.

Nawet jeśli router nie jest podatny na atak DoS, pamięć potrzebna do wpisów w pamięci podręcznej sąsiada, gdy stosowane jest opisane powyżej obejście, jest znacznie droższa dla dostawcy usług internetowych niż adresy IP dla routowanego prefiksu, więc nie ma powodu dla dostawcy usług internetowych, aby odmówił wydania routowanego prefiksu.

Specjalne przypadki dotyczące połączeń punkt-punkt

W przypadku łączy punkt-punkt (takich jak tunele 6w4 i łącza PPP) nie ma potrzeby wykrywania sąsiadów. Istnieje tylko jeden kierunek wysłania pakietu przez takie łącze i przed wysłaniem pakietu nie trzeba sprawdzać adresu sprzętowego.

Oznacza to, że narzut związany z wykrywaniem sąsiadów nie stanowi problemu w przypadku takiego łącza. Zatem posiadanie jednego końca łącza punkt-punkt używającego dużej liczby adresów nie stanowi problemu, o ile punkty końcowe mają pewną zgodę na to, kto używa które adresy. Brak wykrycia sąsiada oznacza również, że nie ma wykrycia duplikatu adresu, więc jeśli oba punkty końcowe spróbują użyć tego samego adresu, nie będzie działać zgodnie z oczekiwaniami (chyba że spodziewasz się, że zachowa się jak adres anycast).

Jest jedno zastrzeżenie, o którym należy pamiętać w przypadku połączeń punkt-punkt. Każdy punkt końcowy zakłada, że ​​wszystkie adresy w łączu, do którego nie został przypisany, są przypisane do drugiego końca. Oznacza to, że nieużywane adresy w łączach punkt-punkt mają skłonność do wyzwalania pętli routingu. Takiej pętli routingu (i kilku innych przypadków pętli routingu) można uniknąć przez punkt końcowy, który nigdy nie wysyła pakietu bezpośrednio z powrotem do węzła, z którego został odebrany. Tak więc pakiet odebrany z łącza punkt-punkt nie może zostać odesłany z powrotem przez to samo łącze punkt-punkt, dopóki jeden punkt końcowy osiągnie to poprawnie, pętla routingu zostanie przerwana. Jako węzeł boczny w sieci Ethernet można odebrać pakiet i przekazać go z powrotem na to samo łącze, ale dobrym pomysłem jest unikanie tego, jeśli byłby przekierowany z powrotem na ten sam adres MAC, z którego został odebrany.

Ponieważ większość adresów łącza punkt-punkt zostanie po prostu przekierowana na drugi koniec łącza bez potrzeby wyszukiwania sąsiada, wygląda to bardzo podobnie do routowanego prefiksu. Na przykład, jeśli dostawca usług internetowych przypisał 2001: db8: 42 :: / 64 do łącza punkt-punkt z przypisanymi punktami końcowymi adresy 2001: db8: 42 :: 1 i 2001: db8: 42 :: 2, to pakiety do większości adresów w 2001 roku: db8: 42 :: / 64 zostanie przesłany od dostawcy usług internetowych do klienta w taki sam sposób, jak gdyby był to routowany prefiks z wykorzystaniem 2001: db8: 42 :: 2 jako bramy.

Oznacza to, że pewien hack jest możliwy. Na CPE można faktycznie skonfigurować 2001: db8: 42 :: / 64 jako prefiks łącza w sieci LAN. Aby CPE wiedział, które z dwóch łączy jest w określonym miejscu docelowym, wówczas rzeczywista konfiguracja łącza punkt-punkt w kierunku ISP musiałaby zostać zmieniona na 2001: db8: 42 :: / 126. To wszystko będzie działać z jednym drobnym wyjątkiem, hosty w sieci LAN nie mogą komunikować się z czterema adresami IP w 2001 roku: db8: 42 :: / 126. Ponieważ prawdopodobnie i tak nie musieli się z nimi komunikować, nie stanowi to większego problemu. Jednak nie zaleca się korzystania z tego hacka, poprawną konfiguracją jest uzyskanie routowanego prefiksu od dostawcy usług internetowych.

Kolejnym włamaniem do zapisywania adresów jest przydzielanie adresów globalnych tylko dla routowanego prefiksu i używanie adresów RFC 4193 jako łącza punkt-punkt. Jest to jednak głupi hack, ponieważ wciąż wprowadza pewne wady w celu rozwiązania nieistniejącego problemu.

Możliwe jest również, aby w ogóle nie przypisywać żadnego prefiksu do łącza punkt-punkt. Tak długo, jak każdy punkt końcowy ma inny interfejs, na którym ma adres globalny, mogą używać adresu przypisanego do drugiego interfejsu podczas komunikacji przez łącze punkt-punkt. Nie znam żadnych wad tego podejścia, więc jeśli okaże się, że takie podejście do połączeń punkt-punkt upraszcza konfigurację sieci, możesz go używać, ale nie używaj go jako środka do zapisywania adresów.

Przypadki użycia dla routowanego prefiksu

  • Hierarchiczne routing, tak jak w moim pierwszym przykładzie, jest tym, do czego są przeznaczone routowane prefiksy.
  • VPN / tunele dodają kolejną warstwę do hierarchii routerów wymagających prefiksów. Chociaż są one wirtualne, a nie rzeczywisty sprzęt, nie różnią się pod względem adresowania i potrzebują routowanego prefiksu, tak jak by to miało miejsce w przypadku łącza fizycznego.
  • Przypisywanie wielu adresów do hosta . Istnieją przypadki użycia do przypisania wielu adresów do jednego hosta. W przypadku kilku adresów można je po prostu przypisać i obsłużyć z wykrywaniem sąsiadów dla każdego i tylu wpisów pamięci podręcznej, ile jest adresów. Ale jeśli potrzebne są tysiące adresów, lepiej jest użyć routowanego prefiksu.

Bardziej szczegółowym przykładem ostatniego punktu byłyby rekursory DNS. Ponieważ nie widzę, aby DNSSEC miał dużą przyczepność, dopóki nie skończymy walki z IPv4, potrzebne są inne środki przeciw zatruciu DNS. Dołożono starań, aby jak najwięcej entropii w zapytaniach. Identyfikator i numer portu mogą pomieścić maksymalnie 32 bity entropii, kolejne kilka bitów może zostać zatrzymanych w żądaniu, jeśli wielkie i małe litery są mieszane w nazwie domeny, która ma zostać rozwiązana. W ten sposób rzadko można uzyskać więcej niż 48 bitów. Przypisanie pełnego /64rekursorowi DNS pozwoliłoby na zwiększenie entropii o 64 bity za jednym razem, co stanowi więcej niż wszystkie inne wysiłki łącznie.

kasperd
źródło
Gdybym mógł znaleźć dobry, powiązałbym go z pytaniem dotyczącym CIDR. Przed przeczytaniem tej odpowiedzi zdecydowanie należy zrozumieć CIDR.
kasperd
Dla CIDR wydaje mi się, że artykuł w Wikipedii jest dla mnie w porządku, moim zdaniem link do en.wikipedia.org/wiki/Classless_Inter-Domain_Routing jest dobry dla dalszego zrozumienia.
Erik
Mam problemy z twoją odpowiedzią. Nie obejmują one obserwowanego zachowania, nie dla mojego usługodawcy internetowego w domu i nie dla dostawcy hostingu na moim serwerze (oba nie używają klasycznego wykrywania sąsiadów). <br /> Myślę, że potrzebuję bardziej szczegółowego opisu głównego zakresu mojego pytanie. Czy powinienem zaktualizować swoje pytanie, czy istnieć w inny preferowany sposób? Przepraszam, jestem nowy na serverfault.com / StackExchange.
Erik
Jestem zdezorientowany sytuacją, o której mówisz. Czy masz na myśli usługodawcę internetowego (na przykład na linii DSL) do połączenia z Internetem dla prywatnego domu, czy masz na myśli dostawcę hostingu, który łączy serwery (z prawdziwą siecią LAN opartą na sieci Ethernet)?
Erik
1
@ 1'OR1-- Jeśli pakiet na jakikolwiek nieużywany adres w wyniku /48powoduje powstanie sąsiadującego pakietu żądania dla docelowego adresu IP, to rzeczywiście brzmi to tak, jakby dostawca skonfigurował /48jako prefiks łącza. Konfigurowanie /48jako prefiksu łącza nie jest zalecaną konfiguracją, ale słyszałem o dostawcach, którzy to robią. Jeśli /48byłby to routowany prefiks, to niezależnie od tego, na który adres IP w pakiecie był skierowany, żądanie sąsiada, które zobaczysz, będzie dotyczyło tego samego adresu IP za każdym razem. A kiedy odpowiesz na to, nie zobaczysz już nagabywania sąsiadów.
kasperd
3

Prefiks łącza jest używany między routerem a usługodawcą internetowym.

Routowany prefiks jest używany w sieci.

Jeśli otrzymasz od swojego dostawcy usług internetowych prefiks / 64, po prostu router będzie reklamował ten prefiks w sieci LAN. Jeśli masz prefiks mniejszy niż / 64 (może a / 48?), Zastanów się, jak podsieć ten prefiks w logiczny sposób, aby mógł z niego korzystać wszystkie routery w organizacji.

W Wireshark, w zależności od tego, gdzie przechwytujesz pakiety, możesz zobaczyć tylko używany prefiks routowany (jeśli przechwytujesz w sieci LAN) lub możesz zobaczyć oba używane prefiksy (jeśli przechwytujesz w sieci WAN).

Jeśli chodzi o protokół Neighbor Discovery, zależy to również od łącza. Na łączu między usługodawcą internetowym a routerem NDP służy do wykrywania adresu MAC interfejsu WAN routera i adresu MAC routera wysyłającego. W interfejsie LAN NDP służy do wykrywania adresu MAC hostów w segmencie LAN.

Mam nadzieję że to pomoże.

Scott Nelson
źródło
1
To zdanie If you received a /64 from your ISP, then you would simply have your router advertise that prefix on your LANprawdopodobnie nie zostanie źle zrozumiane, jeśli wyraźnie powiesz, że /64odnosi się to do routowanego prefiksu.
kasperd
2

Prefiks jest routowanym prefiksem, jeśli pakiety do tego prefiksu muszą przejść przez router, aby dotrzeć do miejsca docelowego. Prefiks to prefiks łącza, jeśli znajduje się w segmencie, do którego podłączony jest interfejs sieci lokalnej.

Gdy pakiet podróżuje przez Internet, docelowy adres / 64 będzie routowanym prefiksem, aż dojdziesz do ostatniego przeskoku. To będzie prefiks linku.

Trasowane przedrostki są zwykle agregowane. Wiele / 64 można agregować w jeden krótszy prefiks, aby zmniejszyć tabele routingu. Na granicy między dostawcami Internetu często egzekwuje się maksymalną długość prefiksu wynoszącą / 48.

Jeśli prefiks ma wartość od / 0 do / 63, zwykle można założyć, że jest to prefiks routowany. Jeśli prefiks to / 64, potrzebujesz więcej informacji, aby wiedzieć, czy jest to prefiks routowany czy link.

rfc2460
źródło