Pachetul IPv6

Pachetul IPv6 ( eng.  IPv6 packet ) este un bloc de informații formatat pentru transmisie prin rețele de computere care acceptă protocolul IPv6 .

Pachetele constau din informațiile de control necesare pentru a livra pachetul la destinație și încărcătura utilă care urmează să fie trimisă. Informațiile de control sunt împărțite în unul conținut în antetul principal fix și unul conținut într-unul dintre anteturile suplimentare opționale. Sarcina utilă este de obicei o datagramă sau un fragment de protocol de nivel de transport superior , dar poate fi și date de la nivelul de rețea (cum ar fi ICMPv6 ) sau date de la nivelul de legătură (cum ar fi OSPF ).

Pachetele IPv6 sunt transmise de obicei folosind protocoale de nivel de legătură, cum ar fi Ethernet , care încapsulează fiecare pachet într- un cadru . Un pachet IPv6 poate fi trimis și folosind un protocol de tunel de nivel superior , cum ar fi 6to4 sau Teredo .

Spre deosebire de IPv4 , routerele nu fragmentează pachetele IPv6 în situațiile în care pachetul este mai mare decât MTU de conexiune , iar gazdele sunt insistent recomandate [1] să implementeze mecanismul de descoperire a căii MTU pentru a determina dimensiunea MTU a căii. În caz contrar, ei vor trebui să utilizeze MTU minim permis în rețelele IPv6, egal cu 1280 de octeți . Nodurile de sfârșit POT fragmenta un pachet înainte de a-l trimite dacă este mai mare decât calea MTU.

Antet fix

Antetul fix al unui pachet IPv6 este format din 40 de octeți (320 de biți) [1] și are următorul format:

Indentație în octeți 0 unu 2 3
Indentație în biți 0 unu 2 3 patru 5 6 7 opt 9 zece unsprezece 12 13 paisprezece cincisprezece 16 17 optsprezece 19 douăzeci 21 22 23 24 25 26 27 28 29 treizeci 31
0 0 versiune Clasa de trafic eticheta fluxului
patru 32 lungimea sarcinii utile Următorul antet Limită de hamei
opt 64 Sursa adresei
C 96
zece 128
paisprezece 160
optsprezece 192 Adresa de destinatie
1C 224
douăzeci 256
24 288

Descrierea câmpurilor:

Pentru a îmbunătăți performanța și cu așteptarea ca tehnologiile moderne ale straturilor de legătură și transport să ofere un nivel suficient de detectare a erorilor, [5] antetul nu are o sumă de control .

Antetele extensiilor  _ _

Anteturile extinse conțin informații suplimentare și sunt plasate între antetul fix și antetul protocolului de nivel superior [1] . Tipul primului antet extins este specificat în câmpul Next Header al antetului fix, iar fiecare antet extins are un câmp similar care stochează tipul următorului antet extins. Câmpul Next Header al ultimului antet conține tipul de protocol de nivel superior prezent ca sarcină utilă.

Fiecare antet extins trebuie să fie un multiplu de 8 în octeți. Unele antete trebuie extinse la dimensiunea corectă.

Antetele extinse trebuie procesate numai de nodul final, cu excepția antetului Hop-By-Hop Options , care trebuie procesat de fiecare nod intermediar de-a lungul căii pachetului, inclusiv expeditorul și receptorul. Dacă în pachet există mai multe anteturi extinse, atunci se recomandă să le sortați așa cum este indicat în tabelul de mai jos. Rețineți că toate anteturile extinse sunt opționale și nu trebuie să apară de mai multe ori într-un pachet, cu excepția antetului Destination Options , care poate apărea de două ori.

Dacă un nod nu poate procesa un antet extins, atunci TREBUIE să renunțe la pachet și să trimită un mesaj de problemă cu parametrii ( ICMPv6 tip 4 cod 1). Dacă câmpul Next Header al antetului extins este 0, atunci nodul trebuie să facă același lucru.

Antet extins Tip de Descriere
Opțiuni Hop-by-Hop 0 Parametrii care urmează să fie procesați de fiecare nod de tranzit.
Opțiuni de destinație 60 Parametri care ar trebui să fie procesați doar de receptor.
Dirijare 43 Permite expeditorului să specifice o listă de noduri pe care pachetul trebuie să le traverseze.
Fragment 44 Antetul conține informații despre fragmentarea pachetelor.
Antet de autentificare (AH) 51 Conține informații utilizate pentru autentificarea cea mai mare parte a pachetului. Vezi IPsec .
Încapsularea sarcinii utile de securitate (ESP) cincizeci Oferă criptarea datelor pentru conexiuni sigure. Vezi IPsec .

Opțiuni hop-by-hop și opțiuni de destinație

