IPv6 nätverksuppdelning

Nätverksuppdelning i IPv4 krävde av oss att kunna det binära talsystemet och nu i IPv6 det binära och det hexadecimala talsystemen.

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 en hexadecimalt tal motsvarar fyra binära tal exempelvis 5 = 0101. Som du märker själv 5 är bara 5 decimalt och hexadecimalt. Detta är grunden till talsystem, antal symboler som används. Ordet Hex betyder 16 och det förklarar namnet på talsystemet. Symbolerna är 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

När man börjar med aritmetik börjar att bli annorlunda. Addera följande hexadecimala tal:

32 16 8 4 2 1   Decimalt
        1      
    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

I IPv4 kan nätverk delas upp för att strukturera funktionalitet och därmed underlätta administrationen. Dock förekommer nätverksuppdelning i IPv4 mest med syfte att effektivisera adresseringen i funktion av antal IPv4 adresser.

Varför nätverksuppdelning i IPv6?

Bild 1: GUA adressformat

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.

Från bild 1 framgår 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 nätverk kan delnät adresseras enkelt från höger till vänster med de 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). Nackdelen med att börja dela upp en nätverksadress från höger till vänster är att man inte kan adressera flera och mindre delnät inom de 64 bitar som tilldelas till det globala prefixet. Här ska du tänka att en IPv6 adress dedicerar 16 bitar för delnät ID och att du börjar använda dessa bitar från den bit som gränsar Interface ID.

I fall man gör det så och ytterligare uppdelning behövs 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 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 i vänster 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 nära till gränsen. Det är inte möjligt att 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.

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.

Med 128 bitar representerade i hexadecimala siffror och uppdelade i tre delar kan det vara svårt att skilja dessa tre delar, men med hjälp av metoden 3-1-4 är det inte så svårt.

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.

IPv6 adresstilldelning

IANA har huvudansvaret, äger IPv6 adresser. IANA distribuerar IPv6 adresser till lokala Internet register – RIR.

Bild 2: IANA och RIRs

När något stor nätverksleverantör (ISP) i Europa vill ha ett antal block av IPv6 adresser kommer den att kontakta RIPE NCC. Det görs lite på olika sätt när den globala prefixet ska definieras. GUA IPv6 adresser definieras från början som 2001::/3 men vid tilldelning delas upp adressen i många adresser. Ett sätt att markera antal bitar i den globala prefixet är beteckningen med slash och ett nummer (/nn). Då börjar IANA att distribuera IPv6 adresser till RIR oftast som 2001::/23.

De lokala register tilldelar adresser till organisationer oftast som /48 vilket indikerar att man får disponera 16 bitar i subnet ID så att den globala subnet prefixet blir /64. Studera bilden nedan som illustrerar just hur IPv6 adresser kan tilldelas:

Bild 3: IPv6 tilldelning

Organisera IPv6 nätverk

Med tanke på att vi vill organisera ett nätverk 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. Hexadecimalt ser de 16 bitar ut så här: 0000 till ffff.

  • Delnät 00 adress: 2001:db8:cafe:0000 0000 0000 0000::/64 hexadecimalt 0000
  • Delnät 01 adress: 2001:db8:cafe:0000 0000 0000 0001::/64 hexadecimalt 0001
  • Delnät 02 adress: 2001:db8:cafe:0000 0000 0000 0010::/64 hexadecimalt 0002
  • Delnät 03 adress: 2001:db8:cafe:0000 0000 0000 0011::/64 hexadecimalt 0003
  • Delnät 04 adress: 2001:db8:cafe:0000 0000 0000 0100::/64 hexadecimalt 0004
  • Delnät 05 adress: 2001:db8:cafe:0000 0000 0000 0101::/64 hexadecimalt 0005
  • Delnät 06 adress: 2001:db8:cafe:0000 0000 0000 0110::/64 hexadecimalt 0006
  • Delnät 07 adress: 2001:db8:cafe:0000 0000 0000 0111::/64  hexadecimalt 0007
  • Delnät 08 adress: 2001:db8:cafe:0000 0000 0000 1000::/64 hexadecimalt 0008
  • Delnät 09 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 finnas behov att en organisation/företag adressera många delnät sprida i olika kontinent därmed länder och städer. På varje stad ytterligare behov av att adressera flera delnät. Det innebär att organisationen/företaget behöver gå över 16-bitar gränsen. Det innebär att Subnet ID växer 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.

