Asterisk doesnt recognize DTMF and send error

Hi. I’m using Asterisk v1.4.18 on CentOS 4.5
I have problem when I make the call using X-Lite. Here it is

[Mar 24 00:09:28] WARNING[6828]: chan_sip.c:1947 retrans_pkt: Maximum retries exceeded on transmission ***********. for seqno 2 (Critical Response)
[Mar 24 00:09:28] WARNING[6828]: chan_sip.c:1971 retrans_pkt: Hanging up call ***********. - no reply to our critical packet.

When I use sip debug. I saw that the transmission repeats 6 time. Asterisk doesn’t detect the DTMF that I pressed.

.........(first 5 times)

Retransmitting #6 (no NAT) to **************:
SIP/2.0 200 OK
Via: SIP/2.0/UDP **************:28180:50058;branch=z9hG4bK-d8754z-f711081e7455530e-1---d8754z-;received=************;rport=28180
From: "102"<sip:102@***********>;tag=f448dd55
To: "19001773"<sip:19001773@**************>;tag=as26d5501d
Call-ID: ***************.
CSeq: 2 INVITE
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Contact: <sip:19001773@**************>
Content-Type: application/sdp
Content-Length: 262

v=0
o=root 6732 6732 IN IP4 **************
s=session
c=IN IP4 **************
t=0 0
m=audio 12230 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

Here is my sip.conf

[general]
context=default			; Default context for incoming calls
;allowguest=no			; Allow or reject guest calls (default is yes)
allowoverlap=no			; Disable overlap dialing support. (Default is yes)
;allowtransfer=no		; Disable all transfers (unless enabled in peers or users)
				; Default is enabled
;realm=mydomain.tld		; Realm for digest authentication
				; defaults to "asterisk". If you set a system name in
				; asterisk.conf, it defaults to that system name
				; Realms MUST be globally unique according to RFC 3261
				; Set this to your host name or domain name
bindport=5060			; UDP Port to bind to (SIP standard port is 5060)
				; bindport is the local UDP port that Asterisk will listen on
bindaddr=0.0.0.0		; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes			; Enable DNS SRV lookups on outbound calls
				; Note: Asterisk only uses the first host 
				; in SRV records
				; Disabling DNS SRV lookups disables the 
				; ability to place SIP calls based on domain 
				; names to some other SIP users on the Internet

[101]
type=friend
username=101
secret=123456
context=from-sip
regexten=1234			; When they register, create extension 1234
dtmfmode=rfc2833
host=dynamic			; This device needs to register
nat=no			; X-Lite is behind a NAT router
canreinvite=no			; Typically set to NO if behind NAT
disallow=all
allow=gsm			; GSM consumes far less bandwidth than ulaw
allow=ulaw
allow=alaw

[102]
type=friend
username=102
secret=123456
context=from-sip
regexten=1234			; When they register, create extension 1234
dtmfmode=rfc2833
host=dynamic			; This device needs to register
nat=no			; X-Lite is behind a NAT router
canreinvite=no			; Typically set to NO if behind NAT
disallow=all
allow=gsm			; GSM consumes far less bandwidth than ulaw
allow=ulaw
allow=alaw

I’ve google but I cannot find any answer. Plz help me.

Asterisk cannot recognize DTMF until after the call has been answered. Asterisk is trying to answer the call but the phone is failing to acknowledge, which probably means you have a NAT problem.

Did you really mean DTMF, or did you mean the dailled digits. The latter should be the 19001773 in the To: headers.

Yes. I open 10000-20000 port in my modem. It is used for rpt protocol.
thank you for help.

Failing to answer indicate a SIP issue, not an RTP one. Opening ports is only sufficient if you are using public addresses internally.