同步以太网 - SyncE
SyncE 是 ITU-T 标准,用于通过以太网物理层传输时钟信号,以通过使用网络中符号的传输速率传播频率来同步整个网络中的时钟。专用通道 ESMC 管理此同步,如 ITU-T Rec. G.8264 标准中所述。
Cumulus Linux 交换机包括 SyncE 控制器和 SyncE 守护程序。
- SyncE 控制器读取性能计数器,以计算物理层上发送和接收以太网符号之间的差异,从而微调时钟频率。
- SyncE 守护程序 (
synced
)
Cumulus Linux 按照以下方式构建 SyncE 时钟标识
- 高位 3 个字节来自基本 MAC 地址的高位 3 个字节 (OUI)。
- 中间 2 个字节为 0xff 0xfe。
- 低位 3 个字节来自基本 MAC 地址的低位 3 个字节。
- 只有 NVIDIA SN3750-SX 交换机和 NVIDIA SN5400 交换机支持 SyncE。
- 1G 接口上的 SyncE 仅支持 1000BASE-SX 收发器、1000BASE-LX 收发器和 ADVA 5401 GrandMaster 收发器。
- 当您在启用 PTP 的交换机上配置 SyncE 时,请配置ITU-T 噪声传递。
- 要在运行 Cumulus Linux 5.11 或更高版本的 SN5400 交换机上使用 SyncE,您必须升级 SyncE 固件。请参阅下文中的在 SN5400 交换机上升级 SyncE 固件。
在 NVIDIA SN5400 交换机上升级 SyncE 固件
运行 Cumulus Linux 5.11 及更高版本的 NVIDIA SN5400 交换机需要固件升级才能使用 SyncE。
要在 SN5400 交换机上升级 SyncE 固件
从 NVIDIA 企业支持门户下载所有 SyncE 固件文件。
将 SyncE 固件文件上传到交换机。
对每个文件使用
sudo flint
命令升级固件;例如cumulus@switch:~$ sudo flint -d /dev/mst/mt53120_pciconf0 -i MC000030_HIPPO_ALBATROSS_CLKBRD1_CLK_FW_UPGRADE_REV0100.bin burn Current FW version on flash: 0.0 New FW version: 1.0 -I- Downloading FW ... FSMST_INITIALIZE - OK Writing COMPID_CLOCK_SYNC_EEPROM component - OK FSMST_LOCKED - OK FSMST_DOWNSTREAM_DEVICE_TRANSFER - OK -I- Component FW burn finished successfully. -I- To load new FW run reboot machine.
cumulus@switch:~$ sudo flint -d /dev/mst/mt53120_pciconf0 -i MC000031_HIPPO_ALBATROSS_CLKBRD2_CLK_FW_UPGRADE_REV0100.bin burn Current FW version on flash: 0.0 New FW version: 1.0 -I- Downloading FW ... FSMST_INITIALIZE - OK Writing COMPID_CLOCK_SYNC_EEPROM component - OK FSMST_LOCKED - OK FSMST_DOWNSTREAM_DEVICE_TRANSFER - OK -I- Component FW burn finished successfully. -I- To load new FW run reboot machine.
完全重置系统,方法是断开电源至少 30 秒。
基本配置
基本 SyncE 配置要求您
- 在交换机上启用 SyncE。
- 在至少一个接口上配置 SyncE,以便该接口成为传递到选择算法的时序源。
- 设置 SyncE 捆绑 ID,以防止在多个链路来自同一时钟源时出现环路。您可以设置介于 1 到 256 之间的值。
下面显示的基本配置使用默认 SyncE 设置
- 接口上的频率源优先级设置为 100。
- 在接口启动后,SyncE 等待的时间量设置为 5 分钟,之后才将该接口用于同步。
cumulus@switch:~$ nv set system synce enable on
cumulus@switch:~$ nv set interface swp2 synce enable on
cumulus@switch:~$ nv set interface swp2 synce bundle-id 10
cumulus@switch:~$ nv config apply
编辑 /etc/synced/synced.conf
文件以配置接口,然后启用并启动 SyncE 服务。在 /etc/synced/synced.conf
文件中添加接口部分可在该接口上启用 SyncE。
以下示例在 swp2 上启用 SyncE。
cumulus@switch:~$ sudo nano /etc/synced/synced.conf
...
# NVUE SyncE state is enable on
[global]
twtr_seconds=300
priority=1
[swp2]
bundle=10
cumulus@switch:~$ sudo systemctl enable synced.service
cumulus@switch:~$ sudo systemctl start synced.service
可选全局配置
等待恢复时间
等待恢复时间是指 SyncE 在为消息打开以太网同步消息通道 (ESMC) 之前等待每个端口启动的秒数。您可以设置介于 0 到 720(12)分钟之间的值。默认值为 300 秒(5 分钟)。
以下命令示例将等待恢复时间设置为 180 秒(3 分钟)
cumulus@switch:~$ nv set system synce wait-to-restore-time 180
cumulus@switch:~$ nv config apply
编辑 /etc/synced/synced.conf
文件以更改 twtr_seconds setting
设置,然后重新启动 SyncE 服务。
cumulus@switch:~$ sudo nano /etc/synced/synced.conf
...
[global]
twtr_seconds=180
cumulus@switch:~$ sudo systemctl restart synced.service
优先级
您可以设置时钟源的优先级。最低优先级为 1,最高优先级为 256。如果两个时钟源具有相同的优先级,则交换机使用最低的时钟源。
以下示例命令将优先级设置为 256
cumulus@switch:~$ nv set system synce provider-default-priority 256
cumulus@switch:~$ nv config apply
编辑 /etc/synced/synced.conf
文件以更改 priority
设置,然后重新启动 SyncE 服务。
cumulus@switch:~$ sudo nano /etc/synced/synced.conf
...
[global]
twtr_seconds=180
priority=256
cumulus@switch:~$ sudo systemctl restart synced.service
最低可接受质量等级
您可以阻止 SyncE 跟踪质量等级低于特定值的源。质量等级可以是:eec1
、eeec
、ssu-b
、ssu-a
、prc
、eprc
、prtc
或 eprtc
,其中 eec1
是最低质量等级,eprtc
是最高质量等级。
运行 nv set system synce min-acceptable-ql <quality-level>
命令。以下示例阻止 SyncE 跟踪质量等级低于 ssu-b
的源
cumulus@switch:~$ nv set system synce min-acceptable-ql ssu-b
cumulus@switch:~$ nv config apply
编辑 /etc/synced/synced.conf
文件以添加 min_ql
参数,然后重新启动 SyncE 服务。以下示例阻止 SyncE 跟踪质量等级低于 ssu-b
的源
cumulus@switch:~$ sudo nano /etc/synced/synced.conf
...
min_ql=ssu-b
cumulus@switch:~$ sudo systemctl restart synced.service
日志记录
您可以设置 SyncE 服务使用的日志记录级别
critical
级别记录严重错误和通知。debug
级别记录细粒度的信息事件,这些事件对于调试应用程序最有用。error
级别记录错误。info
级别记录信息性消息。notice
级别记录通知。
以下示例命令将日志记录级别设置为 debug
。
cumulus@switch:~$ nv set system synce log-level debug
cumulus@switch:~$ nv config apply
编辑 /etc/synced.conf
文件以更改 log-level
设置,然后重新加载 SyncE 服务。
cumulus@switch:~$ sudo nano /etc/synced/synced.conf
...
[global]
twtr_seconds=180
priority=256
loglevel=debug
cumulus@switch:~$ sudo systemctl reload synced.service
可选接口配置
频率源优先级
时钟选择算法使用接口上的频率源优先级在两个具有相同 QL 的源之间进行选择。您可以指定介于 1(最高优先级)和 256(最低优先级)之间的值。默认值为 1。
以下命令示例将 swp2 上的优先级设置为 10,将 swp2 上的优先级设置为 20,并将 swp3 上的优先级设置为 10
cumulus@switch:~$ nv set interface swp1 synce provider-priority 10
cumulus@switch:~$ nv set interface swp2 synce provider-priority 20
cumulus@switch:~$ nv set interface swp3 synce provider-priority 10
cumulus@switch:~$ nv config apply
编辑 /etc/synced.conf
文件以更改接口的 priority
设置,然后重新启动 SyncE 服务。
cumulus@switch:~$ sudo nano /etc/synced/synced.conf
...
[global]
twtr_seconds=180
priority=256
log-level=debug
[swp1]
priority=10
[swp2]
priority=20
[swp3]
priority=10
cumulus@switch:~$ sudo systemctl restart synced.service
故障排除
显示 SyncE 配置和计数器
要显示全局 SyncE 配置,请运行 NVUE nv show system synce
命令或 Linux syncectl show status
命令。
要显示特定接口的 SyncE 配置,请运行 NVUE nv show interface <interface-id> synce
命令或 Linux syncectl show interface status <interface>
命令。
cumulus@switch:~$ nv show system synce
operational applied
------------------------- ----------------------------------------------------------------- -------
enable On on
log-level notice
provider-default-priority 10 10
wait-to-restore-time 40 40
clock-identity 0x849e00fffe00ca00
local-clock-quality eec1
network-type 1
summary Group #0: TRACKING holdover acquired on swp1. freq_diff: 77 (ppb)
要显示特定接口的 SyncE 统计信息,请运行 NVUE nv show interface <interface-id> counters synce
命令或 Linux syncectl show interface counters <interface
命令
cumulus@switch:~$ nv show interface swp2 counters synce
Packet Type Received Transmitted
--------------------- ------------ ------------
ESMC 700 708
ESMC Error 0 0
ESMC DNU 549 0
ESMC EEC1 1 558
ESMC E-EEC 0 0
ESMC SSU B 0 0
ESMC SSU A 0 0
ESMC PRC 150 150
ESMC E-PRC 0 0
ESMC PRTC 0 0
ESMC E-PRTC 0 0
ESMC Unknown 0 0
清除 SyncE 接口计数器
要清除特定 SyncE 接口的计数器,请运行 NVUE nv action clear interface <interface> counters synce
命令或 Linux syncectl clear interface counters <interface>
命令。
cumulus@switch:~$ nv action clear interface swp1 counters synce
swp1 counters cleared
Action succeeded
要清除所有 SyncE 接口的计数器,请运行 syncectl clear counters
命令。
要查看所有 syncectl
命令,请运行 syncectl -h
。