IPv6 nätverksuppdelning

IPv4 nätverksuppdelning  krävde av oss att kunna det binära talsystemet och nu kräver IPv6 det binära och det hexadecimala talsystemen. Det räcker inte att räkna 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 eftersom därefter följer inte 10 utan A, B, C, D, E, och F. Det som kräver mer uppmärksamhet är konverteringar mellan decimala, binära och hexadecimala tal. Det kräver också att vi kan de enkla aritmetiska operationer exempelvis addera.

Att addera hexadecimala tal med binära värden

Det är bra att ha i åtanke att i det hexadecimala talsystemet är 10 = a, 11 = b, 12 = c, 13 = d, 14 = e och 15 = f. Det är också viktig att tänka på att ett hexadecimalt tal motsvarar fyra binära tal exempelvis 5 = 0101. Som du märker själv 5 är bara 5 decimalt och hexadecimalt eftersom talen 0 till 9 ingår i decimaltalsystem och hexadecimalt. Ordet Hex betyder 16 och det förklarar namnet på talsystemet. Symbolerna är 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f.

För att skilja 5 i decimalt från 5 i hexadecimalt brukar skrivas exempelvis så här: 510 och 516

Aritmetik i hexadecimal talsystem

32 16 8 4 2 1   Decimalt
  23 22 21 20    
        1     bärare 
    0 0 0 1   1
    0 0 0 1  +  1
    0 0 1 0   2
               
    1 1      
    0 1 1 1   7
    0 1 0 1 5
    1 1 0 0   12
               
  1 1 1 1      
    1 0 1 1   11
    1 1 0 1 13
  1 1 0 0 0   24
               

Exemplen ovan kunde göras kanske enklare om man räknar decimalt och omvandlar till hexadecimalt och binärt:

  • 1 + 1 = 2 decimalt = 2 hexadecimalt = 0010 binärt
  • 7 + 5 = 12 decimalt = c hexadecimalt = 1100 binärt
  • 11 + 13 = 24 decimalt = 16 + 8 = 1 8 hexadecimalt (16 representeras med en etta)= 1 1000

Varför nätverksuppdelning i IPv6?

Nätverksuppdelning i IPv6 görs mest med syfte att organisera ett nätverk i en globaliserad nätverksmiljö än att effektivisera antal IP adresser. I strukturen på IPv6 adresser reserveras en särskilt plats för delnät (Subnet ID) inom de första 64 bitar som identifierar den globala prefixen. Här undviker jag termen “nätverksadress” eftersom en sådan term inte finns i en IPv6 adressformat.

Bild 1: GUA adressformat

Bild 1 illustrerar att Subnet ID använder 16 bitar inom de 64 bitar som tilldelas för adressens “prefix”. Med 16 bitar kan man adressera 65536 delnät därmed alltför många delnätadresser!

För att organisera ett nätverk kan dess delnät adresseras med dessa 16 bitar som tilldelas till Subnet ID exempelvis med 1, 2, 3 o.s.v fram till a, b, c, d,e, f. Därefter ett nytt varv tills vi förbrukar alla 16 bitar (65 536 delnät).

  • 2001:db8:cafe:0000 0000 0000 0000::/64
  • 2001:db8:cafe:0000 0000 0000 0001::/64
  • 2001:db8:cafe:0000 0000 0000 0002::/64
  • och så vidare, höger till vänster <———-

Nackdelen med att börja dela upp en nätverksadress från höger till vänster är det att man inte kan adressera flera och mindre delnät. Här ska du tänka att en sådan uppdelning gränsar Interface ID. I fall man behöver ytterligare uppdelning finns det kvar alternativet att börja låna bitar från Interface ID, precis som vi gör i IPv4. Är detta Problem? egentligen inte det eftersom där finns upp till 63 bitar att låna. Men då påverkas antal host per delnät.

Fördelen med att börja från höger till vänster är det att man har kvar flera bitar med vilka kan adresseras stora delnät.

Vi kan också börja vänster till höger inom de 16 bitar som tilldelas till Subnet ID.

Nackdelen med att börja från vänster till höger är det att man placerar adresserna direkt efter det globala prefixet /48 därmed kan vi inte adressera större nätverk än /48.

Fördelen är att det finns kvar flera bitar till höger ifall man vill dela en adress upp i mindre delnät-adresser.

  • 2001:db8:cafe:0000 0000 0000 0000 ::/64
  • 2001:db8:cafe:0001 0000 0000 0000 ::/64
  • 2001:db8:cafe:0002 0000 0000 0000 ::/64
  • och så vidare

