Wie funktioniert Synchronisation der Zeit von mehreren Geräten?

#basTi

Commodore Pro
Registriert
Aug. 2005
Beiträge
4.763
Hallo zusammen,

mich beschäftigt momentan die Frage der Zeitsynchronisation.
Habe schon ein bisschen gegoogelt aber finde nicht wirklich was dazu.

Folgende Aufgabe beschäftigt mich:
Rechner A (Master) will, dass Rechner B genau dieselbe Zeit wie er hat. Die verbindung der Rechner ist erstmal irrelevant.

Wie kann nun erreicht werden, dass beide wirklich die exakt selbe Zeit inne haben?
Die Frage wurmt mich, da ich nicht verstehe wie das "synchronisations-signal", welches verschickt wird, wissen kann, wie lange es für den übertragungsweg von A nach B gebraucht hat. Demnach ist Rechner B nur bekannt, wann die Nachricht abgeschickt wurde aber nicht die Zeit zu der die Nachricht angekommen (bzw verarbeitet) wurde.
(Das nächste Problem wäre dann, wie man sicherstellt, dass beide (sobald synchronisiert) gleichschnell laufen. Aber dieses problem stell ich vorerst mal zurück :) )

Wenn möglich bitte eine systematische/konzeptionelle und keine technische detail Antwort :)

Vielen dank im voraus :)
 
Vorweg, ich weiß nicht wie es läuft. Aber ich würde das Ganze wie folgt realisieren:

Rechner B will sich beim Rechner A (Master) das Zeitsignal holen. Er schickt eine Anfrage an Rechner A, dieser sendet ihm das Zeitsignal, Rechner B stellt die Zeit entsprechend ein.
Nun könnte es sein, dass durch den Übertragungsweg eine Zeitdiffernez auftritt.
Die Problemlösung ist nun, dass der Rechner A nochmal ein Signal an Rechner B schickt und dieser das Signal sofort wieder an Rechner A zurückschickt. Die Laufzeit des Signals teilt Rechner A nun durch 2 und schickt das neue, um die Laufzeit korrigierte, Zeitsignal an Rechner B. Beider Rechner sollten nun syncron laufen.

Edit: Andere, noch leichtere Möglichkeit.

Rechner B schickt seine Zeitanfrage an Rechner A. Dabei merkt sich der Rechner den Zeitpunkt, wann er seine Anfrage losgeschickt hat. Wenn das Signal von Rechner A ankommt, dann vergleicht er die aktuelle eigene Zeit mit der Zeit als er die Anfrage an Rechner A geschickt hat. Er teilt die Zeit durch 2 und addiert sie auf das angekommene Zeitsignal von Rechner A dazu. Beide Rechner sollten nun syncron laufen.
 
Zuletzt bearbeitet:
Danke schonmal für die Antwort.

Klingt nicht schlecht ... nur unterliegt es der premisse, dass das Signal beim Hinweg exakt diesselbe zeit braucht wie beim Rückweg ...
 
Bei physikalischen Experimenten werden solche Effekte natürlich kompensiert.
Aber wo sonst spielen die paar Millisekunden Übertragungszeit eine Rolle?
 
Und wie wird es kompensiert?

Ob Milisekunden einene Rolle spielen? Ja klar ...
Natürlich nicht im "Daily Life" ... ändert aber nichts an der Frage.
 
Das stimmt, jedoch sollte allgemein die Differnez zwischen Anfrage und Erhalt des Zeitsignales nur wenige ms betragen. Ich kann mir kaum vorstellen, dass ein Zeitsignal innerhalb dieser Zeit, auf der gleichen Route (nur in unterschiedlichen Richtungen) einen erheblichen Zeitunterschied erfährt.

