forked from ptpd/ptpd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
429 lines (380 loc) · 19.7 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
2013-10-23 Wojciech Owczarek <[email protected]>
* 2.3.2 release
* Bug fixes / improvements since 2.3.1:
- systemd service file added and RPM spec updated
to handle systemd
- fixed segfault when shutting down NTP time service
- ptpengine:always_respect_utc_offset is now enabled
by default, to protect from clock jumps when GM
stops announcing currentUtcOffsetValid flag
- re-arranged order of InterfaceInfo fields to
fix memory alignment issues (SF bug #70)
- corrected logMessageInterval field values
for hybrid mode (SF bug #69)
- fixed NTPd check failures resulting from signals
interrupting select()
- increased statistics file line buffer size to prevent
truncation and merging of lines
- added Sequence ID to statistics log
- Solaris build fixes - linking lnsl and lsocket when
building without SNMP support
- critical: added minimum POSIX timer interval to prevent from
timers firing to quickly for the process to handle,
resulting in 100% CPU and endless signal queue
- improved processing of unicast destination, domain
and local preference lists
- CPU affinity setting moved to a separate function
- fixed incorrect PTP_UNICAST flag setting for multicast
- fixed missing management or signalling message acceptance
condition (clockid==clockid, portid=0xffff): ISPCS 2015 plugfest,
fourth missing: (clockid=0x(f), portid==portid)
- signaling.c: fixed order of grant processing for PTP messages
(ann,syn,fup,dresp,pdelayresp) instead of numeric loop,
to assist with interop where transmission request order
makes a difference to the master
- signaling.c: do not reset known clock ID when changing GMs,
to allow to keep accepting announce from other masters
- signaling.c: update unicast index when transport address
match only: fix for cache misses for non-best masters
- daemonconfig:c - reworked all config mapping macros
to functions, parseConfig now handless all operations:
parsing, quiet parsing, reload check, help - no hidden
values in dictionary anymore
- closed sf bug #64 - leaving mcast group with 0x0 address
- peer multicast group only joined when needed, not always
- logMessage now keeps hash of the last message body,
preventing from same message being repeated
- null checks getInterfaceInfo set of helper functions
in case if some data returned by getifaddrs() is null:
fixes segfaults on some exotic interface types
- signaling.c: use message type <-> smaller index number
conversion so grant table is 5-element, not 16-element:
significantly reduced memory footprint
- added dummy Makefile to src/dep to allow make commands
from that directory
- added buffer overflow protection for management
TLVs: protects against read past message length,
and against read past buffer space
* New features since 2.3.1:
- support for user variables in configuration:
- variables specified variables:name=val, and
used as @name@
- built-in variables: @pid@, @hostname@
- support for configuration templates:
- built-in
- template files
- unicast port number mask to assist with nodes
using different port IDs for negotiation
- option to accept any GM when unicast negotiation
is enabled
- UDP checksums disabled on Linux by default:
enables interop with TCs that don't correct checksums
- Added QNX support:
- clean build on QNX 6.5 out of the box
- adjfreq emulation using native ClockAdjust
- binding to CPU cores
- Experimental (but yield best results):
* interpolated getTime attached to IRQ0
* RX/TX timestamps in software on send or receive,
bypassing pcap or socket timestamping
- support for systems without getopt_long (like QNX)
- adjfreq-like behaviour on systems with adjtime only:
properly scaled adjtime() pulled into PI servo
(vastly improved sync on systems like OpenBSD and OSX),
support for drift file for those systems
- fixed preserving incorrect master address when
best master lowers priority (GM change as a result
of announce from current master, not foreign)
- PTP MIB enhanced with string values, counter support,
clearing counters and more, added some missing items
from previously supported items
- SNMP trap support for common alarm conditions
- enhanced management message support: enable/disable port,
some missing values, PTPd now properly applies
configuration when receiving SET messages
- added simple SNMP poller script: snmptpq
- SNMP MIB now using PTPd's own Enterprise number
2013-06-10 Wojciech Owczarek <[email protected]>
* 2.3.1 release
* New features since 2.3.0:
- full unicast support both in master and in slave mode:
+ support for multiple unicast destinations for masters
+ feature-complete Telecom Profile support:
* unicast negotiation for masters and slaves
* disabling BMCA for masters (also works for multicast)
* support for slaves with masters in multiple domains
* influencing slave BMCA with local preference
* serving multiple Telecom slaves at different rates
* slaves correctly negotiate message rates over supported
range of intervals until an acceptable interval is granted
+ support for unicast Peer Delay target - exotic use case
- greatly improved network robustness
- added support for slave-only builds (configure --slave-only):
allows building a binary incapable of running as master
- simple failover mechanism - ptpengine:backup_interface
- ptpengine:max_delay_max_rejected setting to unblock ptpd
rejecting all messages when max_delay set
- ptpengine:max_delay_stable to only use max_dely when clock
is stable
- selectable log timestamp format (unix or datetime)
- ptpd now compiles and runs out of he box on NetBSD, OpenBSD, FreeBSD,
OSX and Solaris and its derivatives (OpenIndiana, OmniOS etc.)
- major rework of the ACL code
- outlier filter auto-tune to improve operation in noisy environments(high PDV)
- added support for statistical filters (min/mean/median) for sync
and delay messages - min or median can be used in envifonments with high PDV
- added small step detection (millisecond level)
- added ptpengine:clock_update_timeout setting to reset slave
if no clock updates for a period of time
- when running slave-only in unicast mode, unicast address
does not have to be specified - ptpd will wait for a GM and latch onto it
- automatic Delay Request override for Hybrid and Unicast modes
- added options allowing to step the clock on startup
- improved sequence and re-ordering checks
- added support for "any domain" operation where ptpd will sync with
any available domain
- idle timeout (PTPd hands over clock control)
- clock update timeout (PTPd restarts slave on timeout)
- maximum state machine reset count - full network restart when exceeded:
allows ptpd to survive situations where network interface is removed,
shut down or IP address changes
- support for NIST/IETF leap seconds file both for master and slave
- configurable leap second handling: accept, ignore, step
- support for leap second smear for slave operation
- option to step clock on startup
- TimingDomain API: all NTP failover code removed
in favour of a generic interface for multiple time controllers.
- configurable port number - useful when running multiple instances
- periodic log file updates with slave or master information - separate
from statistics file: allows sending statistics into syslog
- support for software transmit timestamping on Linux
- lookup tables used for matching Sync and FollowUp when
no transport information available
- added periodic status updates to log file (global:periodic_updates)
- status file will always display counters for common error events
if they are non-zero (includes denied unicast grants and ignored
Announce resulting from rejected UTC properties)
- reporting on message receive and transmit rates
in the status file
- restored compatibility with 802.1AS
* Bug fixes / improvements since 2.3.0:
- added CentOS / RHEL 7.x support
- statistics code enabled by default - can be disabled
- NTPd failover code enabled by default - can be disabled
- Improved status file - more error conditions included,
message performance statistics included
- Rewritten timer subsystem allowing for easily implementing
other implementations: included is the old interval timer implementation,
and new (now default), POSIX timer implementation. This allows for
fully standards-compliant message rates. This can be disabled with
a configure flag
- ptpd now usable on systems with no adjtimex() call like OSX,
OpenBSD and LynxOS ()
- moving standard deviation algorithm fix improving the outlier
filters
- major servo.c spaghetti code cleanups
- network code cleanup
- fixed bug #66 - Ethernet interfaces no longer need IP addresses
to run PTP Ethernet transport
- fixed bug / feature request #21: timestamping initialisation on
PHC kernels
- fixed bug where ptpd would cause 100% CPU usage because of a
late TX timestamp
- fixed bug / feature request #22: prevent FMR from overwriting
best master
- improved servo stability detection: servo no longer reporting
stable when discarding most samples or heavily slewing
- ptpd will now join and leave multicast groups only when running
multicast or hybrid: allows running unicast and multicast
independently
- ptpd will now ignore unicast packets in multicast-only mode
and vice versa. In hybrid mode, only unicast Delay Request /
response is accepted; multicast management messages are always
accepted
- further autoconf improvements across all supported OSes
- added missing files to distribution
- ptpd will now recover even from critical network failures,
such as reloading drivers
- remaining memory leaks fixed
- more code cleanup, no more ajtimex() and similar calls in protocol.c
- some refactoring, constified rtOpts wherever possible
- less "dramatic" warnings about drift file
and clock stability detection
- fixed unnecessary TX timestamp attempts in PCAP mode
- fixed issue where drift file would not be correctly
written on exit under certain conditions
- other minor bugs fixed
2013-11-22 George Neville-Neil <[email protected]>, Wojciech Owczarek <[email protected]>
* 2.3.0 release
* New Features:
- IEEE 802.3 Support
- Support for reading from the Berkeley Packet Filter, resulting in lower jitter
- Configuration file support, multiple previously unsupported options
- Rewritten command line parameter handling, new parameters
- Command line options to print default configuration, print lock file, check configuration and more,
- Full help (-H) for all configuration options,
- Configuration reload support with SIGHUP,
- Rewritten logging subsystem,
- Separate log file and statistics file, SIGHUP reprints the headers
- Support for mode and interface specific lock files
- Network interface checks before startup and during config reload
- Added ./configure --sigusr2=counters - will dump PTP engine countersto current log target when SIGUSR2 received
- Support for presets - groups of PTP protocol options defining ptpd behaviour
presets available: slaveonly, masteronly, masterslave
- Support for tick adjustment as well as frequency
maximum frequency offset is now configurable and can be above 512 ppm - tick is used above 512 ppm,
- Added a compatibility option to always honour the UTC offset announced by a GM when in slave state
- Added an announce receipt timeout "grace period" for slave state
slave can wait n times timeout without fully resetting
allows a seamless failover without resetting delay values etc.,
- Added support for DELAY_DISABLED delay mode - syntonisation only
- Initial support for informing the clock subsystem about the sync status
STA_UNSYNC is unset when adjusting the clock (allows syncing hardware RTC clocks with the system clock)
also maxerror and esterror are set,
- Support for RTC clock control on Linux
- Support for legacy command line switches from previous versions
- Configurable log level for normal logs, not only debug logs.
- Generic log file handler mechanism with a simple built-in logrotate implementation
for each log file container you can specify max size and max number of files
- Extensive support for realtime statistics
online long term statistics and moving statistics
mean and std dev.
Some new features included depend on statistics support, enabled with the --enable-statistics
configure switch. Statistics rely on double precision so may be disabled for simple embedded systems
- Outlier filters based on Peirce's criterion
blocks / filters spikes from delayMS and delaySM
- Generic PI controler model
- P and I components changed from attenuations to gains
- Double precision servo allows for tighter clock control
- Clock stabilisation detection based on the standard dev of observed drift
- Clock "calibration delay"
allows a configurable delay between seeing a GM for the first time and enabling clock control
- Realtime statistics - mean and std dev of one-way delay, ofm and observed drift
- Status file: one-screen dump of information about the current state of ptpd, updated in configurable intervals.
- Support for "panic mode"
if ptpd sees offset from master above 1 second, it will pause clock updates for a given amount of time
- NTPd integration and failover
ptpd can now connect to local ntpd using mode 7 packets (code derived from ntpdc)
and using authenticated requests can enable/disable ntpd clock control.
Enable with configure --enable-ntpdc
- Dump counters + clear counters using a SIGUSR2 handler to dump all counters to the log file
configure --enable-sigusr2=counters
- Support for ACLs for management and timing messages
- Basic support for SO_TIMESTAMPING (RX, TX) on Linux
- Support for non-Ethernet interfaces on Linux (Infiniband, GRE etc.)
- Support for offset / delay asymmetry correction
- Ptpd can now prefer or require GMs with valid UTC time
- Support for setting IP DSCP values
- Periodic IGMP joins also in master mode - improved robustness against network port failures
- Support for binding PTPd to a CPU core
- Control over tick rate on Linux, allowing faster clock slewing if needed
* Bug fixes:
- TTL no longer defaults to 64 in P2P mode - in P2P it's set to 1,
- Fixed an issue whereby observed drift would be reset to 0 if it
could not be read from the drift file (empty or nonexistent drift file),
now the kernel value is used if read from file fails.
- Support for updating utmp/wtmp when stepping the clock (FR #38)
- Mean Path Delay filtering now done in float (patch #49)
- Multiple other SourceForge bugs closed: Bugs closed:
#25, #34, #26, #42, #39, #33, #46, #45, #28,
#27, #48, #54, #47, #40, #37, #53, #50, #52, #59, #60
* Cleanups and other changes:
- Major startup.c cleanup, removed the parallel daemon checks,
in favour of better lock handling and the automatic lock file
name support,
- Some minor refactoring,
- Added a TimePropertiesDS structure and removed its fields
from PtpClock
- Improved log file format with full date and interface name,
removed the "===" indents
- Delay Request interval no longer mandatory in hybrid mode,
but a warning will be issued if it's not explicitly defined -
default of 0 is used,
- Removed the experimental status of hybrid mode,
- Manual stepping of the clock no longer just resets the observed
drift: resets it or restores it based on the drift handling setting,
and sets the time immediately before writing any logs - this allows
to re-sync and stabilise time almost instantly
- Up to date man pages written
2012-06-20 George Neville-Neil <[email protected]>
* 2.2.2 release
* Leap second fix
2012-01-05 George Neville-Neil <[email protected]>
* 2.2.0 release
* Patches: 3134556, 3296405
* Added support for Mac OS X (tested on Snow Leopard and Lion)
* Protocol implementation Fixes:
* Bugs Fixed
- Client now correctly accepts the Master DelayReq rate
- DelayMS and delaySM now correctly show the sign when negative
- Sanity Flags: client now requires -g or -G for slave/master operation.
- Client can print the MAC address of its master (instead of EEUI)
- master now sends ARB timescale only with utc_offset of zero
- slave now only uses the last UTC_Offset if UTC_Valid bit is on.
- passive masters no longer become active every 12s,
- first delayreq is postponed until we receive the first sync
- -G (master with ntpd) now announces a better clock class of 13
- delayReq period is now uniformly randomized from range
- updated to the PTPv2 messages rates (sync / delayreq / announce )
- operator is warned once when the we slew the clock at maximum speed
- and several others too minor too mention
* System fixes and new features
- Frequency adjustment is now calculated in double precision
- Kernel timestamps are now in nanoseconds precision
- Timer system overhead was reduced to 16 alarms per second (was 1000)
- each reset now generates an IGMP leave/join operation to
the multicast group
- Log file is now appended, with the right permissions
- Debug messages show a timestamp
- Signals are now processed synchronously (to avoid race conditions)
- Configurable amount of logging (to avoid filling up /var/log)
- client now checks own filelock, $0 and well-known daemons.
- unicast messages can use DNS
- syslog support (-S)
- quality file can be generated with received syncs (-R)
- messages can be dumped for debug (-P)
- gnore packets that result in large deltas (-M)
- SIGUSR1 now steps the clock to the current PTP offset
- SIGUSR2 now cycles the domain number (useful for testing)
- reverted R135 timer change from integer back to floating point
- rand() is now seeded with last digits of our own mac address
- IGMP_refresh waits 100ms between drop() and add()
- checked to run without leaks inside valgrind 3.5.0
- last message received is identified by a column on the statistics log
- messages are sent to Syslog by default. reversed -S flag
- statistcs file now display /etc/ethers names (besides mac address)
- option -C is console mode with full verbosity
- startup warnings are also duplicated in stdout
- startup: lockfile is checked twice: once at init, to return
correct errorlevel, and a second time after deaemon()
- check for root uid()
- improvements in parallel daemons checking
- command line parameters are dumped at init
- Set the unicast flag when sending unicast packets
(experimental, hybrid mode only).
- Reimplemented integer64_to_internalTime not to use doubles
- Replaced divTime by div2Time
- Replaced all time.seconds = time.nanoseconds = 0 by clearTime(&time)
- Replaced all hex values by named flags
- Optimized comparison of clockIdentity in bmc.c
- Resolved issue of comparison of offsetScaledLogVariance
- Optimized bmcStateDecision not to call bmcDataSetComparison so often with the same parameters
- displayStats now uses getTime instead of gettimeofday
2011-02-01 George Neville-Neil <[email protected]>
* Add support for DNS lookup of timeserver for unicast.
* Add support for unicasting delay requests.
* Add code to dump packets on demand via the -P flag as well as in
response to updates that violate either the -M or -O flags.
2010-10-12 George Neville-Neil <[email protected]>
* 2.1.0 First main line release of PTPv2 code base
(IEEE-1588-2008)
* Add code to limit how much of an offset or delay the client is
willing to tolerate.
* Add support for BINTIME on FreeBSD which gives more accurate
packet timestamps.
* Add quality file support
* Fix significant bugs that prevented correct operation in
End-to-End mode.
* Add support for syslog.
* Add support for user configurable TTL.
* Clean up code formatting, headers, comments etc.