Vi kan också börja dela upp en adress från mitten av det antal bitar som behövs till adressering. Då kan man använda bitar till höger för mindre nätverk och till vänster för större nätverk.

Nätverksuppdelning med läsbara prefix

Om man observerar IPv6 adressformat ser man att varje hexadecimal tal är egentligen 4 bitar, därmed är formatet multipla med talet 4. Det vill säga 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64. Samtidigt visar också formatet att 4 hexadecimala tal grupperas och skiljas med kulon tecknet, det vill säga 16, 32, 48, 64. Detta hjälper att identifiera vilka tal i adressen ingår i det globala prefixet exempelvis adressen 201:db8:abcd:2::/48. I adressen första gruppen 0201 = 16 bitar, i den andra gruppen 0db8 = 16 bitar och i tredje gruppen abcd = 16 vilket utgör 16 + 16 + 16 = 48.

Men om samma adress istället använder prefix /53 är det inte så lätt att identifiera bitarna! Det är just denna som är anledning för att dela upp en IPv6 adress i grupper av 4 bitar (nibble). Låt oss höja upp ribban och tänka mer abstrakt:

  • Om vi använder följande formel: 24n där n är antal bitar och 4 en konstant som garantera delbarhet i talen.
  • n = 1 ger 16; n= 2 ger 256; n = 3 ger 4096 och n= 4 ger 65 536
  • helklart n kan fortsätta ha högre värde men det leder till alldeles för stora tal som representerar antal delnät.

ISP får IPv6 adressblock normalt /32 fram till /48 även om det finns möjligheten till ännu större nätverk exempelvis /24. men det finns inte än så stora nätverk därmed 16, 256, 4096 och 65536 är mer realistiska prefix på Internet.

Det rekommenderas att hålla sig till den digitala enheten nibble när man delar upp ett nätverk. Till exempel en organisation får en IPv6 adress med prefix /48. Organisationen har sitt nätverk i 20 byggnader och planerar att ha ett delnät per byggnad samt ett för att sammankoppla alla delnät, det vill säga 21 delnät.

  • För att adressera 21 delnät behövs minst 5 bitar till: 24 ger bara 16 delnät medan 25 ger 32.
  • 11 delnät i reserv ger oss en bra marginal i fall organisationen växer större.
  • Prefixet /48 blir det nu /53
  • Godkänt val men inte lätt hanterbart!
  • Vi kompletterar till /56 istället, trots allt har vi råd att använda fler bitar till.
  • Det ger oss många delnät, kanske inte önskvärt men i gengäld läsbar prefix (28 = 256 delnät)
  • Ett annat resultat är att med /53 kunde man ha 2048 /64 delnät (64 – 53 = 11 då 211 = 2048)
  • Nu med /56 kan man ha endast 256 /64 delnät (64 – 56 = 8 då 28 = 256)

3-1-4 regeln

Med 128 bitar representerade i hexadecimala siffror och uppdelade i tre delar kan det vara svårt att skilja precisera prefixet i antal bitar. Till det lägger man till att en IPv6 adress består av tre delar och att identifiera de hjälper att förstå strukturen i adresserna. Som hjälpmedel kan vi använda metoden 3-1-4.

Bild 2: 3-1-4 regel

Fyra hexadecimala siffror kodas med 16 bitar (4×4=16). Dessa fyra hexadecimala siffror kan kallas grupp och då finns 8 grupper i en IPv6 unicast adress.

  • 3 grupper av hexadecimala (första till vänster) tilldelas till Global Routing Prefix.
  • 1 grupp av hexadecimala siffror (fjärde gruppen) tilldelas till Subnet ID.
  • 4 grupper av hexadecimala siffror (resterande) tilldelas till Interface ID.

Organisera IPv6 nätverk

Med tanke på att vi vill organisera ett nätverk, inte effektivisera antal adresser, kan vi börja dela upp följande IPv6 adress: 2001:db8:cafe::/64. Adressen kan skrivas om så här 2001:0db8:cafe:0000:0000:0000:0000:0000/64. Med hjälp av regeln 3-1-4 vet vi att de tre första grupperna av hexadecimala siffror identifierar den Global Routing prefix och den fjärde gruppen identifierar Subnet ID. Resterande 4 grupper av hexadecimala siffror i adressen identifierar Interface ID.

