Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Roundtrip - Laufzeitmessung



7.e.Q
18-07-2005, 12:51
Hallo,

ich versuche gerade, unter Linux ein Programm zu schreiben, mit dem es möglich sein soll, die Systemuhren zweier Systeme millisekundengenau synchron zu halten.

Das ganze soll wohl per "Roundtrip" funktionieren. Also es sollen je Zyklus (alle Sekunde, Minute o.ä.) Meldungen mit Timestamps hin und her geschickt werden (per UDP), woraus System 2 nach einer Weile die Abweichung zu System 1 erlernt und daraus quasi genau berechnen kann, welcher Timestamp von System 1 als nächstes gesendet werden müsste. Auch soll das Prinzip Paket-Laufzeiten rausrechnen können.

Ist sowas überhaupt möglich? Wenn ja, wie? Gibt es sowas eventuell schon? Die beiden Zeiten beider Systeme müssen absolut synchron gehalten werden, darum geht's.

Danke

Gruß,
Hendrik

anda_skoa
18-07-2005, 16:37
Vermutlich ist dir das Standard NTP nicht genau genug?

Ciao,
_

RapidMax
18-07-2005, 19:33
Daher wurde der Standard IEEE 1588 (http://ieee1588.nist.gov/) geschaffen. Ich mag mich an eine Gruppe an der ZHW erinnern, welche das Protokoll implementiert hat (Diplomarbeit). Hier was vom Dozenten: http://home.zhwin.ch/~wei/IEEE1588/comtec.pdf, http://ines.zhwin.ch/fileadmin/user_upload/ieee1588/Fachartikel_IEEE1588.pdf

Ich rate davon ab, ein eigenes Protokoll zu erfinden. Wenn es genau sein muss, nimmt man NTP, wenn es sehr genau sein muss IEEE 1588. Allerdings eignet sich letzters AFAIK nicht für geroutete Netze (Wie IP), bei dem die Pakete unterschiedliche Routen nehmen können.

Gruss, Andy

7.e.Q
19-07-2005, 11:04
NTP ansich war mir nicht geläufig. Genau genug scheint es zu sein, wenn es sich im 200µs Bereich bewegt. Jetzt fehlt mir nur noch das Know How zur Integration desselbigen in unser System. Der NTP Daemon läuft, doch verabschiedet er sich nach einigen Minuten immer mit der Fehlermeldung



time correction of 63158401 seconds exceeds sanity limit (1000); set clock manually to the correct UTC time.

anda_skoa
20-07-2005, 13:25
Vielleicht kann dir da jemand auf linuxforen.de weiterhelfen, hab NTP bisher nur als Client eingesetzt und dazu muß man nicht viel mehr machen als da ntpdate Paket zu installieren :)

Ciao,
_

7.e.Q
08-08-2005, 07:00
Also für alle, die es HIER wissen wollen, um das Problem mit dem Sanity Limit zu übergehen, startet man den NTP Daemon einfach mit dem Argument 'q'. Das lässt eine einzige Überschreitung des Sanity Limits zu und gleicht die Uhrzeit sofort soweit an, daß die nächste Anfrage innerhalb des Sanity Limits liegen sollte. Ist das nicht der Fall, beendet sich der Daemon auf dem normalen Weg mit der Fehlermeldung, daß das Sanity Limit überschritten wurde.