问题背景
使用linux ptp 测试时间同步报错 rogue peer delay response ,导致linux ptp 停止发送时间同步报文,从而进一步导致 接在网络内的设备不能与linux ptp 保持同步
测试设备网络拓扑
一台linux 电脑上运行linux ptp脚本,通过CANOE(可以认为此设备是个switch)连接两台具有时间同步功能的设备。采用的gPTP时间同步协议。
linux ptp脚本配置
配置如下
#
# 802.1AS example configuration containing those attributes which
# differ from the defaults. See the file, default.cfg, for the
# complete list of available options.
#
[global]
#gmCapable 1
#priority1 248
#priority2 248
#logAnnounceInterval 0
domainNumber 0
logSyncInterval -1
syncReceiptTimeout 1
neighborPropDelayThresh 800
#min_neighbor_prop_delay -20000000
#assume_two_step 1
path_trace_enabled 1
follow_up_info 1
transportSpecific 0x1
ptp_dst_mac 01:80:C2:00:00:0E
#p2p_dst_mac 01:1B:19:00:00:00
network_transport L2
delay_mechanism P2P
masterOnly 1
BMCA noop
asCapable true
inhibit_announce 0
inhibit_delay_req 1
问题排查
修改了部分上述配置,例如,将logSyncInterval 从-1 修改为-3,把间隔时间从500ms修改到125ms,多种修改,均没有效果。还是回到错误本身,既然错误是 “失常的peer delay response ”,是不是linux ptp认为 不应该收到此报文呢?
既然有此怀疑,那么动手修改同步设备的代码,让两个同步设备都不再发出 peer delay response 报文,再次连接到网络上,问题竟然就解决了!
再次回到问题,linux ptp作为同步消息的master,只需要收到peer delay req即可,response是master才应该发送的消息,而不是slave。