När vi arbetar med IPv6 måste vi förstå att mycket av den grundläggande kommunikationen mellan noder sker på ett helt annat sätt än i IPv4. I IPv4 användes exempelvis protokollet ARP för att ta reda på vilken MAC-adress som hörde ihop med en viss IP-adress. I IPv6 finns inte ARP alls. Istället används ett kraftfullare och mer flexibelt protokoll som heter Neighbor Discovery (ND).
Network Discovery används för att:
- hitta andra noder på samma nätverk (grannar),
- ta reda på deras MAC-adresser,
- upptäcka och validera routrar,
- automatiskt konfigurera IP-adresser,
- och kontrollera att ingen annan redan använder samma adress.
Som vi ser är IPv6 Neighbor Discovery (ND) mycket mer än bara ett sätt att hitta MAC-adresser. ND hanterar både adressupplösning (motsvarigheten till ARP i IPv4) och viktiga funktioner som router-upptäckt, prefix-information och autokonfiguration av adresser. Tack vare detta kan en IPv6 nod ofta konfigurera sig själv automatiskt via SLAAC, utan att alltid behöva använda DHCPv6.
IPv6 ND Huvudfunktioner
Neighbor Discovery bygger på ICMPv6 och hanterar kommunikation mellan noder (routrar och slutenheter/host) på samma länk. Viktiga funktioner är:
- Neighbor Solicitation (NS) – Används för att fråga efter en annan nodes MAC-adress, ungefär som ARP i IPv4. Exempel: ”Hej, vem har denna IPv6-adress?”
- Neighbor Advertisement (NA) – Svar på en NS, skickar tillbaka sin MAC-adress. Exempel: ”Det är jag, här är min MAC!”
- Router Solicitation (RS) – En host kan fråga om det finns en router på nätverket. Exempel: ”Finns det någon router här som kan ge mig information om nätverket?”
- Router Advertisement (RA) – Routrar svarar med information om nätverket, prefix, default gateway och eventuellt om DHCPv6 ska användas. Exempel: ”Jag är en router. Använd det här prefixet och mig som gateway.”
- Redirect – En router kan informera en host om att det finns en bättre nästa hop för en viss destination.
Viktiga användningsområden
IPv6 Neighbor Discovery används i flera sammanhang som är avgörande för att kommunikationen ska fungera. För det första sköter ND adressupplösning, vilket i praktiken motsvarar ARP i IPv4, där en nod kan ta reda på vilken MAC-adress som hör till en viss IPv6-adress. Det gör det möjligt att leverera ramar på länklagret till rätt mottagare. ND gör det också möjligt att upptäcka grannar, alltså identifiera vilka andra noder som finns tillgängliga på samma länk.
En annan viktig funktion är router discovery, där en host automatiskt kan hitta en default gateway och på så sätt få reda på hur den ska nå andra nätverk. I samband med detta sker även prefix discovery, där en host får information om vilket nätverk den tillhör och kan använda detta för att bygga sin egen IPv6-adress. Slutligen har ND inbyggt stöd för Duplicate Address Detection (DAD), vilket innebär att varje nod kontrollerar att dess adress är unik innan den tas i bruk, för att undvika adress-konflikter på nätverket.
Hur kommunikationen i IPv6 äger rum
Kommunikationen i IPv6 börjar alltid med att en host behöver hitta en annan nod på nätverket – det kan vara en annan host eller en router. För detta används särskilda ICMPv6-meddelanden som är kärnan i Neighbor Discovery:
- Router Solicitation (RS) – När en dator startar undrar vad för nätverk den befinner sig i och därför skickar en RS: ”Finns det någon router här som kan ge mig nätverksinformation?”
- Router Advertisement (RA) – En router svarar och skickar ut information om:
vilket nätverk (prefix) som datorn befinner sig i och anger sin egen adress som default gateway,
om slutenheter ska använda SLAAC (stateless autoconfiguration) eller DHCPv6. - Neighbor Solicitation (NS) – Om en host vill skicka trafik till en annan nod, frågar den:
- ”Vilken MAC-adress hör till den här IPv6-adressen?”
- Neighbor Advertisement (NA) – Den andra noden svarar:
- ”Det är jag, och här är min MAC-adress.”
- Redirect – Om en router märker att det finns en bättre väg till destinationen, kan den säga:
- ”Använd den här andra routern istället, den är närmare destinationen.”
Viktigt att notera:
All denna kommunikation sker med hjälp av multicast-adresser istället för broadcast som i IPv4. Det gör IPv6 mer effektivt, eftersom man slipper onödiga meddelanden som stör alla enheter på nätverket.
När används ND?
- När en host startar upp på nätverket
- Den måste få veta vilken nätverksadress (prefix) som används.
- Den behöver ta reda på om det finns en router på länken.
- Den måste kontrollera att dess egen IPv6-adress inte redan används (Duplicate Address Detection).
- När en host vill kommunicera med en annan nod på samma nätverk
- Den känner till destinationens IPv6-adress (t.ex. fe80::1a2b), men behöver sammanbinda den till en MAC-adress för att faktiskt kunna skicka ramen på Ethernet.
- Här ersätter ND den funktion som ARP hade i IPv4.
- När en värd vill kommunicera utanför sitt eget nätverk
- Den måste veta vilken router som är “nästa hopp” mot internet eller ett annat nätverk.
- Routern annonserar sin existens och sin adress via Router Advertisements (RA).
- När nätverket ändras eller behöver optimeras
- En router kan skicka ett Redirect-meddelande för att tala om för en värd att det finns en bättre väg till en viss destination.
Duplicate Address Detection (DAD)
Innan en nod börjar använda en ny IPv6-adress måste den kontrollera att den inte redan är upptagen.
Noden skickar ett NS med sin egen (ännu “tentativa”) adress.
- Om ingen svarar → adressen är ledig.
- Om någon svarar → adresskonflikt → adressen får inte användas.
Detta sker automatiskt vid autokonfiguration.
Timeout och timers
Det finns flera tidsparametrar som ND använder:
- ReachableTime (standard ca 30 sek – 3 min, slumpmässigt för att sprida trafiken):
Hur länge en nod anses nåbar utan att testas igen. - StaleTime (ingen fast gräns, men status byts till “STALE” efter ReachableTime).
Vid nästa användning kontrolleras noden. - DelayFirstProbeTime (standard 5 sek) – Hur länge en nod väntar i DELAY innan den går till PROBE.
- RetransTimer (standard ca 1 sek) – Hur ofta man sänder NS om svar saknas.
Allt detta styrs av RFC 4861 och kan variera mellan implementationer, men principen är densamma: ND har ett smartare cache-system än ARP, som bara hade ett enkelt timeout.
Jämförelse: IPv4 ARP-cache vs IPv6 ND-cache
| Egenskap | IPv4 ARP-cache | IPv6 ND-cache |
|---|---|---|
| Syfte | Kopplar ihop IPv4-adress med MAC-adress. | Kopplar ihop IPv6-adress med MAC-adress + hanterar nodstatus. |
| Protokoll | ARP (separat protokoll). | ICMPv6 (Neighbor Discovery, RFC 4861). |
| Adressupplösning | Broadcast “Who has 192.168.1.1?” | Multicast “Who has 2001:db8::1?” |
| Cacheinnehåll | IPv4-adress + MAC-adress + åldersfält. | IPv6-adress + MAC-adress + tillstånd (Reachable, Stale, Probe, etc.). |
| Tillstånd | Endast Dynamic eller Static. | Flera: Incomplete, Reachable, Stale, Delay, Probe. |
| Timeout | Typiskt 2–10 min (beror på OS). | ReachableTime ≈ 30s–3 min (slumpmässig), RetransTimer ≈ 1s, Delay ≈ 5s. |
| Verifiering | Passiv (väntar tills posten går ut). | Aktiv (skickar NS för att testa reachability). |
| Effektivitet | Broadcast belastar alla enheter i nätet. | Multicast riktar sig endast till berörda noder → mindre störning. |
| Säkerhet | Inget inbyggt skydd, sårbart för ARP spoofing. | Kan använda SEND (Secure Neighbor Discovery) med kryptografi. |
| Standardisering | Definieras i RFC 826. | Definieras i RFC 4861. |