För att fullt ut förstå hur dynamisk IPv6 fungerar, låt oss följa stegen som en IPv6-nod tar från det ögonblick den ansluter till nätverket till det ögonblick den har en unik global unicast-adress.
Steg 1: Noden konfigurerar sig själv med en Link-local adress
När en IPv6-nod är ansluten till ett IPv6-nätverk är det första den vanligtvis gör att automatiskt konfigurera sig själv med en Link-Local-adress. Syftet med denna lokala adress är att möjliggöra kommunikationen med andra IPv6-nätverksenheter i det lokala segmentet. Det mest använda sättet att automatiskt konfigurera en Link-Local-adress är genom att kombinera det lokala nätverksprefixet FE80::/64 och EUI-64-interface ID, genererad från interfacets MAC-adress.
Låt oss använda ett exempel hämtad från Network Academy io med PC1 som kör Windows och har följande MAC-adress 0123.4567.89AB
- PC1 lägger till FFFE i mitten av MAC-adressen: 0123.45FFFE67.89AB
- PC1 invertera den sjunde biten (01 = 0000 0001) = 0000 0011 = 0323.45FFFE67.89AB
- PC1 kombinerar link-local prefix med sin EUI-64 identifikation:
- FE80::0323.45FFFE67.89AB
- PC1 Link-Local adress: FE80::0323:45FF:FE67:89AB/64
När ovanstående steg är slutfört har noden en fullt fungerande EUI-64-format Link-Local adress.
Steg 2: Noden utför Duplicate Address Detection
Efter att IPv6-noden har konfigurerat sin Link-Local-adress automatiskt måste den se till att adressen faktiskt är unik i det lokala segmentet. Även om chansen att en annan nod har samma exakta adress är väldigt liten, måste den utföra en process som kallas Duplicate Address Detection (DAD).
DAD är en mekanism som involverar en speciell typ av adress som kallas Solicited-node multicast. Vid konfigurering av en IPv6-adress går varje nod med i en multicast-grupp som identifieras av adressen FF02::1:FFxx:xxxx, där xx:xxxx är de sex sista hexadecimala siffror i IPv6-unicast-adressen.
I vårt exempel är de sista 6 hexadecimala siffrorna för den Link-Local-adressen 67:89AB, så noden ansluter sig till multicast-gruppen FF02::1:FF67:89AB. Eftersom PC1 kör ett Windows 10-operativsystem kan vi verifiera detta med kommandot: C:>netsh interface ipv6 show joins
Med denna logik i åtanke vet vi att om en annan nod har samma exakta Link-Local-adress, kommer den också att lyssna efter meddelanden på den efterfrågade multicast-gruppen som genereras automatiskt från denna adress FF02::1:FF67:89AB. För att PC1 ska kunna kontrollera detta, skickar den ett ICMPv6-meddelande med en destinationsadress inställd på den här gruppen (FF02::1:FF67:89AB) och avsändaradress inställd på den ospecificerade IPv6-adressen (::) . I ICMPv6-delen av paketet lägger PC1 hela adressen i fältet Destination Address.
PC1 skickar sedan paketet på nätverket. Endast noder som lyssnar på denna exakta autogenererade multicast-grupp kommer att öppna paketet, medan alla andra noder kommer att kassera det. Om någon nod har en IPv6-adress som har samma sista sex hexadecimala siffror, kommer den att titta i ICMPv6-delen och kontrollera om destinationsadressen matchar någon av dess egna adresser. Om det finns en matchning kommer noden att svara att denna IPv6-adress redan används. Om ingen svarar kommer PC1 att dra slutsatsen att denna adress är unik och tillgänglig att användas och kommer att tilldela den.
Steg 3: Noden skickar ett Router Solicitation-meddelande
Efter att PC1 har en Link-Local-adress kan den nu starta processen att automatiskt konfigurera en Global unicast-adress med SLAAC. Det första steget i denna process är att skicka ett ICMPv6-meddelande som kallas Router Solicitation (RS). Syftet med detta meddelande är att ”fråga” alla IPv6-routrar som är kopplade till detta segment om det Globala unicast-prefixet som används. Destinationsadressen är multicast-adressen för alla routrar FF02::2, och för avsändaradress använder PC1 sin Link-Local-adress.
Observera att endast routrar är medlemmar i multicast-gruppen FF02::2, vilket innebär att endast Router 1 kommer att bearbeta detta meddelande, och alla andra noder på det lokala segmentet kommer att ignorera det.
Steg 4: Noden konfigurerar sin Global unicast-adress
Efter att router 1 har fått RS-meddelandet, svarar den tillbaka med ett ICMPv6-meddelande som kallas Router Advertisement (RA). RA-meddelandet inkluderar det Globala IPv6-prefixet på länken och prefixets längd. I vårt exempel skulle dessa vara prefixet 2001:1234:A:B:: och prefixlängden /64. För avsändarensadress till detta RA-paket använder Router 1 sin egen Link-Local-adress, och destinationsadress är multicast-adressen FF02::1 (alla noder).
När PC1 får tillbaka RA-meddelandet från Router 1, kombinerar den prefixet 2001:1234:A:B::/64 med dess EUI-64-Interface ID (0323:45FF:FE67:89AB), vilket resulterar i den globala unicast-adressen 2001:1234:A:B:0323:45FF:FE67:89AB/64. Eftersom RA-meddelandet kom från Router 1, ställer PC1 sin IPv6-Default Gateway till den Link-Local-adressen för Router1(2001:1234:A:B::1/64).
Nu har PC1 en Global unicast-adress och en Default gateway. Men SLAAC-processen är inte avslutad. PC1 måste veta säkert att denna automatiskt genererade adress är unik i det lokala segmentet. Således utför PC1 processen för att identifiera dubbletter av adress (DAD).
Steg 5: Noden utför Duplicate Address Detection
Processen liknar den som genomfördes i steg 2, men det verifieras nu en Global unicast-adress.