Re: příjem NTP ESP8266/32

Dodo Racek dodoracek na gmail.com
Sobota Červenec 23 23:20:12 CEST 2022


Okrem precitaneho casu z paketu sledujte aj stratum.
Cim nizsie cislo, tym lepsie. (0- atomove hodiny, 1- synchronizovane voci
atomovym hodinam, 2- synchronizovane voci 1, atd...) na internete bezne
server bude mat stratum 2-3.
Server MUSI mat stratum rovnake cislo.
Ak serveru vypadne synchronizacia na presnejsi nadradeny, tak to "oznami"
klientom zmenou hodnoty v stratum. Cisla nad 10 sa pouzivaju pre nepresny
cas (lokalny oscilator bez synchronizacie), takemu casu sa neveri.

Ked sa nejedna o utok, ale o to, ze aj nadradeny server stratil presny cas
a oznamuje bludy, tak vam nepomoze ani 1000 nacitani a porovnavani.

Ak je NTP server napr. cisco switch, alebo router, tak obycajne nema
vlastne HW hodiny. Po zapnuti, alebo reboote oznamuje klientom nezmyselny
cas az do chvile, kym sa nezosynchronizuje s nadradenym ntp sevrom. To moze
trvat aj 15 min. Oznamuje ale definovanym (nakonfigurovanym) vysokym cislom
pre stratum.

Voci akemu NTP serveru (FQDN,IP) sa zvyknete synchronizovat?


Dodo

Dňa so 23. 7. 2022, 21:28 Petr Zapadlo <zapik na email.cz> napísal(a):

> Zdravím,
>
> na většině projektů, kde je  třeba   čas, tak ho synchronizuji z NTP.
> Občas (třeba  jednou za půl roku) se stane, že ESP získá špatný čas.
> Pokusil jsem se to eliminovat  - načítám čas 3x a porovnávám - použiji
> dvě hodnoty, které mají minimální rozestup. (pokud se nesejdou, tak to
> ignoruji a zkouším znova)
>
> Situace se zlepšila, přesto občas k problému dojde. Zdá se, že četnost
> nějak závisí i na kvalitě internetové linky.  U mě doma se to prakticky
> neděje (Metronet, DSL, modem Terminator) , ale u známé se to děje
> poměrně často (měsíčně) (O2, DSL, modem ZTE), u syna tak jednou za půl
> roku (kabelovka Vodafone).
>
> Vypadá to, že za nějakých podmínek projde UDP stackem v ESP i paket,
> který není v pořádku - asi má i vadný checksum, ale vzhledem k četnosti
> to nejsem schopen nijak ověřit.  Případně projde nesmyslný paket (ale to
> by měl eliminovat požadavek na 2 stejné hodnoty).
>
> Jak se divám do struktury NTP paketu, tak tam už žádný kontrolní
> mechanizmus není. (dívám se dobře?)
>
> Základní kus kodu je vzat z mnohokrát opakovaného příkladu:
>
> Poslání paketu:
>
>   memset(packetBuffer, 0, NTP_PACKET_SIZE);
>    // Initialize values needed to form NTP request
>    // (see URL above for details on the packets)
>    packetBuffer[0] = 0b11100011;   // LI, Version, Mode
>    packetBuffer[1] = 0;     // Stratum, or type of clock
>    packetBuffer[2] = 6;     // Polling Interval
>    packetBuffer[3] = 0xEC;  // Peer Clock Precision
>    // 8 bytes of zero for Root Delay & Root Dispersion
>    packetBuffer[12]  = 49;
>    packetBuffer[13]  = 0x4E;
>    packetBuffer[14]  = 49;
>    packetBuffer[15]  = 52;
>
>    // all NTP fields have been given values, now
>    // you can send a packet requesting a timestamp:
>    _ntp_udp.beginPacket(timeServerIP, 123); //NTP requests are to port 123
>    _ntp_udp.write(packetBuffer, NTP_PACKET_SIZE);
>    _ntp_udp.endPacket();
>
>
> Příjem paketu:
>
> _ntp_udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into
> the buffer
>
>      //the timestamp starts at byte 40 of the received packet and is
> four bytes,
>      // or two words, long. First, esxtract the two words:
>
>      unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
>      unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);
>
>
> Jak zvýšit spolehlivost a eliminovat blbý čas?
>
>
> Díky
>
> Petr
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20220723/9718b1a1/attachment-0001.htm>


Další informace o konferenci Hw-list