lsongdev / lsongdev/node-ntp

originateTimestamp equals 0 in returned packet

Offen
#3 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
JavaScript
Sterne
28
Forks
8
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Running the slightly modified example

```js
const ntp = require('..');

ntp(function(err, response){
if(err) return console.error(err);
console.log(response);
});
```

`originateTimestamp === 0` is returned which renders roundtrip delay `d` and system clock offset `t` unusable.

```js
Packet {
leapIndicator: 0,
version: 4,
mode: 4,
stratum: 2,
pollInterval: 6,
precision: 233,
referenceIdentifier: ,
referenceTimestamp: 1577013057260.7312,
originateTimestamp: 0,
receiveTimestamp: 1577013390216.6448,
transmitTimestamp: 1577013390216.6702,
rootDelay: ,
rootDispersion: ,
destinationTimestamp: 1577013390262,
time: 2019-12-22T11:16:30.216Z,
d: 1577013390261.9746,
t: 788506695085.6575
}
```

According to https://tools.ietf.org/html/rfc2030#section-6

> In unicast and anycast modes, the Receive Timestamp and Transmit Timestamp
> fields are set to the time of day when the message is sent and the
> Originate Timestamp field is copied unchanged from the Transmit
> Timestamp field of the request. It is important that this field be
> copied intact, as a NTP client uses it to avoid replays. In multicast
> mode, the Originate Timestamp and Receive Timestamp fields are set to
> 0 and the Transmit Timestamp field is set to the time of day when the
> message is sent.

I suppose that client and server operate in unicast/ anycast mode. If this is the case I would like to change:

```diff
--- a/index.js
+++ b/index.js
@@ -63,7 +63,7 @@ NTP.prototype.time = function (callback) {
NTP.createPacket = function () {
const packet = new Packet();
packet.mode = Packet.MODES.CLIENT;
- packet.originateTimestamp = Date.now();
+ packet.transmitTimestamp = Date.now();
return packet.toBuffer();
};
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne in index.js bei NTP.createPacket und reproduziere das Problem mit dem im Bericht gezeigten Beispiel. Vergleiche das konstruierte Paket mit dem zitierten Verhalten gemäß RFC 2030 und überprüfe anschließend, dass die zurückgegebenen Zeitstempel die Roundtrip-Verzögerung und den Offset der Systemuhr nutzbar machen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, node.js
Bereich
networking
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.