Consider this: Does Asterisk count re-reg times by setting a timestamp/‘alarm’ or does it simply start counting down from 120? If the latter, then any shift in the RTC would be entirely irrelevant to re-registration timers. From a programmatic standpoint, I’m not sure it would make sense to store a bunch of re-registration alarms for set timestamps when countdown timers would require fewer resources overall (vs scanning a long list of alarms every second)…so I suspect countdown timers are used here
That said, your trunk provider is perhaps setting this (time-15sec) offset on their end, which explains why you always see a lower number no matter what you set. This makes a little sense, if you think about it. We really don’t want to wait until the absolute last second to start trying to re-register or we risk missing the window and falling off. Since re-registrations in ye good ol’ days could take a couple seconds over slower networks or even require retries on congested networks, I believe 15 seconds of grace would fall into the “legacy” support category.
The way you should be tackling this is by setting Min, Max, and Default within a reasonable range. Your Max should be higher, and your Min lower, than your Default; 30 Min, 60 Default, 120 Max has always worked well in our deployments. This allows both servers to negotiate a re-registration timer that is suitable for BOTH parties. If you set the range too narrow, and your Trunk provider doesn’t want to accommodate something in that range, you will get unexpected results.
Even still, I doubt the RTC shifting due to an NTP update would affect this at all…most servers only resync over NTP every 60 minutes at most, some far less frequently than that. Public NTP servers won’t let you poll them more than once every 5 seconds, anyway. If you have a clock drifting that fast at either end, someone has a HARDWARE problem, not a software problem. RTCs just don’t drift like that…the physics of quartz is pretty solid.
In a related setting, you should have your Registration Timeout - which is how long Asterisk will wait for a current [re-]reg attempt to timeout without proper response before trying again - set to a low, but not crazy low number. I’d stay at 10 seconds. You could go a little lower, but I wouldn’t set it less than 5 (avoids flooding). IIRC, the launch time default is 20 seconds, which is generally fine for most deployments, but you can try lowering it if you are having re-reg issues.