ROHC ( Robust Header Compression - Reliable (Noise-Immune ) Header Compression) on standardoitu menetelmä Internet - pakettien IP- , UDP- , UDP Lite- , RTP- ja TCP - otsikoiden pakkaamiseen.
IP-, UDP- ja RTP-pakettien otsikoiden koko on 40 tavua IPv4 : ssä tai 60 tavua IPv6 :ssa , mikä esimerkiksi vie noin 60 % lähetetystä tiedosta VoIP :ssä. Tällaiset korkeat kustannukset ovat varsin sopivia paikallisille ja nopeille verkoille, mutta liian korkeat WAN - verkoille ja langattomille verkoille, joissa liikenne ja nopeus ovat erittäin rajoitettuja [1] .
ROHC pakkaa nämä 40 tai 60 tavua 1-3:ksi asettamalla kompressorin, joka pakkaa suuret otsikot muutamaksi tavuksi yhteyden toiseen päähän ja dekompressorin, joka tekee päinvastoin.
ROHC-pakkausmenetelmä eroaa muista menetelmistä, kuten IETF RFC 1144 :stä ja RFC 2508 :sta, sillä se ei aiheuta ongelmia työskennellessäsi verkkojen kanssa, joissa tiedonhäviö on suuri.
ROHC-protokolla tekee erinomaista työtä redundanttien otsikkotietojen suhteen:
Täysi tieto välitetään vain ensimmäisessä paketissa, loput sisältävät vain muuttuvaa tietoa, kuten tunnisteita tai järjestysnumeroita.
Suorituskyvyn parantamiseksi paketit luokitellaan virran mukaan, mikä välttää pakettien välisen redundanssin. ROHC-protokolla ei itse ole erikoistunut tällaisen luokituksen algoritmiin, vaan se jätetään laitevalmistajien vapaaseen käyttöön. Sen jälkeen paketit pakataan sopivimmalla profiililla, joka määrittää kuinka verkkootsikot pakataan. Saatavilla on useita pakkausprofiileja: Pakkaamaton, vain IP, IP/UDP, IP/UDP-Lite, IP/ESP, IP/UDP/RTP, IP/UDP-Lite/RTP ja IP/TCP.
RFC 3095 :n mukaan ROHC-järjestelmällä on kolme toimintatilaa:
Sekä kompressori että dekompressori käynnistyvät U-tilassa. Ne voivat sitten siirtyä O-tilaan, kun käänteinen yhteys tulee saataville ja dekompressori vahvistaa siirtymisen O-tilaan. Vaihtaminen R-tilaan tapahtuu samalla tavalla.
Yksisuuntaisessa tilassa paketit lähetetään vain kompressorista dekompressoriin -suunnassa. Tämä mahdollistaa myös ROHC:n käytön sovelluksissa, joissa kompressorin ja dekompressorin välinen palaute ei ole mahdollista tai toivottavaa. Mahdollisten pakkausvirheiden välttämiseksi kompressori lähettää ajoittain päivityksiä tietovirran kontekstiin pakkauksenpurkijalle.
Kaksisuuntainen optimistinen tila on samanlainen kuin edellinen, mutta siinä on palautekanava, jota käytetään pyytämään dekompressoria palauttamaan virheelliset tiedot ja (valinnaisesti) kuittaamaan mielekkäät päivitykset vuokontekstiin. Tämä tila on tarkoitettu maksimaaliseen pakkaustehokkuuteen ja sitä käytetään, kun palautekanavaa käytetään harvoin.
Kaksisuuntainen luotettava tila eroaa monella tapaa kahdesta edellisestä. Suurin ero on palautekanavan paljon intensiivisempi käyttö sekä kompressorin ja dekompressorin tiukka logiikka, joka estää tietojen katoamisen ja lähetysvirran kontekstin epäsynkronoinnin.
Riippumatta nykyisestä tilasta, sekä kompressori että dekompressori toimivat yhdessä kolmesta tilasta, jotka ovat olennaisesti tilakoneita . Jokainen saapuva paketti voi muuttaa nykyistä tilaa, joka kuvaa tietojen pakkaamisen käyttäytymistä ja tasoa.
ROHC-algoritmi on samanlainen kuin videopakkaus, jossa pääkehys ja useita kehyksiä, joissa on eroja, lähetetään edustamaan IP-pakettien virtaa. Tällä menetelmällä on vakavia etuja, joiden avulla voit jättää huomiotta suuret häviöt jopa voimakkaimmalla pakkauksella, kunhan pääkehys (perus) ei katoa.
Kompressorille on määritetty seuraavat kolme tilaa:
IR-tilassa kompressori on heti luomisen tai uudelleenkäynnistyksen jälkeen ja lähettää samalla täydet pakettiotsikot.
Kompressori siirtyy FO-tilaan, kun se on havainnut ja tallentanut kaikki paketin staattisten kenttien tiedot (esimerkiksi IP-osoitteen ja portin numeron) yhteyden molempiin päihin. Myös erilaisia dynaamisia kenttien muutoksia lähetetään dekompressoriin tässä tilassa. Kuten näet, FO käyttää staattista ja pseudodynaamista pakkausta.
Jälkimmäisessä tilassa kompressori vaimentaa kaiken dynaamisen datan, kuten RTP-sekvenssinumerot, ja lähettää vain loogisen järjestysnumeron ja osittaiset tarkistussummat, jolloin vertaiskäyttäjä voi ennakoivasti generoida ja tarkastaa seuraavan odotetun paketin otsikon. Yleisesti, vaikka FO-tila pakkaa kaikki staattiset ja monet dynaamiset otsikkokentät, SO pakkaa kaikki dynaamiset otsikkokentät käyttämällä pakettien järjestysnumerointia ja tarkistussummia.
Kompressorin tilan muutosVaihto yllä olevien tilojen välillä tapahtuu, kun kompressori:
Tyypillinen ROHC-toteutus pyrkii saattamaan päätelaitteen SO-tilaan, jossa 1-tavuinen ROHC-otsikko voidaan laajentaa vastaavaksi 40-tavuiseksi IPv4/UDP/RTP- tai 60-tavuiseksi IPv6/UDP/RTP- (eli VoIP)-otsikoksi. . Tässä tilassa tämä 1 tavu (8 bittiä) sisältää:
Dekompressorilla on kolme muuta tilaa:
Vaihto niiden välillä tapahtuu, kun dekompressori:
Järjestysnumeroalue kuvaa niiden pakettien määrää, jotka voidaan menettää, minkä jälkeen kompressori pakotetaan päivittämään tilaa. Alueleveys 1- ja 2-tavuisissa ROHC-paketteissa on 4 (-1..+14 offset suhteessa kantaan) ja 6 (-1..+62) bittiä, vastaavasti. ROHC:n huomiotta jättämien kadonneiden pakettien enimmäismäärä on siis 62 1-2-tavuisille otsikoille.
RFC 3095 määrittelee pakkausmekanismimallin, jota voidaan laajentaa käyttämään muita profiileja, riippuen tietystä protokollan otsikoista, kuten