La rete NTP

Come descritto in precedenza, ogni computer è equipaggiato con un orologio, anche se spesso di scarsa qualità. Esistono però degli speciali ricevitori che consentono di ricevere il segnale orario da diverse sorgenti, come ad esempio il GPS. Dato il costo e la convenienza di questo metodo, non è pensabile equipaggiare ogni calcolatore di questi apparati; è invece possibile equipaggiare alcuni computer in modo che agiscano come server primari del tempo, in grado poi di sincronizzare i restanti computer. Questo è il modo di funzionamento di NTP.

NTP è un protocollo distribuito per la sincroizzazione del tempo basato principalmente su un'architettura client-server: un client fa una richiesta di sincronizzazione ed il server risponde a questa richiesta.

L'organizzazione dei nodi avviene come un grafo ad albero: i server primari, quelli che si sincronizzano direttamente a qualche fonte esterna (GPS, orologi atomici, fonti radio), si trovano alla radice, detta stratum 1, mentre ai livelli successivi si trovano i server secondari ed i client; in figura 1 possiamo vedere uno schema della rete NTP con soltanto i primi tre strati della gerarchia:

Figura 1: Schema della rete NTP con solo 3 livelli di nodi
\includegraphics[width=10cm]{ntp.eps}

L'organizzazione dei nodi prevista da NTP è la seguente: i nodi direttamente connessi a fonti di sincronizzazione esterne sono i server più precisi disponibili nella rete NTP. Per mantenere questa precisione è anche necessario mantenere un carico di lavoro basso per questi server, per cui un numero adeguato di server stratum 2 si collegano ad essi, in modo da poter distribuire a loro volta il tempo attraverso NTP direttamente ai client che ne facciano richiesta: l'utilizzo di server stratum 1 da parte di client è espressamente sconsigliato.

I server secondari hanno una precisione minore dei server primari e questo degrado è dovuto ai percorsi di rete intrapresi dai pacchetti e dalla stabilità dell'orologio locale; questa gerarchia, però, consente di mantenere i server primari al massimo dell'efficienza. Possiamo quindi vedere lo stratum come un indice della precisione del server, dove numeri piccoli indicano maggiore precisione.

Una organizzazione come quella di NTP consente all'archietettura di scalare molto bene anche all'aumentare dei nodi: secondo  [MINAR99], ci sono più di 175.000 nodi che eseguono NTP su Internet (sebbene siano stati registrati quasi 650.000 diversi nodi: il conteggio precedente annovera solo gli host che rispondono alle query, senza contare le singole workstation che si sincronizzano, i client insomma) dei quali circa 300 server primari (in realtà 957, ma solo 300 affidabili), oltre a più di 25.000 server stratum 2 ed 85.000 server stratum 3.

Il documento di Minar citato poc'anzi è una buona fonte per esaminare lo stato di salute della rete NTP: a fronte di un aumento vertiginoso degli host che utilizzano NTP per sincronizzare i propri orologi (se contiamo i contatti, dal survey compiuto da Guyton nel 1994,  [GUYTON94], che ha registrato 15.000 macchine, quello di Minar ne ha contate oltre 640.000, un aumento di oltre 40 volte!) il numero di fonti primari è aumentato in maniera altrettanto considerevole (66 contro 957), ed anche la popolazione dei server secondari, stratum 2 e 3, si è molto accresciuta (rispettivamente da 1.400 a 26.000, da 3.300 a 85.000, approssimativamente).

Nonostante questo, la precisione di NTP nel sincronizzare il tempo è aumentata, sicuramente merito anche della moderna tecnologia, che consente la disponibilità di linee veloci in larga misura.

2004-01-08