<div dir="auto">Su riesenia, kde nie je nutny absolutne presny cas, ale je nutny *rovnaky* cas v celej infrastrukture. <div dir="auto"><br></div><div dir="auto">Nerobia to len zariadenia cisco, ale routre mnohych inych vyrobcov. </div><div dir="auto"><br></div><div dir="auto">Protokol NTP na to pamata, ale je potrebne trochu chapat suvislosti a nie iba vybrat 4 Byty z komunikacie.<br><div dir="auto"><br></div><div dir="auto">Dodo</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Dňa ne 24. 7. 2022, 0:43 Petr Labaj <<a href="mailto:labaj@volny.cz">labaj@volny.cz</a>> napísal(a):<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sakryš, to je ale chytrý server, ten Cisco switch.<br>
Má blbě čas, ale stejně ho vrátí a jenom nastaví nějaký parametr.<br>
<br>
Kdysi jsem musel napsat vlastní časový server (s protokolem rdate).<br>
Tak jsem to udělal jednoduše tak, že dokud neměl od nadřízeného serveru <br>
přesný čas, tak prostě službu neposkytoval a žádost odmítl.<br>
Rozumný klient (toho jsem psal taky) má seznam serverů. Tak když jeden <br>
službu neposkytuje, osloví dalšího.<br>
Nojo, no. Nejsem tak chytrý jako Cisco.<br>
<br>
PL<br>
<br>
*********************<br>
<br>
Dne 23.7.2022 v 23:20 Dodo Racek napsal(a):<br>
> Okrem precitaneho casu z paketu sledujte aj stratum.<br>
> Cim nizsie cislo, tym lepsie. (0- atomove hodiny, 1- synchronizovane <br>
> voci atomovym hodinam, 2- synchronizovane voci 1, atd...) na internete <br>
> bezne server bude mat stratum 2-3.<br>
> Server MUSI mat stratum rovnake cislo.<br>
> Ak serveru vypadne synchronizacia na presnejsi nadradeny, tak to <br>
> "oznami" klientom zmenou hodnoty v stratum. Cisla nad 10 sa pouzivaju <br>
> pre nepresny cas (lokalny oscilator bez synchronizacie), takemu casu <br>
> sa neveri.<br>
><br>
> Ked sa nejedna o utok, ale o to, ze aj nadradeny server stratil presny <br>
> cas a oznamuje bludy, tak vam nepomoze ani 1000 nacitani a porovnavani.<br>
><br>
> Ak je NTP server napr. cisco switch, alebo router, tak obycajne nema <br>
> vlastne HW hodiny. Po zapnuti, alebo reboote oznamuje klientom <br>
> nezmyselny cas az do chvile, kym sa nezosynchronizuje s nadradenym ntp <br>
> sevrom. To moze trvat aj 15 min. Oznamuje ale definovanym <br>
> (nakonfigurovanym) vysokym cislom pre stratum.<br>
><br>
> Voci akemu NTP serveru (FQDN,IP) sa zvyknete synchronizovat?<br>
><br>
><br>
> Dodo<br>
><br>
> Dňa so 23. 7. 2022, 21:28 Petr Zapadlo <<a href="mailto:zapik@email.cz" target="_blank" rel="noreferrer">zapik@email.cz</a>> napísal(a):<br>
><br>
> Zdravím,<br>
><br>
> na většině projektů, kde je třeba čas, tak ho synchronizuji z NTP.<br>
> Občas (třeba jednou za půl roku) se stane, že ESP získá špatný čas.<br>
> Pokusil jsem se to eliminovat - načítám čas 3x a porovnávám -<br>
> použiji<br>
> dvě hodnoty, které mají minimální rozestup. (pokud se nesejdou,<br>
> tak to<br>
> ignoruji a zkouším znova)<br>
><br>
> Situace se zlepšila, přesto občas k problému dojde. Zdá se, že<br>
> četnost<br>
> nějak závisí i na kvalitě internetové linky. U mě doma se to<br>
> prakticky<br>
> neděje (Metronet, DSL, modem Terminator) , ale u známé se to děje<br>
> poměrně často (měsíčně) (O2, DSL, modem ZTE), u syna tak jednou za<br>
> půl<br>
> roku (kabelovka Vodafone).<br>
><br>
> Vypadá to, že za nějakých podmínek projde UDP stackem v ESP i paket,<br>
> který není v pořádku - asi má i vadný checksum, ale vzhledem k<br>
> četnosti<br>
> to nejsem schopen nijak ověřit. Případně projde nesmyslný paket<br>
> (ale to<br>
> by měl eliminovat požadavek na 2 stejné hodnoty).<br>
><br>
> Jak se divám do struktury NTP paketu, tak tam už žádný kontrolní<br>
> mechanizmus není. (dívám se dobře?)<br>
><br>
> Základní kus kodu je vzat z mnohokrát opakovaného příkladu:<br>
><br>
> Poslání paketu:<br>
><br>
> memset(packetBuffer, 0, NTP_PACKET_SIZE);<br>
> // Initialize values needed to form NTP request<br>
> // (see URL above for details on the packets)<br>
> packetBuffer[0] = 0b11100011; // LI, Version, Mode<br>
> packetBuffer[1] = 0; // Stratum, or type of clock<br>
> packetBuffer[2] = 6; // Polling Interval<br>
> packetBuffer[3] = 0xEC; // Peer Clock Precision<br>
> // 8 bytes of zero for Root Delay & Root Dispersion<br>
> packetBuffer[12] = 49;<br>
> packetBuffer[13] = 0x4E;<br>
> packetBuffer[14] = 49;<br>
> packetBuffer[15] = 52;<br>
><br>
> // all NTP fields have been given values, now<br>
> // you can send a packet requesting a timestamp:<br>
> _ntp_udp.beginPacket(timeServerIP, 123); //NTP requests are to<br>
> port 123<br>
> _ntp_udp.write(packetBuffer, NTP_PACKET_SIZE);<br>
> _ntp_udp.endPacket();<br>
><br>
><br>
> Příjem paketu:<br>
><br>
> _ntp_udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into<br>
> the buffer<br>
><br>
> //the timestamp starts at byte 40 of the received packet and is<br>
> four bytes,<br>
> // or two words, long. First, esxtract the two words:<br>
><br>
> unsigned long highWord = word(packetBuffer[40],<br>
> packetBuffer[41]);<br>
> unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);<br>
><br>
><br>
> Jak zvýšit spolehlivost a eliminovat blbý čas?<br>
><br>
><br>
> Díky<br>
><br>
> Petr_______________________________________________<br>
><br>
<br>
_______________________________________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz" rel="noreferrer noreferrer" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote></div>