欢迎淘宝搜索飞灵科技,我司相关新产品陆续上线。
匆忙翻译了一下linuxptp ptp4l的帮助手册,不尽准确,不尽详细,仅供参考。欢迎留言讨论相关问题。
1 名称
ptp4l - PTP普通时钟/边界时钟/透明时钟协议栈
2 描述
ptp4l是一个Linux上PTP协议(IEEE 1588)的实现,支持普通时钟,边界时钟和透明时钟。
3 配置选项
配置选项 | 描述 |
---|---|
-A | 自动选择延迟测量机制,运行时使用E2E,但接收到peer delay request报文后自动切换到P2P。 |
-E | E2E延迟测量机制 (默认配置) |
-P | P2P延迟测量机制 |
-2 | IEEE 802.3协议 |
-4 | UDP/IPv4协议(默认配置) |
-6 | UDP/IPv6协议 |
-H | 硬件时间戳(默认配置) |
-S | 软件时间戳 |
-L | Legacy硬件时间戳 |
-f | 指定配置文件,若没有指定,则使用默认配置。 |
-i | 指定网口(PTP port),可以多次使用指定多个网口,但该选项或配置文件中至少要指定一个。 |
-p | 指定PHC (PTP Hardware Clock) device,例如/dev/ptp0,该选项已经不推荐使用,适用于v3.5之前的内核,因为v3.5之前的内核不支持通过网口找到PHC device。 |
-s | slaveOnly模式 |
-l | 打印级别 0~7(默认6,LOG_INFO) |
-m | 将信息打印到标准输出 |
-q | 不将信息发送到系统logger |
-v | 显示版本号 |
-h | 显示help信息 |
4 长配置选项
下面每一个在配置文件中使用的选项也可以在命令行中使用,例如slaveOnly选项,可以在命令行中以下面的形式使用,
--slaveOnly 1
--slaveOnly=1
命令行中使用的配置选项的值,会覆盖配置文件中的[global]段配置选项的值。
5 配置文件
配置文件按段划分,空行和#开头的行会被忽略。
有三种段类型:
- [global]段,用来配置program选项,clock选项,默认port选项。
- port段使用被配置的网口的名字,如[eth0]段,其配置的选项会覆盖[global]段中默认port选项。port段可以为空内容,作用只是指定网口,这样命令行中不必使用-i选项。
- [unicast_master_table]段,配置单播table,后面会有介绍。
5.1 Port选项
配置选项 | 描述 | 默认值 |
---|---|---|
delayAsymmetry | 非对称延迟,传输路径和接收路径的时间差,单位ns。当server-to-client传输时间更长时为正数,client-to-server传输时间更长时为负数。 | 0 |
logAnnounceInterval | Announce报文发送时间间隔。同一个domain里的PTP设备,应该使用相同的值。时间间隔值为该值的2的次方。 | 1(2秒) |
logSyncInterval | Sync报文发送时间间隔。时间间隔值为该值的2的次方。 | 0(1秒) |
operLogSyncInterval | 时钟进入SERVO_LOCKED_STABLE状态时,请求的Sync报文时间间隔。如果配置了msg_interval_request选项,本地client port将请求远程server改变Sync报文发送时间间隔。时间间隔值为该值的2的次方。 | 0(1秒) |
logMinDelayReqInterval | 允许的最小Delay_Req报文发送时间间隔。时间间隔值为该值的2的次方。 | 0(1秒) |
logMinPdelayReqInterval | 允许的最小Pdelay_Req报文发送时间间隔。时间间隔值为该值的2的次方。 | 0(1秒) |
operLogPdelayReqInterval | 时钟进入SERVO_LOCKED_STABLE状态时,要使用的Pdelay_Req报文时间间隔。如果配置了msg_interval_request选项,本地client port将使用该Pdelay_Req报文发送时间间隔。时间间隔值为该值的2的次方。 | 0(1秒) |
inhibit_delay_req | 禁止发送任何delay request,需要配置asCapable为true。 | 0(disabled) |
announceReceiptTimeout | 没有收到Announce报文的数目,用来判断Announce报文超时。 | 3 |
syncReceiptTimeout | 没有收到sync/follow报文的数目,用于gPTP模式判断Sync是否超时,是否触发best master clock选择。 | 0(disabled) |
transportSpecific | 报文transportSpecific域,范围0~255。 | 0 |
ignore_transport_specific | 接收报文的transportSpecific域值,如果和配置的值匹配,则会被丢弃。设置该选项为1可以忽略该值的匹配。 | 0 |
path_trace_enabled | 记录Annouce报文的路径。 | 0 |
follow_up_info | 在follow_up报文包含802.1AS的数据 | 0 |
fault_reset_interval | 重置port错误的时间,单位秒,时间值为该值的2的次方。 | 4(16秒) |
fault_badpeernet_interval | 重置peer网络错误配置的时间,单位秒,时间值为该值的2的次方。 | 4(16秒) |
delay_mechanism | 延迟测量机制,E2E, P2P或者Auto。 | E2E |
hybrid_e2e | delay request/response使用单播地址 | 0 |
inhibit_multicast_service | 禁止多播,使用单播。 | 0 |
net_sync_monitor | 使能NetSync Monitor协议,该选项要求hybrid_e2e被使能。 | 0 |
unicast_listen | 单播监听 | 0 |
unicast_master_table | 选择用于单播发现的table id | 0 |
unicast_req_duration | 单播发现的时间,单位秒。 | 3600 |
ptp_dst_mac | PTP报文发送的MAC地址 | 01:1B:19:00:00:00 |
p2p_dst_mac | peer机制报文发送的MAC地址 | 01:80:C2:00:00:0E |
network_transport | 传输协议,UDPv4, UDPv6或L2 | UDPv4 |
neighborPropDelayThresh | peer delay最大阈值,单位ns,超过该值则认为对端设备是非gPTP设备 | 20000000 |
masterOnly | 绕过BMCA,使clock工作在master模式 | 0 |
G.8275.portDS.localPriority | ITU-T G.8275.1 and G.8275.2使用 | 128 |
min_neighbor_prop_delay | peer delay最小阈值,单位ns,低于该值则认为对端设备是非gPTP设备 | -20000000 |
tsproc_mode | 时间戳计算模式,用来计算offset和delay。可选择filter, raw, filter_weight, raw_weight。 | filter |
delay_filter | 延迟测量的滤波算法,可选择moving_average或moving_median。 | moving_median |
delay_filter_length | 延迟滤波采样长度 | 10 |
egressLatency | 发送延迟补偿,单位ns | 0 |
ingressLatency | 接收延迟补偿,单位ns | 0 |
boundary_clock_jbod | 允许多个PTP时钟,作为一个边界时钟来运行。要有额外的程序保证多个PTP时钟的同步。 | 0 |
udp_ttl | UDP包生存时间值 | 1 |
5.2 程序选项和时钟选项
配置选项 | 描述 | 默认值 |
---|---|---|
twoStepFlag | 两步时间戳模式,单步时间戳模式选择 | 1 |
slaveOnly | 绕过BMCA,使clock工作在slave模式 | 0 |
socket_priority | 报文优先级,0~15,只在L2协议下生效 | 0 |
gmCapable | 是否具有master能力,只对gPTP模式生效 | 1 |
priority1 | 时钟priority1属性,0~255 | 128 |
priority2 | 时钟priority2属性,0~255 | 128 |
clockClass | 时钟clockClass属性 | 248 |
clockAccuracy | 时钟clockAccuracy属性 | 0xFE |
clockIdentity | 时钟clockIdentity属性,使用默认值则会在运行时自动生成 | 000000.0000.000000 |
offsetScaledLogVariance | 时钟offsetScaledLogVariance属性 | 0xFFFF |
G.8275.defaultDS.localPriority | ITU-T G.8275.1 and G.8275.2使用 | 128 |
maxStepsRemoved | Announce报文的stepsRemoved值大于等于该值时,则不参与BMCA | 255 |
domainNumber | PTP域 | 0 |
utc_offset | TAI和UTC时间差 | 37 |
free_running | 不调整物理时钟 | 0 |
freq_est_interval | 评估本地时钟和对端时钟频率比值的时间间隔,时间间隔值为该值的2的次方。 | 1(2秒) |
assume_two_step | 按两步报文的方式,处理单步报文 | 0 |
tc_spanning_tree | 透明时钟生成树模式,在PTP网络中,实现所有透明时钟内增加Announce报文的stepsRemoved值,和相应BMCA,可以避免环形PTP报文循环。 | 0 |
tx_timestamp_timeout | 等待发送时间戳的超时时间,单位ms | 1 |
check_fup_sync | 检查sync,follow_up报文顺序 | 0 |
clock_servo | 时钟伺服器,可选择pi,ntpshm,nullf | pi |
clock_type | 时钟类型,OC,BC,E2E_TC,P2P_TC | OC |
pi_proportional_const | pi算法选项 | 0.0 |
pi_integral_const | pi算法选项 | 0.0 |
pi_proportional_scale | pi算法选项 | 0.0 |
pi_proportional_exponent | pi算法选项 | -0.3 |
pi_proportional_norm_max | pi算法选项 | 0.7 |
pi_integral_scale | pi算法选项 | 0.0 |
pi_integral_exponent | pi算法选项 | 0.4 |
pi_integral_norm_max | pi算法选项 | 0.3 |
step_threshold | 步进时钟的阈值,超过阈值,直接调整时钟时间,单位秒 | 0.0 |
first_step_threshold | 第一次步进时钟的阈值,超过阈值,直接调整时钟时间,单位秒 | 0.00002 |
max_frequency | 最大频率调整值,单位ppb | 900000000 (90%) |
sanity_freq_limit | PTP时钟和系统monotonic时钟频率偏差限制,单位ppb | 200000000 (20%) |
initial_delay | 链路延迟初始值,单位ns。设置为0的话,程序会先测量 | 0 |
ntpshm_segment | ntpshm私服使用的SHM段的数目 | 0 |
udp6_scope | IPv6多播报文的范围,默认为全局范围 | 0x0E |
uds_address | UNIX domain socket地址 | /var/run/ptp4l |
dscp_event | PTP事件报文使用的Differentiated Services Codepoint (DSCP),0~63 | 0 |
dscp_general | PTP通用报文使用的Differentiated Services Codepoint (DSCP),0~63 | 0 |
dataset_comparison | BMCA比较dataset的方法,可选择"ieee1588"或 “G.8275.x” | ieee1588 |
logging_level | log级别 | 6 (LOG_INFO) |
message_tag | 可以添加到所有打印信息中 | 空字符 |
verbose | 打印消息到标准输出 | 0 |
use_syslog | 打印消息到系统日志 | 1 |
summary_interval | 打印统计信息时间间隔,时间间隔值为该值的2的次方。 | 0(1秒) |
time_stamping | 时间戳类型,可选择hardware, software, legacy, onestep, 或p2p1step | hardware |
productDescription | 时钟描述 | ;; |
revisionData | 时钟描述 | ;; |
userDescription | 时钟描述 | 空字符 |
manufacturerIdentity | 时钟描述 | 00:00:00 |
kernel_leap | linux内核闰秒 | 1 |
timeSource | 时钟类型 | 0xA0 |
hwts_filter | 硬件时间戳过滤器设置模式,可选择normal, check, full | normal |
asCapable | 如果设置为true,就认为是gPTP设备,不再检查。 | auto |
BMCA | 最优时钟算法,可选择masterOnly,slaveOnly或ptp | ptp |
inhibit_announce | 禁止发送Annouce报文,需要使能ignore_source_id | 0 |
ignore_source_id | 忽略sync和follow_up报文的source port id检查 | 0 |
msg_interval_request | 是否使能请求调整sync和peer delay request报文的发送间隔 | 0 |
servo_num_offset_values | 时间偏差值连续小于servo_offset_threshold的数目,达到这个数目伺服器进入stable状态 | 10 |
servo_offset_threshold | 时间偏差阈值 | 0 |
slave_event_monitor | slave事件监测的UNIX domain socket地址 | 空字符 |
write_phase_mode | 使用PTP硬件写相位功能,代替调整频率偏差 | 0 |
5.3 单播发现选项
配置选项 | 描述 |
---|---|
table_id | table id,正数值 |
logQueryInterval | 单播协商时间间隔,时间间隔值为该值的2的次方。 |
peer_address | P2P单播地址 |
L2|UDPv4|UDPv6 | 传输协议 |
6 时间尺度
ptp4l作为PTP域的主时钟时,使用PTP时间还是使用UTC时间取决于时间戳类型。软件时间戳和legacy时间戳模式,使用UTC时间,硬件时间戳使用PTP时间。ptp4l使用硬件时间戳作为主时钟时,由phc2sys程序维护UTC和PTP时间的校正值。