Antetul extins Hop-by-hop Options este necesar pentru a trece opțiuni suplimentare gestionate de fiecare nod de-a lungul căii pachetului, inclusiv expeditorul și receptorul. Antetul extins Destination Options este necesar pentru a transmite opțiuni suplimentare nodului sau nodurilor finale. Formatul antetului este același pentru ambele anteturi extinse.

Indentație în octeți 0 unu 2 3
Indentație în biți 0 unu 2 3 patru 5 6 7 opt 9 zece unsprezece 12 13 paisprezece cincisprezece 16 17 optsprezece 19 douăzeci 21 22 23 24 25 26 27 28 29 treizeci 31
0 0 Următorul antet HDR Ext Len Opțiuni
Opțiuni codificate TLV
Indentație în octeți 0 unu 2 3
Indentație în biți 0 unu 2 3 patru 5 6 7 opt 9 zece unsprezece 12 13 paisprezece cincisprezece 16 17 optsprezece 19 douăzeci 21 22 23 24 25 26 27 28 29 treizeci 31
0 0 Opțiuni Tip Optează Linia de date Opțiuni Date
  • Tip opțiune (8 biți): tip opțiune. Cei doi biți de sus indică ce trebuie făcut dacă nodul nu poate recunoaște opțiunea:
0 (00) - Omiteți această opțiune și continuați procesarea antetului. 1 (01) - Aruncă pachetul. 2 (10) - Aruncați pachetul și trimiteți un mesaj de problemă cu parametrii ( ICMPv6 tip 4 cod 2) chiar dacă pachetul este direcționat către o adresă multicast. 3 (11) - Aruncați pachetul și trimiteți un mesaj de problemă cu parametrii ( ICMPv6 tip 4 cod 2) numai dacă pachetul nu este direcționat către o adresă multicast.
  • Opt Data Len (8 biți): lungimea câmpului Option Data în octeți.
  • Opțiune Date : un câmp de lungime variabilă care conține date de tipul specificat.

Rutare

Antetul de rutare extins este folosit pentru a specifica o listă de noduri de tranzit prin care pachetul trebuie să treacă înainte de a ajunge la destinatar.

Indentație în octeți 0 unu 2 3
Indentație în biți 0 unu 2 3 patru 5 6 7 opt 9 zece unsprezece 12 13 paisprezece cincisprezece 16 17 optsprezece 19 douăzeci 21 22 23 24 25 26 27 28 29 treizeci 31
0 0 Următorul antet HDR Ext Len Tip de rutare Segmente stânga
patru 32 Date specifice tipului
  • Următorul antet (8 biți): Următorul tip de antet extins sau tip de protocol care urmează să fie trimis ca sarcină utilă.
  • Hdr Ext Len (8 biți): lungimea antetului în blocuri de opt octeți, excluzând primul bloc.
  • Tip de rutare (8 biți): subtip antet.
  • Segmente stânga (8 biți): numărul de noduri care nu au fost încă vizitate din listă.
  • Date specifice tipului : Câmp de lungime variabilă, formatul specific al câmpului depinde de conținutul câmpului Tip de rutare .
Subtipuri antet de rutare

Subtipul de antet 0 este depreciat din cauza faptului că antetul poate fi folosit pentru a organiza un atac DoS [6] . Dacă valoarea câmpului Segmente stânga este zero, atunci nodul TREBUIE să ignore antetul extins de rutare și să continue la procesarea următoarelor anteturi extinse. Dacă valoarea câmpului Segmente stânga este diferită de zero, atunci nodul TREBUIE să renunțe la pachet și să trimită un mesaj de problemă cu parametrii ( ICMPv6 tip 4, cod 0).

Fragment

Pentru a trimite un pachet mai mare decât calea MTU , expeditorul împarte pachetul în fragmente. Antetul Fragment extins conține informațiile necesare destinatarului pentru a asambla pachetul original (nefragmentat).

Indentație în octeți 0 unu 2 3
Indentație în biți 0 unu 2 3 patru 5 6 7 opt 9 zece unsprezece 12 13 paisprezece cincisprezece 16 17 optsprezece 19 douăzeci 21 22 23 24 25 26 27 28 29 treizeci 31
0 0 Următorul antet Rezervat Fragment Offset Res M
patru 32 Identificare
  • Următorul antet (8 biți): Următorul tip de antet extins sau tip de protocol care urmează să fie trimis ca sarcină utilă.
  • Rezervat (8 biți): Rezervat, trebuie inițializat la zero.
  • Fragment Offset (13 biți): Fragment offset în blocuri de opt octeți de la începutul porțiunii de pachet care urmează să fie fragmentat.
  • Res (2 biți): Rezervat, trebuie inițializat la zero.
  • M (1 bit): Vor fi mai multe fragmente. Dacă 0, atunci acesta este ultimul fragment.
  • Identificare (32 de biți): un număr care identifică pachetul original.

Date utile

În spatele antetelor fixe și extinse se află încărcătura utilă a protocolului de nivel de transport , cum ar fi un segment TCP sau o datagramă UDP . Câmpul Next Header al ultimului antet IPv6 indică tipul de încărcare utilă stocat în pachet.

