IP v IP je protokol IP tunelování, který zapouzdřuje jeden IP paket do jiného IP paketu. Zapouzdření jednoho IP paketu do jiného IP paketu přidává vnější hlavičku se SourceIP jako vstupním bodem tunelu a Destination jako výstupním bodem tunelu. Zároveň nebyl změněn vnitřní paket (kromě pole TTL, které se zmenšilo). Pole Nefragmentovat a Typ služby je nutné zkopírovat do externího balíčku. Pokud je velikost paketu větší než Path MTU , paket je fragmentován v zapouzdřovači, to musí být ve vnější hlavičce. Dekapsulátor bude muset balíček znovu sestavit.
Vnější IP hlavička | Interní IP hlavička | Užitečné informace |
Vnější hlavička IP obsahuje následující
pole Verze: 4 bity
Toto pole obsahuje číslo verze protokolu. Vždy 4, protože IP v IP je podporováno pouze pro IPv4.
Header Length: 4 bits
Toto pole obsahuje délku externí IP hlavičky.
Typ služby (TOS): 8 bitů
Toto pole je zkopírováno z hlavičky Internal IP.
Celková délka: 16 bitů
Toto pole obsahuje délku zapouzdřené hlavičky IP (včetně vnější hlavičky IP, vnitřní hlavičky IP, užitečného zatížení)
Identifikace: 16 bitů
Toto pole se používá k identifikaci fragmentů datagramu potřebných k tomu, aby zapouzdřovač znovu sestavil fragmenty. Pro vnější hlavičku IP se jedná o nově vygenerované číslo.
Příznaky: 3 bity
R | D.F. | MF |
R:1bit
Tento bit je rezervován a musí být nastaven na 0.
DF: 1bit
Toto pole udává, zda může být datagram fragmentován nebo ne. Pokud je bit nastaven na 1 ve vnitřní hlavičce, musí být také nastaven na 1 ve vnější hlavičce, což znamená, že datagram nelze fragmentovat. Pokud je bit ve vnitřní hlavičce nastaven na 0, pak ve vnější hlavičce může být 1/0.
MF: 1 bit
Toto pole se používá, když je datagram fragmentován, označuje, že datagram obsahuje více fragmentů, toto pole se nekopíruje z vnitřní hlavičky.
Fragment Offset: 13 bitů
Toto pole se používá při shromažďování fragmentů.
Time To Live (TTL): 8 bitů
Toto pole se používá ke sledování životnosti datagramu. Vnitřní hlavička TTL je před zapouzdřením zmenšena a v dekapsulátoru se nemění. Vnější hlavička nastavuje hodnotu TTL tak, aby byl datagram doručen do koncového bodu tunelu.
Protokol: 8 bitů
Toto pole určuje následující protokol datagramu. Hodnota je nastavena na 4. Ve většině případů to bude IPv4, pokud pro zapouzdřený paket nejsou žádné další hlavičky.
Kontrolní součet hlavičky: 16 bitů
Toto pole obsahuje kontrolní součet IP vnější hlavičky.
Zdrojová IP adresa: 32 bitů
Toto pole obsahuje IP adresu zapouzdřovače
Cílová IP adresa: 32 bitů
Toto pole obsahuje IP adresu dekapsulátoru
Možnosti: Proměnná délka
Toto pole není zkopírováno z interní hlavičky IP. Mohou být přidány nové možnosti.
Padding: Variable length
Toto pole se používá k vyplnění datagramu tak, aby užitečné zatížení začínalo na 32bitové hranici.
Po přijetí datagramu existuje šance, že zapouzdřovač obdrží zprávu ICMP od mezilehlých uzlů. Zapouzdřovač provede akci se zprávou ICMP v závislosti na typu a kódu zprávy ICMP. Následující zprávy ICMP s typem a kódem a akcí provedenou zapouzdřovačem.
K smyčkám v tunelech může dojít z následujících důvodů
V obou případech router NESMÍ odeslat datagram. Místo toho musí být datagram zahozen.
U zpráv ICMP vracejí zprostředkující směrovače přes hlavičku IP 64bitový datagram, který nestačí ke zkopírování vnitřní hlavičky. To zabraňuje zapouzdřovači předat odpovídající zprávu původnímu odesílateli. Ale může to být zpracováno tunelovým softwarem. Musí podporovat následující