We're working through an annoying problem with voicemail and the
fr_inv_timer and after banging our heads against it for a while figured
we'd reach out for a little help. It's probably something obvious, but
here's the scenario:
1. SIP DID rings SER
2. SER Routes to registered UA (UA behind NAT)
3. UA Rings
4. fr_inv_timer is hit and failure_route[1] is invoked
5. failure_route[1] rewrites host to send call to Asterisk for VM
6. Asterisk gets the call and starts processing but the calling party
never gets the OK, gets no audio, and dies with a fast busy.
When the UA is NOT registered or registered without going through NAT
there isn't a problem. Asterisk OK's and works fine.
This is probably some moronic NAT issue but we're not sure how to proceed.
I'm going to follow with a 'sip debug' message from Asterisk, some ngrep
from the SER machine (with commentary), and finally the SER cnf itself.
If anyone can help we would be incredibly grateful! (Seriously!)
Thanks,
-Corey
** IP Legend
xxx.xxx.xxx.7 - SIP Originating Source
xxx.xxx.xxx.36 - SER
xxx.xxx.xxx.80 - Asterisk VM Server
216.NAT.CLI.207 - NAT UA Public IP
192.168.249.83 - Private IP of UA
5410000000 - DID & UA ID
6100000000 - Outside Caller ID
** Versions
SER: 0.9.4-rc3
rtpproxy: 20040107 Extension 20050322
** Asterisk SIP Debug shows this on the second retry:
Retransmitting #1 (no NAT) to xxx.xxx.xxx.36:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP xxx.xxx.xxx.36;branch=z9hG4bK9e09.116856a3.2
Via: SIP/2.0/UDP xxx.xxx.xxx.7:5060;branch=z9hG4bK-00101-5Jn7520l3PhAH6h-0
Record-Route:
<sip:xxx.xxx.xxx.36;ftag=5Jn7520l3PhAH6h-IPTrunk-81-17-23atxxx.xxx.xxx.7;lr=on>
From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=5Jn7520l3PhAH6h-IPTrunk-81-17-23atxxx.xxx.xxx.7
To: sip:5410000000@xxx.xxx.xxx.36:5060;tag=as625cebc0
Call-ID: 5Jn7520l3PhAH6h(a)xxx.xxx.xxx.7
CSeq: 101 INVITE
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Contact: <sip:5410000000@xxx.xxx.xxx.80>
Content-Type: application/sdp
Content-Length: 237
v=0
o=root 29275 29275 IN IP4 xxx.xxx.xxx.80
s=session
c=IN IP4 xxx.xxx.xxx.80
t=0 0
m=audio 11476 RTP/AVP 0 3 8 97
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:97 iLBC/8000
a=silenceSupp:off - - - -
After re-transmitting one more time it will finally fail.
*** NGREP OUTPUT (from SER box)
#
U xxx.xxx.xxx.7:5060 -> xxx.xxx.xxx.36:5060
INVITE sip:5410000000@xxx.xxx.xxx.36:5060 SIP/2.0..Via: SIP/2.0/UDP
...
#
U xxx.xxx.xxx.36:5060 -> xxx.xxx.xxx.7:5060
SIP/2.0 100 trying -- your call is important to us..Via: SIP/2.0/UDP
...
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
INVITE sip:5410000000@192.168.249.83:5060 SIP/2.0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23a
...
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
INVITE sip:5410000000@216.NAT.CLI.207:5060 SIP/2.0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23at
xxx.xxx.xxx.7;lr=on>..Via: SIP/2.0/UDP
...
#
U 216.NAT.CLI.207:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP
...
#
U 216.NAT.CLI.207:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP
...
#
U xxx.xxx.xxx.36:5060 -> xxx.xxx.xxx.7:5060
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP
...
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
INVITE sip:5410000000@216.NAT.CLI.207:5060 SIP/2.0..Record-Route:
...
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
INVITE sip:5410000000@216.NAT.CLI.207:5060 SIP/2.0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23at
xxx.xxx.xxx.7;lr=on>..Via: SIP/2.0/UDP
...
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
....
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
INVITE sip:5410000000@216.NAT.CLI.207:5060 SIP/2.0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23at
...
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
CANCEL sip:5410000000@192.168.249.83:5060 SIP/2.0..Via: SIP/2.0/UDP
xxx.xxx.xxx.36;branch=z9hG4bKe2fe.1754f177.0..From: sip
...
#
U 216.NAT.CLI.207:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
...
#
U 216.NAT.CLI.207:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 487 Request Cancelled..Via: SIP/2.0/UDP
...
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
ACK sip:5410000000@192.168.249.83:5060 SIP/2.0..Via: SIP/2.0/UDP
...
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
INVITE sip:5410000000@216.NAT.CLI.207:5060 SIP/2.0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23at
xxx.xxx.xxx.7;lr=on>..Via: SIP/2.0/UDP
...
#
U 216.NAT.CLI.207:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP
...
#
U 216.NAT.CLI.207:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP
...
#
U xxx.xxx.xxx.36:5060 -> xxx.xxx.xxx.7:5060
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP
...
# (ASTERISK SERVER ENTERS THE PICTURE HERE)
U xxx.xxx.xxx.36:5060 -> xxx.xxx.xxx.80:5060
INVITE sip:5410000000@xxx.xxx.xxx.80 SIP/2.0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23at209.
216.177.7;lr=on>..Via: SIP/2.0/UDP
xxx.xxx.xxx.36;branch=z9hG4bKe2fe.1754f177.2..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;rport=
5060;branch=z9hG4bK-00101-kYn356Vl3PhGzel-0..Max-Forwards: 5..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel-I
PTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@xxx.xxx.xxx.36:5060..Call-ID:
kYn356Vl3PhGzel@xxx.xxx.xxx.7..CSeq: 101 I
NVITE..Remote-Party-Id:
<sip:6100000000@xxx.xxx.xxx.7:5060>;party=calling;privacy=off;id-type=subscriber..Expires:
180..All
ow: INVITE,CANCEL,BYE,ACK..Contact: sip:xxx.xxx.xxx.7:5060..User-Agent:
Tekelec-7000/r4.0..Content-Type: application/sdp..C
ontent-Length: 169....v=0..o=- 1 1 IN IP4 xxx.xxx.xxx.7..s= ..c=IN IP4
xxx.xxx.xxx.36..t=0 0..m=audio 35314 RTP/AVP 0..a=pt
ime:20..a=rtpmap:0 PCMU/8000..a=direction:active..a=nortpproxy:yes..
#
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
CANCEL sip:5410000000@216.NAT.CLI.207:5060 SIP/2.0..Via: SIP/2.0/UDP
...
# (ASTERISK SERVER RESPONDS)
U xxx.xxx.xxx.80:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP
xxx.xxx.xxx.36;branch=z9hG4bKe2fe.1754f177.2..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;bran
ch=z9hG4bK-00101-kYn356Vl3PhGzel-0..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel-IPTrunk-83-17-23at209.216.1
77.7..To: sip:5410000000@xxx.xxx.xxx.36:5060..Call-ID:
kYn356Vl3PhGzel@xxx.xxx.xxx.7..CSeq: 101 INVITE..User-Agent: Asteris
k PBX..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY..Contact:
<sip:5410000000@xxx.xxx.xxx.80>..Content-Length: 0
....
#
U 216.NAT.CLI.207:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
...
#
U 216.NAT.CLI.207:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 487 Request Cancelled..Via: SIP/2.0/UDP
...
# (SER ACKs the UAs' 487)
U xxx.xxx.xxx.36:5060 -> 216.NAT.CLI.207:5060
ACK sip:5410000000@216.NAT.CLI.207:5060 SIP/2.0..Via: SIP/2.0/UDP
...
# (ASTERISK SENDS THE OK)
U xxx.xxx.xxx.80:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.36;branch=z9hG4bKe2fe.1754f177.2..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z
9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=o
n>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@209.216
.160.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel@xxx.xxx.xxx.7..CSeq: 101
INVITE..User-Agent: Asterisk PBX..Allow: INV
ITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY..Contact:
<sip:5410000000@xxx.xxx.xxx.80>..Content-Type: application/sdp..Con
tent-Length: 237....v=0..o=root 29275 29275 IN IP4
xxx.xxx.xxx.80..s=session..c=IN
IP4 xxx.xxx.xxx.80..t=0 0..m=audio 11184
RTP/AVP 0 3 8 97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a=rtpmap:8
PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:of
f - - - -..
#
U xxx.xxx.xxx.36:5060 -> xxx.xxx.xxx.7:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:209.216.160.
36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=on>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel
-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@xxx.xxx.xxx.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel(a)209.216.1
77.7..CSeq: 101 INVITE..User-Agent: Asterisk PBX..Allow: INVITE, ACK,
CANCEL,
OPTIONS, BYE, REFER, NOTIFY..Contact: <sip:54
14362504@xxx.xxx.xxx.80>..Content-Type: application/sdp..Content-Length:
255....v=0..o=root 29275 29275 IN IP4 209.216.160.
80..s=session..c=IN IP4 xxx.xxx.xxx.36..t=0 0..m=audio 35316 RTP/AVP 0 3 8
97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a
=rtpmap:8 PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:off - - -
-..a=nortpproxy:yes..
# (ASTERISK SENDS ANOTHER OK)
U xxx.xxx.xxx.80:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.36;branch=z9hG4bKe2fe.1754f177.2..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z
9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=o
n>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@209.216
.160.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel@xxx.xxx.xxx.7..CSeq: 101
INVITE..User-Agent: Asterisk PBX..Allow: INV
ITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY..Contact:
<sip:5410000000@xxx.xxx.xxx.80>..Content-Type: application/sdp..Con
tent-Length: 237....v=0..o=root 29275 29275 IN IP4
xxx.xxx.xxx.80..s=session..c=IN
IP4 xxx.xxx.xxx.80..t=0 0..m=audio 11184
RTP/AVP 0 3 8 97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a=rtpmap:8
PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:of
f - - - -..
#
U xxx.xxx.xxx.36:5060 -> xxx.xxx.xxx.7:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:209.216.160.
36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=on>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel
-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@xxx.xxx.xxx.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel(a)209.216.1
77.7..CSeq: 101 INVITE..User-Agent: Asterisk PBX..Allow: INVITE, ACK,
CANCEL,
OPTIONS, BYE, REFER, NOTIFY..Contact: <sip:54
14362504@xxx.xxx.xxx.80>..Content-Type: application/sdp..Content-Length:
255....v=0..o=root 29275 29275 IN IP4 209.216.160.
80..s=session..c=IN IP4 xxx.xxx.xxx.36..t=0 0..m=audio 35316 RTP/AVP 0 3 8
97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a
=rtpmap:8 PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:off - - -
-..a=nortpproxy:yes..
# (ASTERISK SENDS YET ANOTHER OK)
U xxx.xxx.xxx.80:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.36;branch=z9hG4bKe2fe.1754f177.2..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z
9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=o
n>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@209.216
.160.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel@xxx.xxx.xxx.7..CSeq: 101
INVITE..User-Agent: Asterisk PBX..Allow: INV
ITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY..Contact:
<sip:5410000000@xxx.xxx.xxx.80>..Content-Type: application/sdp..Con
tent-Length: 237....v=0..o=root 29275 29275 IN IP4
xxx.xxx.xxx.80..s=session..c=IN
IP4 xxx.xxx.xxx.80..t=0 0..m=audio 11184
RTP/AVP 0 3 8 97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a=rtpmap:8
PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:of
f - - - -..
#
U xxx.xxx.xxx.36:5060 -> xxx.xxx.xxx.7:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:209.216.160.
36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=on>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel
-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@xxx.xxx.xxx.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel(a)209.216.1
77.7..CSeq: 101 INVITE..User-Agent: Asterisk PBX..Allow: INVITE, ACK,
CANCEL,
OPTIONS, BYE, REFER, NOTIFY..Contact: <sip:54
14362504@xxx.xxx.xxx.80>..Content-Type: application/sdp..Content-Length:
255....v=0..o=root 29275 29275 IN IP4 209.216.160.
80..s=session..c=IN IP4 xxx.xxx.xxx.36..t=0 0..m=audio 35316 RTP/AVP 0 3 8
97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a
=rtpmap:8 PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:off - - -
-..a=nortpproxy:yes..
# (ASTERISK SENDS ANOTHER OK)
U xxx.xxx.xxx.80:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.36;branch=z9hG4bKe2fe.1754f177.2..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z
9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=o
n>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@209.216
.160.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel@xxx.xxx.xxx.7..CSeq: 101
INVITE..User-Agent: Asterisk PBX..Allow: INV
ITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY..Contact:
<sip:5410000000@xxx.xxx.xxx.80>..Content-Type: application/sdp..Con
tent-Length: 237....v=0..o=root 29275 29275 IN IP4
xxx.xxx.xxx.80..s=session..c=IN
IP4 xxx.xxx.xxx.80..t=0 0..m=audio 11184
RTP/AVP 0 3 8 97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a=rtpmap:8
PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:of
f - - - -..
#
U xxx.xxx.xxx.36:5060 -> xxx.xxx.xxx.7:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:209.216.160.
36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=on>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel
-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@xxx.xxx.xxx.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel(a)209.216.1
77.7..CSeq: 101 INVITE..User-Agent: Asterisk PBX..Allow: INVITE, ACK,
CANCEL,
OPTIONS, BYE, REFER, NOTIFY..Contact: <sip:54
14362504@xxx.xxx.xxx.80>..Content-Type: application/sdp..Content-Length:
237....v=0..o=root 29275 29275 IN IP4 209.216.160.
80..s=session..c=IN IP4 xxx.xxx.xxx.80..t=0 0..m=audio 11184 RTP/AVP 0 3 8
97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a
=rtpmap:8 PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:off - - - -..
# ASTERISK KEEPS TRYING TO SEND OK
U xxx.xxx.xxx.80:5060 -> xxx.xxx.xxx.36:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.36;branch=z9hG4bKe2fe.1754f177.2..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z
9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:xxx.xxx.xxx.36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=o
n>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@209.216
.160.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel@xxx.xxx.xxx.7..CSeq: 101
INVITE..User-Agent: Asterisk PBX..Allow: INV
ITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY..Contact:
<sip:5410000000@xxx.xxx.xxx.80>..Content-Type: application/sdp..Con
tent-Length: 237....v=0..o=root 29275 29275 IN IP4
xxx.xxx.xxx.80..s=session..c=IN
IP4 xxx.xxx.xxx.80..t=0 0..m=audio 11184
RTP/AVP 0 3 8 97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a=rtpmap:8
PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:of
f - - - -..
#
U xxx.xxx.xxx.36:5060 -> xxx.xxx.xxx.7:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
xxx.xxx.xxx.7:5060;branch=z9hG4bK-00101-kYn356Vl3PhGzel-0..Record-Route:
<sip:209.216.160.
36;ftag=kYn356Vl3PhGzel-IPTrunk-83-17-23atxxx.xxx.xxx.7;lr=on>..From:
sip:6100000000@xxx.xxx.xxx.7:5060;tag=kYn356Vl3PhGzel
-IPTrunk-83-17-23atxxx.xxx.xxx.7..To:
sip:5410000000@xxx.xxx.xxx.36:5060;tag=as6ca38bc6..Call-ID:
kYn356Vl3PhGzel(a)209.216.1
77.7..CSeq: 101 INVITE..User-Agent: Asterisk PBX..Allow: INVITE, ACK,
CANCEL,
OPTIONS, BYE, REFER, NOTIFY..Contact: <sip:54
14362504@xxx.xxx.xxx.80>..Content-Type: application/sdp..Content-Length:
237....v=0..o=root 29275 29275 IN IP4 209.216.160.
80..s=session..c=IN IP4 xxx.xxx.xxx.80..t=0 0..m=audio 11184 RTP/AVP 0 3 8
97..a=rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a
=rtpmap:8 PCMA/8000..a=rtpmap:97 iLBC/8000..a=silenceSupp:off - - - -..
** At this point the call is in fast-busy and Asterisk shows a failure.
**** SER CFG
# ser.cfg
############################################################
debug=3
fork=yes
log_stderror=yes
listen=xxx.xxx.xxx.36
port=5060
children=4
alias=whatever.net
alias=whatever.whatever.net
dns=no
rev_dns=no
fifo="/tmp/ser_fifo"
fifo_db_url="mysql://ser:serpass@localhost/ser"
###
# Modules
###
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/exec.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/uri_db.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
loadmodule "/usr/local/lib/ser/modules/permissions.so"
###
# Module Paramaters
###
modparam("auth_db|uri_db|usrloc", "db_url",
"mysql://ser:serpass@localhost/ser")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "password")
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "rtpproxy_sock",
"unix:/var/run/rtpproxy.sock")
# VM Timeout
modparam("tm", "fr_inv_timer", 20)
modparam("usrloc", "db_mode", 2)
modparam("permissions", "db_mode", 0)
modparam("permissions", "trusted_table", "trusted")
modparam("registrar", "nat_flag", 6)
modparam("rr", "enable_full_lr", 1)
modparam("exec", "setvars", 1)
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)
modparam("acc", "db_url",
"mysql://ser:serpass@localhost/ser")
modparam("acc", "db_flag", 1)
###
# Routing Section
###
route {
# Basic Checks
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483", "Too Many Hops");
break;
};
if (msg:len > max_len) {
sl_send_reply("513", "Message Overflow");
break;
};
if (method!="REGISTER") {
record_route();
};
if (method=="BYE" || method=="CANCEL") {
unforce_rtp_proxy();
}
# Loose Routing
if (loose_route()) {
route(1);
break;
};
# Call Processing
if (uri!=myself) {
route(1);
break;
};
if (uri==myself) {
if (method=="CANCEL") {
route(3);
break;
} else if (method=="INVITE") {
route(3);
break;
} else if (method=="REGISTER") {
route(2);
break;
};
lookup("aliases");
if (uri!=myself) {
route(1);
break;
};
if (!lookup("location")) {
sl_send_reply("404", "User Not Found");
break;
};
};
route(1);
}
route[1] {
###
# Default Call Handling
###
# NAT Fix
if (isflagset(6) && !isflagset(9)) {
fix_nated_sdp("1");
force_rport();
fix_nated_contact();
force_rtp_proxy();
setflag(9);
};
# On call timeout to voicemail
t_on_failure("1");
t_on_reply("1");
# Log
setflag(1);
if (!t_relay()) {
if (method=="INVITE" && isflagset(6)) {
unforce_rtp_proxy();
};
sl_reply_error();
};
}
route[2] {
###
# REGISTER method
###
if (!search("^Contact:\ +\*") && nat_uac_test("19"))
{
setflag(6);
fix_nated_register();
force_rport();
};
sl_send_reply("100", "Trying");
if (!www_authorize("whatever.net","subscriber")) {
www_challenge("whatever.net","0");
break;
};
if (!check_to()) {
sl_send_reply("401", "Unauthorized");
break;
};
consume_credentials();
if (!save("location")) {
sl_reply_error();
};
}
route[3] {
###
# INVITE & CANCEL
# URI matching is here.
###
t_on_failure("1");
if (nat_uac_test("19")) {
log(1," INVITE: NAT Detected. Setting flag 6.\n");
setflag(6);
}
if (method=="INVITE" && src_ip==xxx.xxx.xxx.7) {
!allow_trusted()) {
if (!proxy_authorize("whatever.net","subscriber")) {
proxy_challenge("whatever.net","0");
break;
} else if (!check_from()) {
sl_send_reply("403", "Use From=ID");
break;
};
consume_credentials();
};
lookup("aliases");
# if (uri!=myself) {
# force_rtp_proxy();
# route(1);
# break;
# };
if (!lookup("location")) {
if (uri=~"^sip:911@") { # Pass 911 calls first
route(5);
break;
};
if (uri=~"^sip:[0-9]{7}@") { # EXPAND 7-DIGIT CALL
exec_dset("/root/7digit.pl");
};
# Try location lookup again
if (!lookup("location")) {
if (uri=~"^sip:[0-9]{10}@") {
# DB Lookup of NPANXX route
exec_dset("/root/npa_nxx.pl");
route(1);
break;
};
if (uri=~"^sip:1[0-9]{10}@") {
# DB Lookup of NPANXX route
exec_dset("/root/npa_nxx.pl");
route(1);
break;
};
# Call error message
route(7);
break;
};
};
# if (isflagset(6)) {
# force_rport();
# fix_nated_contact();
# force_rtp_proxy();
# };
t_on_reply("1");
if (!t_relay()) {
if(isflagset(6)) {
unforce_rtp_proxy();
}
sl_reply_error();
};
}
route[4] {
###
# Primary LD Gateway
###
rewritehost("xxxxxxxxxxxxxxxx");
route(1);
}
route[5] {
###
# Local PSTN Gateway
###
rewritehost("xxx.xxx.xxx.7");
route(1);
}
route[6] {
###
# Calls to VM
###
rewritehost("xxx.xxx.xxx.80");
route(1);
}
route[7] {
###
# Call Failure
###
rewriteuri("sip:7110000001@xxx.xxx.xxx.80");
route(1);
}
failure_route[1] {
###
# Voicemail
###
log(1,"Failure Route Hit\n");
rewritehost("xxx.xxx.xxx.80");
append_branch();
route(1);
}
onreply_route[1] {
if (isflagset(6) && status=~"(180)|(183)|2[0-9][0-9]") {
if (!search("^Content-Length:\ +0")) {
force_rtp_proxy();
};
};
if (nat_uac_test("1") && !isflagset(9)) {
fix_nated_contact();
};
}
--
Corey S. McFadden (c(a)csma.biz)
McFadden Associates - Technology Consultants
phone 215-825-2121 x510 - web.csma.biz
*********************************************
This message has been scanned for viruses and
dangerous content, and is believed to be clean.