Möchtest du aber wirklich ganz exakt die gleiche Zeit haben, dann Frage ich dich wodrin der Sinn liegt?
Für einen normalen Anwender dürfte diese Synchronität vollkommen ausreichend sein. Wenn wir hier von wissenschaftlichen Anwendungen reden, dann gibt es mit Sicherheit andere Möglichkeiten.
Vorstellbar wäre ein Routing nur über Glasfaserleitungen, was (durch die Lichtgeschwindigkeit des Signals) einer instantanen Sycronisation gleich kommen dürfte. Evtl. kann man in diesen Fällen sogar die Differenz der Zeiten exakt berechnen.
 
Rein physikalisch können beide Rechner dauerhaft gar nicht die gleiche Zeit haben, wenn Sie sich an unterschiedlichen räumlichen Standorten befinden. Schon im 25. Stock eines Hochhauses verläuft die Zeit schneller (da weniger Erdanziehungskraft) als im Erdgeschoss des Hauses. Die Abweichung ist natürlich minimalst und von der PC-Uhr überhaupt nicht quantifizierbar erfassbar.

Grundsätzlich benötigst Du für die syncrone Zeiterfassung einen zusätzlichen externen Bezugspunkt, also weder PC A noch PC B, denn Du brauchst einen Vergleich der Zeitgleichheit. Du kannst niemals allein durch PC A und B untereinander feststellen, ob beide syncron laufen.

optisch veranschaulicht: ein gleichschenkliges Dreieck
 
Zuletzt bearbeitet:
@Cotom

Mir fallen schon Anwendungen im "normalen" Leben ein, bei denen kleine Zeitdifferenzen eben schon eine Rolle spielen.

Nehmen wir als abstraktes Beispiel mal an, dass es einen dritten Rechner gibt (C) welcher zusammen mit B Signale an A schickt. Falls es nun für A wichtig ist, ob B oder C zuerst gesendet hat ist eine genaue Zeitsynchronisation der drei extrem wichtig. Falls nämlich B & C gleichzeitig senden könnte es für A so aussehen, dass einer zuerst dran war (wegen falschen Zeitstempeln). Sogar eine Vertauschung ist denkbar bei kurz nacheinander gesendeten Signalen.

@ThomasK_7
Vielen dank für die Antwort.
Scheint also wirklich unmöglich zu sein die Zeit genau zu synchronisieren. Hatte bis jetzt immer die Annahme, dass dies bei zeitkritischen Vorgängen exakt geschieht. Scheint dann aber wirklich so zu sein, dass es irgendwie kompensiert/umgangen wird ...
 
Wenn es dich wirklich wissenschaftlich interessiert, dann schreibe eine Email an die PTB oder Rufe dort sogar an. Die Mitarbeiter dort sind alle äußerst nett und hilfsbereit und freuen sich (in der Regel) wenn sie jemanden etwas erklären dürfen. Zumindest habe ich diese Erfahrung gemacht. Die PTB, dass sind die mit der Atomuhr. http://www.ptb.de/cms/presseaktuelles/uhrzeitapplikation.html

Vermutlich ist eine exakte Steuerung über das Internet gar nicht möglich. Wenn es um 2 Rechner in Deutschland geht, dann würde ich das DCF77 Signal benutzen, das ist das Funksignal der Atomuhr. Rechner A in Hamburg nimmt das Signal und berechnet den Laufzeitunterschied vom Sender bis zu ihm. Und Rechner B in München tut das selbe. Dies dürfte extrem genau sein, da die Ausbreitung der Funkwellen sehr gut berechnbar ist.
 
