duduita opened a new issue, #2440:
URL: https://github.com/apache/nuttx-apps/issues/2440

   During NTP server querying through the `ntpclient.c`, different NTP server 
domain names (e.g., 0.uk.pool.ntp.org, 1.uk.pool.ntp.org) might resolve to the 
same set of IP addresses due to **DNS caching**. This can lead to **repeated 
queries to the same non-responsive IP addresses**, resulting in failures to 
obtain the correct time. 
   
   For example, in the following, there are some logs that I added to 
`ntpclient.c`, in order to understand why the NTP was failing:
   ```
   [   51.046000] [25] (Info)  '0.pool.ntp.org' resolved to: 216.238.113.58
   [   51.046000] [25] (Info) ntpclient.c-447-gethostbyname for 0.pool.ntp.org 
OK
   [   51.046000] [25] (Info) ntpclient.c-480-Sending a NTP packet
   [   51.055000] [25] (Info) ntpclient.c-509-sendto ret: 68
   [   51.056000] [25] (Info) ntpclient.c-515-Recv a NTP packet
   [   56.055000] [25] (Info) ntpclient.c-521-recvfrom nbytes: -1
   [   56.056000] [25] (Info)  '0.pool.ntp.org' resolved to: 216.238.113.58
   [   56.056000] [25] (Info) ntpclient.c-447-gethostbyname for 0.pool.ntp.org 
OK
   [   56.056000] [25] (Info) ntpclient.c-480-Sending a NTP packet
   [   56.063000] [25] (Info) ntpclient.c-509-sendto ret: 68
   [   56.063000] [25] (Info) ntpclient.c-515-Recv a NTP packet
   [   61.065000] [25] (Info) ntpclient.c-521-recvfrom nbytes: -1
   [   61.066000] [25] (Info)  '0.pool.ntp.org' resolved to: 216.238.113.58
   [   61.066000] [25] (Info) ntpclient.c-447-gethostbyname for 0.pool.ntp.org 
OK
   [   61.066000] [25] (Info) ntpclient.c-480-Sending a NTP packet
   [   61.075000] [25] (Info) ntpclient.c-509-sendto ret: 68
   [   61.075000] [25] (Info) ntpclient.c-515-Recv a NTP packet
   [   66.075000] [25] (Info) ntpclient.c-521-recvfrom nbytes: -1
   [   66.076000] [25] (Info)  '0.pool.ntp.org' resolved to: 216.238.113.58
   [   66.076000] [25] (Info) ntpclient.c-447-gethostbyname for 0.pool.ntp.org 
OK
   [   66.076000] [25] (Info) ntpclient.c-480-Sending a NTP packet
   [   66.085000] [25] (Info) ntpclient.c-509-sendto ret: 68
   [   66.085000] [25] (Info) ntpclient.c-515-Recv a NTP packet
   [   71.085000] [25] (Info) ntpclient.c-521-recvfrom nbytes: -1
   [   71.086000] [25] (Info)  '0.pool.ntp.org' resolved to: 216.238.113.58
   [   71.086000] [25] (Info) ntpclient.c-447-gethostbyname for 0.pool.ntp.org 
OK
   [   71.086000] [25] (Info) ntpclient.c-480-Sending a NTP packet
   [   71.095000] [25] (Info) ntpclient.c-509-sendto ret: 68
   [   71.095000] [25] (Info) ntpclient.c-515-Recv a NTP packet
   [   76.095000] [25] (Info) ntpclient.c-521-recvfrom nbytes: -1
   [   76.095000] [25] (Info) ntpclient.c-563-ERROR: recvfrom() failed: 11
   [   76.095000] [25] (Info) ntpclient.c-589-The NTP client is terminating
   ```
   
   To mitigate this issue, a possible option is to **flush the DNS cache after 
cycling through all configured NTP servers**, ensuring that subsequent DNS 
resolutions provide potentially new and responsive IP addresses, thereby 
increasing the likelihood of successful time synchronization. However, I cannot 
manipulate the DNS cache from the user space, unless I create an API for it.
   
   Overall, do you have a workaround or a hack that I can use in order to solve 
this NTP issue? Or at least to force a new IP resolution for an NTP hostname 
after some failures?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to