RFC 1708
NTP PICS PROFORMA - For the Network Time Protocol Version 3
NTP PICS PROFORMA ๐
For the Network Time Protocol Version 3 ยท Part 1 of 3 ๐ธ
- Request for Comments: 1708 โจ
- Network Working Group: D. Gowin, Vitro Corp. ๐
- Category: Informational ๐ฆ
- Date: October 1994 ๐
- Obsoletes / Updates: none listed in the title block ๐ซถ
Status of this Memo โจ
Okay so this memo is giving information for the Internet community ๐ฆ. It does not specify an Internet standard of any kind, so it's not a spec you're forced to follow ๐. Distribution of this memo is unlimited, so share it with your whole group chat ๐.
Abstract ๐
This RFC describes a PICS Proforma that's been translated into an Internet-friendly form ๐. The original was built under ISO 9646 for conformance test purposes ๐งช. This doc is for both the developers and the users of NTP (Network Time Protocol) ๐ซถ. It has specific info and performance characteristics for using NTP on the Internet ๐, and it suggests that people who want to use the synchronization capabilities of the Internet follow the characteristics set in here โจ.
For more info, reach out to Dr. David Mills at Mills@udel.edu or check out RFC 1305 ๐.
1. INTRODUCTION โจ
Bestie, to check whether a particular implementation actually conforms, you need a statement of the capabilities and options it has implemented for a given protocol ๐. That statement is called a Protocol Implementation Conformance Statement (PICS) ๐ .
2. SCOPE ๐ธ
This doc gives the PICS proforma for the Network Time Protocol (NTP), in line with the relevant requirements and following the relevant guidance from ISO/IEC 9646-2 ๐ง.
3. REFERENCE DOCUMENTS ๐
- ISO/IEC 9646-1 1990, Information technology - Open systems interconnection - Conformance testing methodology and framework - Part 1: General concepts. ๐ง
- ISO/IEC 9646-2 1990, Information technology - Open systems interconnection - Conformance testing methodology and framework - Part 2: Abstract test suite specification. ๐ง
- RFC 1305 Network Time Protocol (Version 3) - Specification, Implementation and Analysis - David L. Mills, University of Delaware - March 1992. โฐ
4. DEFINITIONS ๐
This document uses the following terms, defined in ISO/IEC 9646-1 ๐ฅ:
- a) PICS proforma;
- b) Protocol Implementation Conformance Statement (PICS);
- c) Static conformance review.
4.1 SPECIAL SYMBOLS ๐ฃ
These extra symbols are used in this document, so keep them handy ๐:
m Mandatory field/function
o.# Optional field/function
c# Conditional field/function
# Refers to a note # below the table
x Prohibited use
n/a Not applicable
Y[] Indicates the item is implemented
N[] Indicates the item is not implemented
5. INSTRUCTIONS FOR COMPLETION OF PICS ๐
Okay, so if you're the supplier of a protocol implementation that claims to conform to NTP version 3, you are required to fill out a copy of the PICS proforma from this document ๐ . You're also required to give the info that identifies both you (the supplier) and your implementation ๐ซถ.
6. COPYRIGHT ๐
Copyright release for the PICS proforma. Users of this RFC can freely reproduce the PICS proforma in this document so it can be used for its intended purpose, and they may also publish the completed PICS ๐ธ.
7. IMPLEMENTATION IDENTIFICATION ๐ชช
Here's the form for identifying your implementation ๐. It covers the supplier, the contact point for PICS queries, the implementation name and version, and any other info needed for full identification ๐ง.
+=======================================+=======================+
| SUPPLIER | |
| | |
+---------------------------------------+-----------------------+
| | |
| CONTACT POINT FOR | |
| QUERIES ABOUT THE PICS | |
| | |
+---------------------------------------+-----------------------+
| | |
| IMPLEMENTATION NAME | |
| AND VERSION | |
| | |
+---------------------------------------+-----------------------+
| | |
| OTHER INFORMATION | |
| NECESSARY FOR FULL | |
| IDENTIFICATION - e.g. | |
| NAME AND VERSION | |
| FOR MACHINES AND/OR | |
| OPERATING SYSTEMS; | |
| SYSTEM NAME | |
| | |
| | |
| | |
+=======================================+=======================+
8. NETWORK TIME PROTOCOL PICS PROFORMA ๐ฐ๏ธ
This is the actual checklist, bestie ๐. Each item has a status and a support column, and the symbols are explained in 4.1 ๐ .
8.1 DATA FORMATS ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.1.01 64 bit time
stamp 3.1 m Y[] N[]
8.2 STATE VARIABLES AND PARAMETERS ๐ง
8.2.1 COMMON VARIABLES ๐ท
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.1.01 Peer Address 3.2.1 m Y[] N[]
8.2.1.02 Peer Port 3.2.1 m Y[] N[]
8.2.1.03 Host Address 3.2.1 m Y[] N[]
8.2.1.04 Host Port 3.2.1 m Y[] N[]
8.2.1.05 Leap Indicator 3.2.1 m Y[] N[]
8.2.1.06 Mode 3.2.1 m Y[] N[]
8.2.1.07 Stratum 3.2.1 m Y[] N[]
8.2.1.08 Poll 3.2.1 m Y[] N[]
8.2.1.09 Precision 3.2.1 m Y[] N[]
8.2.1.10 Root Delay 3.2.1 m Y[] N[]
8.2.1.11 Root Dispersion 3.2.1 m Y[] N[]
8.2.1.12 Reference Clock
Identifier 3.2.1 m Y[] N[]
8.2.1.13 Reference
Timestamp 3.2.1 m Y[] N[]
8.2.1.14 Originate
Timestamp 3.2.1 m Y[] N[]
8.2.1.15 Receive
Timestamp 3.2.1 m Y[] N[]
8.2.1.16 Transmit
Timestamp 3.2.1 m Y[] N[]
8.2.2 SYSTEM VARIABLES ๐ป
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.2.01 Local Clock 3.2.2 m Y[] N[]
8.2.2.02 Clock Source 3.2.2 m Y[] N[]
8.2.3 PEER VARIABLES ๐ฏ
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.3.01 Configured Bit 3.2.3 m Y[] N[]
8.2.3.02 Update Timestamp 3.2.3 m Y[] N[]
8.2.3.03 Reachability
Register 3.2.3 m Y[] N[]
8.2.3.04 Peer Timer 3.2.3 m Y[] N[]
8.2.4 PACKET VARIABLES ๐ฆ
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.4.01 Version Number 3.2.4 m Y[] N[]
8.2.5 CLOCK FILTER VARIABLES ๐ซง
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.5.01 Filter Register 3.2.5 m Y[] N[]
8.2.5.02 Valid Data
Counter 3.2.5 m Y[] N[]
8.2.5.03 Offset 3.2.5 m Y[] N[]
8.2.5.04 Delay 3.2.5 m Y[] N[]
8.2.5.05 Dispersion 3.2.5 m Y[] N[]
8.2.6 AUTHENTICATION VARIABLES ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.6.01 Authentication
Enable Bit 3.2.6 c1 Y[] N[]
8.2.6.02 Authenticated
Bit 3.2.6 c1 Y[] N[]
8.2.6.03 Key Identifier 3.2.6 c1 Y[] N[]
8.2.6.04 Cryptographic
Keys 3.2.6 c1 Y[] N[]
8.2.6.05 Crypto Checksum 3.2.6 c1 Y[] N[]
c1: IF authentication is used THEN m ELSE o.
8.2.7 PARAMETER VALUES ๐๏ธ
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.7.01 Version Number = 3 3.2.7 c1 Y[] N[]
8.2.7.02 NTP Port = 123 3.2.7 c1 Y[] N[]
8.2.7.03 Max Stratum = 15 3.2.7 c1 Y[] N[]
8.2.7.04 Max Clock Age =
86,400 sec. 3.2.7 c1 Y[] N[]
8.2.7.05 Max Skew = 1 sec. 3.2.7 c1 Y[] N[]
8.2.7.06 Max Distance = 1 sec. 3.2.7 c1 Y[] N[]
8.2.7.07 Min Polling Interval =
6(64 sec.) 3.2.7 c1 Y[] N[]
8.2.7.08 Max Polling Interval =
10(1024 sec.) 3.2.7 c1 Y[] N[]
8.2.7.09 Min Select Clock = 1 3.2.7 c1 Y[] N[]
8.2.7.10 Max Select Clock = 10 3.2.7 c1 Y[] N[]
8.2.7.11 Min Dispersion =
0.01 sec. 3.2.7 c1 Y[] N[]
8.2.7.12 Max Dispersion =
16 sec. 3.2.7 c1 Y[] N[]
8.2.7.13 Reachability Reg
Size = 8 3.2.7 c1 Y[] N[]
8.2.7.14 Filter Size = 8 3.2.7 c1 Y[] N[]
8.2.7.15 Filter Weight = 1/2 3.2.7 c1 Y[] N[]
8.2.7.16 Select Weight = 3/4 3.2.7 c1 Y[] N[]
c1: IF implementation is intended for use on the Internet
THEN m ELSE o.
8.2.8 MODES OF OPERATION ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.8.01 Symmetric Active 3.3 o.1 Y[] N[]
8.2.8.02 Symmetric Passive 3.3 o.1 Y[] N[]
8.2.8.03 Client 3.3 o.1 Y[] N[]
8.2.8.04 Server 3.3 o.1 Y[] N[]
8.2.8.05 Broadcast 3.3 o.1 Y[] N[]
o.1:At least one mode must be implemented.
8.2.9 EVENT PROCESSING โก
8.2.9.1 TRANSMIT PROCEDURE ๐ค
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.1.01 Transmit Procedure 3.4.2 m Y[] N[]
8.2.9.1.02 Authentication 3.4.2 o Y[] N[]
8.2.9.2 RECEIVE PROCEDURE ๐ฅ
okay so this is the receive checklist ๐ item 8.2.9.2.02 is the one with the o.1 note, and that note is in the table block below, so read it there ๐ซถ
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.2.01 Receive Procedure 3.4.3 m Y[] N[]
8.2.9.2.02 Control Messages 3.4.3 o.1 Y[] N[]
8.2.9.2.03 Authentication 3.4.3 o Y[] N[]
o.1:If implemented then section 8.6 must be completed.
8.2.9.3 PACKET PROCEDURE ๐
the packet procedure checklist, bestie ๐ฆ
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.3.01 Packet Procedure 3.4.4 m Y[] N[]
8.2.9.3.02 Authentication 3.4.4 o Y[] N[]
8.2.9.4 CLOCK UPDATE PROCEDURE ๐ธ
just the one item here, and it's a big one ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.4.01 Clock Update 3.4.5 m Y[] N[]
8.2.9.5 PRIMARY CLOCK PROCEDURE ๐ง
also one item, very main character ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.5.01 Primary Clock 3.4.6 m Y[] N[]
8.2.9.6 INITIALIZATION PROCEDURES โจ
startup vibes, the setup crew ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.6.01 Initialization 3.4.7.1 m Y[] N[]
8.2.9.6.02 Authentication 3.4.7.1 o Y[] N[]
8.2.9.7 INITIALIZATION INSTANTIATION PROCEDURE ๐
the instantiation part of setup ๐ง
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.7.01 Initialization
Instantiation 3.4.7.2 m Y[] N[]
8.2.9.7.02 Authentication 3.4.7.2 o Y[] N[]
8.2.9.8 RECEIVE INSTANTIATION PROCEDURE ๐
receive plus instantiation, two in one ๐ฅ
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.8.01 Receive Instantiation 3.4.7.3 m Y[] N[]
8.2.9.8.02 Authentication 3.4.7.3 o Y[] N[]
8.2.9.9 PRIMARY CLOCK INSTANTIATION PROCEDURE โญ
same energy as the last one, but for the primary clock ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.9.01 Clock Instantiation 3.4.7.4 m Y[] N[]
8.2.9.10 CLEAR PROCEDURE ๐ซง
clearing the slate, bestie ๐ธ
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.10.01 Clear Proc. 3.4.8 m Y[] N[]
8.2.9.11 POLL UPDATE PROCEDURE ๐ฆ
the poll update checklist is giving very organised energy ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.11.01 Poll Update 3.4.9 m Y[] N[]
8.2.9.12 SYNCHRONIZATION DISTANCE PROCEDURE ๐
last one in this group, and it's a whole vibe โจ
Item No. NTP Requirements Reference Status Support
=================================================================
8.2.9.12.01 Distance Proc. 3.5 m Y[] N[]
8.3 FILTERING AND SELECTION ALGORITHMS ๐
this is where the algorithms get picky, so read the c1 note carefully ๐
8.3.1 CLOCK FILTER PROCEDURE ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.3.1.01 Clock Filter 4.1 o Y[] N[]
8.3.2 CLOCK SELECTION PROCEDURE ๐ง
three items and a note that depends on whether the clock selection procedure is implemented ๐ฎ
Item No. NTP Requirements Reference Status Support
=================================================================
8.3.2.01 Clock Selection
Procedure 4.2 o Y[] N[]
8.3.2.02 Intersection Algorithm 4.2.1 c1 Y[] N[]
8.3.2.03 Clustering Algorithm 4.2.2 c1 Y[] N[]
c1: IF Clock Selection Procedure implemented THEN m ELSE o.
8.4 LOCAL CLOCKS โฐ
the local clocks section is where the fuzzball stuff lives ๐ชฉ
Item No. NTP Requirements Reference Status Support
=================================================================
8.4.01 Logical Clock 5 m Y[] N[]
8.4.1 FUZZBALL LOCAL CLOCK IMPLEMENTATIONS ๐
two flavours here: crystal oscillator and main system clock ๐
8.4.1.1 CRYSTAL OSCILLATOR BASED IMPLEMENTATION PARAMETER VALUES ๐ฅ
this is a big parameter table, so grab a snack ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.4.1.1.01 Adjustment Interval =
4 sec. 5.1 c1 Y[] N[]
8.4.1.1.02 PPS Timeout = 60 sec. 5.1 c1 Y[] N[]
8.4.1.1.02 Step Timeout =
900 sec. 5.1 c1 Y[] N[]
8.4.1.1.02 Maximum Aperture =
q128 ms 5.1 c1 Y[] N[]
8.4.1.1.03 Frequency Weight = 16 5.1 c1 Y[] N[]
8.4.1.1.04 Phase Weight = 8 5.1 c1 Y[] N[]
8.4.1.1.05 Compliance Weight = 13 5.1 c1 Y[] N[]
8.4.1.1.06 Compliance Maximum = 4 5.1 c1 Y[] N[]
8.4.1.1.07 Compliance
Multiplier = 4 5.1 c1 Y[] N[]
c1:IF implementing a fuzzball using a crystal oscillator
based local clock THEN m ELSE o.
8.4.1.2 MAIN SYSTEM CLOCK IMPLEMENTATION PARAMETER VALUES ๐
same vibe as the crystal one, but with the main system clock values ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.4.1.2.01 Adjustment
Interval = 1 sec. 5.1 c1 Y[] N[]
8.4.1.2.02 PPS Timeout = 60 sec. 5.1 c1 Y[] N[]
8.4.1.2.02 Step Timeout =
900 sec. 5.1 c1 Y[] N[]
8.4.1.2.02 Maximum Aperture =
q512 ms 5.1 c1 Y[] N[]
8.4.1.2.03 Frequency Weight = 16 5.1 c1 Y[] N[]
8.4.1.2.04 Phase Weight = 9 5.1 c1 Y[] N[]
8.4.1.2.05 Compliance Weight = 13 5.1 c1 Y[] N[]
8.4.1.2.06 Compliance Maximum = 4 5.1 c1 Y[] N[]
8.4.1.2.07 Compliance
Multiplier = 4 5.1 c1 Y[] N[]
c1:IF implementing a fuzzball using a main system clock
THEN m ELSE o.
8.4.2 PHASE ADJUSTMENT ๐
gradual versus step, both are on the list ๐ฆ
Item No. NTP Requirements Reference Status Support
=================================================================
8.4.2.01 Gradual Phase
Adjustment 5.2 m Y[] N[]
8.4.2.02 Step Phase Adjustment 5.3 m Y[] N[]
8.5 NTP DATA FORMAT ๐งพ
this is the field-by-field breakdown, so every width matters ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.5.01 Leap Indicator
is a 2 bit code App. A m Y[] N[]
8.5.02 Version Number
is a 3 bit integer App. A m Y[] N[]
8.5.03 Mode
is a 3 bit integer App. A m Y[] N[]
8.5.04 Stratum is an 8
bit integer App. A m Y[] N[]
8.5.05 Poll is an 8 bit
signed integer App. A m Y[] N[]
8.5.06 Precision is an
8 bit signed integer App. A m Y[] N[]
8.5.07 Root Delay is a 32 bit signed
fixed-point number App. A m Y[] N[]
8.5.08 Root Dispersion is a 32 bit
fixed-point number App. A m Y[] N[]
8.5.09 Reference Identifier is a 4
octet, left justified, zero
padded ASCII string App. A m Y[] N[]
8.5.10 Reference Timestamp is a 64
bit timestamp format App. A m Y[] N[]
8.5.11 Originate Timestamp is a 64
bit timestamp format App. A m Y[] N[]
8.5.12 Receive Timestamp is a 64
bit timestamp format App. A m Y[] N[]
8.5.13 Transmit Timestamp is a 64
bit timestamp format App. A m Y[] N[]
8.5.14 Authenticator 96 bits App. A o Y[] N[]
8.6 NTP Control Messages ๐ฆ
control messages, the header and the words that go with them ๐
8.6.1 NTP Control Message Header Format ๐ง
the header is basically the ID card of a control message ๐ชช
Item No. NTP Requirements Reference Status Support
=================================================================
8.6.1.01 Leap Indicator
is a 2 bit code App. B.1 c1 Y[] N[]
8.6.1.02 Version Number
is a 3 bit integer App. B.1 c1 Y[] N[]
8.6.1.03 Mode is a 3 bit
integer App. B.1 c1 Y[] N[]
8.6.1.04 Response bit is
a 1 Bit field App. B.1 c1 Y[] N[]
8.6.1.05 Error bit is a 1
bit field App. B.1 c1 Y[] N[]
8.6.1.06 More bit is a 1
bit field App. B.1 c1 Y[] N[]
Item No. NTP Requirements Reference Status Support
=================================================================
8.6.1.07 Operation Code
is a 5 bit integer App. B.1 c1 Y[] N[]
8.6.1.08 Sequence is a 16
bit integer App. B.1 c1 Y[] N[]
8.6.1.09 Status is a 16
bit code App. B.1 c1 Y[] N[]
8.6.1.10 Association ID
is a 16 bit integer App. B.1 c1 Y[] N[]
8.6.1.11 Offset is a 16
bit integer App. B.1 c1 Y[] N[]
8.6.1.12 Count is a 16
bit integer App. B.1 c1 Y[] N[]
8.6.1.13 Data is a
maximum of 468 octets App. B.1 c1 Y[] N[]
8.6.1.14 Authenticator
96 bits App. B.1 c1 Y[] N[]
c1: IF control messages are used THEN m ELSE o.
8.6.1.1 NTP Control Message Required Values ๐
the required values, which are a little more fixed than the rest ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.6.1.1.01 Leap Indicator = 00 App. B.1 c1 Y[] N[]
8.6.1.1.02 Version Number = 3 App. B.1 c1 Y[] N[]
8.6.1.1.03 Mode = 6 App. B.1 c1 Y[] N[]
c1:IF control messages are used THEN m ELSE o.
8.6.2 System Words ๐ธ
the system words, two of them, both with their own tables ๐ง
8.6.2.1 System Status Word ๐
Item No. NTP Requirements Reference Status Support
=================================================================
8.6.2.1.01 Leap Indicator
is a 2 bit code App.B.2.1 c1 Y[] N[]
8.6.2.1.02 Clock Source is
a 6 bit integer App.B.2.1 c1 Y[] N[]
8.6.2.1.03 System Event Counter
is a 4 bit integer App.B.2.1 c1 Y[] N[]
8.6.2.1.04 System Event Code
is a 4 bit integer App.B.2.1 c1 Y[] N[]
c1:IF control messages are used THEN m ELSE o.
8.6.2.2 Peer Status Word โญ
last one in the set, and it's got its own little fields ๐ซถ
Item No. NTP Requirements Reference Status Support
=================================================================
8.6.2.2.01 Peer Status is a
5 bit code App.B.2.2 c1 Y[] N[]
8.6.2.2.02 Peer Selection
is a 3 bitinteger App.B.2.2 c1 Y[] N[]
8.6.2.2.03 Peer Event Counter
is a 4 bit integer App.B.2.2 c1 Y[] N[]
8.6.2.2.04 Peer Event Code
is a 4 bit integer App.B.2.2 c1 Y[] N[]
c1:IF control messages are used THEN m ELSE o.
8.6.2.3 Clock Status Word ๐
okay so the clock status word has a little table of its own, and it's giving neat little checklist energy ๐ Here it is:
Item No. NTP Requirements Reference Status Support
=================================================================
8.6.2.3.01 Clock Status is
an 8 bit integer App.B.2.3 c1 Y[] N[]
8.6.2.3.02 Clock Event Code
is an 8 bit integer App.B.2.3 c1 Y[] N[]
c1:IF control messages are used THEN m ELSE o.
So there are two items here ๐ฆ. Item 8.6.2.3.01 is the Clock Status, an 8 bit integer. Item 8.6.2.3.02 is the Clock Event Code, also an 8 bit integer. Both point back to App.B.2.3, and both have that c1 status. The c1 condition is the fun part: if control messages are used, the item is m, and if they aren't, it's o ๐ง
8.6.2.4 Error Status Word ๐
next up is the error status word, which is just one item but still super important ๐ซถ
Item No. NTP Requirements Reference Status Support
=================================================================
8.6.2.4.01 Error Status is
an 8 bit integer App.B.2.4 c1 Y[] N[]
c1:IF control messages are used THEN m ELSE o.
So item 8.6.2.4.01 is the Error Status, which is an 8 bit integer. It points to App.B.2.4 and uses that same c1 condition from before, so the same rule applies: m when control messages are used, o otherwise ๐ธ
9. Security Considerations ๐ฅ
Security issues are not discussed in this memo. ๐ Not one word, bestie, so please don't assume this document covers any of it.
10. References ๐
[1] Mills. D., "Network Time Protocol Version 3 - Specification, Implementation and Analysis", RFC 1305, UDEL, March 1992.
11. Author's Address ๐
Dan R. Gowin
Vitro a Tracor Company
5001 N. St. Rd. 37 (BUS)
Bloomington, IN 47404-1626
Phone: (812) 336-2299 x379
Fax: (812) 333-0415
EMail: drg508@crane-ns.nwscc.sea06.navy.MIL
๐ฆ where this page comes from
- ietf: rfc1708 1994-10
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms