2 Strumenti di misura
Le misurazioni sono state effettuate tramite il programma netperf
(versione 2.2 alpha). Netperf permette di effettuare vari test sulle prestazioni
di rete, relativamente a vari protocolli; si utilizza facendo partire su una macchina un
demone (netserver) che rimane in ascolto in attesa di connessioni, e su un'altra
il client (netperf), fornendo a quest'ultimo i parametri relativi al test da
condurre. Qui si sono utilizzati i test ``TCP stream'' e ``UDP stream'',
che funzionano in maniera analoga rispettivamente su
TCP e UDP. Questi test trasmettono un flusso di
dati tra le due macchine tale da saturare il sistema, continuando per un tempo
dato58. Ciò che viene trasmesso è un blocco di dati che
rimane in memoria, per evitare che i risultati siano influenzati dalle prestazioni
dei dischi fissi. Netperf permette anche di specificare dei parametri di confidenza,
e in base ad essi uno stesso test viene automaticamente ripetuto più volte (in numero
compreso tra un valore minimo e un valore massimo che si forniscono al programma)
fino a che i risultati non li soddisfano59. Con netperf si è specificata una confidenza del 99% con un ampiezza
dell'intervallo pari al 2%, tuttavia in alcuni casi (in particolare in alcuni
dei test sulla frammentazione) l'ampiezza dell'intervallo è risultata maggiore.
Ogni test ha la durata di un minuto, ed è stato iterato da un minimo di cinque
volte ad un massimo di trenta.
I parametri presi in considerazione sono il throughput (di seguito
indicato con
), l'utilizzo del processore
(
) e la domanda di servizio del processore (
),
ovvero il tempo di CPU richiesto per l'elaborazione di un'unità di dati.
Il throughput viene calcolato da netperf semplicemente dividendo
il numero di byte trasferiti per la durata del test. L'utilizzo del
processore viene determinato misurando l'occupazione di un
processo nullo a bassa priorità che occupa tutto il tempo in cui la CPU
rimane inattiva, e facendone poi il complementare. Non è possibile misurare
direttamente l'occupazione della CPU da parte del processo che interessa,
perché IPsec è implementato all'interno del kernel del sistema operativo e
non è dunque un normale processo; per avere la massima affidabilità sui dati relativi
all'utilizzo del processore i test sono stati condotti con le macchine in
single user mode60. La domanda di servizio
del processore è calcolata da netperf come
.
I test su IPsec non presentano problemi per via della trasparenza di IPsec alle
applicazioni, per cui è suffciente instaurare manualmente la connessione IPsec
tra le due macchine e poi
effettuare i normali test ``TCP stream'' e ``UDP stream''. Per poter effettuare
dei test su TLS è stato invece necessario modificare netperf,
introducendo nel programma un test ``TLS stream'', che è sostanzialmente il
test ``TCP stream'' modificato in modo da utilizzare TLS. Si è quindi modificata
la funzione del programma61 che effettua
il test di flusso TCP, introducendovi le opportune chiamate di libreria ad
OpenSSL per effettuare un handshake TLS all'inizio del test, e sostituendo tutte
le normali chiamate in lettura/scrittura sui socket con quelle di OpenSSL.
Footnotes
- ...
dato58
- Per il test su TCP è anche possibile specificare una dimensione totale del
trasferimento anziché un tempo.
- ... soddisfano59
- Il programma effettua il test
di Student. Se non si raggiunge la confidenza desiderata con il massimo numero di
iterazioni, il programma fornisce comunque i risultati specificando la confidenza
raggiunta.
- ... mode60
- Nella modalità ``a utente singolo'' in Linux
vengono eliminati pressoché tutti i servizi e i processi di sistema, ad
eccezione di quelli fondamentali.
- ... programma61
- Netperf è scritto in linguaggio C.
©2001 Davide Cerri