Library to parse NTP response packets according to RFC 5905 into a easy-to-use structure. It does not apply any validations or calculations regarding the time but solely parses the data.
See buffcode/ntp-time-sync for an implementation.
yarn add ntp-packet-parserimport { NtpPacketParser } from "ntp-packet-parser";
/** const udpPacket = new Buffer(...); **/
const result = NtpPacketParser.parse(udpPacket);var NtpPacketParser = require("ntp-packet-parser").NtpPacketParser;
/** const udpPacket = new Buffer(...); **/
var result = NtpPacketParser.parse(udpPacket);The response from NtpPacketParser.parse will return the following object structure:
| Property | Type | Description |
|---|---|---|
| leapIndicator | Integer |
Warning of an impending leap second to be inserted or deleted in the last minute of the current month |
| version | Integer |
NTP version number, currently 4 |
| mode | Integer |
Request/response mode |
| stratum | Integer |
Stratum of the server |
| poll | Integer |
Integer representing the maximum interval in log2 seconds between successive messages (Note: you need to apply Math.pow(2, <value>) to get the real value) |
| precision | Integer |
Integer representing the precision of the system clock in log2 seconds (Note: you need to apply Math.pow(2, <value>) to get the real value) |
| rootDelay | Date |
Total round-trip delay to the reference clock |
| rootDispersion | Date |
Total dispersion to the reference clock |
| referenceId | String |
String to identify the particular server or reference clock |
| referenceTimestamp | Date |
Time when the system clock was last set or corrected |
| originTimestamp | Date |
Time at the client when the request departed for the server |
| receiveTimestamp | Date |
Time at the server when the request arrived from the client |
| transmitTimestamp | Date |
Time at the server when the response left for the client |
To get the relative time for any Date property, calculate the difference between "Jan 01 1900 GMT" and the given date.
let rootDelayInMilliseconds = result.rootDelay.getTime() - new Date("Jan 01 1900 GMT").getTime(); For further explanations on the possible values of these properties please refer to RFC 5909, Page 19ff.
Some tests regarding structure, response and error handling exist. To run them locally:
yarn testPlease file a PR against master.