RFC Errata


Errata Search

 
Source of RFC  
Summary Table Full Records

RFC 4330, "Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI", January 2006

Note: This RFC has been obsoleted by RFC 5905

Source of RFC: INDEPENDENT

Errata ID: 5895
Status: Rejected
Type: Technical
Publication Format(s) : TEXT

Reported By: Daniel Loffgren
Date Reported: 2019-11-07
Rejected by: Adrian Farrel
Date Rejected: 2019-11-07

Section 4 says:

   Root Delay: This is a 32-bit signed fixed-point number indicating the
   total roundtrip delay to the primary reference source, in seconds
   with the fraction point between bits 15 and 16.  Note that this
   variable can take on both positive and negative values, depending on
   the relative time and frequency offsets.  This field is significant
   only in server messages, where the values range from negative values
   of a few milliseconds to positive values of several hundred
   milliseconds.

It should say:

   Root Delay: This is a 32-bit unsigned fixed-point number indicating
   the total roundtrip delay to the primary reference source, in seconds
   with the fraction point between bits 15 and 16.  This field is
   significant only in server messages.

Notes:

RFC 4330 claims the root delay is a number indicating the "total roundtrip delay to the primary reference source". As the minimum amount of time it can take to reach the other server is zero, the delay must be greater than or equal to zero. A sign should never be necessary for root delay alone.

NTPv3 (RFC 1305) defines the root delay type to be "…a signed fixed-point number indicating the total roundtrip delay to the primary reference source at the root of the synchronization subnet, in seconds. Note that this variable can take on both positive and negative values, depending on clock precision and skew."

While NTPv3 clearly indicates that it should be signed, it should still never be possible to populate this with a negative value since it is still a total roundtrip delay.

NTPv4 (RFC 5905) changes the root delay type to be the NTP Short Format, which "…includes a 16-bit unsigned seconds field and a 16-bit fraction field."

RFC 5905's Code Skeleton also has implementations that treat the root delay field as entirely unsigned:
/*
* Timestamp conversion macroni
*/
#define FRIC 65536. /* 2^16 as a double */
#define D2FP(r) ((tdist)((r) * FRIC)) /* NTP short */
#define FP2D(r) ((double)(r) / FRIC)

p->rootdelay = FP2D(r->rootdelay);

x.rootdelay = D2FP(s.rootdelay);
--VERIFIER NOTES--
RFC 4330 has been obsoleted by RFC 5905, an IETF standards track document. It is, therefore, inappropriate to continue to make errata reports against RFC 4330.

It may be worth noting that in RFC 5905, the 'Root Delay' field of the NTP message is described as:

Total round-trip delay to the reference clock, in NTP short format.

Report New Errata