Lungimea normală a sarcinii utile

Câmpul de antet fix Lungimea sarcinii utile este de 16 biți , astfel încât sarcina utilă maximă posibilă și anteturile extinse este de 65535 octeți . Dimensiunea maximă a cadrului a multor protocoale de nivel de legătură este mult mai mică.

Jambograme

Un pachet IPv6 poate transporta mai multe date folosind opțiunea de încărcare utilă jumbo din antetul extins Hop-By-Hop Options [7] . Această opțiune permite schimbul de pachete cu o dimensiune de încărcare utilă de 1 octet mai mică de 4 GiB (2 32 − 1 = 4294967295 octeți). Un pachet cu un astfel de conținut se numește jambogram.

Deoarece protocoalele TCP și UDP au câmpuri de lungime limitate la 16 biți, este necesară implementarea protocoalelor de nivel de transport modificate pentru a suporta jambograme. Jumbogramele pot funcționa numai pe conexiuni cu un MTU mai mare de 65583 octeți (mai mare de 65535 octeți pentru sarcina utilă, 40 octeți pentru antetul fix și 8 octeți pentru antetul Opțiuni Hop-By-Hop extins ).

Fragmentare

Pachetele IPv6 nu sunt niciodată fragmentate de routere . Pachetele mai mari decât MTU a conexiunii la rețea sunt aruncate și un mesaj Pachet prea mare ( ICMPv6 tip 2) este trimis expeditorului . Un comportament similar în IPv4 are loc dacă bitul Nu fragmentați este setat .

Se așteaptă ca nodurile terminale IPv6 să efectueze descoperirea Path MTU pentru a determina dimensiunea maximă permisă a pachetelor pe care le pot trimite, iar protocolul de nivel superior va limita dimensiunea pachetului. Cu toate acestea, dacă protocolul de nivel superior nu poate face acest lucru, expeditorul POATE folosi antetul Fragment extins pentru a efectua fragmentarea pachetelor IPv6. Toate protocoalele care transportă pachete IPv6 trebuie să aibă un MTU egal sau mai mare de 1280 de octeți. Protocoalele care nu pot transmite un pachet de 1280 de octeți într-un singur bloc trebuie să se fragmenteze și să se reasambla fără a afecta nivelul IPv6 [1] .

Fragmentare

Un pachet care conține un fragment al pachetului original (mare) este format din două părți: partea nefragmentabilă a pachetului original, care este aceeași pentru toate fragmentele, și partea fragmentabilă, identificată prin offset-ul fragmentului.

Partea nefragmentabilă a pachetului constă dintr-un antet fix și anteturi extinse ale pachetului original (opțional).

Valoarea câmpului Next Header al ultimului antet al părții nefragmentate trebuie să fie 44, ceea ce indică faptul că următorul antet va fi Fragment . În antetul Fragmentului , câmpul Următorul antet trebuie să fie egal cu tipul primului antet al părții fragmentate. Antetul Fragment este urmat de un fragment din pachetul original. Dimensiunea fiecărui fragment al părții fragmentate trebuie să fie un multiplu de 8, cu excepția ultimului fragment.

Ansamblu de fragmente

Nodul receptor, după ce a colectat toate fragmentele, renunță la antetul Fragmentelor extins și plasează fragmentele la decalajele specificate în câmpul Fragment Offset înmulțit cu 8. Pachetele care conțin fragmente nu trebuie să sosească în ordinea corectă și vor fi rearanjate. de nodul receptor dacă este necesar.

Dacă la 60 de secunde de la primirea primului fragment nu au fost colectate toate fragmentele, atunci asamblarea pachetului original este anulată și toate fragmentele primite sunt aruncate. Dacă primul fragment este primit (cu Fragmant Offset setat la zero), atunci un mesaj Fragment Reassembly Time Exceeded ( Codul 1 ICMPv6 tip 3) este trimis expeditorului pachetului fragmentat.

Dimensiunea maximă a pachetului original nu trebuie să depășească 65.535 octeți, iar dacă pachetul original este mai mare după reasamblare, atunci acesta trebuie aruncat.

Note

  1. 1 2 3 4 Internet Protocol, versiunea 6 (IPv6) Specificații. RFC 2460 .
  2. Definirea câmpului de servicii diferențiate (câmpul DS) în anteturile IPv4 și IPv6. RFC 2474 .
  3. Terminologie nouă și clarificări pentru DiffServ. RFC 3260 .
  4. Adăugarea notificării explicite de congestie (ECN) la IP. RFC 3168 .
  5. Criterii tehnice pentru alegerea IP următoarea generație (IPng). RFC 1726 .
  6. Deprecierea antetelor de rutare de tip 0 în IPv6. RFC 5095
  7. Jumbograme IPv6. RFC 2675