Da fehlt Dir jetzt ein wenig Vorstellungskraft.
In der Realität werden ungleichschenklige Dreiecke durch Zeitzu- oder -abschläge an den PC`s (A,B) wieder passend gemacht. Beim weiter weg stehenden PC wird einfach die Zeit etwas zurückgesetzt, um beim Eintreffen des Syncronisationssignal die gleiche Zeit "anzuzeigen" wie beim näher stehenden PC.

Was sind bei Dir zeitkritische Vorgänge?

Alle Raumbestimmungssysteme (GPS o.ä.) nutzen ja gerade diese Zeitdifferenzen der Ortsveränderung gezielt aus.
 
ThomasK_7 schrieb:
In der Realität werden ungleichschenklige Dreiecke durch Zeitzu- oder -abschläge an den PC`s (A,B) wieder passend gemacht. Beim weiter weg stehenden PC wird einfach die Zeit etwas zurückgesetzt, um beim Eintreffen des Syncronisationssignal die gleiche Zeit "anzuzeigen" wie beim näher stehenden PC.
Und worauf beruhen die auf/abschläge? Durschnittszeit eines Signals auf der Leitung?

ThomasK_7 schrieb:
Was sind bei Dir zeitkritische Vorgänge?
Gute Frage ;) ... GPS kam von dir beispielsweise. Ich könnte mir noch Transaktionssysteme oder Sensorik vorstellen.

ThomasK_7 schrieb:
Alle Raumbestimmungssysteme (GPS o.ä.) nutzen ja gerade diese Zeitdifferenzen der Ortsveränderung gezielt aus.
Kannst du das genauer erklären?
 
Danke schonmal dafür.

habs mir (beides) durchgelesen aber dort wird mehr auf die Zeitdilatation als auf das synchronisieren eingegangen.

"GPS basiert auf Satelliten, die mit kodierten Radiosignalen ständig ihre aktuelle Position und die genaue Uhrzeit ausstrahlen"
"... und wir haben sichergestellt, dass alle erwähnten Uhren synchron laufen."

Das hilft mir wenig bei dem Verständnis, wie die synchronisation erreicht wird :)
 
Ok, komme ich zurück auf mein Beispiel mit dem gleichschenkligen Dreieck.

Angenommen die Signallaufzeit (Absenden->wieder Ankommen am Absender) beträgt bei PC A 1 Sekunde und bei PC B 4 Sekunden.
Nun kann wahlweise,
I) für PC A eine Zeitanzeige X+3 Sekunden oder für PC B eine Zeitanzeige X-3 Sekunden gesendet werden oder
II) für PC A vor Ort eine Zeit X-3 Sekunden eingestellt werden oder für PC B vor Ort eine Zeit X+3 Sekunden eingestellt werden und dann wird mit jedem Syncronisiationssignalempfang (=Zeitimpuls) einfach vor Ort weitergezählt.

In Variante I muss halt die komplette Zeitanzeige gesendet werden, was man in der Praxis nicht macht.

Eine PC Uhr zählt im Normalfall nach Sekunden, nicht genauer. Verbindet man seinen PC mit einem zentralen Zeitserver im Internet, so wird stündlich oder noch häufiger die Zeitanzeige komplett abgeglichen (link). Das reicht für alle normalen Anwendungsbereiche (Kassenschluss usw.) völlig aus, da die Zeitangabe auf Sekundengenauigkeit ausreicht. Die Zeitdifferenzen bei Internetabgleich kannst Du über den ping-Befehl für PC A und B ermitteln. Diese Abweichung ist nicht konstant, sondern vom Datenstau im Internet abhängig. Deswegen wird empfohlen, einen Internetabgleich über einen Zeitserver seines Providers oder zumindest eines gut erreichbaren Zeitservers zu unternehmen.
 
