[asterisk-dev] pjsip / asterisk 14+: Sometimes outbound calls are forbidden by provider

Michael Maier m1278468 at mailbox.org
Fri May 24 07:45:33 CDT 2019


On 24.05.19 at 14:29 Joshua C. Colp wrote:
> On Fri, May 24, 2019, at 7:24 AM, Michael Maier wrote:
>> On 24.05.19 at 13:14 Joshua C. Colp wrote:
>>> On Fri, May 24, 2019, at 6:02 AM, Michael Maier wrote:
>>>> Hello!
>>>>
>>>> some people are facing a problem regarding forbidden outbound calls to 
>>>> the ISP. They start an outbound call, which is rejected by the
>>>> provider. Debugging revealed the reason: The IP used for the outbound 
>>>> INVITE is different from the IP used for the REGISTER. That's why the
>>>> ISP forbids the outbound call.
>>>>
>>>>
>>>>
>>>> Background:
>>>>
>>>> A SRV lookup gives 3 hosts each with different priority. At the start 
>>>> time, Asterisk takes the IP with the highest priority for the
>>>> REGISTER. REGISTER timeout is 660s.
>>>>
>>>> Some time later, lets say 300s, an outbound call is started, which is 
>>>> rejected by ISP (forbidden), because of wrong destination (REGISTER IP
>>>> != INVITE IP).
>>>>
>>>> My question:
>>>> Is it possible, that asterisk performs a DNS lookup before it sends the 
>>>> INVITE to the ISP for the outgoing call? At this moment, the DNS
>>>> reports changed priorities or the REGISTERed IP isn't there at all any 
>>>> more and therefore, Asterisk uses another IP for the outgoing INVITE?
>>>
>>> Yes, this is how it works. The outbound registration and calling aren't associated at all. When an INVITE is done then another resolution occurs along with picking an IP address.
>>
>> Unfortunately, this doesn't work, if the REGISTER to the existing old 
>> IP isn't re-registered to the new IP before the INVITE is performed.
>>
>> I forgot to mention one more difficulty: There is more than one number 
>> registered to the same destination which may have differing
>> reREGISTER point of times.
>>
>> Therefore, the process should be like this?
>>
>> - Outbound call is started
>> - DNS lookup is performed
>> - Check for difference of REGISTER IP (of this dedicated outgoing 
>> number) and INVITE IP
>>   -> Difference detected? Yes:
>> 	-> Stop REGISTER for this number (or leave it if there is an ongoing 
>> call using this
>>            number)
>> 	-> Start REGISTER for this number with new IP
>> - Start INVITE to new IP
> 
> There's nothing built in to do this, and honestly I'm not quite sure of the orchestration internally required to do such a thing. With code changes it may be possible but I don't even know if the foundations required are there.

Would it be a valid feature request? Do you think it is worth it?


Thanks
Michael



More information about the asterisk-dev mailing list