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 föredrar jag använda liknande metoder som i IPv4 exempelvis segmenteringssteget.

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.  
  • Subnet ID har markerats med röd färg.

Med 64 bitar kan adresseras 18 446 744 073 709 551 616 delnät! I exemplet väljer man dela upp nätverket genom att använda den sista gruppen av hexadecimala siffror (16 bitar) inom Subnet Prefixet. Det ger oss möjlighet att adressera 65 536 delnät. Man väljer också att följa en logisk tanke i adressering och inte matematiska räknesatser.

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 och dela upp nätverket.

  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 ska börja avvika. Det är på grund av detta man föredrar att alltid jobba med 4 bitar (nibble) och inte med mindre. Den fjärde hexadecimala siffran sätts till noll, men vi bibehåller 10 bitar i uträkningarna.
    2. Prefixbeteckningen blir 2001:db8:NNN0::/42 (N = hexadecimal siffra där används endast 2 bitar)
  3. Segmenteringssteg (s)
    1. B = antal bitar till = 42/16 ger modulus 10
    2. S = Segmenteringssteg = 2(16-B) = 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. H = maxvärdet av antal host-bitar som läggs till = 210 = 1024 delnätadresser, från 0 till 1023
    3. SH = (Segmenteringssteg)(maxvärde av antal host-bitar)
    4. SH = 64(1023)=65 472 = konverteras till hexadecimal ffc0
    5. SH från 0000 till ffc0
  5. Adressera delnät från 2001:db8:0000::/42 till 2001:db8:ffc0::/42

Beräkningar med segmenteringssteg (inkrement) på 0040

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
23 22 21 20 23 22 21 20 23 22 21 20 23 22 21 20
8 4 2 1 8 4 2 1 8 4 2 1 8 4 2 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2001:db8:0000::/42 + 0000 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
1 1 1
 2001:db8:01c0::/42  + 01c0 0 0 0 0 0 0 0 1 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
 2001:db8:0200::/42 0200 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 2 0 0
 2001:db8:0240::/42
 2001:db8:0280::/42
 2001:db8:02c0::/42
 2001:db8:0300::/42
 2001:db8:0340::/42
 2001:db8:0380::/42
 2001:db8:03c0::/42
 2001:db8:0400::/42
……….. och så vidare
 2001:db8:0ec0::/42
 2001:db8:0f00::/42
 2001:db8:0f40::/42
 2001:db8:0f80::/42
 2001:db8:0fc0::/42
 2001:db8:1000::/42
 2001:db8:1040::/42
 2001:db8:1080::/42
 2001:db8:10c0::/42
 2001:db8:1100::/42
 2001:db8:1140::/42
2001:db8:1180::/42
2001:db8:11c0::/42
… och så vidare
2001:db8:ff80::/42 f f 80 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
f f c0 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. Du skulle kunna också använda en online subnet-kalkylator:

Exempel 3 – 2001:3abd:434f:e000::/51, 4 delnät ska adresseras.

  1. Definiera antal bitar för att adressera 4 delnät
    • fler bitar = fb =2x ≥ 4; x = 2
    • subnet = sn = 22 = 4 delnät adresser
    • ny prefix = np = 51 + 2 = 53
  2. Definiera segmenteringssteg (s)
    • Givet prefix /51 som ökar med 2 bitar blir det nu /53, det vill säga 2 bitar till.
    • Segmenteringssteg = s = 2(64-np) = 2(64 – 53) = 211 = 2048 eller så här
    • s10 = 2048
    • s2 = 1000 0000 0000
    • s16 =800
  3. Adressera

Beräkningar

49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
23 22 21 20 23 22 21 20 23 22 21 20 23 22 21 20
8 4 2 1 8 4 2 1 8 4 2 1 8 4 2 1
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
2001:3abd:434f:e800::/53   e 8 0 0
1
2001:3abd:434f:e800::/53 + 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
2001:3abd:434f:f000::/53 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
2001:3abd:434f:f800::/53 f 8 0 0

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 NP = 48 + 4 = 52

  • 2001:db8:abba:0000::/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 delnät behöver adresseras på varje ovan delnät.

  1. Definiera antal bitar till som behövs för att adressera minst 20 delnät till
    • fb =2x ≥ 20; x = 5
    • sn = 25 = 32 delnät adresser
    • np = 52 + 5 = /57
  2. Definiera segmenteringssteg (s)
    • bitar eller b=52 – 48 = 4 bitar från 48 till 52
    • s = 2(64-np) 2(64 – 57) = 27 = 128
    • s10 = 128
    • s2 = 1000 0000
    • s16 =80

Beräkningar och adressering med segmenteringssteg 80

 49 50  51  52  53  54  55 56  57  58 59 60 61 62 63 64
23 22 21 20 23 22 21 20 23 22 21 20 23 22 21 20
8 4 2 1 8 4 2 1 8 4 2 1 8 4 2 1
2001:0db8:abba:0000::/57 + 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:0db8:abba:0080::/57 0 0 8 0
0 1
2001:0db8:abba:0080::/57 + 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:0db8:abba:0100::/57 0 1 0 0
2001:0db8:abba:0100::/57 + 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:0db8:abba:0180::/57 0 1 8 0
0 1 1
2001:0db8:abba:0180::/57 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:0db8:abba:0200::/57 0 2 0 0
2001:0db8:abba:0200::/57 + 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:0db8:abba:0280::/57 0 2 8 0
1
2001:0db8:abba:0280::/57 + 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:0db8:abba:0300::/57 0 3 0 0
  001:0db8:abba:0300::/57 + 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
0380 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0
 2001:0db8:abba:3080::/57 0 3 8 0
1 1 1
 2001:0db8:abba:3080::/57 + 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
0400 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
2001:0db8:abba:0400::/57 0 4 0 0
o.s.v. ..
2001:0db8:abba:0f00::/57 + 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:0db8:abba:0f80::/57 0 f 8 0

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 som en nätverksenhet har vilket kan 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 (ARP tabell) 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å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