IPv6 paket

Paket IPv6 ( anglicky  IPv6 packet ) je blok informací formátovaných pro přenos přes počítačové sítě , které podporují protokol IPv6 .

Pakety se skládají z řídicích informací potřebných k doručení paketu na místo určení a obsahu, který má být odeslán. Řídicí informace jsou rozděleny na jednu obsaženou v hlavní pevné hlavičce a jednu obsaženou v jedné z volitelných doplňkových hlaviček. Užitnou zátěží je obvykle datagram nebo fragment protokolu vyšší transportní vrstvy , ale mohou to být také data síťové vrstvy (jako je ICMPv6 ) nebo data spojové vrstvy (jako OSPF ).

Pakety IPv6 jsou obvykle přenášeny pomocí protokolů spojové vrstvy, jako je Ethernet , který zapouzdří každý paket do rámce . Paket IPv6 lze také odeslat pomocí tunelovacího protokolu vyšší vrstvy , jako je 6to4 nebo Teredo .

Na rozdíl od IPv4 směrovače nefragmentují pakety IPv6 v situacích , kdy je paket větší než MTU připojení , a hostitelům se důrazně doporučuje [1] implementovat mechanismus zjišťování cesty MTU pro určení velikosti MTU cesty. V opačném případě budou muset použít minimální povolenou MTU v sítích IPv6, která se rovná 1280 oktetů . Koncové uzly MOHOU fragmentovat paket před jeho odesláním, pokud je větší než MTU cesty.

Opravené záhlaví

Pevná hlavička paketu IPv6 se skládá ze 40 oktetů (320 bitů) [1] a má následující formát:

Odsazení v oktetech 0 jeden 2 3
Odsazení v bitech 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
0 0 verze Třída dopravy štítek toku
čtyři 32 délka užitečného zatížení Další záhlaví Hop limit
osm 64 zdrojová adresa
C 96
deset 128
čtrnáct 160
osmnáct 192 Cílová adresa
1C 224
dvacet 256
24 288

Popis polí:

Pro zlepšení výkonu as očekáváním, že moderní technologie spojové a transportní vrstvy poskytují dostatečnou úroveň detekce chyb, [5] hlavička nemá kontrolní součet .

Záhlaví rozšíření  _ _

Rozšířené hlavičky obsahují další informace a jsou umístěny mezi pevnou hlavičkou a hlavičkou protokolu vyšší úrovně [1] . Typ prvního rozšířeného záhlaví je určen v poli Další záhlaví pevného záhlaví a každé rozšířené záhlaví má podobné pole, které ukládá typ dalšího rozšířeného záhlaví. Pole Next Header posledního záhlaví obsahuje typ protokolu vyšší vrstvy, který je přítomen jako užitečné zatížení.

Každé rozšířené záhlaví musí být násobkem 8 v oktetech. Některá záhlaví musí být rozšířena na správnou velikost.

Rozšířené hlavičky musí zpracovat pouze koncový uzel, s výjimkou hlavičky Hop-By-Hop Options , kterou musí zpracovat každý mezilehlý uzel na cestě paketu, včetně odesílatele a příjemce. Pokud je v balení několik prodloužených hlaviček, doporučujeme je roztřídit tak, jak je uvedeno v tabulce níže. Všimněte si, že všechna rozšířená záhlaví jsou volitelná a nesmí se v balíčku objevit více než jednou, s výjimkou záhlaví Možnosti cíle , které se může objevit dvakrát.

Pokud uzel nemůže zpracovat rozšířenou hlavičku, MUSÍ paket zahodit a odeslat zprávu o problému s parametry ( ICMPv6 typ 4 kód 1). Pokud je pole Další záhlaví rozšířeného záhlaví 0, musí uzel udělat totéž.

Rozšířená hlavička Typ Popis
Možnosti Hop-by-Hop 0 Parametry, které má zpracovat každý tranzitní uzel.
Možnosti destinace 60 Parametry, které by měl zpracovávat pouze příjemce.
Směrování 43 Umožňuje odesílateli zadat seznam uzlů, kterými musí paket projít.
Fragment 44 Hlavička obsahuje informace o fragmentaci paketu.
Authentication Header (AH) 51 Obsahuje informace používané k ověření většiny balíčku. Viz IPsec .
Encapsulation Security Payload (ESP) padesáti Poskytuje šifrování dat pro zabezpečená připojení. Viz IPsec .

Možnosti hop-by-hop a možnosti cíle

