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