Hi all,
I have the following setup:
Phone <-> private net using TCP transport <-> (172.30.0.156) Kamailio
v5.6.3 + RTPEngine v9.3.1 (22.33.177.156) <-> public net using UDP
transport <-> Asterisk (22.33.178.77)
Phone is registered on Kamailio and forward calls on no answer or when
ext is unregistered, to Asterisk's custom IVR (nodejs app + CouchDB),
using failure_route() [1].
The problem is that when the none answer the phone and the call is
redirected to Asterisk, Kamailio announce its private IP address in
the SDP connection endpoint, hence there is no audio [2]. From
RTPEngine debug logs, it seems that RTPEngine replies with the correct
SDP connection endpoint IP [3]. See also RTPEngine interfaces
definition [4].
What am I missing? Why Kamailio is offering its private IP address in
the SDP connection, instead of its public address when forwarding the
call? If comment "route(SDP_MANAGE_IN)" in route[IN], Kamailio uses
the correct IP endpoint address in the SDP offer when forwarding the
call to Asterisk. But of course this breaks audio when someone answer
the phone. It seems that Kamailio is storing the initial SDP offer
settings and does not update it upon RTPEngine's request, even though
I have added "replace-session-connection" in route[SDP_OFFER_IVR].
Thanks for any help!
leo
[1]
route[IN] {
if (!lookup('location')) {
t_on_reply("SDP_MANAGE");
route(TOIVR);
} else {
xlog("L_INFO", "Route(IN) Req $mi $rm From <$fu> To <$tu> RURI
<$ru>\n");
record_route();
t_on_reply("SDP_MANAGE");
route(SDP_MANAGE_IN);
t_on_failure("TOIVR");
t_relay();
exit;
}
}
route[SDP_MANAGE] {
if (has_body("application/sdp")) {
rtpengine_manage();
}
}
route[SDP_MANAGE_IN] {
if (has_body("application/sdp")) {
rtpengine_manage("direction=public direction=private via-branch=1");
}
}
...
route[SDP_OFFER_IVR] {
if (has_body("application/sdp")) {
rtpengine_offer("direction=public direction=public
replace-session-connection via-branch=1");
}
}
failure_route[TOIVR] {
if (t_is_canceled()) {
exit;
}
append_branch();
route(SDP_OFFER_IVR);
# using t_relay_to so that UDP is used with the correct IP address
if (!t_relay_to("xh.voip.net")) {
xlog("L_INFO", "No answer - Failure Route(TOIVR) Req $mi $rm
>From <$fu> To <$tu> RURI <$ru> failed\n");
t_reply("500", "Unable to route");
} else {
xlog("L_INFO", "No answer - Failure Route(TOIVR) Req $mi $rm
>From <$fu> To <$tu> RURI <$ru>\n");
}
}
[2]
U 2023/10/11 09:05:43.797393 22.33.177.156:5060 -> 22.33.176.8:5060 #3
SIP/2.0 180 Ringing.
Via: SIP/2.0/UDP
22.33.176.8;branch=z9hG4bK2cb2.e559c4a326678f69ae9b4656be7bc36c.0.
Via: SIP/2.0/UDP
22.33.176.20;branch=z9hG4bK2cb2.2920561c845ee5279051359f40cb7c0f.0.
Via: SIP/2.0/UDP 44.55.73.157:5060;branch=z9hG4bK0cBdccef20c0d8bfefb.
Record-Route: <sip:172.30.0.156;transport=TCP;r2=on;lr=on;ftag=gK0c1bb12e>.
Record-Route: <sip:22.33.177.156;r2=on;lr=on;ftag=gK0c1bb12e>.
Record-Route: <sip:22.33.176.8;lr=on;ftag=gK0c1bb12e;did=7ffe.26c8>.
Record-Route: <sip:22.33.176.20;lr=on;ftag=gK0c1bb12e>.
From: "Unavailable" <sip:[email protected]>;tag=gK0c1bb12e.
To: <sip:[email protected]>;tag=660096088.
Call-ID: [email protected].
CSeq: 704680 INVITE.
Contact: <sip:[email protected]:11815;transport=TCP>.
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY,
REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE.
User-Agent: Yealink SIP-T31P 124.86.0.40.
Allow-Events: talk,hold,conference,refer,check-sync.
Content-Length: 0.
.
U 2023/10/11 09:06:03.751585 22.33.177.156:5060 -> 22.33.178.77:5060 #4
INVITE sip:[email protected]:11815;transport=TCP SIP/2.0.
Record-Route: <sip:22.33.177.156;lr=on;ftag=gK0c1bb12e>.
Record-Route: <sip:22.33.176.8;lr=on;ftag=gK0c1bb12e;did=7ffe.26c8>.
Record-Route: <sip:22.33.176.20;lr=on;ftag=gK0c1bb12e>.
Via: SIP/2.0/UDP
22.33.177.156;branch=z9hG4bK2cb2.afb825e30e294872c72c5e21ef26f3f3.1.
Via: SIP/2.0/UDP
22.33.176.8;branch=z9hG4bK2cb2.e559c4a326678f69ae9b4656be7bc36c.0.
Via: SIP/2.0/UDP
22.33.176.20;branch=z9hG4bK2cb2.2920561c845ee5279051359f40cb7c0f.0.
Via: SIP/2.0/UDP 44.55.73.157:5060;branch=z9hG4bK0cBdccef20c0d8bfefb.
f: "Unavailable" <sip:[email protected]>;tag=gK0c1bb12e.
t: <sip:[email protected]>.
i: [email protected].
CSeq: 704680 INVITE.
Max-Forwards: 32.
Allow:
INVITE,ACK,CANCEL,BYE,REGISTER,REFER,INFO,SUBSCRIBE,NOTIFY,PRACK,UPDATE,OPTIONS,MESSAGE,PUBLISH.
Accept: application/sdp, application/isup, application/dtmf,
application/dtmf-relay, multipart/mixed.
m: "Unavailable" <sip:[email protected]:5060>.
Remote-Party-ID: "Unavailable" <sip:[email protected]:5060>;privacy=off.
k: timer,100rel,precondition.
Session-Expires: 1800.
Min-SE: 90.
l: 604.
Content-Disposition: session; handling=required.
c: application/sdp.
.
v=0.
o=Sonus_UAC 525653 764118 IN IP4 44.55.73.157.
s=SIP Media Capabilities.
c=IN IP4 172.30.0.156.
t=0 0.
m=audio 30030 RTP/AVP 0 18 101.
a=maxptime:20.
a=rtpmap:0 PCMU/8000.
a=rtpmap:18 G729/8000.
a=fmtp:18 annexb=n
[3]
Oct 11 09:06:03 voipsipr7 daemon.info rtpengine[35061]: INFO:
[[email protected]]: [control] Received command 'offer'
from 127.0.0.1:39942
Oct 11 09:06:03 voipsipr7 daemon.debug rtpengine[35061]: DEBUG:
[[email protected]]: [control] Dump for 'offer' from
127.0.0.1:39942: { "supports": [ "load limit" ], "sdp": "v=0^M
o=Sonus_UAC 5
25653 764118 IN IP4 44.55.73.157^M s=SIP Media Capabilities^M c=IN IP4
44.55.78.60^M t=0 0^M m=audio 61610 RTP/AVP 0 18 101^M a=rtpmap:0
PCMU/8000^M a=rtpmap:18 G729/8000^M a=fmtp:18 annexb=no^M a=rtpmap:101
telephone-event/8000^M a=fmtp:101 0-15^M a=sendrecv^M a=maxptime:20^M
", "direction": [ "public", "public" ], "replace": [
"session-connection" ], "call-id": "[email protected]
...
Oct 11 09:06:03 voipsipr7 daemon.debug rtpengine[35061]: DEBUG:
[[email protected]]: ... ", "via-branch":
"z9hG4bK2cb2.e559c4a326678f69ae9b4656be7bc36c.0", "received-from": [
"IP4", "22.33.176
.8" ], "from-tag": "gK0c1bb12e", "command": "offer" }
...
Oct 11 09:06:03 voipsipr7 daemon.info rtpengine[35061]: INFO:
[[email protected]]: [control] Replying to 'offer' from
127.0.0.1:39942 (elapsed time 0.000638 sec)
Oct 11 09:06:03 voipsipr7 daemon.debug rtpengine[35061]: DEBUG:
[[email protected]]: [control] Response dump for
'offer' to 127.0.0.1:39942: { "sdp": "v=0^M o=Sonus_UAC 525653 764118
IN IP4 207
.223.73.157^M s=SIP Media Capabilities^M c=IN IP4 22.33.177.156^M t=0
0^M m=audio 30068 RTP/AVP 0 18 101^M a=maxptime:20^M a=rtpmap:0
PCMU/8000^M a=rtpmap:18 G729/8000^M a=fmtp:18 annexb=no^M a=rtpmap:101
teleph
one-event/8000^M a=fmtp:101 0-15^M a=sendrecv^M a=rtcp:30069^M ",
"result": "ok" }
Oct 11 09:06:03 voipsipr7 daemon.info /usr/sbin/kamailio[35261]: INFO:
<script>: No answer - Failure Route(TOIVR) Req 4 INVITE From
<sip:[email protected]> To <sip:[email protected]> RURI
<sip:
[email protected]:11815;transport=TCP>
Oct 11 09:06:03 voipsipr7 daemon.info rtpengine[35061]: INFO:
[[email protected]]: [control] Received command
'answer' from 127.0.0.1:53245
Oct 11 09:06:03 voipsipr7 daemon.debug rtpengine[35061]: DEBUG:
[[email protected]]: [control] Dump for 'answer' from
127.0.0.1:53245: { "supports": [ "load limit" ], "sdp": "v=0^M o=-
525653 7
64120 IN IP4 22.33.178.77^M s=Asterisk^M c=IN IP4 22.33.178.77^M t=0
0^M m=audio 11264 RTP/AVP 0 101^M a=rtpmap:0 PCMU/8000^M a=rtpmap:101
telephone-event/8000^M a=fmtp:101 0-16^M a=ptime:20^M a=maxptime:150^M
a=sendrecv^M m=audio 0 RTP/AVP 0 18 101^M ", "call-id":
"[email protected]", "received-from": [ "IP4",
"22.33.178.77" ], "from-tag": "gK0c1bb12e", "to-tag":
"a21c53b6-ca33-43b ...
Oct 11 09:06:03 voipsipr7 daemon.debug rtpengine[35061]: DEBUG:
[[email protected]]: ... 4-a585-af9b568a5ecb",
"command": "answer" }
...
Oct 11 09:06:03 voipsipr7 daemon.info rtpengine[35061]: INFO:
[[email protected]]: [control] Replying to 'answer'
from 127.0.0.1:53245 (elapsed time 0.000915 sec)
Oct 11 09:06:03 voipsipr7 daemon.debug rtpengine[35061]: DEBUG:
[[email protected]]: [control] Response dump for
'answer' to 127.0.0.1:53245: { "sdp": "v=0^M o=- 525653 764120 IN IP4
22.33.178
.77^M s=Asterisk^M c=IN IP4 22.33.177.156^M t=0 0^M m=audio 30056
RTP/AVP 0 101^M a=maxptime:150^M a=rtpmap:0 PCMU/8000^M a=rtpmap:101
telephone-event/8000^M a=fmtp:101 0-16^M a=sendrecv^M a=rtcp:30057^M
a=ptime
:20^M m=audio 0 RTP/AVP 0 18 101^M ", "result": "ok" }
Oct 11 09:06:03 voipsipr7 daemon.debug rtpengine[35061]: DEBUG:
[[email protected]]: [core] Forward to sink endpoint:
22.33.178.77:11264 (RTP seq 0 TS 0)
[4]
Interface definition in RTPEngine:
interface = public/22.33.177.156;public/22:33:201:105::156;private/172.30.0.156
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the
sender!
Edit mailing list options or unsubscribe: