Bei IEEE 1588 wird versucht, mehrere freilaufende Uhren zu synchronisieren. Jede dieser Uhren ist in der Regel als Zähler implementiert, der mit einer vorgegebenen Frequenz seinen Zähler inkrementiert. Aufgrund der Frequenz und des Zählerstandes kann nun jederzeit die aktuelle Zeit abgeleitet werden. Da es technisch nicht möglich ist, von mehreren Oszillatoren identische Frequenzen erzeugen zu lassen, muss die Frequenz nachgeregelt werden. Weil es deutlich einfacher ist, den Zählerzyklus zu manipulieren, wird dieser verändert. Diese Anpassung muss über einen Regelalgorithmus erfolgen, da die Anpassungen verschiedenen Störungen unterliegen. Zusätzlich müssen aber auch Störungen, die im Transportweg auftreten können, berücksichtigt werden. Da jede IEEE-1588-Implementierung auf ihrer eigenen Hardware und Hardware-Topologie basiert, kann es »den allgemeinen Regelalgorithmus« nicht geben.
Prinzipiell kann man die Algorithmen in zwei Gruppen aufteilen. Die erste Gruppe basiert eher auf einfache Algorithmen, die sich in der Regel nur darauf konzentrieren, aus der ermittelten Zeitdifferenz zwischen Master und Slave (auch MeanPathDelay genannt) den Fehler in der Frequenz der eigenen Uhr zu ermitteln. Diese Art von Algorithmus ist unabhängig von der verwendeten Hardware-Topologie und liefert durchaus brauchbare Ergebnisse. Die freie LinuxPTP-Implementierung und die TSEP-Implementierung enthalten jeweils einen solchen Algorithmus standardmäßig.
Die zweite Gruppe sind Algorithmen, die versuchen, die Fehler, die im System stecken, zu ermitteln und diese bei der Berechnung des Fehlers der eigenen Frequenz einzubeziehen. Diese Algorithmen sind nur dann sinnvoll, wenn die verwendete Hardware und die zu erwartende Topologie bekannt ist. Aufgrund der verwendeten Hardware lassen sich dann die Fehlermodelle erstellen und verwenden. Für diese Art von Regelalgorithmen sind insbesondere Kalman-Filter geeignet, die speziell auf das entsprechende Problem modelliert werden können.
Jeder Regelalgorithmus enthält mindestens zwei Zustände. Im ersten Zustand ist das MeanPathDelay so groß, dass der Algorithmus diese Lücke in akzeptabler Regelzeit nicht schließen kann. In diesem Zustand wird die vom Master erhaltene Zeit ohne Korrektur direkt als eigene Slave-Zeit übernommen, in der Hoffnung, dass der im nächsten Synchronisationsintervall ermittelte MeanPathDelay-Wert deutlich kleiner ist. Dieser Zustand wird solange beibehalten, bis ein akzeptables MeanPathDelay erreicht ist. Nach dem Starten der Uhr oder wenn die Synchronisation verloren geht, ist dieser Zustand der Default-Zustand. Im zweiten Zustand greift dann der eigentliche Regelalgorithmus, der versucht die Korrekturwerte der eigenen Uhr zu ermitteln und die eigene Uhrzeit möglichst genau der Master-Uhrzeit anzunähern.