AIX und das Network Time Protokoll NTP

NTP4 -rc.local - Bugs - Öffentliche NTP Server -

Grundsätzliches

Damit xntpd auf AIX funktioniert darf

Wenn eine oder beide Bedinungen nicht erfüllt sind, stirbt der daemon nach ca. 5 Minuten.

Installation von XNTPD4 am Beispiel von SAP/R3 Big Time Diff Problem

Bei SAP R3  vor der Version 6.10 haben die dw-Prozesse Probleme mit dem standardmäßigen Verhalten der xntpd Version, die IBM mit AIX 4.3.3 mitliefert. Es handelt sich um eine angepaßte Version des ntp-Dämonen in der Version 3.4y. Das Problem resultiert daher, daß das für den Transport der Zeit-Päckchen verwendete (interne) SP-Ethernet überlastet ist. Dadurch reißt die Verbindung zwischen ntp-Clienten und ntp-Server regelmäßig ab. Der AIX xntpd ist in der default Konfiguration nicht in der Lage auf diese Situation angemessen auf diese Verbindungsstörungen zu reagieren. Er stellt bei solchen kurzzeitigen Verbindungsproblemen Abweichungen der lokalen Zeit zum ntp-Server fest und stellt die Uhr jeweils 'hart' um. SAP R3 hat nun wiederum Probleme, wenn die Zeit hart zurückgesetzt wird, d.h. wenn eine vermeintliche Differenz dazu führt, daß die Uhr um z.B. 1.5 Sekunden in die Vergangenheit zurückgestellt wird. Bei einer solchen Aktion kommt es also vor, daß ein Prozeß 'früher' endet, als er begonnen wurde (Laufzeitfehler). In der Folge bricht der disp+work Prozeß (bei Zeitsprüngen ab 1 Sekunde) ab. Das Problem ist beschrieben im SAP-Hinweis Nr. 447839 (ZDATE_ILLEGALE_LOCTIME).

In den Log-Dateien der disp+work -Prozesse äußert sich das Problem mit diversen Fehlermeldungen:

Thu Sep 19 12:47:14 2002

*** WARNING: big time diff 4294966468 [3900711392 3900710564]for stamp STAT_REPLOAD, correct ???

PfAddStatDura: overflow (755<1583,4294966468), take max uint for STAT_REPLOAD

Thu Sep 19 14:52:35 2002

*** WARNING: big time diff 4294966895 [2831646802 2831646401]for stamp STAT_ROLLOUT, correct ???

PfAddStatDura: overflow (176<4294966895,577), take max uint for STAT_ROLLOUT

Thu Sep 19 15:12:35 2002

*** WARNING: big time diff 4294966386 [4032485058 4032484148]for stamp STAT_REPLOAD, correct ???

Dieses Problem kann man mit der IBM Version des NTP-Dämonen in der Standardkonfiguration nicht abstellen, da bei Abweichungen > 1 Sekunde die Zeit immer ruckartig korrigiert wird (step). Im syslog sieht man, daß unabhängig von der (vermeintlichen) Zeitabweichung immer ein step durchgeführt wird. Um slewing zu aktivieren, muß die Option "-x" genutzt werden.

Nov 18 02:24:52 sapserver1 xntpd[4338]: synchronisation lost

Nov 18 02:31:16 sapserver1 xntpd[4338]: synchronized to 192.168.50.77, stratum=1

Nov 18 02:31:14 sapserver1 xntpd[4338]: time reset (step) -1.329896 s

Nov 18 02:31:14 sapserver1 xntpd[4338]: synchronisation lost

Nov 18 02:36:40 sapserver1 xntpd[4338]: synchronized to 192.168.40.201, stratum=2

Nov 18 02:36:42 sapserver1 xntpd[4338]: time reset (step) 1.296315 s

Nov 18 02:36:42 sapserver1 xntpd[4338]: synchronisation lost

Nov 18 02:41:55 sapserver1 xntpd[4338]: synchronized to 192.168.50.77, stratum=1

Nov 18 02:41:55 sapserver1 xntpd[4338]: time reset (step) -0.680643 s

Nov 18 02:41:55 sapserver1 xntpd[4338]: synchronisation lost

Nov 18 02:49:23 sapserver1 xntpd[4338]: synchronized to 192.168.50.77, stratum=1

Nov 18 02:49:22 sapserver1 xntpd[4338]: time reset (step) -0.342851 s

Nov 18 02:49:22 sapserver1 xntpd[4338]: synchronisation lost

Der NTP-Dämon kann jedoch angewiesen werden, die Zeit unabhängig von der Abweichung immer sanft zu korrigieren (slew). Für den AIX xntpd muß dazu jedoch das mit chssys das subsystem geändert werden. Alternativ kann der freie NTP Dämon genutzt werden.

