cs:fragmentace

Fragmentace

K fragmentaci dochází, jestliže je třeba přepravit IP datagram po lince, jejíž maximální možná velikost paketu (MTU, Maximum Transmission Unit) je menší než velikost datagramu. V tom případě se datagram do příslušné linky nevejde a musí se rozdělit na několik menších datagramů – fragmentovat.

Fragmentace je všeobecně vnímána jako nutné zlo. Umožňuje vypořádat se s odlišnostmi různých technologií linkové vrstvy (např. Wi-Fi má jinou maximální délku paketu než Ethernet), ovšem na druhé straně působí různé problémy. Například firewally mohou mít problémy při posuzování fragmentů, ve kterých chybí hlavička transportní vrstvy.

Pravidla pro fragmentaci paketů se proto v IPv6 výrazně zpřísnila. Zatímco v IPv4 může datagram fragmentovat libovolné zařízení během jeho přepravy Internetem, v IPv6 to smí provést jen odesilatel. Pokud směrovací tabulka některého zařízení po cestě rozhodne, že datagram má být odeslán linkou s příliš malým MTU, bude zahozen a jeho odesilateli zaslána prostřednictvím ICMPv6 chybová zpráva, aby jej buď fragmentoval, nebo ve spolupráci s transportní vrstvou zmenšil jeho velikost.

Hlavička //Fragmentace//

Pokud dojde k fragmentaci, odesilatel přidá do řetězce rozšiřujících hlaviček hlavičku Fragmentace, která je určena právě pro tento případ. Obsahuje tyto položky:

  • Posun fragmentu (Fragment offset) je číslo bajtu původního datagramu, kde začínají data nesená tímto fragmentem
  • Příznak M (More fragments) obsahuje jedničku, pokud za tímto fragmentem následuje další fragment, jen poslední fragment datagramu má příznak M nulový
  • Identifikace (Identification) obsahuje identifikátor datagram – každý odeslaný datagram má unikátní identifikátor, všechny fragmenty téhož datagramu nesou jeho identifikátor, podle kterého příjemce pozná, že patří k sobě

Jednotlivé fragmenty skládá až cílový příjemce datagramu (stejně jako v IPv4).

Velikost paketů

Specifikace požaduje, aby MTU přenosových linek používaných pro přepravu IPv6 bylo alespoň 1280 B. Vzhledem k tomu, že valná většina přenosových tras v Internetu používá MTU 1500 B převzaté z Ethernetu (na páteřních linkách jsou hodnoty ještě větší), prostor pro fragmentaci se zmenšuje a dochází k ní stále méně.

Aby se pravděpodobnost fragmentace ještě snížila, je v IPv6 důrazně doporučeno, aby implementace používaly objevování MTU cesty (path MTU discovery) podle RFC 1981. Jeho cílem je najít co největší délku datagramu, která dorazí k danému cíli, aniž by vyžadovala fragmentaci.

Poslední úprava:: 24.09.2019 14:01