Till exempel en ISP allokerar till en stor organisation en IPV6 adress med global prefix /48. Organisationen/företaget behöver adressera 1 000 000 delnät. Överdrivet, nej inte riktigt om man tänker som ISP med många klienter över hela världen. Det blir mer än 16 bitar vilket indikerar att man går in inne i det Interface ID området för att låna ett antal 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

Nätverksuppdelnings metoder

Det finns olika metoder för att dela upp ett IPv6 nätverk, vissa med hjälp av krångliga matematiska beräkningar men även andra metoder med enklare matematik. Personligen tycker jag att det är bäst anpassa och utveckla kunskaper om IPv4 nätverksuppdelning. För att förstå processen i vilken delas upp ett IPv6 nätverk går vi genom följande steg:

  1. Definiera antal bitar att använda för adressering ett antal delnät
  2. Definiera hexadecimala siffror för det antal bitar
  3. Definiera segmenteringssteg (inkrement)
  4. Definiera adresseringsintervall
  5. Adressera delnät

Exempel 1 – Dela upp adressen 2001:0db8:cafe::/64 med ett prefix på /112

16 16 16 16 16 16 16 16
Subnet ID
2001 0db8 cafe 0000 0000 0000 0000 0000
Subnet Prefix
16 x 7 = 112

Ett sådant prefix innebär att i adressen tilldelas till Interface ID 128-112=16 bitar eller den sista gruppen av hexadecimala siffror. Det innebär också att Subnet ID längden har ändrats till 64 bitar (16×4=64). Subnet prefixet är 2001:0db8:cafe:0000:0000:0000:0000:0000 /112. 

Med 64 bitar kan adresseras 18 446 744 073 709 551 616 delnät! I exemplet nedan använder vi den sista gruppen av hexadecimala siffror (16 bitar) inom Subnet Prefix, det ger oss möjlighet att adressera 65 536 delnät. Så antal adresser är inte fokus i nätverksuppdelningen utan mest strukturering av ett nätverket som kan bestå av så många delnät.

Observera att vi inte gör någon beräkning, ändå är detta ett sätt att uppdela ett nätverk från höger till vänster.

Delnät 0 2001:0db8:cafe:0000:0000:0000:0000:0000
Delnät 1 2001:0db8:cafe:0000:0000:0000:0001:0000
Delnät 2 2001:0db8:cafe:0000:0000:0000:0002:0000
Delnät 3 2001:0db8:cafe:0000:0000:0000:0003:0000
Delnät 4 2001:0db8:cafe:0000:0000:0000:0004:0000
Delnät 5 2001:0db8:cafe:0000:0000:0000:0005:0000
Delnät 6 2001:0db8:cafe:0000:0000:0000:0006:0000
Delnät 7 2001:0db8:cafe:0000:0000:0000:0007:0000
Delnät 8 2001:0db8:cafe:0000:0000:0000:0008:0000
Delnät 9 2001:0db8:cafe:0000:0000:0000:0009:0000
Delnät 10 2001:0db8:cafe:0000:0000:0000:000a:0000
Delnät 11 2001:0db8:cafe:0000:0000:0000:000b:0000
Delnät 12 2001:0db8:cafe:0000:0000:0000:000c:0000
Delnät 13 2001:0db8:cafe:0000:0000:0000:000d:0000
Delnät 14 2001:0db8:cafe:0000:0000:0000:000e:0000
Delnät 15 2001:0db8:cafe:0000:0000:0000:000f:0000
Delnät 16 2001:0db8:cafe:0000:0000:0000:0010:0000
Delnät 17 2001:0db8:cafe:0000:0000:0000:0020:0000
Delnät 18 2001:0db8:cafe:0000:0000:0000:0030:0000
Delnät 19 2001:0db8:cafe:0000:0000:0000:0040:0000
Delnät 20 2001:0db8:cafe:0000:0000:0000:0050:0000
Delnät 21 2001:0db8:cafe:0000:0000:0000:0060:0000
Delnät 22 2001:0db8:cafe:0000:0000:0000:0070:0000
Delnät 23 2001:0db8:cafe:0000:0000:0000:0080:0000
Delnät 24 2001:0db8:cafe:0000:0000:0000:0090:0000
Delnät 25 2001:0db8:cafe:0000:0000:0000:00a0:0000
Delnät 26 2001:0db8:cafe:0000:0000:0000:00b0:0000
Delnät 27 2001:0db8:cafe:0000:0000:0000:00c0:0000
 och så vidare