Dec 6 09:40:33 sapserver1 ntpd[47778]: synchronisation lost

Dec 6 09:47:08 sapserver1 ntpd[47778]: time slew 0.207090 s

Dec 6 09:58:52 sapserver1 ntpd[47778]: synchronisation lost

Dec 6 10:03:11 sapserver1 ntpd[47778]: time slew -1.324605 s

Dec 6 10:19:11 sapserver1 ntpd[47778]: time slew -0.626291 s

Dec 6 10:34:16 sapserver1 ntpd[47778]: time slew -0.155984 s

Dec 6 10:38:31 sapserver1 ntpd[47778]: synchronisation lost

Dec 6 10:50:12 sapserver1 ntpd[47778]: time slew 0.390068 s

Beispiel mit einer größeren Zeitabweichung (nachdem 36 Stunden kein NTP-Dämon gelaufen war):

Dec 9 09:49:30 sapserver1 ntpd[42078]: time slew 15.347800 s

Dec 9 09:50:34 sapserver1 ntpd[42078]: synchronisation lost

Dec 9 10:04:30 sapserver1 ntpd[42078]: time slew 14.965768 s

Dec 9 10:18:30 sapserver1 ntpd[42078]: synchronisation lost

Dec 9 10:19:35 sapserver1 ntpd[42078]: time slew 13.746068 s

Dec 9 10:27:04 sapserver1 ntpd[42078]: synchronisation lost

Dec 9 10:35:38 sapserver1 ntpd[42078]: time slew 13.332994 s

Dec 9 10:50:41 sapserver1 ntpd[42078]: time slew 12.963154 s

Dec 9 10:56:01 sapserver1 ntpd[42078]: synchronisation lost

<Top>

Slew nutzen mit IBM xntpd

Um den AIX xntpd daemon vom default Verhalten step auf slew umzukonfigurieren muß das Subsystem geändert werden.

# chssys -s xntpd -a"-x"

# stopsrc -s xntpd; sleep 1; startsrc -s xntpd

Danach ist die slew Option aktiv, der Parameter -x ist in der Benutzerprozessliste und der ODM sichtbar. Achtung: nach aktualisierung des NTP filesets muß die Änderung wiederholt werden da der update Prozess sie überschreibt und den Dämon auf default zurücksetzt.

OpenSource NTP4 für AIX nutzen

Bezugsquelle

Die aktuelle Version des NTP-Dämon wurde als Source von

http://www.eecis.udel.edu/~ntp/index.html

(oder http://www.ntp.org/)

heruntergeladen und mit gcc 2.95.30 kompiliert. Das resultierende Binary wurde dann auf den SAP Servern in

/usr/local/ntp4

installiert. Aktiviert wird der neue NTP-Dämon dann indem der alte ab- und der neue eingeschaltet wird.

# stopsrc -s xntpd

# The Subsystem xntpd was successfully requested to stop

Nach dem stoppen des xntpd muß auch die rc.ntp deaktiviert werden. (Ggf. wird der Dämon aber auch mit einem Aufruf aus der rc.tcpip gestartet.) In der SP wird dir rc.ntp von der cws nachgezogen, in diesem Fall muß man vor dem Start des ntpd den xntpd extra stoppen.

# /usr/local/ntp4/bin/ntpd -x

Wichtig ist die Option „-x“, sie ist zuständig für das permanente „slew“.

In der /etc/ntp.conf ist ggf. die Option „authdelay“ zu deaktivieren. Der ntpd selbst läßt sich via rc.local aus der inittab stoppen und starten.

<Top>

Start von ntpd über rc.local

Die rc.local muß als letzte Datei in der /etc/inittab eingetragen sein.

#!/usr/bin/ksh

stopsrc -s xntpd

sleep 1

/usr/local/ntp4/bin/ntpd -x

<Top>

Start von ntpd über /etc/rc.tcpip

In der /etc/ntp.conf wird der/die Zeitserver eingetragen:

server ptbtime1.ptb.de

und die (x)ntpd Zeile in /etc/rc.tcpip wird aktiviert.

<Top>

Bugs und nicht unterstützte Funktionen

Start von zwei (verschiedenen) NTP-Dämonen

Wenn der xntpd über den System Resource Controller vor dem Open Source ntpd gestartet wird, dann nützt es nichts, den xntpd einfach mittels stopsrc o.ä. wieder anzuhalten. Für eine einwandfreie Funktion muß auch der ntpd angehalten und anschließend (bei nicht laufendem xntpd) neu gestartet werden. Deshalb wird in der /etc/rc.local der xntp Dämon (Ver. 3.4y) zunächst angehalten, bevor der ntp Dämon (Ver. 4) gestartet wird.

<Top>

Öffentliche NTP Server

Physikalisch-Technische-Bundesanstalt in Braunschweig

ETH Zürich

NTP Pool Project

<Top>