Rozšířená hlavička Hop-by-hop Options je potřebná k předání dalších možností zpracovávaných každým uzlem podél cesty paketu, včetně odesílatele a příjemce. Rozšířené záhlaví Možnosti cíle je potřeba k předání dalších možností koncovému uzlu nebo uzlům. Formát záhlaví je stejný pro obě rozšířené záhlaví.

Odsazení v oktetech 0 jeden 2 3
Odsazení v bitech 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
0 0 Další záhlaví HDR Ext Len Možnosti
Možnosti kódování TLV
Odsazení v oktetech 0 jeden 2 3
Odsazení v bitech 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
0 0 Možnosti Typ Zvolte datovou linku Možnosti Data
  • Option Type (8 bitů): Typ možnosti. Horní dva bity označují, co dělat, pokud uzel nemůže rozpoznat možnost:
0 (00) - Přeskočte tuto volbu a pokračujte ve zpracování záhlaví. 1 (01) - Zahoďte paket. 2 (10) - Zahoďte paket a odešlete zprávu o problému s parametry ( ICMPv6 typ 4 kód 2), i když je paket směrován na multicastovou adresu. 3 (11) - Zlikvidujte paket a odešlete zprávu o problému s parametry ( ICMPv6 typ 4 kód 2), pouze pokud paket není směrován na multicastovou adresu.
  • Opt Data Len (8 bitů): Délka pole Option Data v oktetech.
  • Option Data : Pole s proměnnou délkou, které obsahuje data zadaného typu.

Směrování

Rozšířená hlavička směrování se používá k určení seznamu tranzitních uzlů, kterými musí paket projít, než se dostane k příjemci.

Odsazení v oktetech 0 jeden 2 3
Odsazení v bitech 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
0 0 Další záhlaví HDR Ext Len Typ směrování Segmenty vlevo
čtyři 32 Typově specifická data
  • Další hlavička (8 bitů): Další rozšířený typ hlavičky nebo typ protokolu, který má být odeslán jako užitečné zatížení.
  • Hdr Ext Len (8 bitů): Délka záhlaví v blocích po osmi oktetech, s výjimkou prvního bloku.
  • Typ směrování (8 bitů): Podtyp záhlaví.
  • Segments Left (8 bitů): Počet dosud nenavštívených uzlů ze seznamu.
  • Data specifická pro typ : Pole s proměnnou délkou, konkrétní formát pole závisí na obsahu pole Typ směrování .
Směrovací podtypy záhlaví

Podtyp hlavičky 0 je zastaralý, protože hlavičku lze použít k organizaci DoS útoku [6] . Pokud je hodnota pole Segments Left nula, pak MUSÍ uzel ignorovat rozšířené záhlaví Routing a pokračovat ve zpracování dalších rozšířených záhlaví. Pokud je hodnota pole Segments Left nenulová, pak MUSÍ uzel zahodit paket a odeslat zprávu o problému s parametrem ( ICMPv6 typ 4, kód 0).

Fragment

Za účelem odeslání paketu většího, než je cesta MTU , odesílatel rozdělí paket na fragmenty. Rozšířená hlavička Fragment obsahuje informace potřebné k tomu, aby příjemce sestavil původní (nefragmentovaný) paket.

Odsazení v oktetech 0 jeden 2 3
Odsazení v bitech 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
0 0 Další záhlaví Rezervováno Fragment Offset Res M
čtyři 32 Identifikace
  • Další hlavička (8 bitů): Další rozšířený typ hlavičky nebo typ protokolu, který má být odeslán jako užitečné zatížení.
  • Rezervováno (8 bitů): Rezervováno, musí být inicializováno na nulu.
  • Fragment Offset (13 bitů): Fragment offset v osmioktetových blocích od začátku části paketu, který má být fragmentován.
  • Res (2 bity): Rezervováno, musí být inicializováno na nulu.
  • M (1 bit): Budou další fragmenty. Pokud je 0, jedná se o poslední fragment.
  • Identifikace (32 bitů): Číslo identifikující původní paket.

Užitečné údaje

Za pevnými a rozšířenými hlavičkami je užitečné zatížení protokolu transportní vrstvy , jako je segment TCP nebo datagram UDP . Pole Next Header poslední IPv6 hlavičky udává typ užitečného zatížení uloženého v paketu.

Normální délka užitečného zatížení

