6. SYNCHRONIZACE ČASU NA PC


6.1 Úvodem o protokolech

Automaticky seřizovat čas na  PC  lze pomocí dvou k tomu určených protokolů: staršího  Time  a novějších  NTP  a  SNTP .

Časové servery v  Internetu  používají k seřízení nejpřesnějšího ze všech, tedy  NTP , a synchronizují se s globálním jednotným časem  UTC  ( Universal Coordinated Time ).  NTP  servery tvoří hierarchii strojů, mezi kterými je čas synchronizován. Stroje jsou rozděleny do vrstev. Nejvyšší prioritu má vrstva (tzv. stratum )  1  - tyto stroje si synchronizují čas pomocí signálu z  GPS  satelitu nebo pomocí radiového signálu z atomových hodin, a jsou proto vybaveny rádiovým nebo satelitním přijímačem. Stroje ve vrstvě 2 se pak už prostřednictvím sítě synchronizují podle serverů vrstvy  1  atd., čímž se vytváří ona hierarchická struktura. Vrstva tedy vyjadřuje důvěryhodnost serveru.

Klient si jako svůj zdroj času zvolí takový server, který má co nejnižší číslo vrstvy (je nejdůvěryhodnější), ale současně musí být dobře dostupný. Pokud tedy budeme mít na výběr ze dvou serverů, z nichž jeden je z vrstvy   a druhý z vrstvy  , neznamená to, že si klient vybere jako zdroj synchronizace vždy server z vrstvy  1 . Pokud bude výrazně hůře dostupný (odezva sítě bude delší či nestabilnější) než server z vrstvy  , může si klient vybrat jako zdroj synchronizace ten druhý. Proto v konfiguraci klienta se doporučuje zadávat několik  NTP  serverů.

