La situazione può essere vista nel modo seguente. Siano
l'overhead in
byte presente in ogni frammento (ovvero quello dovuto all'header IP),
l'overhead in byte presente in ogni pacchetto ma non ripetuto sui singoli frammenti
(ovvero quello dovuto ad IPsec ed eventualmente, a seconda del livello a cui ci
si pone, quello dovuto al protocollo di trasporto),
la lunghezza dei
dati ``utili'' (payload) contenuti in un pacchetto costituito da
frammenti
e
la Maximum Transfer
Unit (MTU) della rete attraversata. In un pacchetto non frammentato
e di grandezza massima si avrà allora
. Se ipotizziamo
che tutti i frammenti abbiano la grandezza massima, per un pacchetto suddiviso
in
frammenti si avrà dunque
. Se si considera
come misura di efficienza (
) il rapporto tra dati utili e dati totali trasmessi
si ha allora:
In base alla formula precedente, l'efficienza cresce al crescere di
, tendendo
al valore di
; l'overhead sul frammento non è eliminabile e
dunque dà luogo al termine
, mentre l'overhead sul pacchetto
rientra nel termine
e dunque la sua incidenza diminuisce
all'aumentare di
. Questo discorso tuttavia non tiene conto della
probabilità di perdita della rete. Sia
la probabilità di perdita del
singolo frammento; allora, se il pacchetto è suddiviso in
frammenti, la
probabilità che nessuno di essi venga perso è
, e
dunque la probabilità di perdita di un pacchetto (cioè la probabilità che si
perda almeno un frammento) è
,
pari a
per
e tendente ad 1 per
tendente ad infinito.
Rivedendo allora in base a queste considerazioni la formula dell'efficienza,
si può dire che i byte utili saranno mediamente
per
ogni
byte trasmessi, e che dunque l'efficienza diventa
Si considerino i seguenti valori per i parametri:
byte (Ethernet),
byte (lunghezza header IP) e
byte (IPsec
in modalità tunnel ESP con 3DES e SHA: 32 byte di overhead dovuti ad
ESP62,
20 byte per l'header IP interno e 32 per l'header TCP63). Con questi dati, si ottiene
la funzione mostrata nelle figure 6.3 e 6.464.
Da questo semplice modello si possono trarre alcune considerazioni:
- Nel caso di una rete completamente affidabile (ovvero con probabilità
di errore nulla) con i dati considerati l'efficienza passa da un valore di
circa 0,931 per
ad un valore limite di circa 0,987 per
.
- Sempre con i dati considerati, non sembra opportuno utilizzare un valore
di
maggiore di 5, in quanto con
l'efficienza è comunque già abbastanza
vicina al valore asintotico e cresce ormai molto lentamente (si ha infatti
,
e
), mentre al
crescere di
trasmettere un pacchetto suddiviso in un gran numero di frammenti
diventa sempre più rischioso (come si può vedere dalle figure).
- La frammentazione sembra vantaggiosa per valori di
non superiori a circa
il 2%, in quanto per probabilità di perdita più elevate la curva
assume
subito una pendenza negativa.
Ciò che si vede è dunque che, per quanto riguarda IPsec, in condizioni di bassa
probabilità di errore la frammentazione end-to-end dei pacchetti dovrebbe portare
ad un aumento delle prestazioni. TLS, operando sul flusso continuo di
dati al di sopra di TCP, non ha invece nulla a che vedere con la frammentazione
dei pacchetti IP ed è dunque estraneo a questo discorso65.
La realtà è comunque naturalmente più complessa del semplice modello proposto, in quanto
esso non tiene conto di almeno due fattori:
- Nel modello si è ignorata la presenza dei riscontri (acknowldgement, o brevemente
ack). Gli ack sono puro overhead, in quanto non trasportano payload, ma contribuiscono
ad occupare la banda. La frammentazione ha un effetto positivo relativamente alla
loro presenza, perché dato che si trasmette un ack per ogni pacchetto ricevuto (e
non per ogni frammento), il numero di ack trasmessi in presenza di pacchetti suddivisi
in
frammenti è pari ad un ennesimo del numero di quelli trasmessi nel caso di
pacchetti non frammentati. Questo riduce l'overhead e, nel caso di una Ethernet,
riduce anche la probabilità di collisione poiché riduce il numero di pacchetti che
fluiscono in senso opposto. Tali effetti hanno un impatto positivo sulle prestazioni, ed
essendo dipendenti da
ci si può attendere che siano significativi al crescere di
soprattutto per
non molto grande, andando poi incontro ad una sostanziale ``saturazione''.
Per quanto riguarda la probabilità di perdita, gli ack
possono essere persi come tutti gli altri pacchetti (la loro probabilità di perdita
è pari a
poiché non sono frammentati), tuttavia, dato che gli ack di TCP sono
cumulativi, in genere la perdita di un ack non ha effetti e non comporta una
ritrasmissione, poiché i dati da esso riscontrati saranno considerati riscontrati
dall'ack successivo.
- Il modello considera la trasmissione sostanzialmente come un flusso unico di dati
dal mittente al destinatario, in cui alcuni dati possono essere ritrasmessi per via della
probabilità di perdita della rete. Le cose non stanno così poiché nella realtà entrano in
gioco i complessi meccanismi di controllo di flusso e di congestione di TCP, per cui quando
avviene una perdita il flusso si arresta ed è dunque tutt'altro che continuo. Nella realtà
quindi, al crescere della probabilità di perdita sul pacchetto (che vale
) cresce la presenza di alcuni ``tempi morti'' nella connessione;
questo effetto riduce le prestazioni, e dovrebbe essere signficativo per
e
abbastanza grandi (il parametro che conta è la probabilità di perdita sul pacchetto che,
come appena ricordato, dipende da
e
).
Da queste considerazioni qualitative ci si può attendere che per
nulla o molto piccola
e
non molto grande l'incremento di prestazioni rispetto all'assenza di frammentazione
(caso
) sia maggiore rispetto a quello indicato nel modello, mentre per
significativa e
sufficientemente grande il decadimento prestazionale dovrebbe essere
maggiore di quello indicato.
Footnotes
- ...
ESP62
- 8 per l'header, 8 per l'IV, 2 per il trailer, 12 per i dati
di autenticazione, in più si è considerato un padding medio di 2 byte.
- ... TCP63
- Sono 32 e non
20 poiché si è utilizzata l'opzione di timestamp, che su Linux è abilitata
per default.
- ...FIG_eff264
- In
entrambi i casi, per maggiore chiarezza della rappresentazione grafica, la
funzione è mostrata come se le due variabili fossero continue, ma
naturalmente ha senso solo per valori interi di
.
- ... discorso65
- In realtà si potrebbe
notare che il modello si applica comunque a TCP, e in questo senso la frammentazione
potrebbe portare ad un aumento di prestazioni di TLS come conseguenza indiretta
dell'aumento di prestazioni di TCP. In questo caso si ha però che
byte (contro gli 84 byte di IPsec) per cui il guadagno di efficienza
è nettamente minore (per
si trova
, mentre il livello
asintotico è lo stesso di IPsec) e appare trascurabile.
©2001 Davide Cerri