In modern distributed systems it plays an ever increasing role to investigate the synchronism of events, and guarantee execution of activities in specified times. Dedicated clock distribution networks cannot provide this functionality in a cost efficient manner, so solutions using the regular communication infrastructure have been developed for clock and time synchronization. Various protocols have been developed next to the venerable NTP, which cannot provide the precision required today. IEEE 1588 seems to be the most capable replacement that can primarily use multicast capable network (Ethernet in my work) as communication media.
Using the available communication channels reduces costs and hardware complexity; however, delay and jitter of the synchronization related information transmission causes problems. The scheduling algorithms in modern operating systems and long queues in hardware and software makes pure software based time synchronization practically insufficient from the point of view of performance. This problem can be eased by hardware based time stamping in network interface cards, which makes the elimination of software related delay and jitter mostly possible. Hardware assisted time stamping is implemented in both on hardware and driver level today. For example, Intel server NICs, and some System on a Chip embedded systems have IEEE 1588 hardware assist functionality built in (Luminary Micro MCUs).
Therefore, all low level requirements of hardware assisted time and clock synchronization are present today. However, the implementations of IEEE 1588-2008, e.g. PTPd2 on Linux, do not support them today. In the work I present a modified PTPd2, which supports the utilization of the available HW time stamps to synchronize the system clock. Unfortunately, synchronized operation of peripherals cannot be guaranteed using this solution, which is a necessity in some systems, such as audio-video distribution (Audio Video Bridging).
The aim of this work is to introduce how time synchronization can be provided in distributed systems using IEEE 1588-2008 compatible hardware and software, first to synchronize system clocks, and second, to guarantee the synchronized execution of activities on nodes of the distributed system.