How can Asterisk handle long refreshing time?

I have been using Asterisk to handle my home phone calls for some time. It works well. However, recently, I signed with a new VOIP provider. I set this new one the same as all others I have or had used, e.g., Localphone, Callcentric, VOIP.ms, and etc. The outgoing calls are fine but the receiving incoming calls was not reliable. Eventually, I found that the issues is the registration refreshing time. From the Asterisk CLI interface, when doing “sip show registry” all others show 45 or 105 seconds but this new one shows 1185 seconds. I checked that every time it refreshed, receiving call is fine. However, after about 3 minutes, I cannot receive incoming call until next refreshing. There’s nothing showing on the CLI when it does not work. ATAs e.g., OBI and Grandstream work fine but not my Asterisk. They are all on the same LAN. I tried both Asterisk 1.8 and 11 but the behaviors are the same. I am wondering if there is a way to fix this problem on the Asterisk side. Hope somebody can help.
Thanks in advance.

When registering the remote server can respond with a different expiration time than you requested, if they do that there is nothing you can do to override it. If the underlying problem is that the NAT port is closing you can use qualify to keep it open.