IPv6 Multicast adresser

I IPv6 finns inte längre någon broadcast-funktion. I stället används multicast för att kommunicera med flera mottagare samtidigt. Multicast fyller alltså samma grundläggande behov, men gör det på ett mer kontrollerat och effektivt sätt än broadcast någonsin kunde.

Strukturen för en IPv6 multicastadress

IPv6 multicast-adresser har en definierad struktur som inte bara anger att det är en multicastadress, utan också ger information om vilken typ av grupp den representerar och inom vilket område trafiken får spridas. En multicast-adress i IPv6 är uppdelad i fyra delar:

  • Prefix /8 (8 bitar)
    • Alltid 11111111 (hex FF).
    • Markerar att det är en multicastadress.
    • Alla multicastadresser ligger alltså inom prefixet FF00::/8.
  • Flags (4 bitar)
    • Används för att ange speciella egenskaper för adressen.
    • T.ex. om gruppen är permanent (well-known) eller tillfällig.
    • Vanligt värde: 0000 = permanent.
  • Scope (4 bitar)
    • Anger räckvidden för multicast trafiken.
    • Exempel på scope-värden:
    • 1 = interface-local
    • 2 = link-local
    • 5 = site-local
    • E = global
  • Group ID (112 bitar)
    • Identifierar själva multicastgruppen.
    • Unikt nummer för en viss grupp inom den givna scopet.
    • Exempel: ::1 = gruppen ”all nodes”.

Well-known IPv6 Multicast-adresser

I IPv6 finns ett antal multicast-adresser som kallas för well-known. Dessa adresser är fasta och används av olika funktioner och protokoll som behöver ett gemensamt sätt att nå sina mottagare. Alla börjar med prefixet FF00::/8, och med hjälp av scope-värdet bestäms hur långt kommunikationen får spridas, till exempel om den stannar på en lokal länk eller får skickas längre.

De mest grundläggande adresserna är de som samlar alla noder (slutenheter) respektive alla routrar. Dessa två adresser ersätter i praktiken den generella broadcast-funktionen från IPv4.

  • FF02::1 – Alla noder på den lokala länken
  • FF02::2 – Alla routrar på samma länk

Utöver dessa finns det specifika adresser för olika routing-protokoll. Här blir det tydligt varför multicast är så användbart: bara de enheter som deltar i ett visst protokoll behöver lyssna på dess gruppadress, medan andra kan ignorera trafiken. Några viktiga exempel är:

  • FF02::5 – alla OSPFv3-routrar
  • FF02::6 – OSPFv3-designated routers (DR och BDR)
  • FF02::9 – RIPng-routrar
  • FF02::A – EIGRPv6-routrar

Genom dessa välkända adresser kan routrar och noder snabbt hitta sina grannar och utbyta information på ett sätt som är både effektivt och selektivt.

Well-known multicast-adresser utgör därmed en fast och pålitlig grund i IPv6. De gör det möjligt för nätverkets funktioner att arbeta konsekvent utan att överbelasta nätet, eftersom endast de noder som verkligen behöver trafiken tar emot den.

Solicited-node multicast

En särskilt viktig del av IPv6 är de så kallade solicited-node multicastadresserna. Dessa adresser skapas automatiskt för varje unicastadress och har alltid formatet FF02::1:FFxx:xxxx, där de sista 24 bitarna hämtas från värdens egen IPv6-adress. Syftet är att göra det möjligt att nå en specifik nod på det lokala nätet utan att behöva störa alla andra.

Solicited-node multicast används av Neighbor Discovery Protocol (NDP), som i IPv6 ersätter ARP. När en enhet behöver ta reda på vilken MAC-adress som hör ihop med en viss IPv6-adress, skickar den sin förfrågan till den multicast-adress som motsvarar just den mottagaren. På så sätt behöver inte alla enheter på länken behandla förfrågan, utan endast de som faktiskt kan vara relevanta svarar. Detta är en tydlig förbättring jämfört med IPv4, där ARP-broadcast ledde till onödig belastning på hela nätverket.

Multicast i IPv6 fyller därför en dubbel roll. Dels ersätter den broadcast och skapar en mer resurssnål metod för kommunikation på länk-nivå, dels möjliggör den specialiserade grupper för olika protokoll och applikationer. Det gör multicast till en grundläggande byggsten både för nätverkets inre funktioner och för moderna tjänster som exempelvis videoströmning, onlinespel och annan realtidskommunikation.

Hur solicited-node adressen genereras

Varje IPv6-adress som tilldelas ett interface får automatiskt en motsvarande solicited-node multicast-adress. Adressen bygger alltid på prefixet FF02::1:FF00:0/104. De sista 24 bitarna av nodens unicast- eller anycast-adress läggs till på slutet. Resultatet blir alltså en unik multicast-adress som bara delas av de noder vars IPv6-adresser råkar ha samma sista 24 bitar. Till Exempel:

  1. IPv6 adress: 2001:0000:0000:0000:0000:0000:1234:ABCD
  2. Sista 24 bitarna: 34:ABCD skrivs som 34ABCD
  3. Solicited-node Multicast-adress: FF02::1:FF34:ABCD

IPv6 multicast och MAC-adresser

Alla IPv6-multicastadresser (FF00::/8) måste kopplas till en motsvarande multicast-MAC på Ethernet nivå, så att ramarna kan skickas till rätt mottagare. Regeln är enkel:

  • Alla IPv6 multicast börjar med MAC-prefixet 33:33.
  • De sista 32 bitarna av IPv6 multicast-adressen kopieras rakt av till de sista 32 bitarna i MAC-adressen.

Exempel:

  • FF02::1  en multicast-adress 33:33:00:00:00:01 (all nodes)
  • FF02::2 kopplas till en multicast-adress 33:33:00:00:00:02 (all routers)
  • FF02::1:FF7A:9C5B kopplas till en multicast-adress 33:33:FF:7A:9C:5B (solicited-node multicast för adressen som slutar med …:7A9C:5B)

Eftersom endast 32 av de 128 bitarna används i kopplingen kan flera olika IPv6 multicast-adresser hamna på samma MAC-adress. Det är dock inget problem eftersom det görs senare en filtrering på IPv6-lagret.

Flaggor och solicited-node multicast

En IPv6 Solicited-node multicast-adress innehåller ett Flags-fält (4 bitar). Det är flaggorna som avgör om adressen är permanent (well-known) eller transient (temporarä):

  • ff0x = permanent (well-known) till exempel FF02::1, FF02::2, eller FF02::5
  • ff1x = transient (dynamisk) till exempel FF12::1 eller FF02::1::FFxx:xxxx (solicited-node).
    • FF är prefixet (11111111), som anger multicast.
    • 0 är flags = 0000 som definierar permanent well-known prefixdel (själva solicited-node-formatet är standardiserat).
    • 2 är scope = 0010 det vill säga link-local (gäller bara på den lokala länken).
    • ::1:FF är fast del för alla solicited-node-adresser.
    • xx:xxxx är de sista 24 bitarna av en nods unicast- eller anycastadress

Solicited-node multicastadresser är alltså transienta. De är inte fördefinierade i någon RFC, utan skapas automatiskt varje gång en unicast-adress tilldelas ett interface. När unicast-adressen försvinner tas även den tillhörande solicited-node-adressen bort.