Exempel 2 IPv6 adress 2001:db8::/32 ska delas upp så att 900 delnät kan adresseras. Definiera Subnet Prefix

  1. Definiera antal bitar för att adressera 900 delnät
    1. 2x ≥ 900; x = 10
    2. Ny prefix 32 + 10 = 42
  2. Definiera hexadecimala siffror för de 10 bitar
    1. Eftersom varje hexadecimal siffra kodas med 4 bitar 10/4 = 2.5 d.v.s två och en halv hexadecimala siffror. Vi avrundar till 3 hexadecimala siffror, men beräkningar börjar att avvika. Det är på grund av detta man föredrar att alltid jobba med 4 bitar och inte med mindre och därmed för oss den fjärde hexadecimala siffran är noll.
    2. Prefixbeteckningen blir 2001:db8:HHH0::/42
  3. Segmenteringssteg (inkrement)
    1. P = 42/16 ger modulus 10
    2. S = 2(16-10)
    3. S = 26
    4. S = 64
    5. S = 64 konverteras till hexadecimal (0100 0000) = 40
  4. Definiera adressintervall från 0000 till xxx0
    1. Intervallet börjar med hexadecimala siffror 0000.
    2. 210 = 1024, från 0 till 1023
    3. AI = (Segmenteringssteg-värde)(maxvärde av antal host-bitar)
    4. AI = 64(1023)=65 472 = konverteras till hexadecimal ffc0
    5. AI från 0000 till ffc0
  5. Adressera delnät 2001:db8:HHH0::/42

Beräkningar

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
8 4 2 1 8 4 2 1 8 4 2 1 8 4 2 1
2001:db8:0000::/42 + 0000 0 0 0 0 0 0 0 0 0 0 0 0  0 0 0 0
0040 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0040 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
2001:db8:0040::/42 0 0 4 0
1
2001:db8:0040::/42 + 0040  0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0040 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
2001:db8:0080::/42 0 0 8 0
2001:db8:0080::/42 + 0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0040 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
00c0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0
2001:db8:00c0::/42    0 0 c  0
 1  1
2001:db8:00c0::/42 + 00c0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0
0040 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
 0100 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
2001:db8:0100::/42 0 1 0 0
2001:db8:0100::/42 + 0100 0 0 0  0 0 0 0 1 0 0 0 0 0 0 0 0
0040 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0140 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0
2001:db8:0140::/42 0 1 4  0
 1
2001:db8:0140::/42  + 0140  0 0 0 0  0 0 0 1 0 1 0 0 0 0 0 0
0040 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0180 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
2001:db8:0180::/42  0   1 8 0
2001:db8:0180::/42  + 0180 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
0040 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
 01c0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0
2001:db8:01c0::/42 0 1 c 0
 och så vidare…..  900 delnät
2001:db8:ff80::/42 ff80 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
0040 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
ffc0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
2001:db8:ffc0::/42 f f c 0

Ja, du har rätt! att räkna ut 900 delnät adresser på det här sättet kräver mycket tid. Ta fram Windows Calculator och ställ in till Programmerare och därefter börja att addera 64 per gång. Du kommer att se resultatet direkt i olika talsystem.

Exempel 3 – 2001:3abd:434f:e000::/51, 4 delnät ska adresseras (a = 51 – 48 = 3).

  1. Definiera antal bitar för att adressera 4 delnät
    • b =2x ≥ 4; x = 2
    •  s = 22 = 4 delnät adresser
    • p = 51 + 2 = 53
  2. Definiera segmenteringssteg (inkrement)
    • 2(64 – 53) = 211 = 2048 = konverterat till hexadecimalt 800
    • i = 216 – (a + b) = 216 – (3 + 2) = 216 – 5 = 211 = 2048
    • i10 = 2048
    • i2 = 1000 0000 0000
    • i16 =800
  3. Adressera

Beräkningar

49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
2001:3abd:434f:e000::/53
+ e000 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
 0800 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
e800 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
  e 8 0 0
2001:3abd:434f:e800::/53
1
+ e800 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
0800 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
 f000 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0
2001:3abd:434f:f000::/53
 +  f000 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0800 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
f800 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
f 8 0 0
2001:3abd:434f:f800::/53

