Pensiamo ad un appuntamento. Cosa succederebbe se gli orologi
delle due persone segnassero orari diversi? Incontrarsi all'ora
stabilita potrebbe essere problematico, in relazione alla differenza di
orari ed alla pazienza del primo arrivato. Per alcune persone cinque
minuti possono essere considerati ``fisiologici'' e quindi tollerati, ma
per un computer, meno elastico di noi, questo
ritardo potrebbe creare seri problemi.
La sincronizzazione temporale è di fondamentale importanza in modo
particolare nell'interazione via rete: soltanto attraverso la
condivisione del medesimo orario è possibile la coordinazione di eventi
tra entità. È anche parte integrante di sistemi di sicurezza e
crittografia: il logging richiede un preciso ordinamento temporale tra
gli eventi in un sistema (in senso lato, si pensi per esempio ad un
cluster), mentre per la crittografia, la sincronizzazione tra i
comunicanti, consente l'uso e la validazione di messaggi temporizzati.
Vediamo in maggior dettaglio quali campi dell'informatica risultano
maggiormente interessati, fino a risultarne vincolati,
dalla sincronizzazione temporale:
- Accuratezza dei log
- I file di log sono utili, in
modo particolare, in caso di guasti o intrusioni in sistemi informatici,
sia perchè rivelano questi eventi sia perchè consentono di seguire
l'evoluzione del problema. Molto spesso capita che un server centrale
gestisca i log di molte applicazioni differenti eseguite su alcuni
server: si capisce bene che, per seguire l'evoluzione degli eventi, è
necessario che gli orologi dei vari server siano sincronizzati, così da
poter ottenere una coerente successione temporale degli accadimenti.
- Monitoraggio
- In alcuni casi, gli amministratori di sistema
utilizzano sistemi di monitoraggio remoti, come RMON, usualmente
utilizzati per ricostruire le cause di un problema di rete. Dal momento
che devono coordinare informazioni provenienti da una moltitudine di
sorgenti, la sincronizzazione del tempo è di particolare importanza.
- Calcolo distribuito
- Nel caso in cui, oltre a mantenere un log
comune, diversi server collaborino alla soluzione di uno stesso
problema, ci troviamo di fronte a quello che viene detto calcolo
distribuito. È ormai molto frequente l'installazione di cluster di
calcolo anche in piccole e medie imprese e quindi il problema di dover
sincronizzare i server che partecipano al cluster, per evitare
comportamenti inconsistenti, diviene ancora più attuale.
- Diagnosi e recupero di attacchi di rete
- Con l'esplosione delle
comunicazioni su Internet e con sempre più aziende che si affacciano
sulla Grande Rete, aumentano i rischi di attacchi. All'aumentare della
complessità della topologia della rete, aumenta anche l'esposizione a
possibili attacchi. Si devono tenere sotto controllo diversi segmenti di
rete, molti router, alcuni Access Point; si deve quindi centralizzare
le informazioni provenienti da tutti questi punti in un unico nodo
(sotto Linux si può utilizzare l'accoppiata snort-logsnorter) in modo da consentire un'analisi comparata delle
informazioni, che dovranno essere quindi coerenti temporalmente.
- Timestamp dei file
- I moderni file system mantengono diverse
informazioni sui file che gestiscono e, tra queste, sono presenti la
data di creazione, di modifica e molte altre. Quando il file system non
risiede su una sola macchina (file system distribuito) oppure risiede su
un'altra macchia (file system remoto), la data di modifica riveste molta
importanza: per esempio NFS scarta un'aggiornamento di un file se la
copia inviata risulta precedente a quella memorizzata in locale. Si
capisce bene che avere (in questo caso) il proprio orologio in ritardo
rispetto a quello del server NFS porta alla possibile perdita di tutte
le modifiche apportate.
- Autenticazione
- Windows 2000 utilizza come protocollo di
autenticazione di default Kerberos, il quale utilizza anche parte
dell'orario della workstation come parte del processo per generare il
ticket di autenticazione. Se la differenza di tempo tra i domain
controller supera la tolleranza concessa da Kerberos, potrebbe non
essere possibile autenticarsi/collegarsi ad essi.
Inoltre, diversi protocolli prevedono l'utilizzo di un timestamp nei
messaggi ed una finestra temporale di validità: se l'orario tra i due
comunicanti differisce in misura considerevole, i messaggi potrebbero
venir scartati anche se validi.
- Operazioni programmate
- Nei sistemi *nix cron e crontab svolgono il compito di eseguire determinati programmi ad un
tempo specificato. Solitamente si tratta di operazioni lunghe e non
interattive, come il backup dei dati che comunemente viene svolto in
orari notturni. La sincronizzazione di un host è necessaria per
garantire che le operazioni vengano svolte quando previsto. In caso
di utilizzo di diverse macchine, la sincronizzazione diventa critica in
quanto si deve garantire che le attività programmate siano coordinate
correttamente.
- Transazioni
- La necessità di sincronizzazione nella gestione delle
transazioni non è una novità: fin dagli anni '60 IBM ha riconosciuto la
criticità di questo compito nell'ambito della gestione di un gran
volume di transazioni. La necessità di precisione dell'ordine dei decimi
di secondo (a volte anche inferiore) è data dal fatto che è necessario
porle nel corretto ordine di esecuzione, soprattutto nel
caso siano quasi simultanee. Un esempio di quanto sia
importante questo aspetto è dato dalle transazioni borsistiche:
oggi giorno tutte le operazioni in Borsa vengono svolte telematicamente
e se tutti i terminali non fossero correttamente sincronizzati con il
sistema di gestione delle transazioni, i risultati
potrebbero essere inconsistenti, per non dire catastrofici.
- Sviluppo software
- Lo sviluppo software può essere un'attività
altamente distribuita in quanto i team di sviluppo mantengono il codice
su differenti server, spesso differenti anche geograficamente. I sistemi
di controllo della versione (per esempio, CVS) vengono utilizzati per
gestire la compilazione del codice; spesso, per decidere se ricompilare
del codice, viene utilizzato il timestamp del file: nel caso
non ci sia sincronia tra workstation e server CVS si potrebbero
verificare delle incongruenze, in quanto la compilazione non
utilizzerebbe la versione più aggiornata (di fatto verrebbe utilizzato
il codice compilato in precedenza). Questo tipo di problema
è difficilmente individuabile: infatti è spesso attribuito a problemi
nel codice invece che alla cattiva amministrazione di questo.
- E-Mail
- Ormai, lo vediamo ogni giorno, l'e-mail è diventato uno
strumento indispensabile per comunicare, una vera rivoluzione. Ogni
e-mail contiene il timestamp di quando è stata spedita, relativo al
mittente; se questo timestamp è evidentemente errato, ciò può creare
confusione nel destinatario.
Questo lungo elenco di applicazioni critiche rispetto al tempo ci
dovrebbe far capire come la gestione dell'orario e della sua
sincronizzazione, rispetto ad una fonte ``sicura'', sia realmente una
necessità.
Il protocollo NTP (Network Time Protocol) è stato sviluppato proprio per
questo compito: sincronizzare un host utilizzando un server in grado di
fornire un orario il più corretto possibile.
2004-01-08