%
% ntp.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Kapitel Ntp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{Das NTP-Paket}

    Dieses Paket wurde initial von Albert Steiner (E-MAIL \kmail{albert.steiner.dw@gmx.at})
    zusammengestellt und sp"ater von J"urgen Edner (E-MAIL \kmail{juergen@eisfair.org})
    "uberarbeitet.


\section{Die Einleitung}
%-----------------------

    NTP ist das Network Time Protocol, der Server funktioniert damit
    auch als NTP Server/Client d.h. man kann mit Hilfe von NTP-Server/Clientprogrammen
    den Linux Rechner als NTP Server/Client im LAN verwenden.


\section{Die Funktionen}
%-----------------------

    Das NTP-Paket besteht aus folgenden Komponenten:

    \begin{itemize}
        \item NTP - wird f"ur den Zeitabgleich ben"otigt.\\
            (\url{http://www.ntp.org/downloads.html})
        \item Power Deamon (setserialbits-Programm extrahiert) wird\\
            zur Konfiguration der seriellen Schnittstelle ben"otigt.\\
            (\url{http://power.sourceforge.net/})
    \end{itemize}


\section{Die Voraussetzungen}
%----------------------------

    Dieses Paket ben"otigt zur korrekten Funktion ein installierten Perl-Paket
    und einige andere Perl-Funktionspakete.

\section{Die Installation}
%-------------------------

    Das NTP-Paket wird "uber das Setup-Men"u installiert. Wird eine
    "altere Paketversion vorgefunden, so wird deren Konfiguration
    gesichert und das alte Paket deinstalliert bevor die neuen
    Programmdateien installiert und die Konfiguration "ubernommen wird.
    Danach wird direkt der Konfigurations-Editor gestartet um die
    Konfiguration eventuell anpassen zu k"onnen. Nach Beendigung dieses
    Schrittes werden die Konfigurationsdateien generiert und das
    ben"otigte Programm gestartet.


\section{Das Men"u im Setup-Programm}
%------------------------------------

    Das Men"u im Setup-Programm ist wie folgt aufgebaut:

    \begin{itemize}
        \item NTP Service administration
        \begin{itemize}
            \item View documentation: Anzeigen der Dokumentation
            \item Edit configuration: Bearbeiten der Konfiguration
            \item Advanced configuration file handling: Konfigurationen verwalten
            \item Show status: NTP Status anzeigen
            \item Stop NTP server: NTP anhalten
            \item Start NTP server: NTP starten
            \item Set time via other NTP server: Zeit "uber einen anderen NTP Server einstellen!
            \item View NTP information: NTP Informationen "uber Peers anzeigen
            \item Update leap-seconds file: Schaltsekundendatei aktualisieren
            \item View linked devices: Informationen "uber verbundene Gaer"ate anzeigen
            \item View log file: Logdatei anzeigen
        \end{itemize}
    \end{itemize}

    Die Men"upunkte d"urften selbsterkl"arend sein, da sie keinerlei weitere
    Eingaben erwarten. Aus diesem Grund wird auf deren Funktion nicht weiter
    eingegangen.


\subsection{Die Hardware}

    F"ur den Betrieb braucht man nicht zwingend einen eigenen Empf"anger!

    Es gibt 3 Varianten, die Zeitinformation f"ur \eisfair zu erhalten:

    \begin{itemize}
        \item 1. mit Hardware-Empf"anger
        \item 2. per Netzwerk
        \item 3. Variante 1 und 2 gemischt
    \end{itemize}


\begin{description}
    \config{Zu Variante 1:}{Zu Variante 1:}{ZuVariante1}

        Wenn man einen eigenen Empf"anger verwenden m"ochte, so muss man ein
        Ger"at aus der Liste der unterst"utzten Ger"ate ausw"ahlen oder eines
        selber bauen.

        F"ur den Bau eines eigenen DCF77 Empf"angers gibt es eine Anleitung bei:

        \url{http://www.obbl-net.de/dcf77.html}

        Ich habe diese Anleitung benutzt und es funktioniert super, nur sollte
        man den Empf"anger mit 5V versorgen, da die Schnittstellen manchmal
        zu wenig liefern, mit einem Asus TUV4X ging es nicht ohne!

    \config{Zu Variante 2:}{Zu Variante 2:}{ZuVariante2}

        Es m"ussen mindestens zwei Zeitquellen (time sources) definiert werden.
        Mehr als drei Zeitquellen bringen keine erh"ohte Genauigkeit. Aus Gr"unden
        der Redundanz k"onnen jedoch mehrere angegeben werden. Das Intervall f"ur
        den Abgleich verwaltet der ntpd selbstst"andig in Abh"angigkeit von der
        Zeitdifferenz und weiteren Faktoren.

        Nr. 1 - Type 1 Undisciplined Local Clock (LOCAL)
        Nr. 2 - ein Zeitserver, der per Netzwerk erreichbar ist. (LAN oder WAN)

        Die Zeitserver im Internet sind hierarchisch organisiert. Es gibt sog.
        Primary Time Sources, Secondary Time Sources etc. (siehe www.ntp.org
        Public Time Server List)

        In vielen Dokumentationen wird ein Zeitserver der PTB (siehe
        \url{http://www.ptb.de}) angegeben. Das ist ein stratum 1 Server.

        F"ur ein Heimnetzwerk oder ein Firmennetz, das nicht eine auf die
        Millisekunde genaue Zeit ben"otigt, kann zur Entlastung o.a. Server
        'de.pool.ntp.org' genutzt werden. (siehe
        \url{http://www.pool.ntp.org/zone/europe})

        Zumeist ist es von Vorteil, im eigenen Netz eine 'Zeithierachie' zu
        etablieren. Ein oder zwei Server holen die Zeit von einer externen
        Quelle. Alle Rechner im Hausnetz holen die Zeit von diesen ein oder
        zwei Servern. (alle haben identische Zeit, ggf. alle die 'falsche'!)
\end{description}

\subsection{Die Software}

    NTP wurde mit allen m"oglichen Referenzuhren kompiliert!

    Genauere Informationen: \url{http://www.eecis.udel.edu/~mills/ntp/html/refclock.html}

    \begin{itemize}
        \item Type 1 Undisciplined Local Clock (LOCAL)
        \item Type 2 veraltet, war Trak 8820 GPS receiver
        \item Type 3 PSTI/Traconex 1020 WWV/WWVH Receiver (WWV\_PST)
        \item Type 4 Spectracom WWVB and GPS Receivers (WWVB\_SPEC)
        \item Type 5 TrueTime GPS/GOES/OMEGA Receivers (TRUETIME)
        \item Type 6 IRIG Audio Decoder (IRIG\_AUDIO)
        \item Type 7 Radio CHU Audio Demodulator/Decoder (CHU)
        \item Type 8 Generic Reference Driver (PARSE)
        \begin{itemize}
            \item * server 127.127.8.0-3 mode 0\\
                Meinberg PZF535/PZF509 receiver (FM demodulation/TCXO / 50us)
            \item * server 127.127.8.0-3 mode 1\\
                Meinberg PZF535/PZF509 receiver (FM demodulation/OCXO / 50us)
            \item * server 127.127.8.0-3 mode 2\\
                Meinberg DCF U/A 31/DCF C51 receiver (AM demodulation / 4ms)
            \item * server 127.127.8.0-3 mode 3\\
                ELV DCF7000 (sloppy AM demodulation / 50ms)
            \item * server 127.127.8.0-3 mode 4\\
                Walter Schmid DCF receiver Kit (AM demodulation / 1ms)
            \item * server 127.127.8.0-3 mode 5\\
                RAW DCF77 100/200ms pulses (Conrad DCF77 receiver module / 5ms)
            \item * server 127.127.8.0-3 mode 6\\
                RAW DCF77 100/200ms pulses (TimeBrick DCF77 receiver module / 5ms)
            \item * server 127.127.8.0-3 mode 7\\
                Meinberg GPS166/GPS167 receiver (GPS / $<<$1us)
            \item * server 127.127.8.0-3 mode 8\\
                IGEL clock
            \item * server 127.127.8.0-3 mode 9\\
                Trimble SVeeSix GPS receiverTAIP protocol (GPS / $<<$1us)
            \item * server 127.127.8.0-3 mode 10\\
                Trimble SVeeSix GPS receiver TSIP protocol (GPS / $<<$1us) (no kernel support yet)
            \item * server 127.127.8.0-3 mode 11\\
                Radiocode Clocks Ltd RCC 8000 Intelligent Off-Air Master Clock support
            \item * server 127.127.8.0-3 mode 12\\
                HOPF Funkuhr 6021
            \item * server 127.127.8.0-3 mode 13\\
                Diem's Computime Radio Clock
            \item * server 127.127.8.0-3 mode 14\\
                RAWDCF receiver (DTR=high/RTS=low)
            \item * server 127.127.8.0-3 mode 15\\
                WHARTON 400A Series Clocks with a 404.2 Serial Interface
            \item * server 127.127.8.0-3 mode 16\\
                RAWDCF receiver (DTR=low/RTS=high)
            \item * server 127.127.8.0-3 mode 17\\
                VARITEXT Receiver (MSF)
            \item * server 127.127.8.0-3 mode 18\\
                Meinberg GPS16x/GPS17x receivers
            \item * server 127.127.8.0-3 mode 19\\
                Gude Expert mouseCLOCK USB v2.0
            \item * server 127.127.8.0-3 mode 20\\
                RAW DCF77@75 baud (DTR=h/RTS=l)
            \item * server 127.127.8.0-3 mode 21\\
                RAW DCF77@75 baud (DTR=l/RTS=h)
            \item * server 127.127.8.0-3 mode 22\\
                MEINBERG mode 2 with POWERUP trust
            \item * server 127.127.8.0-3 mode 23\\
                MEINBERG mode 7 with POWERUP trust
            \item * server 127.127.8.0-3 mode 24\\
                Schweitzer Engineering Labs
        \end{itemize}
        \item Type 9 Magnavox MX4200 GPS Receiver (GPS\_MX4200)
        \item Type 10 Austron 2200A/2201A GPS Receivers (GPS\_AS2201)
        \item Type 11 Arbiter 1088A/B GPS Receiver (GPS\_ARBITER)
        \item Type 12 KSI/Odetics TPRO/S IRIG Interface (IRIG\_TPRO)
        \item Type 13 Leitch CSD 5300 Master Clock Controller (ATOM\_LEITCH)
        \item Type 14 EES M201 MSF Receiver (MSF\_EES)
        \item Type 15 Reserviert.
        \item Type 16 Bancomm GPS/IRIG Receiver (GPS\_BANCOMM)
        \item Type 17 Datum Precision Time System (GPS\_DATUM)
        \item Type 18 NIST Modem Time Service (ACTS\_NIST)
        \item Type 19 Heath WWV/WWVH Receiver (WWV\_HEATH)
        \item Type 20 Generic NMEA GPS Receiver (NMEA)
        \item Type 21 TrueTime GPS-VME Interface (GPS\_VME)
        \item Type 22 PPS Clock Discipline (PPS)
        \item Type 23 Reserviert.
        \item Type 24 Reserviert.
        \item Type 25 Reserviert.
        \item Type 26 Hewlett Packard 58503A GPS Receiver (GPS\_HP)
        \item Type 27 Arcron MSF Receiver (MSF\_ARCRON)
        \item Type 28 Shared Memory Driver (SHM)
        \item Type 29 Trimble Navigation Palisade GPS (GPS\_PALISADE)
        \item Type 30 Motorola UT Oncore GPS (GPS\_ONCORE)
        \item Type 31 Rockwell Jupiter GPS (GPS\_JUPITER)
        \item Type 32 Chrono-log K-series WWVB receiver (CHRONOLOG)
        \item Type 33 Dumb Clock (DUMBCLOCK)
        \item Type 34 Ultralink WWVB Receivers (ULINK)
        \item Type 35 Conrad Parallel Port Radio Clock (PCF)
        \item Type 36 Radio WWV/H Audio Demodulator/Decoder (WWV)
        \item Type 37 Forum Graphic GPS Dating station (FG)
        \item Type 38 hopf GPS/DCF77 6021/komp for Serial Line (HOPF\_S)
        \item Type 39 hopf GPS/DCF77 6039 for PCI-Bus (HOPF\_P)
        \item Type 40 JJY Receivers (JJY)
        \item Type 41 TrueTime 560 IRIG-B Decoder
        \item Type 42 Zyfer GPStarplus Receiver
        \item Type 43 RIPE NCC interface for Trimble Palisade
        \item Type 44 NeoClock4X - DCF77 / TDF serial line
        \item Type 45 Spectracom TSYNC PCI
        \item Type 46 GPSD NG client protocol
    \end{itemize}

\section{Die "Anderung der Konfiguration}
%----------------------------------------

    Die Konfiguration kann "uber den Men"upunkt 'Edit configuration' ge"andert
    werden. Standardm"a"sig wird der Editor aufgerufen, der in der Environment-
    Konfiguration "uber die Variable 'EDITOR' festgelegt wurde. Nachdem der
    Editor beendet wurde wird abgefragt, ob die Konfiguration aktiviert werden
    soll. Wird dies best"atigt, werden "uber ein Skript die Anpassungen umgehend
    wirksam gemacht


\section{Die Konfigurationsdatei}
%--------------------------------

    In der Konfigurationsdatei, welche "uber das Men"u zug"anglich ist, sind
    folgende Parameter vorhanden; wer sie von Hand editieren will findet
    die Konfigurationsdatei unter \texttt{/etc/config.d/ntp}.


\section{Die Parameter}
%----------------------

\begin{description}
    \config{START\_NTP}{START\_NTP}{STARTNTP}
        "Uber diesen Parameter wird mit den Werten yes bzw. no gesteuert,
        ob NTP beim Boot des Rechners automatisch gestartet werden soll.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{START\_NTP='no'}

    \config{NTP\_CLOCK\_N}{NTP\_CLOCK\_N}{NTPCLOCKN}
        Gibt die Anzahl der Uhren an. Diesen Parameter sollte man unbedingt erh"ohen!

        G"ultige Werte: Zahl

        Beispiel:

        \begin{verbatim}
#
# Type 1 Undisciplined Local Clock (LOCAL) vordefiniert!
#
NTP\_CLOCK\_1\_TYPE='1'
NTP\_CLOCK\_1\_MODE=''
NTP\_CLOCK\_1\_DEVICE=''
NTP\_CLOCK\_1\_LINK\_DEVICE=''
NTP\_CLOCK\_1\_LINK\_DEVICE\_N=''
NTP\_CLOCK\_1\_STRATUM='10'
        \end{verbatim}

        Standardeinstellung: \texttt{NTP\_CLOCK\_N='0'}

    \config{NTP\_CLOCK\_x\_TYPE}{NTP\_CLOCK\_x\_TYPE}{NTPCLOCKxTYPE}
        Type der Uhr siehe Referenzuhren.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{NTP\_CLOCK\_1\_TYPE='1'}

    \config{NTP\_CLOCK\_x\_MODE}{NTP\_CLOCK\_x\_MODE}{NTPCLOCKxMODE}
        Modus der Uhr, siehe Referenzuhren. Falls kein Mode gebraucht wird,
        einfach leer lassen.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{NTP\_CLOCK\_1\_MODE=$''$}

    \config{NTP\_CLOCK\_x\_DEVICE}{NTP\_CLOCK\_x\_DEVICE}{NTPCLOCKxDEVICE}
        Ger"at der Uhr, siehe Referenzuhren. Falls kein Ger"at gebraucht
        wird einfach leer lassen. Von Uhr zu Uhr verschieden, je nachdem wo sie
        angeschlossen wird z.B. /dev/ttyS0 = Com1

        G"ultige Werte: Ger"atename

        Standardeinstellung: \texttt{NTP\_CLOCK\_1\_DEVICE=$''$}

    \config{NTP\_CLOCK\_x\_LINK\_DEVICE}{NTP\_CLOCK\_x\_LINK\_DEVICE}{NTPCLOCKxLINKDEVICE}
        LinkDevice der Uhr, siehe Referenzuhren. Falls kein LinkDevice
        gebraucht wird einfach leer lassen. Von Uhr zu Uhr verschieden,
        z.B. /dev/refclock- f"ur die serielle Conrad Uhr

        G"ultige Werte: LinkDevice-Name

        Standardeinstellung: \texttt{NTP\_CLOCK\_1\_LINK\_DEVICE=$''$}

    \config{NTP\_CLOCK\_x\_LINK\_DEVICE\_N}{NTP\_CLOCK\_x\_LINK\_DEVICE\_N}{NTPCLOCKxLINKDEVICEN}
        LinkDeviceNumber der Uhr, siehe Referenzuhren. Falls kein
        LinkDeviceNumber gebraucht wird einfach leer lassen. Von Uhr zu
        Uhr verschieden, z.B. 0 bis 3 f"ur die serielle Conrad Uhr.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{NTP\_CLOCK\_x\_LINK\_DEVICE\_N=$''$}

    \config{NTP\_CLOCK\_x\_STRATUM}{NTP\_CLOCK\_x\_STRATUM}{NTPCLOCKxSTRATUM}
        Stratum der Uhr, siehe Referenzuhren. Falls kein Stratum gebraucht wird
		einfach leer lassen.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{NTP\_CLOCK\_1\_STRATUM=$''$}

    \config{NTP\_CLOCK\_x\_FLAGS (Optionaler Parameter)}{NTP\_CLOCK\_x\_FLAGS}{NTPCLOCKxFLAGS}
        Flags welche bei Bedarf einem Uhrentreiber mitgegeben werden
        k"onnen um bestimmte Einstellungen zu beeinflussen. Standardm"a"sig
        werden die Flags `flag1' bis `flag4' unterst"utzt, welchen jeweils
        die Werte `0' oder `1' mitgegeben werden k"onnen.\\
        Die Eingabe erfolgt dabei "uber Wertepaare bei denen die erste
        Ziffer die Flag-Nummer und die zweite Ziffer den gew"unschten
        Wert festlegt. Will man z.B. `flag2' auf den Wert `1' setzen,
        so muss die im Beispiel vorgenommene Eingabe erfolgen.

        G"ultige Werte: durch Leerzeichen getrennte Ziffern bzw. Wertepaare

        Beispiel: \texttt{NTP\_CLOCK\_1\_FLAGS='2 1'}

    \config{NTP\_CLOCK\_x\_REFID (Optionaler Parameter)}{NTP\_CLOCK\_x\_REFID}{NTPCLOCKxREFID}
        Reference Identifier der Uhr, welcher zur Identifikation der
        Zeitquelle dient. Bei einer Expert MouseCLOCK USB II lautet
        dieser z.B. 'GUDE'.

        G"ultige Werte: 4 Zeichen langer Text in Gro"sbuchstaben

        Beispiel: \texttt{NTP\_CLOCK\_1\_REFID='GUDE'}

    \config{NTP\_SERVER\_N}{NTP\_SERVER\_N}{NTPSERVERN}
        Gibt die Anzahl der NTP Server an, die in das Peer inkludiert werden!

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{NTP\_SERVER\_N='0'}

    \config{NTP\_SERVER\_x}{NTP\_SERVER\_x}{NTPSERVERx}
        Ein NTP Server im eigenen Netz oder au"serhalb.

        G"ultige Werte: NTP Server

        Beispiel: \texttt{NTP\_SERVER\_1='de.pool.ntp.org'}

    \config{NTP\_SERVER\_OPTIONS (Optionaler Parameter)}{NTP\_SERVER\_OPTIONS}{NTPSERVEROPTIONS}
        "Uber diesen Parameter ko"nnen auf Wunsch optionale
        Startparameter angegeben werden, wie z.B. `-4', um den
        NTP-Dienst nur auf IPv4-Adressen lauschen zu lassen.

        G"ultige Werte: gu"ltige Kommandozeilenschalter

        Beispiel: \texttt{NTP\_SERVER\_OPTIONS='-4'}

    \config{NTP\_SET\_SERVER\_N}{NTP\_SET\_SERVER\_N}{NTPSETSERVERN}
        Gibt die Anzahl der NTP Server an "uber die die Zeit per Men"u
        gesetzt wird falls der Zeitunterschied zu gro"s ist!

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{NTP\_SET\_SERVER\_N='0'}

    \config{NTP\_SET\_SERVER\_x}{NTP\_SET\_SERVER\_x}{NTPSETSERVERx}
        Ein NTP Server im eigenen Netz oder au"serhalb.

        G"ultige Werte: NTP Server

        Beispiel: \texttt{NTP\_SET\_SERVER\_1='de.pool.ntp.org'}

        \begin{verbatim}
#----------------------------------------------------------------
# Zusaetzliche Parameter for NTP
#
# Damit kann man die ntp.conf nach seinen Wuenschen gestalten
# *** Fuer Benutzer die wissen was Sie tun !!! ***
#
# Fuer moegliche Parameter siehe : http://ntp.org
#----------------------------------------------------------------

NTP_ADD_PARAM_N='0'
    (Zahl): Gibt die Anzahl der Parameter an.
    Standardeinstellung: 0

NTP_ADD_PARAM_1='statsdir /var/log/ntp/'
    (Parameter) : Wird in ntp.conf eingefuegt!
        \end{verbatim}


    Das NTP-Paket verwendet Logdateien, um Meldungen "uber seinen laufenden
    Betrieb zu speichern. Um zu verhindern, dass diese Dateien zu gro"s und
    un"ubersichtlich werden, kann man einstellen wie das System mit den
    Dateien umgehen soll.

    \config{NTP\_LOG\_CONFIG}{NTP\_LOG\_CONFIG}{NTPLOGCONFIG}
        "Uber diesen Parameter kann man festlegen welche Informationen in
        die Logdatei geschrieben werden sollen. Es kann zwischen folgenden
        Optionen gew"ahlt werden. Einzelne Optionen k"onnen mit Hilfe eines
        '+'-Zeichens kombiniert werden!

        all         : Alle Informationen
        syncstatus  : Informationen "uber den Synchronisationsstatus
        sysevents   : Informationen "uber Synchronisationssystemereignisse
        syncall     : Alle Informationen "uber den Synchronisationsaufruf
        clockall    : Informationen "uber alle Uhren

        Beispiel: syncstatus + sysevents + clockall

        Standardeinstellung: \texttt{NTP\_LOG\_CONFIG='all'}

    \config{NTP\_LOG\_COUNT}{NTP\_LOG\_COUNT}{NTPLOGCOUNT}
        "Uber diesen Parameter wird eingestellt, wie viele Logdateien
        vorgehalten werden sollen. Wird dieser Wert "uberschritten, so
        wird die "alteste Logdatei gel"oscht.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{NTP\_LOG\_COUNT='10'}

    \config{NTP\_LOG\_INTERVAL}{NTP\_LOG\_INTERVAL}{NTPLOGINTERVAL}
        Dieser Parameter bestimmt in welchen Intervallen die Logdateien
        archiviert werden sollen. Zur Auswahl stehen die Schl"usselw"orter
        'daily' - t"aglich, 'weekly' - w"ochentlich und 'monthly - monatlich.

        G"ultige Werte: daily, weekly, monthly

        Standardeinstellung: \texttt{NTP\_LOG\_INTERVALL='weekly'}
\end{description}


\section{Serielle Empf"anger testen}
%-----------------------------------

    Schlie"sen Sie den Empf"anger an dem ComPort den Sie in
    \jump{NTPCLOCKxDEVICE}{NTP\_CLOCK\_x\_DEVICE} definiert haben an.
    Der symbolischen Link \texttt{NTP\_CLOCK\_x\_LINK\_DEVICE} +
    \texttt{NTP\_CLOCK\_x\_LINK\_DEVICE\_N}, welcher auf das
    \texttt{NTP\_CLOCK\_x\_DEVICE} zeigt wurde beim Konfigurieren
    erzeugt.

    Beispiel DCF77 Empf"anger:

    \begin{verbatim}
NTP_CLOCK_2_DEVICE='/dev/ttyS1'
NTP_CLOCK_2_LINK_DEVICE='/dev/refclock-'
NTP_CLOCK_2_LINK_DEVICE_N='1'

/dev/ttyS1 an /dev/refclock-1 # also an com2
    \end{verbatim}

    Nun gilt es eine gute Position f"ur den Empf"anger ausfindig zu machen.
    Das im Quellcode enthaltene Werkzeug `testdcf' erm"oglicht dies auf sehr
    bequeme Art.
    NTP muss vor dem Start von testdcf beendet werden, genauso umgekehrt
    testdcf muss vor dem Start von NTP beendet werden!
    Starten Sie es mit dem Kommando: testdcf /dev/refclock-1.
    Die LED sollte nun gleichm"a"sig einmal pro Sekunde blinken. Haben Sie eine
    gute Position ausfindig machen k"onnen (das serielle Kabel der Uhr kann bis
    auf 100m verl"angert werden!), so sollte etwa 3 Minuten nach den Aufruf von
    'testdcf' eine Uhrzeit empfangen worden sein (hier : Sa, 22:46:07, 24.01.04).

    \begin{verbatim}
testdcf /dev/refclock-1

DCF77 monitor - Copyright (C) 1993-1996, Frank Kardel

RADMLSMin....PHour..PMDay..DayMonthYear....P
RADMLS1248124P124812P1248121241248112481248P
\ #-###------#------.......................... *** INCOMPLETE
/ ............................................ Sa, 22:46:07, 24.01.04, <____>
    \end{verbatim}

   Zu erw"ahnen ist hier nur, dass die Uhr mindestens eine Minute braucht,
   um ein erstes Mal die korrekte Zeit zu liefern, da ein kompletter Datensatz
   bei DCF77 eine ganze Minute einnimmt. Die zahlreichen Meldungen nach Starten
   des NTP-Daemons sind also kein Grund zur Beunruhigung. Nach ein paar Minuten
   sollte sich das Problem mit dem Auftauchen der Logmeldung clk\_okay selber
   l"osen:

   Nach einer erfolgreichen Synchronisation taucht im NTP-Logfile folgende
   Nachricht auf:

    \begin{verbatim}
24 Jan 20:57:02 ntpd[3260]: system event 'event_restart' (0x01)
    status 'sync_alarm, sync_unspec, 1 event, event_unspec' (0xc010)
24 Jan 20:57:12 ntpd[3260]: peer LOCAL(1) event 'event_reach' (0x84)
    status 'unreach, conf, 1 event, event_reach' (0x8014)
24 Jan 20:58:00 ntpd[3260]: parse: convert_rawdcf: BAD DATA - no conversion
    for "---------------R-D--s12-81--p--48--P--4-121------1------4"
24 Jan 20:58:00 ntpd[3260]: PARSE receiver #1: conversion status
    "CONVERSION FAILED; DATE ILLEGAL"
24 Jan 20:58:00 ntpd[3260]: PARSE receiver #1: interval for following error
    message class is at least 00:01:00
24 Jan 20:58:00 ntpd[3260]: PARSE receiver #1: FAILED TIMECODE:
    "---------------R-D--s12-81--p--48--P--4-121------1------" (check
    receiver configuration / cableling)
24 Jan 20:58:00 ntpd[3260]: clock GENERIC(1) event 'clk_baddate' (0x05)
24 Jan 20:58:00 ntpd[3260]: peer GENERIC(1) event 'event_peer_clock' (0x85)
    status 'unreach, conf, 1 event, event_peer_clock' (0x8015)
24 Jan 20:58:00 ntpd[3260]: system event 'event_clock_excptn' (0x07) status
    'sync_alarm, sync_unspec, 2 events, event_restart' (0xc021)
24 Jan 20:59:00 ntpd[3260]: PARSE receiver #1: packet format "RAW DCF77
    Timecode"
24 Jan 20:59:00 ntpd[3260]: PARSE receiver #1: STATE CHANGE:  -> TIME CODE;
    (LEAP INDICATION; ANTENNA)
24 Jan 20:59:00 ntpd[3260]: PARSE receiver #1: SYNCHRONIZED
24 Jan 20:59:00 ntpd[3260]: clock GENERIC(1) event 'clk_okay' (0x00)
    \end{verbatim}

   Wie man hier sehr sch"on sieht, hat es zwei Minuten gedauert.


\section{Den Zeitempfang per Netzwerk "uberpr"ufen}
%--------------------------------------------------

    Der Benutzer root kann den Status mit dem Kommando 'ntpq -p' "uberpr"ufen.
    "Anderungen erfolgen jedoch langsam. Das Intervall legt der ntpd selbst
    anhand der Zeitdifferenz etc. fest. Einige Minuten Geduld sind hier
	erforderlich.


\section{Die NTP-Empfangsqualit"at}
%----------------------------------

   \hinweis{Diese Informationen erhalten Sie wenn Sie Im Men"u Info anw"ahlen}

   Um eine genaue Aussage "uber die Empfangsqualit"at des Empf"angers zu
   erhalten, kann das Programm ntpq mit dem Befehl 'ntpq -c clocklist' verwendet
   werden.

   Mit dem Shell-Befehl 'ntpq' kann der Status eines laufenden NTP-Servers
   abgefragt werden. Wird ntpq ohne weiter Optionen aufgerufen, so wird der
   Localhost als NTP-Server angenommen, die Steuerung von ntpq erfolgt dann
   "uber die Kommandozeile:

    \begin{verbatim}
ntpq -c clocklist

status=0005 clk_okay, last_clk_baddate,
device="RAW DCF77 CODE (Conrad DCF77 receiver module)",
timecode="------------------M-S1--8--4P1----2p--4--2-241------4-----p",
poll=49, noreply=0, badformat=5, baddata=0, fudgetime1=292.000,
fudgetime2=0.000, stratum=0, refid=DCFa, flags=0,
refclock_time="c3bd58e1.00000000  Sat, Jan 24 2004 20:49:37.000 UTC",
refclock_status="TIME CODE; (LEAP INDICATION; ANTENNA)",
refclock_format="RAW DCF77 Timecode",
refclock_states="*NOMINAL: 00:50:37 (96.29%); NO RESPONSE: 00:00:57
    (1.80%); ILLEGAL DATE: 00:01:00 (1.90%); running time: 00:52:34"
    \end{verbatim}

   In diesem Beispiel hat die Uhr bei einer Gesamtlaufzeit von ca. 52 Minuten
   (siehe running time) etwa 50 Minuten lang guten Empfang. Dies entspricht
   96.29%.

   Mit dem Kommando 'peers' werden in einer Tabelle die aktiven Referenzuhren
   zeilenweise angezeigt. Ein der Zeile vorangestellter Stern '*' zeigt an,
   dass dieser Peer die aktuelle Zeitreferenz ist:

    \begin{verbatim}
tpq -c peers localhost

remote         refid      st t when poll reach  delay  offset  jitter
=====================================================================
*GENERIC(1)    .DCFa.      0 l   47   64  377   0.000  -0.728  0.015
 LOCAL(1)      LOCAL(1)   10 l   58   64  377   0.000   0.000  0.015
    \end{verbatim}

   Folgende Informationen werden u.a. angezeigt:

   - remote:
   Auflistung aller verf"ugbaren Zeit-Server (ntp.conf)

   - refid:
   Referenznummer

   - when:
   wann die letzte Abfrage stattgefunden hat (in Sekunden)

   - poll:
   in welchem Intervall der Zeitserver abgefragt wird

   - offset:
   Differenz zwischen Systemzeit und Referenzzeit (in Millisekunden)


\section{Windows als NTP Client / Server}
%----------------------------------------

\subsection{Allgemeines}
%-----------------------

    Will man die Zeit seines Windows-PCs mit einem zentralen Zeitserver
    synchronisieren, so kann man entweder auf mitgelieferte Programme
    des Betriebssystems zur"uckgreifen oder auch eine kostenlose Windows-Version
    des originalen NTP-Programms \url{http://www.ntp.org} verwenden, welches
    man z.B. von folgender Seite herunter laden kann:

    \url{http://www.meinberg.de/german/sw/ntp.htm}

    Wer den Status seines Zeitservers bequem "uberwachen m"ochte, findet
    auf folgende Seite auch ein kostenloses NTP Monitorprogramm:

    http://www.meinberg.de/german/sw/time-server-monitor.htm


\subsection{Windows NT}
%----------------------

   Dieser Dienst ist auch f"ur Windows NT erh"altlich und ersetzt
   den alten Zeitdienst aus dem NT Resource-Kit

\subsection{Windows 2000}
%------------------------

    Windows 2000 bietet mit dem integrierten Dienst 'w32time.exe' die
    M"oglichkeit als NTP Server oder Client zu fungieren. Zur Aktivierung
    des NTP-Client/Servers unter Windows 2000 m"ussen dem System die
    erforderlichen Parameter bekannt und der entsprechende Zeitdienst
    dauerhaft gestartet sein. Der Zeitdienst findet sich unter
    'Verwaltung/Dienste' als 'Windows-Zeitgeber' (engl.: 'Windows Time').
    Er sollte nach Einstellung der Parameter mit dem Autostarttyp
    'Automatisch' gestartet werden. (Starts und Stopps dieses Dienstes
    sind auch mit den Command-Line-Befehlen 'net start w32time'
    beziehungsweise 'net stop w32time' m"oglich.) Die f"ur den Zeitdienst
    relevanten Parameter finden sich alle in der Registry und lassen
    sich dort bei Bedarf auch editieren:\\
    \begin{verbatim}
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters.
    \end{verbatim}
    Eine Dokumentation der einzelnen Registry-Eintr"age finden Sie bei Microsoft.

    Damit Windows 2000 als NTP-Client fungieren kann ist die Adresse des
    Zeit-Servers, der bei jeder Synchronisation abgefragt werden soll,
    einzutragen. Der oder die ausgew"ahlten NTP-Server lassen sich
    entweder in der Registry unter dem Eintrag 'ntpserver' editieren oder
    mit dem Command-Line-Befehl 'net time /setsntp$[$:NTP-Serverliste$]$'.
    (Wird eine ganze Liste eingegeben, so sind die einzelnen Adressen
    durch Leerzeichen abzutrennen und die Liste beim net-Befehl in
    Anf"uhrungszeichen zu setzen.) Beim n"achsten Start des Zeitdienstes
    werden die Eintr"age "ubernommen und die Zeit synchronisiert.
    Standardm"a"sig geschieht dies dann in Folge alle acht Stunden. Die
    Frequenz versteckt sich unter dem Eintrag 'Period' und ist
    standardm"a"sig als REG\_SZ mit dem Wert 'SpecialSkew' abgelegt.
    Um beispielsweise 24-mal am Tag zu synchronisieren, muss dieser
    'Period'-Eintrag durch einen entsprechenden REG\_DWORD mit dem
    Dezimalwert 24 ersetzt werden (das hei"st: den alten Eintrag komplett
    l"oschen oder umbenennen und einen Neueintrag zur Eingabe numerischer
    Werte anlegen). Die aktuell gesetzten Zeit-Server lassen sich
    "ubrigens auch via Command-Line mit dem Befehl 'net time /querysntp'
    anzeigen.\\

    Damit Windows 2000 nicht nur als NTP-Client, sondern auch als Server
    fungiert, ist in der Registry folgender Eintrag n"otig:\\
    'LocalNTP' muss von standardm"a"sig '0' auf '1' gesetzt werden.\\
    Nach anschlie"sendem Neustart des Dienstes k"onnen jetzt auch beliebige
    NTP/SNTP-Clients von diesem Windows-2000-Rechner die Zeit abfragen.
    Ein weiterer Parameter in der Registry k"onnte gegebenenfalls interessant
    werden: die Frequenz, mit der die Zeit-Server von Windows 2000 abgefragt
    werden.\\

    Eventuelle Fehlermeldungen des Zeitdienstes werden im Systemprotokoll
    der Ereignisanzeige eingetragen. Zu Diagnosezwecken l"asst sich "ubrigens
    auch das Kommandozeilenwerkzeug 'w32tm.exe' nutzen, der Zeitdienst muss
    dabei deaktiviert sein. Eine "Ubersicht der Aufrufvarianten bietet der
    Hilfe-Befehl 'w32tm /?'. Beispielsweise kann mit 'w32tm -once' eine
    einmalige Synchronisation mit detaillierter Anzeige ausgel"ost werden.\\

\subsection{Windows XP}
%----------------------

    Windows XP kann bereits selbst"andig einen NTP Server abfragen und
    die Zeit angleichen. Die Einstellungen k"onnen in der Systemsteuerung
    unter 'Datum/Uhrzeit' vorgenommen werden. Damit Windows XP auch als
    NTP-Server fungiert, ist in der Registry, wie auch bei Windows 2000,
    folgender Eintrag n"otig: 'LocalNTP' = '1'.

