239 lines
5.3 KiB
Markdown
239 lines
5.3 KiB
Markdown
|
|
# Cisco Nexus C93180LC-EX PTP Boundary Clock
|
||
|
|
|
||
|
|
NYATER is the second boundary clock in the PTP chain.
|
||
|
|
|
||
|
|
```text
|
||
|
|
RPi5 GM
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
WOLF-HUNTER BC
|
||
|
|
│ │
|
||
|
|
│ two QSFP+ │
|
||
|
|
▼ ▼
|
||
|
|
Eth1/5 Eth1/6
|
||
|
|
NYATER
|
||
|
|
C93180LC-EX BC
|
||
|
|
│
|
||
|
|
├─ PTP client-facing ports
|
||
|
|
└─ PTP client-facing ports
|
||
|
|
```
|
||
|
|
|
||
|
|
With the current design:
|
||
|
|
|
||
|
|
```text
|
||
|
|
RPi5 stepsRemoved 0
|
||
|
|
WOLF-HUNTER stepsRemoved 1
|
||
|
|
NYATER stepsRemoved 2
|
||
|
|
Linux client stepsRemoved 3
|
||
|
|
```
|
||
|
|
|
||
|
|
The current Nexus configuration is stored in `NYATER.ios` in the root of the PTP directory.
|
||
|
|
|
||
|
|
## 1. Base configuration
|
||
|
|
|
||
|
|
`NYATER.ios` contains:
|
||
|
|
|
||
|
|
```text
|
||
|
|
feature ptp
|
||
|
|
|
||
|
|
ptp device-type boundary-clock
|
||
|
|
ptp domain 0
|
||
|
|
ptp source 10.255.254.255
|
||
|
|
|
||
|
|
interface Ethernet1/5
|
||
|
|
ptp
|
||
|
|
|
||
|
|
interface Ethernet1/6
|
||
|
|
ptp
|
||
|
|
```
|
||
|
|
|
||
|
|
`10.255.254.255` is the address selected as the Nexus PTP source address. In this setup it is the `lo0` address; using the loopback gives PTP packets originated by NYATER a stable source address independent of which physical upstream path is selected.
|
||
|
|
|
||
|
|
Before applying the PTP config, verify that the address really exists on NYATER:
|
||
|
|
|
||
|
|
```text
|
||
|
|
show ip interface brief | include 10.255.254.255
|
||
|
|
show running-config interface loopback0
|
||
|
|
```
|
||
|
|
|
||
|
|
## 2. Apply the base PTP configuration
|
||
|
|
|
||
|
|
Enter configuration mode and apply the contents of `NYATER.ios`, or paste the equivalent configuration manually:
|
||
|
|
|
||
|
|
```text
|
||
|
|
configure terminal
|
||
|
|
|
||
|
|
feature ptp
|
||
|
|
|
||
|
|
ptp device-type boundary-clock
|
||
|
|
ptp domain 0
|
||
|
|
ptp source 10.255.254.255
|
||
|
|
|
||
|
|
interface Ethernet1/5
|
||
|
|
ptp
|
||
|
|
|
||
|
|
interface Ethernet1/6
|
||
|
|
ptp
|
||
|
|
|
||
|
|
end
|
||
|
|
copy running-config startup-config
|
||
|
|
```
|
||
|
|
|
||
|
|
`Ethernet1/5` and `Ethernet1/6` are the two links from WOLF-HUNTER's Mellanox ports.
|
||
|
|
|
||
|
|
## 3. Expected upstream behavior
|
||
|
|
|
||
|
|
When both WOLF-HUNTER links are healthy, NYATER should select one as the active upstream PTP port and leave the other as the redundant path.
|
||
|
|
|
||
|
|
Expected output:
|
||
|
|
|
||
|
|
```text
|
||
|
|
show ptp brief
|
||
|
|
|
||
|
|
PTP port status
|
||
|
|
-----------------------------------
|
||
|
|
Port State
|
||
|
|
--------------------- ------------
|
||
|
|
Eth1/5 Slave
|
||
|
|
Eth1/6 Passive
|
||
|
|
```
|
||
|
|
|
||
|
|
The exact choice may be reversed; `Eth1/6 Slave` and `Eth1/5 Passive` is equally valid.
|
||
|
|
|
||
|
|
The important points are:
|
||
|
|
|
||
|
|
```text
|
||
|
|
- one WOLF-facing port is Slave
|
||
|
|
- the other WOLF-facing port is Passive
|
||
|
|
- PTP Clock state is Locked
|
||
|
|
- grandmaster identity is still the RPi5
|
||
|
|
- steps removed is 2
|
||
|
|
- domain is 0
|
||
|
|
- UTC offset received in Announce packets is 37
|
||
|
|
```
|
||
|
|
|
||
|
|
## 4. Add a downstream PTP client
|
||
|
|
|
||
|
|
For a normal Linux server connected directly to a physical Nexus port, enable PTP on that port:
|
||
|
|
|
||
|
|
```text
|
||
|
|
configure terminal
|
||
|
|
|
||
|
|
interface Ethernet1/<clientPort>
|
||
|
|
ptp
|
||
|
|
|
||
|
|
end
|
||
|
|
copy running-config startup-config
|
||
|
|
```
|
||
|
|
|
||
|
|
For example:
|
||
|
|
|
||
|
|
```text
|
||
|
|
interface Ethernet1/10
|
||
|
|
ptp
|
||
|
|
```
|
||
|
|
|
||
|
|
No separate per-client PTP source address is required. The existing global:
|
||
|
|
|
||
|
|
```text
|
||
|
|
ptp source 10.255.254.255
|
||
|
|
```
|
||
|
|
|
||
|
|
continues to be used by NYATER.
|
||
|
|
|
||
|
|
Once the downstream Linux client is active and the Nexus is locked upstream, that client-facing port should normally appear as `Master`.
|
||
|
|
|
||
|
|
Example:
|
||
|
|
|
||
|
|
```text
|
||
|
|
show ptp brief
|
||
|
|
|
||
|
|
Eth1/5 Slave
|
||
|
|
Eth1/6 Passive
|
||
|
|
Eth1/10 Master
|
||
|
|
```
|
||
|
|
|
||
|
|
Repeat only the interface-level `ptp` command for every additional direct downstream client port.
|
||
|
|
|
||
|
|
## 5. Verification commands
|
||
|
|
|
||
|
|
The most useful operational commands are:
|
||
|
|
|
||
|
|
```text
|
||
|
|
show ptp clock
|
||
|
|
show ptp brief
|
||
|
|
show ptp packet
|
||
|
|
```
|
||
|
|
|
||
|
|
Your healthy output should resemble:
|
||
|
|
|
||
|
|
```text
|
||
|
|
PTP Device Type : boundary-clock
|
||
|
|
PTP Source IP Address : 10.255.254.255
|
||
|
|
Clock Domain : 0
|
||
|
|
PTP Clock state : Locked
|
||
|
|
Steps removed : 2
|
||
|
|
```
|
||
|
|
|
||
|
|
`show ptp packet` is useful for confirming that Announce packets still carry the RPi5 grandmaster identity and the expected UTC offset:
|
||
|
|
|
||
|
|
```text
|
||
|
|
gm_id=<RPi5 clock identity>
|
||
|
|
utc_offset=37
|
||
|
|
```
|
||
|
|
|
||
|
|
It also exposes Sync, Follow_Up, Delay_Req and Delay_Resp traffic and is useful when investigating offset or path-delay behavior.
|
||
|
|
|
||
|
|
## 6. Current known-good state
|
||
|
|
|
||
|
|
A known-good state observed on NYATER had:
|
||
|
|
|
||
|
|
```text
|
||
|
|
PTP Device Type : boundary-clock
|
||
|
|
PTP Source IP Address : 10.255.254.255
|
||
|
|
Clock Domain : 0
|
||
|
|
PTP Clock state : Locked
|
||
|
|
Steps removed : 2
|
||
|
|
Eth1/5 : Slave
|
||
|
|
Eth1/6 : Passive
|
||
|
|
gm_id : 88a29efffe826ce6
|
||
|
|
utc_offset : 37
|
||
|
|
```
|
||
|
|
|
||
|
|
Use that as a topology sanity check. The active/passive physical ports may swap, but the grandmaster identity should not change merely because the redundant path changes.
|
||
|
|
|
||
|
|
## 7. What the `ptp source` address does
|
||
|
|
|
||
|
|
The `ptp source 10.255.254.255` setting selects the source IP address used by PTP/UDP packets originated by NYATER. It does **not** mean the Nexus gets its time from `lo0`.
|
||
|
|
|
||
|
|
The actual timing reference is still selected by PTP/BMCA through the WOLF-HUNTER-facing ports:
|
||
|
|
|
||
|
|
```text
|
||
|
|
RPi5 -> WOLF-HUNTER -> NYATER
|
||
|
|
```
|
||
|
|
|
||
|
|
## 8. Troubleshooting
|
||
|
|
|
||
|
|
If NYATER is not locked:
|
||
|
|
|
||
|
|
```text
|
||
|
|
show ptp clock
|
||
|
|
show ptp brief
|
||
|
|
show ptp packet
|
||
|
|
show interface Ethernet1/5
|
||
|
|
show interface Ethernet1/6
|
||
|
|
```
|
||
|
|
|
||
|
|
Check that:
|
||
|
|
|
||
|
|
```text
|
||
|
|
- `feature ptp` is enabled
|
||
|
|
- domain is 0 everywhere
|
||
|
|
- both WOLF-facing ports have `ptp`
|
||
|
|
- one upstream port receives Announce/Sync packets
|
||
|
|
- the received gm_id is the RPi5 identity
|
||
|
|
- WOLF-HUNTER itself is synchronized upstream
|
||
|
|
```
|
||
|
|
|
||
|
|
If a downstream client is not synchronizing, first confirm its Nexus port has the interface-level `ptp` command and appears as `Master` in `show ptp brief`.
|