Introduction

Clock Synchronization: The Silent Killer of Distributed Systems (and How to Fight Back) – it sounds dramatic, right? Well, I found that inaccurate clocks in your distributed system are more than just a minor annoyance; they can lead to data corruption, inconsistent behavior, and outright system failure. The good news is that there are solutions, and in this article, I’ll show you how to identify, understand, and combat these time-related gremlins.
Imagine this: a payment processed on one server before the order is even placed on another, simply because their clocks are out of sync. This is the kind of chaos that poor clock synchronization unleashes. How do I prevent this? By understanding the underlying issues, like clock drift and network latency, and employing strategies like NTP (Network Time Protocol) and more advanced techniques.
What if I told you that something as seemingly simple as accurate timekeeping is the bedrock of reliable distributed systems? I’ve seen firsthand how neglecting it can unravel even the most carefully designed architectures. Let’s dive in and explore the world of clock synchronization, arming you with the knowledge to keep your systems running smoothly and consistently.
Table of Contents
- TL;DR
- Context: Why Clock Synchronization Matters Now
- What Works: Core Strategies for Clock Synchronization
- Case Study: Bohar Solutions’ Multi-Tenant Time Synchronization Challenge
- Trade-offs: Pros, Cons, and Real-World Balance
- Next Steps: Actionable Implementation Plan
- References
- CTA: Ensure Accurate Timekeeping in Your Distributed Systems
Clock Synchronization: The Silent Killer of Distributed Systems (and How to Fight Back) isn’t just a catchy title – it’s a real problem! Unsynchronized clocks across your servers can lead to seriously messed up data, unpredictable application behavior, and even security holes. Imagine timestamps being completely out of whack; that’s the kind of chaos we’re talking about.
TL;DR: In distributed systems, if clocks on different machines aren’t in sync, bad things happen. We’re talking data corruption, inconsistent results for users, and potential security breaches.
The fix? We fight back with solutions like NTP (Network Time Protocol), PTP (Precision Time Protocol), and clever consensus algorithms. I’ve found that even with these tools, you need to be prepared for things to go wrong.
Crucially, you need fault tolerance built-in. And don’t forget continuous monitoring! Think of it as keeping a watchful eye on your system’s “time health” – because accurate time is surprisingly critical.
Let’s talk about something lurking beneath the surface of almost every distributed system: clock synchronization. It might sound like a minor detail, but believe me, poor clock synchronization is the silent killer of distributed systems. That’s why it’s crucial to understand “Clock Synchronization: The Silent Killer of Distributed Systems (and How to Fight Back)”. Think of this as your guide to keeping your systems healthy and data consistent!
So, why is clock synchronization such a hot topic *now*? The answer is the explosion of distributed architectures. We’re living in a world of microservices, cloud computing, IoT devices scattered across the globe, and increasingly, edge computing. Before diving deeper, if you’re working with Python in these distributed environments, consider checking out Insane UV vs Pip: The Complete Guide to Why UV is the Future of Python Packaging to optimize your packaging workflow.
These architectures introduce a whole new level of complexity. Maintaining synchronized time across geographically dispersed systems is a significant challenge. Think about it: each server, each device, has its own clock, and those clocks are prone to drift. I’ve personally seen the consequences of even slight time discrepancies.
And the consequences *can* be severe. Poor clock synchronization can lead to data corruption, inconsistent system behavior, and even security vulnerabilities. Imagine a financial transaction being recorded out of order! Compliance issues can also arise when audit logs are inaccurate. For example, many financial regulations require precise timestamps for transactions.
One of the biggest headaches I’ve encountered is debugging event ordering issues. When events appear out of sequence due to clock drift, tracing the root cause becomes exponentially harder. It’s like trying to solve a puzzle with missing pieces. I found that investing in better monitoring tools, like those that track clock skew, paid off handsomely.
That’s why robust timekeeping solutions are no longer optional. They’re essential for ensuring system reliability and data integrity. We need to fight back against the silent killer and implement strategies for accurate and consistent time across our distributed environments. Let’s dive into how we can do that!
What Works: Core Strategies for Clock Synchronization
So, how do we actually tackle the challenge of clock synchronization in distributed systems? Luckily, we have several tools in our arsenal. Let’s dive into some core strategies, weighing their pros and cons for keeping your system ticking in sync.
First up: the workhorse of the internet, NTP.
Network Time Protocol (NTP)
NTP (Network Time Protocol) is probably the first thing that comes to mind. It’s been around for ages, and for good reason. NTP works by querying time servers over the network, adjusting your local clock to match. You can find a wealth of information about NTP from its official documentation, NTP.org.
The beauty of NTP? It’s widely available, relatively easy to implement, and generally “good enough” for many applications. I’ve found that for basic clock synchronization needs, NTP is a solid starting point.
However, NTP isn’t perfect. Accuracy can be limited by network latency and server load. Plus, older versions have had security vulnerabilities, so keeping your NTP implementation up-to-date is crucial. Consider using authenticated NTP to mitigate man-in-the-middle attacks.
Best practices for NTP? Use a pool of reliable time servers, monitor your clock drift, and keep your NTP software patched. A good resource is the Meinberg NTP Security Guide.
Precision Time Protocol (PTP)
Need something more accurate than NTP? Enter PTP (Precision Time Protocol). This protocol, defined in IEEE 1588, uses hardware timestamps to achieve sub-microsecond accuracy.
PTP shines in applications like telecommunications, financial trading, and industrial automation where extremely precise clock synchronization is paramount. It’s a game changer if you’re building a system that demands high accuracy.
Unlike NTP, PTP often requires specialized hardware, such as network cards with hardware timestamping capabilities. There are also different PTP profiles tailored for specific industries.
Global Positioning System (GPS)
GPS isn’t just for navigation! It can also provide highly accurate time signals. GPS time servers use signals from GPS satellites to synchronize clocks.
The advantage? Global availability and high accuracy. The downside? GPS requires a clear line of sight to the satellites, and the signals are susceptible to jamming or spoofing. If you need an extremely reliable time source, be aware of these limitations.
Atomic Clocks
For the ultimate in accuracy, you can use atomic clocks. These clocks use the resonant frequency of atoms to keep time with incredible precision. However, they’re also very expensive and require specialized maintenance. They are typically used as the primary reference clocks for systems like GPS.
Distributed Consensus Algorithms
What if you can’t rely on external time sources? That’s where distributed consensus algorithms come in. Algorithms like Paxos and Raft can be used to establish a consistent logical clock across a distributed system. These algorithms ensure that all nodes agree on the order of events, even if their physical clocks are slightly out of sync.
The trade-off? Consensus algorithms can be complex to implement and can impact performance, especially under high load. You’re essentially trading physical clock accuracy for logical consistency.
Hybrid Approaches
Often, the best solution is a combination of techniques. For example, you might use NTP for coarse-grained clock synchronization and PTP for fine-grained synchronization in critical components. I’ve seen systems use NTP to get a rough time estimate, then use PTP to refine the accuracy for specific tasks.
By carefully considering the requirements of your distributed system and the trade-offs of each technique, you can create a robust and accurate clock synchronization strategy.
Case Study: Bohar Solutions’ Multi-Tenant Time Synchronization Challenge
Let’s dive into a real-world example. Bohar Solutions (bohar.lk), a SaaS provider, faced a fascinating challenge with their multi-tenant platform. Their experience perfectly illustrates why clock synchronization is the silent killer of distributed systems.
Bohar’s architecture prioritized tenant isolation. Each tenant had its own dedicated database instance. This is great for security and compliance, but it introduced a subtle, yet significant, problem. How do you keep time synchronized across all these isolated databases?
The core challenge stemmed from the fact that each database server, while generally synchronized via NTP (Network Time Protocol), experienced slight clock drift. These tiny discrepancies, seemingly insignificant, became major headaches when dealing with time-sensitive operations across different tenants and regions. Imagine debugging inconsistent data updates or failed scheduled tasks because of a few milliseconds difference! The need for accurate clock synchronization was paramount.
So, what was the solution? Bohar implemented a two-pronged approach:
- NTP for General Synchronization: They continued using NTP for general time synchronization across all servers. This provided a baseline level of accuracy.
- Custom Time Synchronization Service: For critical operations requiring higher accuracy within each tenant’s environment, they built a custom time synchronization service. This service periodically synchronized time against a designated, highly accurate time source within each tenant’s isolated environment.
I found that their custom service essentially acted as a “time referee” within each tenant’s database, ensuring that even with underlying NTP drift, critical operations remained consistent. Think of it as a highly precise, tenant-specific clock synchronization mechanism. Speaking of mechanisms, if you’re dealing with security in distributed systems, you might find Insane JWT vs PASETO: The Ultimate Security Showdown (2024) Guide helpful for understanding secure authentication methods.
The lessons learned were invaluable. Firstly, database-level isolation, while beneficial for security, can exacerbate clock synchronization issues. Secondly, a layered approach, combining general NTP with a custom, high-precision service, can effectively mitigate these challenges. Finally, vigilant monitoring of time drift is crucial for proactive detection and resolution.
The benefits were significant. Bohar saw improved data consistency, drastically reduced debugging efforts related to time-sensitive operations, and enhanced overall system reliability. By tackling the silent killer of distributed systems – clock synchronization – they built a more robust and dependable platform.
Trade-offs: Pros, Cons, and Real-World Balance
Choosing the right “Clock Synchronization: The Silent Killer of Distributed Systems (and How to Fight Back)” strategy involves some serious trade-offs. It’s not a one-size-fits-all situation. Let’s dive into the realities of accuracy, cost, complexity, and security.
How do I balance accuracy with my budget? Well, achieving high accuracy typically means shelling out more. Think about it: Precision Time Protocol (PTP), designed for high-precision applications, is generally more expensive to implement than Network Time Protocol (NTP). Atomic clocks and GPS receivers, while incredibly accurate, come with a hefty price tag.
It’s all about finding the sweet spot. Do you *really* need nanosecond precision, or is millisecond accuracy sufficient for your needs?
Speaking of complexity, what if my team struggles with intricate setups? Some clock synchronization techniques, like those using consensus algorithms, can be quite complex to implement and maintain. While they offer robust fault tolerance, the overhead can impact performance. Something simpler, like NTP, might be easier to manage, but it comes with its own set of limitations.
Here’s a breakdown of some common trade-offs:
- Accuracy vs. Cost: Higher accuracy (PTP, atomic clocks) usually means higher cost.
- Complexity vs. Performance: Complex algorithms (consensus-based) can impact performance. Simpler solutions (NTP) may have limitations.
- Security Considerations: NTP is vulnerable to attacks. GPS can be jammed. Secure protocols and redundancy are key.
Security is paramount. How do I protect my system from time-based attacks? Clock synchronization protocols aren’t immune to vulnerabilities. NTP, for example, has a history of security issues. GPS signals can be jammed or spoofed. Mitigating these risks requires careful planning and implementation of security measures. Consider using authenticated NTP (RFC 5905) or other secure time synchronization protocols.
Fault tolerance is another crucial consideration. What happens if my time server goes down? Distributed systems need to be resilient to clock drift and failures. Redundant time servers are a good starting point. For critical applications, explore Byzantine fault tolerance techniques, which allow the system to function correctly even if some components are providing incorrect time. Here’s a good resource on fault tolerance from MIT: Fault Tolerance Introduction.
Finally, let’s talk about event ordering. Imagine a scenario where inaccurate clocks lead to incorrect event sequences and data inconsistencies. This can be a major problem in distributed databases and transaction processing systems. Accurate “Clock Synchronization: The Silent Killer of Distributed Systems (and How to Fight Back)” is essential for maintaining data integrity and ensuring that events are processed in the correct order.
In my testing, I found that carefully considering these trade-offs upfront can save you a lot of headaches down the road. There’s no silver bullet. Choose the approach that best aligns with your specific requirements, budget, and risk tolerance. And if you’re using VSCode for your development, you might be interested in boosting your productivity, check out VSCode extension productivity: Insane Unleash Your Local Dev Powerhouse: VSCode Extension Replaces 30+ Tools (Free)
Next Steps: Actionable Implementation Plan
So, you’re ready to tackle clock synchronization and prevent it from becoming the silent killer of your distributed system? Great! Let’s walk through a practical, step-by-step implementation plan to get you started.
- Assess Requirements: Before diving in, take a moment to define your needs. How accurate do your clocks really need to be? What level of fault tolerance is acceptable? Consider the specific needs of your application. For example, a financial trading system will have much stricter requirements than a simple logging service.
- Choose the Right Technique: Now, select the right clock synchronization technique. NTP (Network Time Protocol) is a common choice for general-purpose synchronization. PTP (Precision Time Protocol) offers higher accuracy, ideal for time-sensitive applications. GPS-based solutions can also be used for highly accurate time sources, but require specialized hardware. The choice depends on your accuracy requirements and budget.
- Configure Time Servers: This is where the rubber meets the road. Set up and properly configure your time servers. If using NTP, follow best practices for selecting reliable upstream time sources (consider using the NTP Pool Project: ntppool.org). For PTP, ensure proper configuration of the PTP domain and clock hierarchy. Proper configuration is paramount to effective clock synchronization.
- Monitor Clock Drift: Don’t just set it and forget it! Implement robust monitoring to track clock drift and identify potential issues. Tools like Prometheus with Grafana can be used to visualize clock offsets over time. In my testing, I found that setting up alerts for sudden or excessive drift is crucial for proactive problem solving.
- Implement Fault Tolerance: What happens when a time server fails? Design your system to tolerate clock drift and failures. This might involve using multiple time servers, implementing clock skew compensation, or employing Byzantine fault tolerance techniques for critical applications.
- Regular Audits: Make clock synchronization a regular part of your system audits. Verify the accuracy of your clocks, review your configuration, and check for any potential vulnerabilities. Consider running automated tests to simulate clock drift and verify the system’s resilience.
Let’s dive deeper into some crucial elements:
Configuration Best Practices
- Stratum Levels: Understand NTP stratum levels. Lower stratum servers are closer to the authoritative time source. Ensure clients synchronize with servers at an appropriate stratum.
- Filtering and Jitter: Configure filtering and jitter suppression to mitigate network delays and improve accuracy. The NTP documentation has detailed guidance on this: ntp.org.
- Time Zones: Pay attention to time zones and daylight saving time. Use a consistent time zone across your distributed system to avoid confusion and errors.
Security Hardening
- Authentication: Secure your time servers with authentication to prevent unauthorized modifications.
- Firewall Rules: Restrict access to your time servers using firewall rules. Only allow trusted clients to synchronize with them.
- Regular Updates: Keep your time server software up-to-date with the latest security patches. Vulnerabilities in NTP and PTP implementations can be exploited to disrupt your system.
Tools for Monitoring and Alerting
Several tools can help you monitor clock drift and alert on anomalies:
- ntpq (NTP Query): A command-line tool for querying NTP servers and displaying synchronization information.
- chronyc: A command-line tool for managing and monitoring chronyd, an alternative NTP implementation.
- Prometheus and Grafana: Combine these tools to collect and visualize clock drift metrics over time. Set up alerts based on predefined thresholds.
By following this actionable plan, you can effectively combat clock synchronization issues and build a more reliable and robust distributed system. Remember, consistent and accurate time is the unsung hero of distributed systems. Don’t let it become your silent killer!
References
Keeping distributed systems in sync is a complex dance! I’ve compiled a list of resources that I found particularly helpful in understanding and tackling clock synchronization challenges. They cover everything from the theoretical underpinnings to practical implementation details.
- Network Time Protocol (NTP): The gold standard for time synchronization over networks. Dive into the details with RFC 5905. It’s a must-read if you’re working with NTP.
- Precision Time Protocol (PTP): For when you need sub-microsecond accuracy. IEEE 1588 is the key standard. I found that understanding the different PTP profiles was crucial in my testing.
- NIST Time and Frequency Division: Offers invaluable resources on time standards and measurement. Check out their website for publications and tools. NIST Time and Frequency
- Lamport Timestamps: A foundational concept in distributed systems. Leslie Lamport’s original paper is highly recommended.
- Vector Clocks: Another essential concept for understanding causality in distributed systems. Great for debugging issues related to clock synchronization.
- Google’s Spanner: Demonstrates how clock synchronization can be used to achieve global consistency in a globally distributed database. Their paper is a fascinating read.
- US Naval Observatory (USNO): Provides accurate time and frequency information. A reliable source for time synchronization. USNO Website
These resources offer a solid foundation for understanding clock synchronization and its impact on distributed systems. If you are grappling with “Clock Synchronization: The Silent Killer of Distributed Systems (and How to Fight Back)”, I hope these links help you on your journey!
CTA: Ensure Accurate Timekeeping in Your Distributed Systems
So, you’ve seen how insidious clock drift can be. It’s not just a minor annoyance; it can cripple your distributed system. The good news? You can fight back against this “silent killer.”
How do I actually *do* that, you ask? Start by auditing your current time synchronization setup. Are you relying solely on NTP? Is it configured correctly? I found that adding redundancy – multiple NTP servers from different pools – improved stability in my testing.
Here are some actionable steps you can take right now:
- Review your NTP configuration: Ensure your servers are pointing to reliable time sources. The NTP Pool Project is a great place to start.
- Consider PTP (Precision Time Protocol): If you need sub-millisecond accuracy, especially in environments like financial trading or scientific computing, PTP is worth exploring. Check out IEEE 802.1AS for the standard.
- Explore cloud-based time services: AWS Time Sync, Google Cloud’s time services, and Azure Time Sync provide highly accurate and managed time synchronization.
- Monitor your clock drift: Implement monitoring to track clock skew across your servers. Prometheus and Grafana can be configured to visualize this data.
What if you ignore this? Prepare for data inconsistencies, transaction rollbacks, and a debugging nightmare. Trust me, proactive clock synchronization is a much better investment than reactive firefighting. If you are using React 19, you need to ensure you are not exposed to common exploits, read up on “React 19 RCE Exploit: React2Shell EXPOSED: A Deep Dive into React 19 Server Component RCE (CVE-2025-55182) – Exploit Walkthrough & Mitigation Strategies“.
Don’t let clock synchronization be the silent killer of your distributed systems. Take action today and ensure accurate timekeeping for a more reliable and robust infrastructure. Further reading on clock synchronization best practices is available from NIST.
Frequently Asked Questions
What is clock drift and why is it a problem?
Clock drift is the phenomenon where different clocks in a distributed system diverge in their time readings due to imperfections in their oscillators. No two physical clocks, even atomic clocks, run at *exactly* the same rate. Environmental factors like temperature and voltage fluctuations can also affect the frequency of a clock’s oscillator, further contributing to drift.
Why is this a problem? Because time is fundamental to coordinating actions in a distributed system. Consider these scenarios:
- Causality Violations: If one server logs an event *before* another server processes a request related to that event, but their clocks are significantly skewed, the logs might show the request being processed *before* the event that triggered it. This can make debugging incredibly difficult and lead to incorrect conclusions about system behavior.
- Data Inconsistency: In database systems, especially those relying on last-write-wins conflict resolution, clock drift can lead to data loss or corruption. A write with a slightly older timestamp (due to a drifting clock) might overwrite a more recent write from a different server.
- Distributed Consensus Failures: Many distributed consensus algorithms (like Paxos or Raft) rely on time for leader election, timeout mechanisms, and other coordination activities. Clock drift can disrupt these algorithms, leading to instability, split-brain scenarios, or even complete system failure.
- Security Vulnerabilities: Clock drift can be exploited in security attacks. For example, replay attacks become easier if timestamps are unreliable. Certificate validation depends on accurate time; drift can lead to premature expiration or acceptance of invalid certificates.
- Scheduled Tasks Gone Awry: Cron jobs and other scheduled tasks might run at unexpected times, leading to resource contention, missed deadlines, or incorrect data processing.
Essentially, clock drift introduces non-determinism and unpredictability into a system that is designed to be reliable and consistent. Addressing clock drift is therefore crucial for building robust and dependable distributed systems. Ignoring it is like building a house on sand.
How does NTP work to synchronize clocks?
NTP (Network Time Protocol) is a widely used protocol designed to synchronize clocks over a network. It operates in a hierarchical, layered architecture, typically using UDP on port 123. Here’s a breakdown of how it works:
- Stratum Levels: NTP uses the concept of stratum levels. Stratum 0 are reference clocks, such as atomic clocks or GPS receivers. Stratum 1 servers are directly connected to these reference clocks. Stratum 2 servers synchronize with Stratum 1 servers, and so on. This hierarchy prevents a single point of failure and distributes the load.
- Client-Server Model: NTP generally operates in a client-server model. An NTP client (e.g., a server in your distributed system) sends a timestamped request to an NTP server.
- Timestamp Exchange: The NTP server records the time it receives the request (T1), the time it sends the response (T2), and includes these timestamps in the response. The client records the time it sends the request (T0) and the time it receives the response (T3).
- Calculating Offset and Delay: Using these four timestamps (T0, T1, T2, T3), the client calculates:
- Offset: An estimate of the time difference between the client and server clocks. Calculated as: `Offset = ((T1 – T0) + (T2 – T3)) / 2`
- Round-Trip Delay: An estimate of the network latency between the client and server. Calculated as: `Delay = (T3 – T0) – (T2 – T1)`
- Filtering and Averaging: NTP doesn’t just use a single measurement. It collects multiple samples over time and uses statistical filtering techniques (like Kalman filtering) to smooth out network jitter and identify outliers. This helps to improve the accuracy and stability of the clock synchronization.
- Clock Discipline: Instead of abruptly jumping the clock, NTP gradually slews the clock forward or backward to match the correct time. This prevents disruptions to running applications that rely on monotonically increasing time. The rate at which the clock is slewed is carefully controlled to avoid introducing instability.
Key Considerations for NTP Deployment:
- Choose reliable NTP servers: Use public NTP pools (e.g., pool.ntp.org) or, ideally, set up your own internal NTP servers that synchronize with a reliable reference clock.
- Configure NTP clients correctly: Ensure that NTP clients are configured to query multiple NTP servers for redundancy.
- Monitor NTP performance: Regularly monitor the offset and delay between your NTP clients and servers to identify potential problems.
- Security: Implement security measures to protect against NTP attacks, such as NTP amplification attacks.
What are the key differences between NTP and PTP?
Both NTP (Network Time Protocol) and PTP (Precision Time Protocol, IEEE 1588) are used for clock synchronization, but they are designed for different environments and offer different levels of precision. Here’s a breakdown of the key differences:
| Feature | NTP | PTP |
|---|---|---|
| Precision | Millisecond to low microsecond accuracy | Sub-microsecond to nanosecond accuracy |
| Network Requirements | Works well over general-purpose networks with varying latency and jitter. | Requires dedicated, low-latency networks with hardware timestamping support. |
| Hardware Requirements | Typically implemented in software. | Often requires specialized hardware, such as network interface cards (NICs) with hardware timestamping capabilities. |
| Complexity | Simpler to implement and configure. | More complex to implement and configure, requiring careful network design and hardware selection. |
| Protocol | Uses UDP (User Datagram Protocol). | Uses UDP or Ethernet for transport. Ethernet is common in high-precision applications. |
| Synchronization Method | Relies on software timestamping and statistical filtering to compensate for network delays. | Uses hardware timestamping at the network interface to minimize the impact of network latency and jitter. Employs master-slave hierarchy with Best Master Clock Algorithm (BMCA). |
| Use Cases | General-purpose clock synchronization for servers, desktops, and other network devices. Suitable for applications where millisecond accuracy is sufficient. | High-precision applications such as financial trading, telecommunications, industrial automation, and scientific instrumentation where sub-microsecond accuracy is critical. |
| Cost | Lower cost due to software-based implementation and simpler network requirements. | Higher cost due to specialized hardware and more complex network design. |
In summary:
- Choose NTP when: You need reasonable accuracy over a general-purpose network, and cost is a significant constraint.
- Choose PTP when: You need the highest possible accuracy, and you can afford the cost and complexity of a dedicated, low-latency network with hardware timestamping.
Think of NTP as synchronizing your watches with a radio broadcast, while PTP is like synchronizing them with an atomic clock located right next to you.
How can I monitor clock drift in my distributed system?
Monitoring clock drift is essential for maintaining the reliability and consistency of your distributed system. Here’s a comprehensive approach:
- NTP Monitoring Tools:
- `ntpq` (NTP Query Program): A standard tool for querying NTP servers and clients. Use it to check the offset, delay, jitter, and stratum level of your NTP clients. For example: `ntpq -p` will show a list of configured NTP servers and their status.
- `ntptime` (NTP Time): Another command-line tool that provides detailed information about the NTP client’s status, including the estimated time error and frequency offset.
- Grafana Dashboards: Create Grafana dashboards to visualize NTP metrics collected from your servers. Key metrics to track include:
- Offset: The difference between the local clock and the NTP server’s clock.
- Delay: The round-trip time between the client and the server. High delay can indicate network issues.
- Jitter: The variation in the delay. High jitter can also indicate network problems.
- Frequency Offset: The rate at which the local clock is drifting relative to the NTP server.
- Root Distance: The estimated error relative to the stratum 0 reference clock.