What's changed: Initial version
3.7Time synchronization and address translation
Covers the NTP hierarchy expressed by stratum and how to read its synchronization state, when to use the higher-precision PTP (IEEE 1588) instead, and NAT/PAT with its four address types (inside local, inside global, outside global, outside local) plus multiplexing via overload—framed as diagnosis of faults such as "log timestamps are skewed so events cannot be correlated" and "no translation is happening."
Time synchronization and address translation look unglamorous, yet they are the foundation that makes fault investigation possible at all. Correlating syslog across devices to trace causality requires every clock to agree. NAT, meanwhile, is central to internet connectivity and produces directional faults—"nothing gets translated," "only return traffic fails"—demanding the ability to reason backwards from symptom to a missing configuration line. This section builds the skill of reading the difference between a healthy and an unhealthy picture in two outputs: show ntp status and show ip nat translations.
3.7.1NTP hierarchy and sync state
- NTP (UDP 123) expresses distance from the reference with a hierarchy number called the stratum. Stratum 0 is the reference clock itself (GPS, atomic clock), stratum 1 is a server directly attached to it, and the value increases by one per synchronization hop. Stratum 16 means "unsynchronized (invalid)", so seeing it tells you the time cannot be trusted.
- Configure an upstream with
ntp server <ip>, act as a reference yourself withntp master <stratum>, and prevent tampering withntp authenticateplus key configuration. Verify withshow ntp status—checking forClock is synchronized, the stratum value, and the reference (sync source)—and withshow ntp associationsfor the candidate list and the selected source (marked*). - Common pitfalls: synchronization takes time (on the order of minutes), and the time zone setting (
clock timezone) is separate from synchronization. If NTP is healthy but the displayed time is off by nine hours, the problem is the time zone. Also, configuringservice timestamps log datetime msec localtime show-timezoneto include milliseconds and time zone in syslog makes cross-device correlation far easier. - PTP (Precision Time Protocol, IEEE 1588) achieves sub-microsecond accuracy using hardware timestamping. Topped by a grandmaster, it combines boundary clocks (segmenting and redistributing) and transparent clocks (correcting for transit delay while forwarding). Choose it where milliseconds are not enough: financial trade records, industrial control, broadcast. For ordinary device-log correlation, NTP suffices.
3.7.2The four NAT address types
- Understand NAT terminology as the cross product of "which side is the host on (inside/outside)" and "from which side is it named (local/global)." Inside local is the inside host's real address (the inside as seen from inside), inside global is how that inside host appears externally (the inside as seen from outside, i.e. the translated public address), outside global is the outside host's real address, and outside local is how the outside host is presented to the inside (usually identical to outside global).
- The variants are static NAT (a fixed one-to-one mapping, used when external users must reach a specific server), dynamic NAT (assigning free addresses from a pool, where pool exhaustion makes new connections fail), and PAT (overload), which multiplexes many inside hosts onto one global address using port numbers. Adding
overload, as inip nat inside source list 1 interface GigabitEthernet0/0 overload, turns it into PAT. - The most common omission is designating the interface roles. Translation happens only when a packet crosses from an interface marked
ip nat insideto one markedip nat outside. Even with a perfect ACL and pool, forgetting either designation means no translation occurs at all andshow ip nat translationsstays empty. This is the classic cause of "I configured it but nothing is translated."
Most-tested: stratum increases by one per hop and 16 means unsynchronized; judge health by Clock is synchronized in show ntp status; PTP uses hardware timestamping for sub-microsecond accuracy (finer than NTP); inside local is the internal real address while inside global is the translated public one; PAT multiplexes ports via overload; and without both ip nat inside and ip nat outside nothing is translated. Remember the split: "nothing is translated at all" points to interface designation, while "only new connections started failing" points to pool exhaustion.
One day a branch reports that "only some hosts cannot reach the internet." As a starting point you try to correlate syslog across devices, but the router and firewall logs are about seven minutes apart, so causality cannot be traced. Running show ntp status, the router reads Clock is synchronized, stratum 4 (healthy) while the firewall reads stratum 16. Stratum 16 means unsynchronized—the time is invalid—so until you fix it the investigation itself cannot proceed. After confirming reachability to the upstream NTP server and that UDP 123 passes, you configure ntp server correctly, wait a few minutes, and it flips to Clock is synchronized, aligning the logs so correlation works. Deciding "it is only a clock skew, deal with it later" means stacking inferences without the prerequisite for investigation and takes longer overall. With clocks aligned, the logs show that traffic from the failing hosts is not being translated at the router. show ip nat translations lists entries for the working hosts, but the number of translations stops growing past a certain point. The configuration reads ip nat inside source list 1 pool BRANCH_POOL—dynamic NAT without overload. More hosts tried to reach outside simultaneously than there are global addresses in the pool, so the pool exhausted and no new translation could be created, and only the hosts that connected later failed. Adding addresses to the pool is one answer, but with a limited allotment of global addresses the root fix is to add overload and make it PAT. PAT multiplexes on port numbers, letting one global address serve many inside hosts. Note that if the symptom had been not "only some hosts" but "no host is translated at all," the suspects would be entirely different: show ip nat translations would be completely empty, and the cause would not be pool exhaustion but a missing ip nat inside or ip nat outside designation, or an ACL that does not match the intended traffic. The breadth of the symptom—some versus all—directly tells you which layer to suspect, and that is the pattern for NAT troubleshooting.
| Symptom | Output to check | Prime suspect |
|---|---|---|
| Log timestamps disagree across devices | `show ntp status` (stratum, synchronized) | Stratum 16 means unsynchronized; reachability or UDP 123 blocked |
| NTP is synced but the displayed time is off | `show clock` and `clock timezone` | Time zone setting (separate from synchronization) |
| No host is translated at all | `show ip nat translations` is empty | Missing `ip nat inside`/`outside`, or an ACL that does not match |
| Only some hosts fail, and only later | `show ip nat statistics` (pool utilization) | Dynamic NAT pool exhaustion (no `overload`) |
| External users cannot reach an internal server | `show ip nat translations` (static entries) | No static NAT (dynamic/PAT is initiated inside-out) |
Trap: "If show ntp status shows a stratum value, the clock is synchronized" is wrong—stratum 16 is a special value meaning unsynchronized, so always check for Clock is synchronized. Also wrong: "a correct NAT pool and ACL are enough for translation"—without both the ip nat inside and ip nat outside interface designations, no translation occurs at all. And "if NTP is synced the displayed time is correct" is wrong too, because the time zone is a separate setting.
3.7.3Section summary
- NTP increments the stratum per hop and 16 means unsynchronized; judge by
Clock is synchronizedinshow ntp status, and note the time zone is a separate setting - PTP (IEEE 1588) reaches sub-microsecond accuracy with hardware timestamping; NTP suffices where millisecond accuracy meets the need
- In NAT, inside local is the internal real address and inside global the translated public one; both
ip nat insideandoutsideare required, and overload makes it PAT (port multiplexing)
Sign in to track progress — Log in.
Quick check
(just a quick review)Q1. While correlating syslog across devices to trace a fault, you find timestamps several minutes apart. Running `show ntp status` on the firewall reports stratum 16. Which combination of interpretation and next action is most appropriate?
Q2. A branch router uses dynamic NAT via `ip nat inside source list 1 pool BRANCH_POOL`. Shortly after the workday begins, some hosts that connect later cannot reach the internet, while `show ip nat translations` does show entries for hosts already working. What is the most appropriate root-cause fix?
Q3. You configured NAT from scratch, but no inside host is translated and `show ip nat translations` is completely empty. Review of the NAT pool and ACL content finds no error. What is the most appropriate next check?

