1. Introduction (Introduzione)
1. Introduction (Introduzione)
Questo documento descrive un metodo di compressione delle intestazioni IP adatto a link seriali a bassa velocita.
La compressione delle intestazioni e importante per link a bassa e media velocita perche puo:
-
Rendere la Maximum Transmission Unit (MTU, unita massima di trasmissione) consentita sul link il piu piccola possibile
La MTU e la dimensione massima del pacchetto che puo essere trasmesso su un link senza frammentazione. Una MTU piccola e importante sui link lenti per evitare che il traffico interattivo sensibile al ritardo rimanga bloccato dietro grandi pacchetti di trasferimento bulk. Per esempio, per limitare il ritardo di coda a 200 ms, su un link a 9600 bps deve essere usata una MTU inferiore a 240 ottetti. Tuttavia, su link di questo tipo IPv6 richiede una MTU minima di 1280 ottetti, mentre IPv4 non impone una MTU piccola. Quando si usano link con MTU piccola, sui link lenti e necessaria la frammentazione. Quando un pacchetto viene frammentato su un link lento, devono essere inviate intestazioni aggiuntive: il numero complessivo di byte usati nelle intestazioni di tutti i frammenti e maggiore dell'intestazione originale. La compressione delle intestazioni puo ridurre in modo significativo il numero di byte di queste intestazioni aggiuntive, specialmente quando il pacchetto originale e piccolo, riducendo quindi il tempo necessario per inviare il pacchetto e aumentando la MTU massima utilizzabile sui link lenti.
-
Consentire l'uso di pacchetti piccoli per traffico a basso bitrate sensibile al ritardo
Per applicazioni di questo tipo, ad esempio la voce, se i pacchetti sono grandi il tempo necessario per riempirli di dati diventa significativo. Per ottenere una bassa latenza end-to-end, sono preferibili pacchetti piccoli. Senza compressione delle intestazioni, la minima intestazione IPv6/UDP possibile (48 ottetti) consuma 19.2 kbit/s a una frequenza di 50 pacchetti al secondo. 50 pacchetti al secondo equivalgono a campioni vocali di 20 ms in ciascun pacchetto. Un'intestazione IPv4/UDP consuma 11.2 kbit/s a 50 pacchetti al secondo. Intestazioni di tunneling o di routing, ad esempio per supportare la mobilita, aumentano la banda consumata dalle intestazioni di altri 10-20 kbit/s. Questo valore va confrontato con la banda richiesta dai campioni vocali effettivi, ad esempio 13 kbit/s usando una codifica GSM. La compressione delle intestazioni puo ridurre in modo significativo la banda necessaria per le intestazioni, in questo esempio fino a circa 1.7 kbit/s. Questo rende possibile una trasmissione vocale di qualita superiore su modem a 14.4 e 28.8 kbit/s.
-
Ridurre l'overhead delle intestazioni
Oggi, una dimensione comune per i segmenti TCP usati nei trasferimenti bulk su link a media velocita e 512 ottetti. Quando un segmento TCP viene incapsulato in un tunnel, ad esempio perche si usa Mobile IP, l'intestazione IPv6/IPv6/TCP e di 100 ottetti. La compressione delle intestazioni riduce l'overhead di IPv6/TCP dal 19.5% a meno dell'1%, e quello di IPv4/TCP incapsulato dal 11.7% a meno dell'1%. Per velocita di linea fino ad alcuni Mbit/s, questo e un guadagno significativo.
La specifica IPv6 prevede la Path MTU Discovery; quindi, quando si usa IPv6, i trasferimenti TCP bulk dovrebbero usare segmenti piu grandi di 512 ottetti quando possibile. Anche usando segmenti di 1400 ottetti (l'incapsulamento Ethernet RFC 894 consente un payload di 1500 ottetti, dei quali 100 ottetti sono usati per le intestazioni IP), la compressione delle intestazioni riduce l'overhead delle intestazioni IPv6 dal 7.1% allo 0.4%.
-
Ridurre il tasso di perdita dei pacchetti sui link con perdite
Poiche per ogni pacchetto vengono trasmessi meno bit, a parita di tasso di errore sui bit il tasso di perdita dei pacchetti sara inferiore. Questo produce un throughput TCP piu alto, perche la finestra di invio puo aprirsi di piu tra una perdita e la successiva, e meno pacchetti persi per UDP.
I meccanismi descritti qui sono pensati per link punto-punto. Tuttavia, e stata prestata attenzione a consentire estensioni per link multiaccesso e multicast.
Le intestazioni comprimibili includono TCP, UDP, le intestazioni base IPv4 e IPv6 e le intestazioni di estensione. Per i pacchetti TCP, il recupero dalle perdite usa il meccanismo di Van Jacobson [RFC-1144]. Sono descritti anche due meccanismi aggiuntivi che migliorano l'efficienza della compressione delle intestazioni VJ sui link con perdite. Per i pacchetti non TCP, il compression slow-start e i refresh periodici delle intestazioni consentono di ridurre al minimo il periodo in cui i pacchetti vengono scartati dopo la perdita di un'intestazione che modifica il contesto. Esistono punti di aggancio per aggiungere schemi di compressione delle intestazioni sopra UDP, ad esempio per la compressione delle intestazioni RTP.
La compressione delle intestazioni si basa sul fatto che molti campi rimangono costanti o cambiano raramente tra pacchetti consecutivi appartenenti allo stesso flusso. I campi che non cambiano tra pacchetti non devono essere trasmessi affatto. I campi che cambiano spesso, ma con valori piccoli e/o prevedibili, ad esempio il numero di sequenza TCP, possono essere codificati incrementalmente, riducendo in modo significativo il numero di bit necessari. Solo i campi che cambiano spesso e in modo casuale, ad esempio checksum o dati di autenticazione, devono essere trasmessi in ogni intestazione.
Il principio generale della compressione delle intestazioni e inviare occasionalmente un pacchetto con intestazioni complete; le intestazioni compresse successive fanno riferimento al contesto stabilito dall'intestazione completa e possono contenere modifiche incrementali del contesto.
Questo schema di compressione delle intestazioni non richiede che tutti i pacchetti dello stesso flusso attraversino il link compresso. Tuttavia, per i flussi TCP, le differenze tra intestazioni successive possono diventare piu irregolari e il rapporto di compressione puo diminuire. Non e nemmeno richiesto che i corrispondenti pacchetti TCP di dati e di acknowledgment attraversino il link in direzioni opposte.
Questo schema di compressione delle intestazioni e utile sui link di primo o ultimo hop e sui link nel mezzo della rete. Quando molti flussi di pacchetti (alcune centinaia) attraversano il link, puo verificarsi un fenomeno chiamato CID churn, in cui le intestazioni raramente corrispondono a un contesto esistente e devono essere inviate in forma non compressa o come intestazioni complete. Le implementazioni devono usare tecniche come l'isteresi per garantire che i flussi di pacchetti che offrono il rapporto di compressione piu alto mantengano il proprio contesto. Questa tecnica e piu probabilmente necessaria nel mezzo della rete.