Re: příjem NTP ESP8266/32

Dodo Racek dodoracek na gmail.com
Pondělí Červenec 25 22:04:36 CEST 2022


Pouzite nejake cca 3-4 stabilnejsie NTP servery, pripadne servery vacsich
providerov napr.
ntp.nic.cz
ntp.orange.cz
...
atd.

Ked niekolko krat neodpovie, alebo odpovie s chybami, tak treba zbehnut
nove kolecko zisteni IP a rozhodovania, ktory server pouzijete na
synchronizaciu.

Dodo

po 25. 7. 2022 o 18:08 Miroslav Mraz <mrazik na volny.cz> napísal(a):

> Tak jsem asi přišel na to kde je primární problém. Už tu bylo řečeno, že
> servery v poolu mají přiřazeno k jednomu doménovému jménu více IP adres.
> Potud je to v pořádku, je celkem jedno jakou IP si vyberu. Problém je v
> tom, že tento seznam IP adres se v čase dost často mění. Daná adresa asi
> zůstává ještě nějakou dobu aktivní, ale nakonec začne buď vracet chybné
> pakety, nebo neodpovídá vůbec.
> Takže po chybě je potřeba provést reconnect - nevím jak je to uděláno v
> té knihovně UDP, v unixu stačí zavřít soket a začít znovu s
> gethostbyname(). Klidně je možné použít stejné doménové jméno i pořadí v
> seznamu IP adres, stejně se dostanete na jinou IP. Kdyby člověk přečetl
> to RFC, tak by to asi věděl, ale jak se říká až selže vše, přečti si návod.
>
> Mrazík
>
> On 24. 07. 22 15:13, Miroslav Mraz wrote:
> > Tak jsem si s tím chvíli hrál, ono se to může někdy hodit. Kontrola
> > délky přijatého paketu je sice fajn, ale zdaleka nestačí.
> > https://labs.apnic.net/?p=462
> > Je potřeba ještě (nejméně) kontrolovat hlavičku - v poli LI nesmí být
> > nastavena hodnota 3. Normálně se v bytu 0. vrací 0x24, při chybě 0xE4.
> > Dále hodnota Stratum nesmí být 0. Pokud přijde divný paket, má správnou
> > délku, ale data jsou zřejmě nulová, protože se mi nastaví datum na 7.
> > února 2036. Pokud si tam dopíšete ještě ty 2 kontroly hlavičky, pak už
> > by to mělo fungovat správně. A skutečně se počet sekund v paketu počítá
> > od roku 1900. To musel vymyslet blbec. Bacha ty vícebytové proměnné jsou
> > ve velkém indiánu (což je pro síťové aplikace obvyklé), v knihovně je to
> > celkem správně.
> >
> > if (((packetBuffer[0] >> 6) & 3) == 3) return false;
> > if   (packetBuffer[1] == 0)            return false;
> >
> > // zde by měla být data validní
> >
> > Mrazík
> >
> _______________________________________________
> 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/20220725/89fc3d3d/attachment.htm>


Další informace o konferenci Hw-list