[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