Johdanto
Me kaikki tunnemme IP:n luokittelu- ja luokittelemattomuusperiaatteen ja sen soveltamisen verkkoviestinnässä. IP-fragmentointi ja uudelleenkokoaminen on keskeinen mekanismi pakettien lähetysprosessissa. Kun paketin koko ylittää verkkoyhteyden suurimman lähetysyksikön (MTU) rajan, IP-fragmentointi jakaa paketin useisiin pienempiin osiin lähetystä varten. Nämä osat lähetetään verkossa itsenäisesti, ja määränpäähän saapuessaan IP-uudelleenkokoamismekanismi kokoaa ne uudelleen kokonaisiksi paketeiksi. Tämä fragmentointi- ja uudelleenkokoamisprosessi varmistaa, että suurikokoisia paketteja voidaan lähettää verkossa samalla, kun varmistetaan tietojen eheys ja luotettavuus. Tässä osiossa tarkastelemme tarkemmin, miten IP-fragmentointi ja uudelleenkokoaminen toimivat.
IP-osoitteiden pirstaloituminen ja uudelleenkokoaminen
Eri datalinkeillä on erilaiset maksimilähetysyksiköt (MTU); esimerkiksi FDDI-datalinkin MTU on 4352 tavua ja Ethernetin MTU 1500 tavua. MTU on lyhenne sanoista Maximum Transmission Unit ja viittaa verkon kautta lähetettävän paketin enimmäiskokoon.
FDDI (Fiber Distributed Data Interface) on nopea lähiverkon (LAN) standardi, joka käyttää siirtovälineenä optista kuitua. Maximum Transmission Unit (MTU) on suurin mahdollinen paketin koko, jonka tiedonsiirtoyhteyskerrosprotokolla voi lähettää. FDDI-verkoissa MTU:n koko on 4352 tavua. Tämä tarkoittaa, että FDDI-verkossa tiedonsiirtoyhteyskerrosprotokollan avulla lähetettävän paketin suurin mahdollinen koko on 4352 tavua. Jos lähetettävä paketti ylittää tämän koon, se on fragmentoitava, jotta paketti voidaan jakaa useisiin MTU-kokoon sopiviin osiin lähetystä ja uudelleenkokoamista varten vastaanottimessa.
Ethernetin tapauksessa MTU on tyypillisesti kooltaan 1500 tavua. Tämä tarkoittaa, että Ethernet voi lähettää jopa 1500 tavun kokoisia paketteja. Jos paketin koko ylittää MTU-rajan, paketti fragmentoidaan pienempiin osiin lähetystä varten ja kootaan uudelleen kohteessa. Fragmentoidun IP-datagrammin uudelleenkokoamisen voi suorittaa vain kohdeisäntä, eikä reititin suorita uudelleenkokoamisoperaatiota.
Puhuimme myös TCP-segmenteistä aiemmin, mutta MSS on lyhenne sanoista Maximum Segment Size (segmentin maksimikoko), ja sillä on tärkeä rooli TCP-protokollassa. MSS viittaa TCP-yhteydessä lähetettävän suurimman sallitun datasegmentin kokoon. MTU:n tavoin MSS:ää käytetään pakettien koon rajoittamiseen, mutta se tapahtuu siirtokerroksessa eli TCP-protokollakerroksessa. TCP-protokolla lähettää sovelluskerroksen tiedot jakamalla tiedot useisiin datasegmentteihin, ja kunkin datasegmentin kokoa rajoittaa MSS.
Kunkin datalinkin MTU on erilainen, koska jokaista erityyppistä datalinkkiä käytetään eri tarkoituksiin. Käyttötarkoituksesta riippuen voidaan isännöidä erilaisia MTU-määriä.
Oletetaan, että lähettäjä haluaa lähettää suuren 4000 tavun datagrammin lähetettäväksi Ethernet-linkin kautta, joten datagrammi on jaettava kolmeen pienempään datagrammiin lähetystä varten. Tämä johtuu siitä, että kunkin pienen datagrammin koko ei saa ylittää MTU-rajaa, joka on 1500 tavua. Vastaanotettuaan kolme pientä datagrammia vastaanottaja kokoaa ne uudelleen alkuperäiseksi 4000 tavun kokoiseksi datagrammiksi kunkin datagrammin järjestysnumeron ja offsetin perusteella.
Fragmentoidussa lähetyksessä fragmentin katoaminen mitätöi koko IP-datagrammin. Tämän välttämiseksi TCP otti käyttöön MSS:n, jossa fragmentointi tehdään TCP-kerroksessa IP-kerroksen sijaan. Tämän lähestymistavan etuna on, että TCP:llä on tarkempi hallinta kunkin segmentin kokoon, mikä välttää IP-kerroksen fragmentoitumiseen liittyvät ongelmat.
UDP-protokollan tapauksessa pyrimme olemaan lähettämättä MTU:ta suurempia datapaketteja. Tämä johtuu siitä, että UDP on yhteydetön siirtoprotokolla, joka ei tarjoa luotettavuutta ja uudelleenlähetysmekanismeja kuten TCP. Jos lähetämme MTU:ta suuremman UDP-datapaketin, IP-kerros fragmentoi sen lähetystä varten. Kun yksi fragmenteista katoaa, UDP-protokolla ei voi lähettää sitä uudelleen, mikä johtaa datan menetykseen. Siksi luotettavan tiedonsiirron varmistamiseksi meidän tulisi pyrkiä hallitsemaan UDP-datapakettien kokoa MTU:n sisällä ja välttämään fragmentoitunutta lähetystä.
Mylinking™-verkkopakettien välittäjävoi automaattisesti tunnistaa erilaisia tunneliprotokollia, kuten VxLAN/NVGRE/IPoverIP/MPLS/GRE jne., ja ne voidaan määrittää käyttäjäprofiilin mukaan tunnelin sisäisen tai ulkoisen virtauksen perusteella.
○ Se tunnistaa VLAN-, QinQ- ja MPLS-tarrapaketit
○ Voi tunnistaa sisäisen ja ulkoisen VLANin
○ IPv4/IPv6-paketit voidaan tunnistaa
○ Tunnistaa VxLAN-, NVGRE-, GRE-, IPoverIP-, GENEVE- ja MPLS-tunnelipaketit
○ IP-fragmentattujen pakettien tunnistaminen (tukee IP-fragmentaation tunnistusta ja tukee IP-fragmentaation uudelleenkokoamista, jotta voidaan toteuttaa L4-ominaisuussuodatus kaikille IP-fragmentaation paketeille. Toteuta liikenteen lähtökäytäntö.)
Miksi IP on fragmentoitunut ja TCP on fragmentoitunut?
Koska verkkoyhteydenotossa IP-kerros fragmentoi datapaketin automaattisesti, IP-kerros fragmentoi datapaketin automaattisesti ja lähettää sen normaalisti, vaikka TCP-kerros ei segmentoisikaan dataa. Miksi TCP tarvitsee fragmentointia? Eikö se ole liioittelua?
Oletetaan, että TCP-kerros ei segmentoi suurta pakettia ja se katoaa siirron aikana. TCP lähettää sen uudelleen, mutta vain koko suuren paketin osalta (vaikka IP-kerros jakaa datan pienempiin paketteihin, joilla jokaisella on MTU-pituus). Tämä johtuu siitä, että IP-kerros ei välitä datan luotettavasta siirrosta.
Toisin sanoen, koneen siirto-verkkoyhteydellä, jos siirtokerros fragmentoi datan, IP-kerros ei fragmentoi sitä. Jos fragmentointia ei suoriteta siirtokerroksessa, fragmentointi on mahdollista IP-kerroksessa.
Yksinkertaisesti sanottuna TCP segmentoi datan siten, että IP-kerros ei enää ole fragmentoitunut, ja uudelleenlähetysten yhteydessä vain pienet osat fragmentoidusta datasta lähetetään uudelleen. Tällä tavoin tiedonsiirron tehokkuutta ja luotettavuutta voidaan parantaa.
Jos TCP on fragmentoitunut, onko IP-kerros fragmentoitumaton?
Yllä olevassa keskustelussa mainitsimme, että lähettäjän TCP-fragmenttauksen jälkeen IP-kerroksessa ei tapahdu fragmentointia. Siirtolinkillä voi kuitenkin olla muita verkkokerroksen laitteita, joiden suurin lähetysyksikkö (MTU) voi olla pienempi kuin lähettäjän MTU. Näin ollen, vaikka paketti on fragmentoitu lähettäjällä, se fragmentoituu uudelleen kulkiessaan näiden laitteiden IP-kerroksen läpi. Lopulta kaikki sirpaleet kootaan vastaanottajalla.
Jos pystymme määrittämään koko linkin vähimmäis-MTU:n ja lähettämään dataa tällä pituudella, fragmentoitumista ei tapahdu riippumatta siitä, mihin solmuun data lähetetään. Tätä koko linkin vähimmäis-MTU:ta kutsutaan polun MTU:ksi (PMTU). Kun IP-paketti saapuu reitittimeen ja reitittimen MTU on pienempi kuin paketin pituus ja DF (Do Not Fragment) -lippu on asetettu arvoon 1, reititin ei pysty fragmentoimaan pakettia, vaan voi vain hylätä sen. Tässä tapauksessa reititin luo ICMP (Internet Control Message Protocol) -virheilmoituksen nimeltä "Fragmentation Needed But DF Set". Tämä ICMP-virheilmoitus lähetetään takaisin lähdeosoitteeseen reitittimen MTU-arvon kanssa. Kun lähettäjä vastaanottaa ICMP-virheilmoituksen, se voi säätää paketin kokoa MTU-arvon perusteella välttääkseen kielletyn fragmentoitumistilanteen uudelleen.
IP-osoitteiden fragmentointi on välttämätöntä ja sitä tulisi välttää IP-tasolla, erityisesti linkin välisillä laitteilla. Siksi IPv6:ssa IP-pakettien fragmentointi välissä olevilla laitteilla on kielletty, ja fragmentointia voidaan suorittaa vain linkin alussa ja lopussa.
IPv6:n perustiedot
IPv6 on internet-protokollan versio 6, joka on IPv4:n seuraaja. IPv6 käyttää 128-bittistä osoitepituutta, joka voi tarjota enemmän IP-osoitteita kuin IPv4:n 32-bittinen osoitepituus. Tämä johtuu siitä, että IPv4-osoiteavaruus ehtyy vähitellen, kun taas IPv6-osoiteavaruus on erittäin suuri ja pystyy vastaamaan tulevaisuuden internetin tarpeisiin.
IPv6:sta puhuttaessa on kyse suuremman osoiteavaruuden lisäksi myös paremmasta tietoturvasta ja skaalautuvuudesta, mikä tarkoittaa, että IPv6 voi tarjota paremman verkkokokemuksen verrattuna IPv4:ään.
Vaikka IPv6 on ollut olemassa jo pitkään, sen maailmanlaajuinen käyttöönotto on edelleen suhteellisen hidasta. Tämä johtuu pääasiassa siitä, että IPv6:n on oltava yhteensopiva olemassa olevan IPv4-verkon kanssa, mikä vaatii siirtymistä ja migraatiota. IPv4-osoitteiden loppumisen ja IPv6:n kysynnän kasvaessa yhä useammat internet-palveluntarjoajat ja organisaatiot ottavat kuitenkin vähitellen käyttöön IPv6:n ja toteuttavat vähitellen IPv6:n ja IPv4:n kaksoispinotoiminnan.
Yhteenveto
Tässä luvussa tarkastelimme tarkemmin IP-fragmenttauksen ja uudelleenkokoamisen toimintaa. Eri datalinkeillä on erilaiset maksimilähetysyksiköt (MTU). Kun paketin koko ylittää MTU-rajan, IP-fragmentointi jakaa paketin useisiin pienempiin osiin lähetystä varten ja kokoaa ne uudelleen yhdeksi kokonaiseksi paketiksi IP-uudelleenkokoamismekanismilla määränpäähän saapumisen jälkeen. TCP-fragmenttauksen tarkoituksena on estää IP-kerros fragmentoitumasta ja lähettää uudelleen vain pienet, fragmentoituneet tiedot uudelleenlähetyksen yhteydessä, jotta lähetystehokkuus ja luotettavuus paranevat. Siirtolinkillä voi kuitenkin olla muita verkkokerroksen laitteita, joiden MTU on pienempi kuin lähettäjän, joten paketti fragmentoidaan silti uudelleen näiden laitteiden IP-kerroksessa. Fragmentointia IP-kerroksessa tulisi välttää mahdollisimman paljon, erityisesti linkin välisillä laitteilla.
Julkaisun aika: 07.08.2025