Prakticky dosažitelná přesnost času vůči  UTC  na úrovni koncových klientských  PC  vrstvy   je několik milisekund. Dosažitelná přesnost seřízení hodin v závislosti na operačním systému je podle studií společnosti  OSC  uvedena v následující tabulce ( http://www.osc.cz/Produkty/syncasu/syncasu.asp ):

Operační systém Přesnost synchronizace [ ms ]
QNX ± 0,002
Unixové OS, LINUX ± 1
Windows NT , Windows 2000 ± 5
Windows 95/98/Me ± 500

Tab.1:  Přesnost synchronizace pomocí  NTP/SNTP

Podrobný popis protokolů lze nalézt v těchto dokumentech:

NTP :  RFC-1305  ( http://www.faqs.org/rfcs/rfc1305.html )
SNTP 
:  RFC-2030  ( http://www.faqs.org/rfcs/rfc2030.html )
Time 
:  RFC-868  ( http://www.faqs.org/rfcs/rfc868.html ).


6.2 Časové servery FZÚ

Službu přesného času ve  FZÚ  poskytují stroje  tik.fzu.cz  a  tak.fzu.cz  . Server  tik.fzu.cz  se nachází v Cukrovarnické a  tak.fzu.cz  na Slovance. Oba stroje patří k vrstvě  2 .


6.3 Konfigurace a použití NTP klientů

V zásadě existují dva způsoby použití. První je jednodušší, druhý je přesnější:

  1. spouštět synchronizaci času pravidelně jako naplánovanou úlohu systému

  2. zařídit nepřetržitě běžící proces (jako systémová služba / démon), který bude neustále dolaďovat hodiny až k největší dosažitelné přesnosti.

NTP klient

operační systém způsob seřízení
cmdtime.exe Windows 9x a
NetTime všechny Win32 a
“čas v Internetu“ Windows XP a
xntpd , ntpdate všechny Unixy a, b

Všichni popisovaní klienti pro  Windows  jsou k dispozici na ústavním  ftp serveru v adresáři  /pub/pc/time/ .


6.4 NTP klienti pro Windows

6.4.1 cmdtime

Program  cmdtime  používá protokol  SNTP , je jednoduchý, nemá žádné konfigurační soubory a jména NTP serverů se definují jako parametry v povelové řádce. Nejvhodnější způsob spouštění je zadat ho jako úlohu v  Plánovači úloh  ( Scheduler ). Nová úloha pojmenovaná „Nařízení hodinek" se konfiguruje podle následujících obrázků.

Jiná možnost je vytvořit jednořádkový dávkový soubor, např.  cas.bat , který spolu s volaným programem umístíte do adresáře  C:\Program Files\ , obsahující tuto řádku:

C:\Program Files\cmdtime.exe  tik.fzu.cz  tak.fzu.cz

Pak v editoru nabídky  Start | Nastavení | Hlavní panel a nabídka Start... | Vlastní | Upřesnit  je třeba do složky  Programy\Po spuštění  přidat odkaz na  C:\Program Files\cas.bat .


6.4.2 NetTime

Program  NetTime  umí pracovat s oběma protokoly  Time  ( rfc868 ) a  SNTP , pohodlně se konfiguruje a obsahuje již v sobě prostředky plánovaného spuštění.

Po spouštění instalačního procesu  NetTime  budete tázáni, zda program se má spouštět jako službu, tj. proces trvale běžící na pozadí. Odpovězte kladně (ve  Windows NT/XP  se pak v seznamu správce úloh vyskytuje pod jménem  NeTmSvNT.exe ). Konfigurace programu může vypadat takto:


6.4.3 Čas v Internetu (XP)

Windows XP  již obsahují prostředek pro nařízení systémových hodin s použitím  SNTP . Je velice jednoduchý. Má jen tu nevýhodu, že pokud jste k Internetu  připojeni nepřetržitě, dochází k synchronizaci hodin jen jednou týdně v definovaný okamžik. Pokud v tento okamžik bude váš počítač zrovna vypnutý, synchronizace neproběhne vůbec (ani po zapnutí). Další nevýhodou je možnost zadání pouze jediného časového serveru.

Konfigurace je dosažitelná dvojklikem na hodiny v dolním rohu, a zvolením záložky  Čas v Internetu , nebo přes menu  Start | Nastavení Datum a čas | Vlastnosti | Čas v Internetu .

Pro synchronizací hodin využitím prostředků  Windows XP  zaškrtněte  Automaticky synchronizovat s časovým serverem v Internetu . Políčko  Server  bude obsahovat jméno jednoho z  NTP  serverů, tedy  tik  pro Cukrovarnickou nebo  tak  pro Slovanku. Toto políčko musí být zaškrtnuto také tehdy, budete-li chtít změnit časový server  Internetu  nebo hodiny synchronizovat okamžitě, klepnutím na tlačítko  Aktualizovat .


6.5 NTP klient/server v Unixu

Většina současných distribucí  Linuxu  již obsahuje implicitně instalovaný balík  ntp  či  xntp , v  Solarisu  je to balík  SUNWntpu .

Pro občasnou synchronizaci, jako u výše popsaných klientů ve   Windows , se hodí program  /usr/sbin/ntpdate , jehož spouštění lze provést ručně či zadat v crontabu :

12 02,12 * * * /usr/sbin/ntpdate tik tak

(samozřejmě místo uvedeného rozvrhu „denně v 2:12 a 12:12“ si čas synchronizace volí každý sám).

Pro nepřetržitou synchronizaci slouží démon  /usr/sbin/ntpd . Ten se spouští pří startu systému (skriptem  /etc/init.d/ntpd ) pokud má platný konfigurační soubor. V  Linuxu  je to  /etc/ntp.conf , v  Solarisu   /etc/inet/ntp.conf . Obsah klientského konfiguračního souboru bude následující:

restrict default ignore
restrict 127.0.0.1
server tik.fzu.cz
server tak.fzu.cz
driftfile /etc/ntp/drift

Je vhodné zkontrolovat, zda démon běží a je-li spouštěn po startu. K tomuto účelu má každý  Unix  své prostředky, např.  RedHat  má nástroj  serviceconf ,  SuSE  má  YaST  atd. Po nějakém čase po spuštění lze přesnost synchronizace zkontrolovat povelem

/usr/sbin/ntptrace -v localhost


6.6 Odkazy