ntp: add new fields to measurements log

Include reference ID, NTP mode and source of the local transmit and
receive timestamp in the measurements log.
This commit is contained in:
Miroslav Lichvar 2016-11-09 17:31:34 +01:00
parent 33053a5e14
commit 2c877fa149
2 changed files with 22 additions and 9 deletions

View file

@ -1469,8 +1469,8 @@ called _measurements.log_. An example line (which actually appears as a single
line in the file) from the log file is shown below. line in the file) from the log file is shown below.
+ +
---- ----
2015-10-13 05:40:50 203.0.113.15 N 2 111 111 1111 10 10 1.0 \ 2016-11-09 05:40:50 203.0.113.15 N 2 111 111 1111 10 10 1.0 \
-4.966e-03 2.296e-01 1.577e-05 1.615e-01 7.446e-03 -4.966e-03 2.296e-01 1.577e-05 1.615e-01 7.446e-03 CB00717B 4B D K
---- ----
+ +
The columns are as follows (the quantities in square brackets are the values The columns are as follows (the quantities in square brackets are the values
@ -1500,6 +1500,13 @@ from the example line above):
. The peer dispersion (_epsilon_ in RFC 5905). [1.577e-05] . The peer dispersion (_epsilon_ in RFC 5905). [1.577e-05]
. The root delay (_DELTA_ in RFC 5905). [1.615e-01] . The root delay (_DELTA_ in RFC 5905). [1.615e-01]
. The root dispersion (_EPSILON_ in RFC 5905). [7.446e-03] . The root dispersion (_EPSILON_ in RFC 5905). [7.446e-03]
. Reference ID of the server's source as a hexadecimal number. [CB00717B]
. NTP mode of the received packet (_1_=active peer, _2_=passive peer,
_3_=server, _B_=basic, _I_=interleaved). [4B]
. Source of the local transmit timestamp
(_D_=daemon, _K_=kernel, _H_=hardware). [D]
. Source of the local receive timestamp
(_D_=daemon, _K_=kernel, _H_=hardware). [K]
+ +
*statistics*::: *statistics*:::
This option logs information about the regression processing to a file called This option logs information about the regression processing to a file called
@ -1746,6 +1753,8 @@ _SOF_TIMESTAMPING_TX_HARDWARE_, _SOF_TIMESTAMPING_RX_HARDWARE_, and the filter
modes should have _HWTSTAMP_FILTER_ALL_. When *chronyd* is running, no other modes should have _HWTSTAMP_FILTER_ALL_. When *chronyd* is running, no other
process should be working with the clock on the NIC. If no *hwtimestamp* process should be working with the clock on the NIC. If no *hwtimestamp*
directive is specified, *chronyd* will try to enable software timestamping. directive is specified, *chronyd* will try to enable software timestamping.
The source of the timestamps is indicated in the _measurements.log_ file if
enabled by the <<log,*log measurements*>> directive.
+ +
An example of the directive is: An example of the directive is:
+ +

View file

@ -262,6 +262,10 @@ static int server_sock_fd6;
static ADF_AuthTable access_auth_table; static ADF_AuthTable access_auth_table;
/* Characters for printing synchronisation status and timestamping source */
static const char leap_chars[4] = {'N', '+', '-', '?'};
static const char tss_chars[3] = {'D', 'K', 'H'};
/* ================================================== */ /* ================================================== */
/* Forward prototypes */ /* Forward prototypes */
@ -340,7 +344,7 @@ NCR_Initialise(void)
do_time_checks(); do_time_checks();
logfileid = CNF_GetLogMeasurements() ? LOG_FileOpen("measurements", logfileid = CNF_GetLogMeasurements() ? LOG_FileOpen("measurements",
" Date (UTC) Time IP Address L St 123 567 ABCD LP RP Score Offset Peer del. Peer disp. Root del. Root disp.") " Date (UTC) Time IP Address L St 123 567 ABCD LP RP Score Offset Peer del. Peer disp. Root del. Root disp. Refid MTxRx")
: -1; : -1;
access_auth_table = ADF_CreateTable(); access_auth_table = ADF_CreateTable();
@ -1267,9 +1271,6 @@ receive_packet(NCR_Instance inst, NTP_Local_Address *local_addr,
/* Kiss-o'-Death codes */ /* Kiss-o'-Death codes */
int kod_rate; int kod_rate;
/* Characters used to print synchronisation status */
static const char sync_stats[4] = {'N', '+', '-', '?'};
/* The estimated offset predicted from previous samples. The /* The estimated offset predicted from previous samples. The
convention here is that positive means local clock FAST of convention here is that positive means local clock FAST of
reference, i.e. backwards to the way that 'offset' is defined. */ reference, i.e. backwards to the way that 'offset' is defined. */
@ -1575,16 +1576,19 @@ receive_packet(NCR_Instance inst, NTP_Local_Address *local_addr,
/* Do measurement logging */ /* Do measurement logging */
if (logfileid != -1) { if (logfileid != -1) {
LOG_FileWrite(logfileid, "%s %-15s %1c %2d %1d%1d%1d %1d%1d%1d %1d%1d%1d%d %2d %2d %4.2f %10.3e %10.3e %10.3e %10.3e %10.3e", LOG_FileWrite(logfileid, "%s %-15s %1c %2d %1d%1d%1d %1d%1d%1d %1d%1d%1d%d %2d %2d %4.2f %10.3e %10.3e %10.3e %10.3e %10.3e %08X %1d%1c %1c %1c",
UTI_TimeToLogForm(sample_time.tv_sec), UTI_TimeToLogForm(sample_time.tv_sec),
UTI_IPToString(&inst->remote_addr.ip_addr), UTI_IPToString(&inst->remote_addr.ip_addr),
sync_stats[pkt_leap], leap_chars[pkt_leap],
message->stratum, message->stratum,
test1, test2, test3, test5, test6, test7, testA, testB, testC, testD, test1, test2, test3, test5, test6, test7, testA, testB, testC, testD,
inst->local_poll, inst->remote_poll, inst->local_poll, inst->remote_poll,
inst->poll_score, inst->poll_score,
offset, delay, dispersion, offset, delay, dispersion,
pkt_root_delay, pkt_root_dispersion); pkt_root_delay, pkt_root_dispersion, pkt_refid,
NTP_LVM_TO_MODE(message->lvm), interleaved_packet ? 'I' : 'B',
tss_chars[CLAMP(0, inst->local_tx.source, sizeof (tss_chars))],
tss_chars[CLAMP(0, rx_ts->source, sizeof (tss_chars))]);
} }
return good_packet; return good_packet;