I detta exempel vill man organisera ett nätverk genom att använda de 16 bitar, som tilldelas till Subnet ID, från höger till vänster. Det förenklar nätverksuppdelningen eftersom vi disponerar 16 bitar, från 0000 0000 0000 0000 till 1111 1111 1111 1111. eller 0000 till ffff.

  • Delnät 0 adress: 2001:db8:cafe:0000 0000 0000 0000::/64 hexadecimalt 0000
  • Delnät 1 adress: 2001:db8:cafe:0000 0000 0000 0001::/64 hexadecimalt 0001
  • Delnät 2 adress: 2001:db8:cafe:0000 0000 0000 0010::/64 hexadecimalt 0002
  • Delnät 3 adress: 2001:db8:cafe:0000 0000 0000 0011::/64 hexadecimalt 0003
  • Delnät 4 adress: 2001:db8:cafe:0000 0000 0000 0100::/64 hexadecimalt 0004
  • Delnät 5 adress: 2001:db8:cafe:0000 0000 0000 0101::/64 hexadecimalt 0005
  • Delnät 6 adress: 2001:db8:cafe:0000 0000 0000 0110::/64 hexadecimalt 0006
  • Delnät 7 adress: 2001:db8:cafe:0000 0000 0000 0111::/64  hexadecimalt 0007
  • Delnät 8 adress: 2001:db8:cafe:0000 0000 0000 1000::/64 hexadecimalt 0008
  • Delnät 9 adress: 2001:db8:cafe:0000 0000 0000 1001::/64 hexadecimalt 0009
  • Delnät 10 adress: 2001:db8:cafe:0000 0000 0000 1010::/64 hexadecimalt 000a
  • Delnät 11 adress: 2001:db8:cafe:0000 0000 0000 1011::/64 hexadecimalt  000b
  • Delnät 12 adress: 2001:db8:cafe:0000 0000 0000 1100::/64 hexadecimalt 000c
  • Delnät 13 adress: 2001:db8:cafe:0000 0000 0000 1101::/64 hexadecimalt 000d
  • Delnät 14 adress: 2001:db8:cafe:0000 0000 0000 1110::/64 hexadecimalt 000e
  • Delnät 15 adress: 2001:db8:cafe:0000 0000 0000 1111::/64  hexadecimalt 000f
  • Delnät 16 adress: 2001:db8:cafe:0000 0000 0001 0000::/64 hexadecimalt 0010
  • Delnät 17 adress: 2001:db8:cafe:0000 0000 0001 0001::/64 hexadecimalt 0011
  • Delnät 18 adress: 2001:db8:cafe:0000 0000 0001 0010::/64 hexadecimalt 0012
  • Delnät 19 adress: 2001:db8:cafe:0000 0000 0001 0011::/64 hexadecimalt 0013
  • Delnät 20 adress: 2001:db8:cafe:0000 0000 0001 0100::/64 hexadecimalt 0014
  • Delnät 21 adress: 2001:db8:cafe:0000 0000 0001 0101::/64 hexadecimalt 0015
  • Delnät 22 adress: 2001:db8:cafe:0000 0000 0001 0110::/64 hexadecimalt 0016
  • Delnät 23 adress: 2001:db8:cafe:0000 0000 0001 0111::/64 hexadecimalt 0017
  • Delnät 24 adress: 2001:db8:cafe:0000 0000 0001 1000::/64 hexadecimalt 0018
  • Delnät 25 adress: 2001:db8:cafe:0000 0000 0001 1001::/64 hexadecimalt 0019
  • Delnät 26 adress: 2001:db8:cafe:0000 0000 0001 1010::/64 hexadecimalt 001a
  • Delnät 27 adress: 2001:db8:cafe:0000 0000 0001 1011::/64 hexadecimalt 001b
  • Delnät 28 adress: 2001:db8:cafe:0000 0000 0001 1100::/64 hexadecimalt 001c
  • Delnät 29 adress: 2001:db8:cafe:0000 0000 0001 1101::/64 hexadecimalt 001d
  • Delnät 30 adress: 2001:db8:cafe:0000 0000 0001 1110::/64 hexadecimalt 001e
  • Delnät 31 adress: 2001:db8:cafe:0000 0000 0001 1111::/64 hexadecimalt 001f
  • Delnät 32 adress: 2001:db8:cafe:0000 0000 0010 0000::/64 hexadecimalt 0020
  • Delnät 33 adress: 2001:db8:cafe:0000 0000 0010 0001::/64 hexadecimalt 0021
  • Delnät 34 adress: 2001:db8:cafe:0000 0000 0010 0010::/64 hexadecimalt 0022
  • Delnät 35 adress: 2001:db8:cafe:0000 0000 0010 0011::/64 hexadecimalt 0023
  • Delnät 36 adress: 2001:db8:cafe:0000 0000 0010 0100::/64 hexadecimalt 0024
  • Delnät 37 adress: 2001:db8:cafe:0000 0000 0010 0101::/64 hexadecimalt 0025
  • Delnät 38 adress: 2001:db8:cafe:0000 0000 0010 0110::/64 hexadecimalt 0026
  • Delnät 39 adress: 2001:db8:cafe:0000 0000 0010 0111::/64 hexadecimalt 0027
  • Delnät 40 adress: 2001:db8:cafe:0000 0000 0010 1000::/64 hexadecimalt 0028
  • Delnät 41 adress: 2001:db8:cafe:0000 0000 0010 1001::/64 hexadecimalt 0029
  • Delnät 42 adress: 2001:db8:cafe:0000 0000 0010 1010::/64 hexadecimalt 002a
  • Delnät 43 adress: 2001:db8:cafe:0000 0000 0010 1011::/64 hexadecimalt 002b
  • Delnät 44 adress: 2001:db8:cafe:0000 0000 0010 1100::/64 hexadecimalt 002c
  • Delnät 45 adress: 2001:db8:cafe:0000 0000 0010 1101::/64 hexadecimalt 002d
  • Delnät 46 adress: 2001:db8:cafe:0000 0000 0010 1110::/64 hexadecimalt 002e
  • Delnät 47 adress: 2001:db8:cafe:0000 0000 0010 1111::/64 hexadecimalt 002f
  • Delnät 48 adress: 2001:db8:cafe:0000 0000 0011 0000::/64 hexadecimalt 0030
  • Delnät 49 adress: 2001:db8:cafe:0000 0000 0011 0001::/64 hexadecimalt 0031
  • Delnät 50 adress: 2001:db8:cafe:0000 0000 0011 0010::/64 hexadecimalt 0032
  • Delnät 51 adress: 2001:db8:cafe:0000 0000 0011 0011::/64 hexadecimalt 0033
  • o.s.v.
  • Delnät 65534 adress: 2001:db8:cafe:fffe::/64
  • Delnät 65535 adress: 2001:db8:cafe:ffff::/64