Exempel 4 – 2001:db8:abba::/48 Campus minst 16 LANs

16 LAN får man genom att addera 4 bitar till och då behöver vi inte ändra så mycket eftersom från /48 till /64 finns 16 bitar allokerade till Subnet ID. Det nya prefixet är P = 48 + 4 = 52

  • 2001:db8:abba::/52
  • 2001:db8:abba:1000::/52
  • 2001:db8:abba:2000::/52
  • 2001:db8:abba:3000::/52
  • fram till …..
  • 2001:db8:abba:e000::/52
  • 2001:db8:abba:f000::/52

Men låt oss säga att ytterligare 20 VLANs behöver adresseras på varje ovan delnät. De första 4 bitar kallar vi för a = P – 48; a = 52 -48 = 4

  1. Definiera antal bit som behövs
    • b =2x ≥ 20; x = 5
    • s = 25 = 32 delnät adresser
    • p = 52 + 5 = 57
  2. Definiera segmenteringssteg (inkrement)
    • i = 216 – (a + b) = 216 – (4 + 5) = 216 – 9 = 27 = 128
    • i10 = 128
    • i2 = 1000 0000
    • i16 =80

Beräkningar och adressering

 49 50  51  52  53  54  55 56  57  58 59 60 61 62 63 64
+ 0000 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0
 0080 0 0 0 0 0 0 0 0  1 0 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
2001:db8:abba:80::/57 0 0 8 0
0 1
+ 0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
 0100 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
2001:db8:abba:100::/57 0 1 0 0
+ 0100 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0180 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
2001:db8:abba:180::/57 0 1 8 0
0 1 1
+ 0180 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0200 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
2001:db8:abba:200::/57 0 2 0 0
+ 0200 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0280 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
  2001:db8:abba:280::/57 0 2 8 0
1
+ 0280 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0300 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0
   2001:db8:abba:300::/57 0 3 0 0
+ 0300 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0580 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0
   2001:db8:abba:580::/57 0 3 8 0
1 1 1
+ 0380 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0600 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
2001:db8:abba:600::/57 0 4 0 0
….
+ 0f00 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0080 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0f80 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0
2001:db8:abba:f80::/57

Nätverksuppdelning /127 Point-to-Point länkar

Med överflödiga antal IPv6 adresser kan det finnas anledningar att begränsa antalet IPv6 adresser för Interface ID. Utforskare och säkerhetsspecialister har tagit fram svagheter i just antal IPv6 adresser. NDP Exhaustation attack utnyttjar tillgång till många IPv6 adresser tilldelade till ett interface ID. Skadliga datapaket kan adresseras till flera IPv6 adresser en nätverksenhet har och orsaka en stor och onödig datatrafik. Varje nätverkshanterare mellan avsändare och mottagare måste ta emot dessa skadliga paket och bearbeta de. Nätverkshanterare förbrukar resurser, processor och minne till gränsen att kollapsa på grund av överbelastning. Med 64 bitar till Interface ID kan genereras rätt många IPv6 adresser, något som inte är så svårt att förstå det. 64 bitar ger 18 kvintiljon adresser.

I IPv4 finns ett cache-minne för att behålla en lista på IP adresser och deras MAC adresser, liknande finns i IPv6 men namnet är Neighbor cache istället. Det är just det minne som hackers ger sig till. Cisco skyddar cacheminnet med intern hantering som går ut på skanna datatrafik och filtrera misstänkta paket.

Bild 4: Prefix /127

Ett sätt att bromsa NDP Exhaustation attack är att dela upp ett nätverk med prefix /127. Här får betonas att det blir endast 2 giltiga adresser och den första kan bli 0 som är giltig nätverksadress. Dessutom ska man komma ihåg att IPv6 har ingen broadcast-adress. Innan ett exempel tas fram vill jag uppmärksamma att den globala routing prefixen är /48 och Subnet ID är nu 79 bitar. Det resulterar i en /127 prefix.

Observera att en IPv6 adress består av 128 bitar och med prefix /127 återstår endast 1 bit för Interface ID, vilket ger endast 2 adresser.

Exempel 1, subnet ID ff00:

  • 2001:db8:cafe:ff00:0000:0000:0000:0000/64
  • 2001:db8:cafe:ff00:0000:0000:0000:0000/127 (första adress)
  • 2001:db8:cafe:ff00:0000:0000:0000:0001/127 (andra adress)