Pole pevné hlavičky Payload Length je 16 bitů , takže maximální možné užitečné zatížení a rozšířené hlavičky je 65535 oktetů . Maximální velikost rámce mnoha protokolů linkové vrstvy je mnohem menší.

Jambogramy

Paket IPv6 může přenášet více dat pomocí možnosti jumbo payload v rozšířené hlavičce Hop-By-Hop Options [7] . Tato možnost umožňuje výměnu paketů s velikostí užitečného zatížení o 1 bajt menší než 4 GiB (2 32 − 1 = 4294967295 bajtů). Balíček s takovým obsahem se nazývá jambogram.

Protože oba protokoly TCP a UDP mají pole délky omezená na 16 bitů, je pro podporu jambogramů vyžadována implementace modifikovaných protokolů transportní vrstvy. Jumbogramy mohou fungovat pouze u připojení s MTU větší než 65583 oktetů (větší než 65535 oktetů pro užitečné zatížení, 40 oktetů pro pevné záhlaví a 8 oktetů pro rozšířené záhlaví Hop-By-Hop Options ).

Fragmentace

Pakety IPv6 nejsou směrovači nikdy fragmentovány . Pakety větší než MTU síťového připojení jsou zahozeny a odesílateli je odeslána zpráva Packet too Big ( ICMPv6 typ 2) . K podobnému chování v IPv4 dochází, pokud je nastaven bit Nefragmentovat .

Očekává se, že koncové uzly IPv6 provedou zjišťování Path MTU, aby určily maximální povolenou velikost paketů, které mohou odeslat, a protokol vyšší vrstvy omezí velikost paketů. Pokud to však protokol vyšší vrstvy není schopen, MŮŽE odesílatel použít rozšířenou hlavičku Fragment k provedení fragmentace paketů IPv6. Všechny protokoly, které přenášejí pakety IPv6, musí mít MTU rovnou nebo větší než 1280 oktetů. Protokoly, které nejsou schopny přenést 1280-oktetový paket v jednom bloku, se musí fragmentovat a znovu sestavit, aniž by to ovlivnilo vrstvu IPv6 [1] .

Fragmentace

Paket obsahující fragment původního (velkého) paketu se skládá ze dvou částí: nefragmentovatelné části původního paketu, která je stejná pro všechny fragmenty, a fragmentovatelné části, identifikované offsetem fragmentu.

Nefragmentovatelná část paketu se skládá z pevné hlavičky a rozšířených hlaviček původního paketu (volitelné).

Hodnota pole Další záhlaví posledního záhlaví nefragmentované části musí být 44, což znamená, že další záhlaví bude Fragment . V záhlaví fragmentu se pole Další záhlaví musí rovnat typu prvního záhlaví fragmentované části. Po záhlaví Fragment následuje fragment původního balíčku. Velikost každého fragmentu fragmentované části musí být násobkem 8, s výjimkou posledního fragmentu.

Sestavení fragmentů

Přijímací uzel po shromáždění všech fragmentů zahodí rozšířenou hlavičku fragmentů a umístí fragmenty na offsety zadané v poli Fragment Offset vynásobené 8. Pakety obsahující fragmenty nemusí dorazit ve správném pořadí a budou přeskupeny. v případě potřeby přijímacím uzlem.

Pokud 60 sekund po obdržení prvního fragmentu nebyly shromážděny všechny fragmenty, pak se sestavování původního balíčku zruší a všechny přijaté fragmenty se zahodí. Pokud je přijat první fragment (s Fragmant Offset nastaveným na nulu), odešle se odesílateli fragmentovaného paketu zpráva Fragment Reassembly Time Exceeded ( ICMPv6 typ 3 kód 1).

Maximální velikost původního paketu nesmí překročit 65 535 oktetů a pokud je původní paket po opětovném složení větší, musí být vyřazen.

Poznámky

  1. 1 2 3 4 Internetový protokol, verze 6 (IPv6) Specifikace. RFC 2460 .
  2. Definice pole diferencované služby (DS Field) v záhlaví IPv4 a IPv6. RFC 2474 .
  3. Nová terminologie a vysvětlení pro DiffServ. RFC 3260 .
  4. Přidání explicitního oznámení o přetížení (ECN) k IP. RFC 3168 .
  5. Technická kritéria pro výběr IP The Next Generation (IPng). RFC 1726 .
  6. Ukončení podpory směrovacích hlaviček typu 0 v IPv6. RFC 5095
  7. Jumbogramy IPv6. RFC 2675