protocollo NTP
Transcript
protocollo NTP
NTP (Sincronizziamo gli orologi) Definizione (rfc1305) NTP provides the mechanisms to synchronize time and coordinate time distribution in a large, diverse internet operating at rates from mundane to lightwave. Perché sincronizzare • Gli utenti e le applicazioni vogliono sapere l’ora esatta • Molte applicazioni di rete esigono che gli orologi siano sincronizzati – Rispettare la monotonicità del tempo su host diversi • Data delle e-mail • Data di creazione, accesso e modifica dei file, che possono essere su un file server, e venir acceduti da diversi host – Registrazione di eventi (syslog) • Lo stesso evento, o eventi correlati, possono essere registrati su diversi calcolatori Il clock - come corregerlo • Il sistema operativo mantiene una propria nozione dell’ora (clock) – L’orologio del bios viene letto solo all’avvio del Sistema Operativo • Un oscillatore genera un interrupt a intervalli fissati (con errori) • Ad ogni interrupt viene aggiunta al clock una quantità intera chiamata Tick • Per correggere il clock è preferibile modificare leggermente il tick per un certo periodo Sincronizzarsi con un server sulla rete • La comunicazione avviene su UDP, porta 123 • Il client chiede il tempo a un server: – Salva il suo tempo (originate timestamp) – Manda la richiesta al server – Il server salva il suo tempo (receive timestamp) nel pacchetto – e rimanda il pacchetto aggiungendo il tempo al momento della spedizione (transimit timestamp) – Il client riceve il pacchetto e salva ancora il suo tempo Stima del tempo sul server • La comunicazione via rete con il server non è istantanea, i ritardi di rete introducono ulteriori errori • Si assume che i ritardi di rete siano simmetrici, di conseguenza si stima che l’one-way delay sia la metà del ritardo totale, meno il tempo di processamento sul server • L’errore massimo è RTT/2 • Il tempo del server è stimato con un intervallo di confidenza noto • La stima del tempo del server può essere usata per correggere il clock locale Sincronizzarsi con una rete di server di tempo • Si parte dal presupposto che il tempo arrivi da fonti esatte (esterne al protocollo) • Ogni server cerca di sincronizzarsi con l’Universal Coordinated Time (UTC), usando la migliore fonte disponibile e il miglior percorso trasmissivo verso quella fonte, non di sincronizzarsi con gli altri server • Se posso interrogare diversi server, il tempo vero deve essere nell’intersezione degli intervalli di confidenza dei diversi server • Con almeno 3 server si può riconoscere chi sbaglia (falseticker) L’origine del tempo Da dove viene il tempo vero? • Orologi atomici al cesio (costosi) • Ricevitori GPS (i satelliti GPS hanno orologi al cesio) • Ricevitori di segnali orari diffusi via radio – DCF77, MSF, e WWV. • Questi dispositivi sono connessi ad un host che sincronizza il suo clock usa NTP per ridistribuirlo Gerarchia di server di tempo • Il tempo viene distribuito dalle sorgenti esterne verso host • Devono essere evitati percorsi ciclici ⇒ Modello gerarchico a strati • Gli host sincronizzati con un riferimento esterno hanno strato 1 • Gli host sincronizzati con un server di strato 1 hanno strato 2... • Ad ogni hop lo strato viene incrementato Modi di operazione • Peer – due server (dello stesso strato) si sincronizzano a vicenda • Client/Server – il client si sincronizza con il server – il client risulta uno strato sotto il server • Broadcast/multicast: un server distribuisce il suo tempo a molti client – I client devono stimare il ritardo rispetto al server – meno preciso Facciamola facile: SNTP • • • • • Versione semplificata dell’algoritmo Utilizza lo stesso protocollo Più semplice e leggero, ma meno preciso Adatto per host che sono solo client Usato anche per i server connessi ad una sorgente di tempo (strato 1) NTP su unix • ntpd – il demone NTP, fa sia da client che da server • ntpdate – utility per impostare il clock locale da un server NTP • ntpq, ntpdc – programmi di monitoraggio e controllo, comunicano con ntpd via UDP • ntptrace – rintraccia la sorgente del tempo locale Configurazione NTP su unix Ntpd è configurato in /etc/ntp.conf server servername specifica un server (di strato superiore) peer servername specifica un peer (server dello stesso strato) multicastclient specifica di usare il multicast IP per ricevere il tempo NTP su windows Windows 2000 contiene un client SNTP • Selezionare un server NTP : net time /setsntp:ntp-server. "Only the domain controller that holds the PDC FSMO (Primary Domain Controller Flexible Single Master Operation) role can query an external time source to set the time." • Avviare il servizio W32time: net start W32Time oppure impostare il servizio Windows Time Synchronization Service (W32Time) ad Automatic Esistono anche implementazioni di NTP, commerciali e libere