ThomasK_7 schrieb:
Angenommen die Signallaufzeit (Absenden->wieder Ankommen am Absender) beträgt bei PC A 1 Sekunde und bei PC B 4 Sekunden.
...
Die zentrale Frage aus meinem Ausgangspost war aber, wie ich auf die Signallaufzeit komme. Diese als gegeben anzunehmen macht dein Beispiel komplett unbrauchbar für mich ... sorry
ThomasK_7 schrieb:
Eine PC Uhr zählt im Normalfall nach Sekunden, nicht genauer. Verbindet man seinen PC mit einem zentralen Zeitserver im Internet, so wird stündlich oder noch häufiger die Zeitanzeige komplett abgeglichen (link). Das reicht für alle normalen Anwendungsbereiche (Kassenschluss usw.) völlig aus, da die Zeitangabe auf Sekundengenauigkeit ausreicht. Die Zeitdifferenzen bei Internetabgleich kannst Du über den ping-Befehl für PC A und B ermitteln. Diese Abweichung ist nicht konstant, sondern vom Datenstau im Internet abhängig. Deswegen wird empfohlen, einen Internetabgleich über einen Zeitserver seines Providers oder zumindest eines gut erreichbaren Zeitservers zu unternehmen.
Dies bestätigt nur weiter, dass es einfach nicht möglich ist eine exakte Synchronisation zu bekommen. Lediglich die Toleranz ist je nach gewählter Methode unterschiedlich ...
 
Wenn Du schon nicht begreifst, wie man konzeptionell auf eine genaue Signallaufzeit kommen kann (-> Lichtgeschwindigkeit, Glasfaserkabel usw.), dann haben weitere Ausführungen von mir wohl wenig Sinn.

Wie genau brauchst Du es denn?
schrieb:
Die ultrapräzisen Atomuhren der neusten Generation können die Zeitdifferenz zweier dreissig Zentimeter übereinander positionierter Uhren effektiv messen..
link
 
Brauchst doch nicht persönlich werden :freak:

Ich hatte bisher immer angenommen, dass synchron = synchron ist, wenn davon die Rede war.
Dadurch, dass es scheinbar nicht so ist, erübrigt sich meine Frage ja teilweise.

Wobei mich die grundsetzlichen techniken trotztdem interessieren um eine möglichst geringe Abweichung zu erreichen (Ein paar wurden ja bereits genannt).
 
Man kanns eigentlich auch ganz einfach sagen:
Soetwas wie "Gleichzeitigkeit" gibt es nicht - nirgendwo und niemals. Siehe spezielle Relativitätstheorie, weiterführend erklärt z.B. hier: http://de.wikipedia.org/wiki/Relativit%C3%A4t_der_Gleichzeitigkeit und natürlich auch die allgemeine Relativitätstheorie, wobei dort noch Gravitation mit einbezogen wird (rudimentär bzw. zusammenfassend wirds aber auch im wiki-Link erklärt).

Wenn das verstanden wurde, kann man sich über weiterführende Dinge den Kopf zerbrechen - oder es sein lassen, da dies dann obsolet wird ;)
 
Zuletzt bearbeitet:
Ich gebe mal meinen Senf dazu ;)

Wer in größeren IT-Umgebungen arbeitet kennt dies Problem sicherlich.

Fakt ist, dass die Uhren auf verschiedenen computern niemals die gleiche Zeit haben. Signallaufzeit kann man quasi außer Acht lassen.
Wenn wir also von regulären IT-Systemen sprechen (keine wissentschaftlichen/militärischen Anlagen!) dann wird einfach nur alle x Sekunden/Minuten die Uhr des computer auf die momentane Zeit gesetzt.
Dann lässt man die computer-Uhren laufen und unterstellt das die Uhren zunächst mal korrekt weiterticken. Aber wie man ja weiss, laufen Uhren immer zu langsam oder zu schnell (auch am computer), deswegen wird Sie einfach nach x Sekunden neu "gestellt".

Das gleiche Prinzip ist übrigens bei der Funkuhr. Eine Funkuhr ist nicht genauer als eine normale Uhr, sie wird nur alle x Minuten wieder auf die korrekte Uhrzeit gestellt. Dennoch kann die Funkuhr ebenfalls zu schnell/langsam laufen.

In kritischen IT-Umgebungen mit Echtzeit-Anspruch wird das ganze bestimmt anders gelöst. Wie genau weiss ich nicht, aber ich tippe einfach mal das die system so angepasst sind das beim synchronisieren eventuelle Signallaufzeiten bekannt sind und entsprechend gefiltert werden.
 
Zurück
Oben