[asterisk-users] No response to our critical packet problem

Mark Michelson mmichelson at digium.com
Fri May 22 13:16:11 CDT 2009


James Lamanna wrote:
> Hi,
> I have a strange problem. At a site where there are 20+ phones, there
> is one phone that cannot make outbound (to PSTN) calls.
> Each call is dropped after 20s with "no response to our critical packet".
> Calls to voicemail and internal extensions work fine.
> 
> I understand that everything points to a NAT problem, but I don't
> understand how it could be because:
> 1) It does not affect calls to internal office extensions (which still
> go through asterisk) OR voicemail
> 2) The other 20+ phones in the same office on the same network have 0 problems.
> 
> Here's a SIP trace of the problem.
> yyy.yyy.yyy.yyy is the outside NAT IP
> xxx.xxx.xxx.xxx is the IP of my PBX
> dddddddddd is the dialed phone number
> sssssssssss is the source phone number
> 
> The peculiar thing is that asterisk sends an OK in response to an INVITE,
> then the phone sends back an ACK, which asterisk seems to ignore
> because it retransmits the OK message again
> Then eventually the phone gives up and sends a BYE message.
> 
> -- James
> 

I think I know what the problem is here. It's not the fault of the phone, but of 
Asterisk. The phone is sending an INVITE and then an INFO (DTMF '#', 
specifically) to Asterisk. Asterisk only keeps track of the last incoming Cseq 
in a dialog, so once the INFO arrives, we no longer have any memory of the Cseq 
of the INVITE that the phone sent.

Later, we send a 200 OK response for the INVITE. Then, when we receive the ACK 
from the phone, we drop it since it's Cseq is less than the latest Cseq we 
received in this dialog. As a result, Asterisk never realizes that it has 
received the ACK. Asterisk continues retransmitting a 200 OK to the phone and 
the phone dutifully keeps sending an ACK in response until Asterisk has 
retransmitted the maximum amount of times.

There are a couple of potential ways of solving this issue. One is to add an 
Answer to your dialplan as the first priority. This way, the INVITE is 
completely answered before the phone ever sends any INFO requests. Another is to 
switch the phone away from using INFO to transmit DTMF. I would be willing to 
bet that the other phones on your network are not using INFO for transmission of 
DTMF, and so they are not experiencing the same issue.

Mark Michelson



More information about the asterisk-users mailing list