Link-local adresser

IPv6 Link-Local-adressen är en speciell typ av unicast-adress som genereras automatiskt på varje nätverksinterface med hjälp av prefixet FE80::/10. De första 10 bitarna av en Link-Local-adress är alltid inställda på 1111 1110 10, och de återstående 54 bitarna i nätverksdelen kan i teorin användas med olika kombinationer. Det är dock viktigt att notera att vissa operativsystem har vissa preferenser och begränsningar för hur dessa bitar bör konfigureras.

Av praktiska skäl väljer man ofta att sätta de återstående 54 bitarna till nollor. Detta förenklar konfigurationen och minimerar potentiella kompatibilitetsproblem mellan olika operativsystem. Till exempel, i följande exempel på en Link-Local-adress, markerar jag de 54 nollorna:

  • Link-local adress: fe80::5aac:7ff:fe93:da00 
  • kan betecknas som fe80:0000:0000:0000:5aac:7ff:fe93:da00
  • det hexadecimal talet fe80 betecknas binärt: 1111 1110 10 00 0000 där de första 10 bitar får inte ändras. Då finns det kvar 6 bitar i första hextet som sätts till nollor.
  • De 6 bitar plus 48 ger 54 nollor fe80:0000:0000:0000:5aac:7ff:fe93:da00

Syfte med LLA

Huvudsyftet med Link-Local adresser är att möjliggöra kommunikation mellan noder som är anslutna till samma fysiska nätverkssegment (samma länk) utan behov av globala unika IPv6 adresser. Detta liknar konceptet i IPv4 med adressen 169.254.0.0/16, där nätverksenheter som inte kan få en giltig IP-adress konfigurerar sig själva med en så kallad APIPA-adress (Automatic Private IP Addressing).

När flera IPv6-aktiverade noder är anslutna till en switch kommer de automatiskt att konfigurera sina interface med Link-local adresser, upptäcka varandra och kunna kommunicera på det lokala delnätet. Det är viktigt att notera att en Link-Local adress bara fungerar inom sin respektive nätverkssegment/länk och routern vidarebefordrar inte paket som använder Link-Local adresser som destinationsadress till andra länkar. Detta säkerställer att Link-Local kommunikation endast stannar inom det lokala nätverket.

Link-Local adresskonstruktion

Link-Local IPv6-adresser (LLA) konstrueras automatiskt av varje nätverksenhet (till exempel en dator eller en router) när IPv6-protokollet aktiveras på interfacet. Det finns två vanliga metoder för att konstruera LLA: EUI-64-metoden och slumpmässig konstruktion.

Extended Unique Identifier – EUI-64 metoden

Denna metod används av standardiseringsorganisationen IEEE (Institute of Electrical and Electronics Engineers) och involverar användning av interfacets MAC-adress (Media Access Control) för att skapa en 64-bitars Interface ID som en del av LLA. Följande steg används för att konstruera LLA med EUI-64-metoden:

  1. Först omvandlas MAC-adressen från hexadecimalt till binärt format.
  2. De 64 mest signifikanta bitarna (de första 24 bitarna) används för att identifiera OUI (Organizationally Unique Identifier), och de 64 minst signifikanta bitarna (de sista 24 bitarna) används för att identifiera NIC (Network Interface Controller).
  3. Därefter infogas hexadecimala värdet ”FFFE” (som motsvarar binärt 1111 1111 1111 1110) mellan OUI och NIC för att skapa 64-bitars Interface ID.
  4. Slutligen inverteras den sjunde biten i OUI (den sjunde biten i första byte) för att indikera om adressen är universal (0) eller lokal administrerad (1).

Exempel 1 på LLA med EUI-64-metoden:

  1. MAC-adress (48 bitar):
    • 58ac7893da00 = 01011000101011000111100010010011110110100000 0000
  2. OUI (24 bitar): 010110001010110001111000 och NIC (24 bitar): 10010011110110100000 0000
  3. Infogas fffe (16 bitar) totalt antal bitar 64:
    • 010110001010110001111000111111111111111010010011110110100000 0000
  4. Interface ID (inverteras den sjunde biten):
    • 010110101010110001111000111111111111111010010011110110100000 0000
    • 5a-ac-78-ff-fe-93-da-00
  5. LLA med EUI-64: fe80::5aac:78ff:fe93:da00/64

Exempel 2 på LLA med EUI-64-metoden:

Antag att ett interface har MAC-adressen 00-1A-2B-3C-4D-5E. Då skulle den 64-bitars Interface ID skapas enligt följande steg:

  1. MAC-adress i binärt: 0000 0000 0001 1010 0010 1011 0011 1100 0100 1101 0101 1110
  2. OUI: 0000 0000 0001 1010 0010 1011 och NIC: 0011 1100 0100 1101 0101 1110
  3. infogas fffe:
    • 0000 0000 0001 1010 0010 1011  1111 1111 1111 1110  0011 1100 0100 1101 0101 1110
  4. Interface ID (inverteras den sjunde biten):
    • 0000 0010 0001 1010 0010 1011  1111 1111 1111 1110  0011 1100 0100 1101 0101 1110
    • 02-1a-2b-ff-fe-3c-4d-5e
  5. LLA med EUI-64: fe80::21a:2bff:fe3c:4d5e

Slumpmässig konstruktion

Denna metod innebär att en 64-bitars Interface ID slumpmässigt genereras av enheten. Slumpmässigt genererade LLA används ofta av operativsystem som Windows (efter Windows XP). I moderna operativsystem väljs vanligtvis slumpmässig konstruktion som standardmetod för att konstruera LLA, medan EUI-64-metoden används av vissa andra operativsystem som Cisco IOS, MAC OS X och Linux.

Zon ID

Bredvid en slumpmässigt genererad Link-Local adress visas också Zone ID, vilket är ett decimalt nummer som föregås av procenttecken, exempelvis %19. Zone ID är även känt som ”användningsområde” ”räckvidd,” eller ”identifiering av ett interface och dess räckvidd” på svenska.

Zone ID är användbart för att avgöra vilket interface som ska användas när en enhet har flera interface, var och en på en separat länk (delnät). Det är dock viktigt att notera att Zone ID endast har lokal betydelse.

För att ge ett exempel använder jag min dators interface. Min dator använder både trådlös och trådbunden internetuppkoppling. Dessutom har den ytterligare interface som Loopback, Bluetooth-nätverksanslutning, VirtualBox och tunneling, vilket innebär att min dator har upp till 7 olika interface. Varje interface bör ha en IPv6 Link-Local adress och en tillhörande Zone ID för att identifiera det specifika interfacet.

Här nedan visas min dators IP-konfiguration för Ethernet-interface med en Link-Local adress och Zone ID %6. Observera också IPv4-adressen, som är 192.168.1.110.

Bild 8: Link-local adress och Zone ID

En dator med två interface kommer att ha två Link-Local adresser. När ett paket ska skickas ut till en mottagare behöver ett specifikt interface identifieras. Det är här Zon ID kommer in i bilden för att hjälpa till med identifieringen. Som nämnts ovan, används Zon ID för att koppla en Link-Lokal adress till ett specifikt interface.

Här nedan visas min dators IP konfiguration för WiFi interfacet, observera att Zon ID är nu %19 och IPv4 adressen 10.27.75.243

Bild 9: Link-local adress och Zone ID

Genom att använda kommandot ”netsh interface ipv6 show interfaces” kan alla Zone identifikation för varje interface tas fram:

Bild 10: Zone ID

Hur detekteras dubbletter?

När link-local adresser genereras automatiskt i varje nätverksenhet finns risken för att två enheter kan få samma adress. Duplicate Address Detection (DAD) är ett protokoll som säkerställer att detta inte inträffar.

DAD fungerar genom att låta nätverksenheter skicka ut meddelanden till de andra enheterna i nätverket och informera om sin Link-Local adress. De andra enheterna kontrollerar sedan att de inte har samma adress. Om en mottagare i nätverket upptäcker att den har samma Link-Local adress som avsändaren, kommer enheten att svara och situationen åtgärdas. Hur detta åtgärdas varierar beroende på operativsystemet. Om ingen annan enhet svarar, kan avsändaren verifiera att ingen annan använder samma Link-Local adress.

Det är viktigt att notera att detekteringen av dubbla Link-Local adresser sker innan adressen tilldelas till en nod.

Sammanfattningsvis konstrueras Link-Local IPv6-adresser genom antingen EUI-64-metoden, där MAC-adressen används för att skapa en Interface ID, eller slumpmässig konstruktion, där en 64-bitars Interface ID genereras slumpmässigt av enheten. DAD säkerställer att dessa adresser är unika i nätverket och bidrar till att undvika dubbletter.