Mer än 16-bitar

Bild 3: IPv6 nätverksuppdelning

Att dela upp en IPv6 unicast adress är inte begränsad endast till de 16-bitar som tilldelas till delnät ID. Det är fullständig möjligt att dela den globala prefixet exempelvis i /23, /32, /48, /51, /53 upp till 64 bitar.

Normalt allokeras IPv6 blockadresser från IANA till RIR /23. ISP till organisationer/företag fram till /32 och /48 vilket lämnar orörda de 16 bitar till Subnet ID så att organisationer/företag disponerar själva de 16 bitarna.

Det kan hända att en organisation/företag behöver adressera många delnät sprida i olika kontinent, länder och städer. På varje stad ytterligare behov av att adressera flera delnät. Det kan innebära att organisationen/företaget behöver gå över 16-bitar gränsen och då växer Subnet ID och Interface ID minskar i antal bitar. När delnätadresser definieras så har varje delnät en specifik delnät-adress som i IPv6 kallas Subnet Prefix.

Bild 4: Fler bitar till

Bild 4 illustrerar en ökning i antal bitar för att dela upp en IPv6 adress från 16 till 64, det vill säga 48 bitar till Subnet ID från Interface ID. Det resulterar i mindre antal hostadresser per delnät. Detta kan vidare förklaras med följande exempel:

En ISP allokerar till en stor organisation en IPV6 adress med global prefix /48. Organisationen behöver adressera 1 000 000 delnät. Överdrivet?, nej inte riktigt om man tänker på en ISP som har många klienter över hela världen. Det blir mer än de 16 bitar i subnet ID, vilket indikerar att man går in inne i det Interface ID området för att låna fler bitar.

  • Hur många bitar till?
  • 2x ≥ 1 000 000
  • x = 20
  • 4 bitar till (16 + 4)
  • Subnet ID = 20 bitar
  • Subnet Prefix = 64 + 4 = 68
  • Interface ID = 64 – 4 = 60 bitar