同步以太网 - SyncE

SyncE 是 ITU-T 标准,用于通过以太网物理层传输时钟信号,以通过使用网络中符号的传输速率传播频率来同步整个网络中的时钟。专用通道 ESMC 管理此同步,如 ITU-T Rec. G.8264 标准中所述。

Cumulus Linux 交换机包括 SyncE 控制器和 SyncE 守护程序。

  • SyncE 控制器读取性能计数器,以计算物理层上发送和接收以太网符号之间的差异,从而微调时钟频率。
  • SyncE 守护程序 (synced)
    • 管理在使用以太网同步消息通道 (ESMC) 的所有启用 SyncE 的端口上发送和接收 SSM
    • 管理同步层级结构,并运行主时钟选择算法,以从 SSM 中的 QL 中选择最佳参考时钟。

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 固件

  1. NVIDIA 企业支持门户下载所有 SyncE 固件文件。

  2. 将 SyncE 固件文件上传到交换机。

  3. 对每个文件使用 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.
    
  4. 完全重置系统,方法是断开电源至少 30 秒。

基本配置

基本 SyncE 配置要求您

  • 在交换机上启用 SyncE。
  • 在至少一个接口上配置 SyncE,以便该接口成为传递到选择算法的时序源。
  • 设置 SyncE 捆绑 ID,以防止在多个链路来自同一时钟源时出现环路。您可以设置介于 1 到 256 之间的值。

下面显示的基本配置使用默认 SyncE 设置

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 跟踪质量等级低于特定值的源。质量等级可以是:eec1eeecssu-bssu-aprceprcprtceprtc,其中 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

ITU G.781