Exempel 2, subnet ID ff01:

  • 2001:db8:cafe:ff01:0000:0000:0000:0000/64
  • 2001:db8:cafe:ff01:0000:0000:0000:0000/127 (första adress)
  • 2001:db8:cafe:ff01:0000:0000:0000:0001/127 (andra adress)

Exempel 3, subnet ID ff02:

  • 2001:db8:cafe:ff02:0000:0000:0000:0000/64
  • 2001:db8:cafe:ff02:0000:0000:0000:0000/127 (första adress)
  • 2001:db8:cafe:ff02:0000:0000:0000:0001/127 (andra adress)

Exempel 4, sunet ID ffff:

  • 2001:db8:cafe:ffff:0000:0000:0000:0000/64
  • 2001:db8:cafe:ffff:0000:0000:0000:0000/127 (första adress)
  • 2001:db8:cafe:ffff:0000:0000:0000:0001/127 (andra adress)

Med 4 hexadecimala siffror i Subnet ID kan 65 536 delnät adresseras från 0000 till ffff.

Nätverksuppdelning i IPv6, ett sätt att organisera ett nätverk

RFC 3531 specificerar hur tilldelning kan planeras och utföras. Det kan synliggöras med hjälp av en nätverksuppdelnings kalkylator som arbetar i enlighet med samma specifikation. Jag hittade en sajt som hanterar IPv6 nätverksuppdelning samt utför en fullständig implementationsplan, GestióIP. Till synes verkar kalkylatorn lätt att hantera, men när man väl gräver lite djupare hittar en mer avancerad hantering.

Det är sagt att det finns jätte många IPv6 adresser och att vi nätverksuppdelar mest för att organisera ett nätverk. RFC 35 31 specificerar flera olika nivåer av en hierarkisk adressimplementering:

  • Nivå I: Kontinent
  • Nivå II: Land
  • Nivå III: Städer
  • Nivå IV: Campus
  • Nivå V: Byggnader
  • Nivå VI: Nätverksmiljöer (produktion, administration, utveckling, etc)
  • Nivå VII: Nätverk med host (prefix /64)

Vi illustrerar en sådan organisation- och implementationsplanering med ett teoretiskt exempel:

En ISP har tilldelat till ett stort företag följande IPv6 adress: 2001:db8::/32. Företaget har följande krav:

  • 3 nivå I nätverk (North America, Europe, Asia), planerar fler nätverk i Australia och Buenos Aires
  • 4 nivå II nätverk (max 4 länder per kontinent) Europe: Germany, England, Spain, France. Inte mer än 4 länder per kontinent.
  • 3 nivå III nätverk (max 3 städer per land) Germany: Berlin, Hamburg, Munich. Det kan bli flera städer
  • 2 nivå IV nätverk (max 2 campus per stad) Berlin: Campus 1, Campus 2
  • 5 nivå V nätverk (max 5 byggnader per campus) Campus Berling: Byggnader 1-5
  • 10 nivå VI nätverk (max 10 nätverksmiljöer per byggnad)
  • 351 nivå VII nätverk (max 351 nätverk med prefix /64 var och en)

Som du ser, det har blivit svårare att fortsätta tänka på att det är lätt att dela upp ett nätverk, men nu handlar om att organisera ett gigantiskt nätverk och då behöver vi ett verktyg. Detta ska vi laborera för att se hur ett gigantiskt nätverk kan adresseras med IPv6.

Några frågor om nätverksuppdelning i IPV6

  1. Dela upp följande nätverk: 2001:db8:cafe::/48 genom att använda prefix /52
  2. Ange antal delnät resulterar i uppdelningen.
  3. Lista alla delnät-adresser
  4. Gör det samma men det här gången med prefix /56
  5. Med /64 Interface ID, vilken längd har den globala routing prefix som ska generera 256 delnät?
  6. Med /64 Interface ID, vilken längd har den globala routing prefix som generar 16 777 216 delnät?
  7. Vilka av följande /127 adresser tillhör till samma delnät och skulle kunna användas i en punkt-till-punkt länk?
    1. 2001:db8:face:b00c::1/127
    2. 2001:db8:face:b000::b/127
    3. 2001:db8:face:b00c::/127
    4. 2001:db8:face:b00c::2/127
    5. 2001:db8:face:b00c::3/127
    6. 2001:db8:face:b00c::4/127