IPv6: Obsługa fragmentacji 

 

Maksymalna długość całego pakietu IPv6 razem z nagłówkiem to 65535 oktetów, przy czym pamiętać należy o ograniczeniu związanym z MTU. IPv6 wymaga obsługi MTU o wielkości minimum 1280 oktetów. Jeśli któreś z połączeń nie jest w stanie tego zapewnić, fragmentacja powinna zostać przeprowadzona w warstwie niższej, a nie na poziomie protokołu IP. Stąd w minimalnej implementacji IPv6 wystarczy, że stacja nie będzie wysyłała pakietów o wielkości przekraczającej 1280 oktetów. Do obsługi większych pakietów wymagana jest implementacja Path MTU Discovery (RFC1981). Przy czym, standard nie wymaga od węzłów możliwości przyjęcia pakietu o wielkości przekraczającej 1500 oktetów.

W IPv6 fragmentacji może dokonać tylko nadawca, a złożenia tylko końcowy odbiorca. Urządzenia pośredniczące nie realizują podziału na fragmenty, co było możliwe w IPv4.

Fragmentacja w IPv6 realizowana jest poprzez dodatkowy nagłówek rozszerzeń - 8 oktetowy Fragment Header, identyfikowany w podstawowym nagłówku IPv6 numerem 44. Poniżej widać jego budowę.

 
 

Pole Next Header (8 bitów) identyfikuje zawartość oryginalnego pakietu IP. Jeszcze przed jego fragmentacją - np. ICMP, UDP, TCP (numeracja pola według RFC 1700). 

Pole Reserved (8 bitów) jest obecnie niewykorzystywane. Kiedy wysyłamy pakiet, powinno mieć same zera. Odbiorca powinien je zignorować.

Fragment Offset jest 13 bitowym polem wskazującym miejsce za którym należy umieszczać dane kolejnych fragmentów pakietu.

2 bitowe pole Res jest zarezerwowane i nie wykorzystywane. Kiedy wysyłamy pakiet, powinno mieć same zera. Odbiorca powinien je zignorować.

Flaga M (1 bit) pełni podobną funkcję jak w IPv4. Jeden oznacza więcej fragmentów, a zero, że jest to już ostatni fragment składający się na pakiet IP o określonym ID.

Identification (32 bity) - służy do identyfikacji wszystkich fragmentów składających się na jeden oryginalny pakiet IP. Pole to musi mieć unikalną wartość dla każdego pakietu, który wysyłany jest pomiędzy tym samym nadawcą i końcowym odbiorcą w czasie potrzebnym na jego dotarcie i złożenie w całość. Gwarantuje to niewymieszanie się fragmentów pochodzących z wielu pakietów IP. Najczęściej wartość ta zwiększana jest o jeden z każdym nowo fragmentowanym pakietem (kiedy licznik dojdzie do końca, zaczyna na nowo od 0). 

W IPv6 oryginalny pakiet IP przed fragmentacją dzielony jest na dwie części. Jedną, która podlega fragmentacji i drugą, która nie. Część, która nie podlega fragmentacji składa się z oryginalnego nagłówka IPv6 i tylko tych nagłówków rozszerzeń, które muszą być przetwarzane przez kolejne routery na drodze pakietu (np. Routing Header, Hop-by-Hop Options Header).

 
 

Cała reszta podlega fragmentacji. Jest nią każdy nagłówek rozszerzeń, który ma być przetwarzany tylko przez końcowego odbiorcę oraz nagłówek przenoszonych danych warstwy wyższej i jej dane. Każdy z fragmentów oprócz ostatniego przenosi dane w wielokrotności 8 oktetów. Sposób podziału pakietu na części został pokazany poniżej: 

 
 

Każdy fragment pakietu zostanie wysłany do sieci, w sposób przedstawiony niżej:

 
 

Pole wielkości każdego pakietu zostanie dostosowane do wielkości jego fragmentu. Podobnie, jak jest to realizowane przy fragmentacji w IPv4. Podczas procesu fragmentacji do każdego pakietu IPv6 zostanie dodany Fragment Header o wielkości 8 oktetów. Jest to ostatni rozszerzony nagłówek niepodlegającej fragmentacji części pakietu IPv6. Warto o tym pamiętać podczas prowadzenia wyliczeń. Podczas fragmentacji w IPv4 nie były dokładane żadne pola, jako iż były one częścią standardowego nagłówka.


Zapraszamy do kontaktu drogą mailową This email address is being protected from spambots. You need JavaScript enabled to view it. lub telefonicznie +48 797 004 932.