NAT/DTMF problem


#1

we’ve got the following problem:

i’ve got an * server that is using NAT behind a firewall. we had some trouble getting DTMF working until we set the sip configuration to allow reinvites. we have some external extensions, however, that are also on NAT networks of their own (typical home network setups with standard home routers) that can currently make and receive calls without mishap. they still cannot perform DTMF, however. what research i have done thus far indicates that the problem has to do with SIP and NAT - turning canreinvite on for these extensions causes all calls to fail.

i must assume i’m not the first to encounter this problem; does anyone have a solution? segments of my sip.conf are below:

[starvox]
type=peer
context=incoming
host=IP removed
disallow=all
allow=g729
allow=ulaw
dtmfmode=rfc2833
canreinvite=yes
insecure=very
qualify=yes

[555]
type=friend
secret=555
host=dynamic
context=internal
callerid=“username” <555-5555>
mailbox=555
;nat=yes
canreinvite=no
dtmfmode=rfc2833
qualify=yes
disallow=all
allow=g729

if i find a solution i’ll post it, but at this time the only thing i can think of is using a more nat-friendly protocol (unlikely) or setting up an SIP proxy of some sort… no idea how to go about that yet. learning as i go, like so many.


#2

What type of phones are you using? Have you tried changing the dtmfmode to inband?


#3

we’re using SNOM360s with the latest firmware and bootloader (though a major new version is coming out in a week or two, i’m told.) i haven’t set the dtmf mode to inband, because we aren’t using g.711 on these phones - we’re using g.729. my understanding is that inband only works with ulaw.


#4

i think i solved this problem.

within the snom phone, i added a stun server (stun.xten.com) with a stun interval and a keepalive of 15 seconds. i then re-enabled canreinvite for that extension as shown below. seems to work great.

anyone know if there are better stun intervals to use than 15?

[555]
type=friend
secret=555
host=dynamic
context=internal
callerid=“username” <555-5555>
mailbox=555
canreinvite=yes
qualify=yes
disallow=all
allow=g729