[Kamailio-Users] Kamailio and RTPProxy
Daniel-Constantin Mierla
miconda at gmail.com
Mon Dec 14 17:29:18 CET 2009
Hello,
On 12/14/09 1:24 PM, Bruce McAlister wrote:
> Hi All,
>
> I am trying to setup kamailio 1.5.3-notls for use with rtpproxy 1.2.1. I
> have a partially working setup, however, when I have a softphone
> configured behind nat it appears that rtpproxy is using the internal ip
> (prior to nat) to setup the sdp ports.
>
> I have rtpproxy configured in bridge mode as follows:
>
> rtpproxy -f -F -l public_ip/internal_ip -s udp:*:11211
>
depending on flags, the public or internal IP is used to update the sdp.
If you get it in the wrong order, then change the flags e and i in
force_rtp_proxy() call.
It is ok to have the internal ip in the sdp going to the phone in
internal network.
Cheers,
Daniel
> I have kamailio's nathelper module setup as follows:
>
> modparam("nathelper", "rtpproxy_sock", "udp:internal_ip:11211")
>
> I then use a softphone (x-lite) behind a nat firewall (ip =
> 192.168.11.2) to establish a call, and the log of rtpproxy is as follows:
>
> INFO:handle_command: new session
> ZmRkNjRlNjM0NzExZjQ5MWUxYjllOTFhZWFmZGZkMjY., tag 8330585e;1 requested,
> type strong
> INFO:handle_command: new session on a port 52572 created, tag 8330585e;1
> INFO:handle_command: pre-filling caller's address with 192.168.11.2:35498
> INFO:handle_command: lookup on ports 52572/40380, session timer restarted
> INFO:handle_command: pre-filling callee's address with internal_ip:11250
> INFO:handle_delete: forcefully deleting session 1 on ports 52572/40380
> INFO:remove_session: RTP stats: 906 in from callee, 0 in from caller,
> 906 relayed, 0 dropped
> INFO:remove_session: RTCP stats: 3 in from callee, 0 in from caller, 3
> relayed, 0 dropped
> INFO:remove_session: session on ports 52572/40380 is cleaned up
>
> In the log above it looks like rtpproxy is using 192.168.11.2:35498 as
> the remote ip/port combination to contact for the sdp session of the
> x-lite softphone. I would have thought that it would use the IP address
> that initial request was received from to establish this connection (via
> the fix_nated_contact() function).
>
> My route logic in kamailio is a slightly modified default configuration
> that is installed with kamailio :
>
> route{
>
> .
> .
> .
>
> # NAT detection
> route(4);
>
> .
> .
> .
>
> route(1);
> }
>
> route[1]{
> if (check_route_param("nat=yes")) {
> setbflag(6);
> }
> # if (isflagset(5) || isbflagset(6)) {
> route(5);
> # }
>
> /* example how to enable some additional event routes */
> if (is_method("INVITE")) {
> #t_on_branch("1");
> t_on_reply("1");
> t_on_failure("1");
> }
>
> if (!t_relay()) {
> sl_reply_error();
> }
> exit;
> }
>
> route[4]{
> force_rport();
> if (nat_uac_test("19")) {
> if (method=="REGISTER") {
> fix_nated_register();
> } else {
> fix_nated_contact();
> }
> setflag(5);
> }
> return;
> }
>
> Would the "fix_nated_contact" function in the "nat detection" route not
> fix the contact before passing over the request to rtpproxy to establish
> the sdp session?
>
> route[5] {
> if (is_method("BYE")) {
> unforce_rtp_proxy();
> } else if (is_method("INVITE")){
> # force_rtp_proxy();
> if(src_ip==internal_ip_of_media_server)
> force_rtp_proxy("ocfaei");
> else
> force_rtp_proxy("ocfaie");
> }
> if (!has_totag()) add_rr_param(";nat=yes");
> return;
> }
>
> onreply_route[1] {
> xdbg("incoming reply\n");
>
> # if ((isflagset(5) || isbflagset(6))&&
> status=~"(183)|(2[0-9][0-9])") {
> if (status=~"(183)|(2[0-9][0-9])") {
> # force_rtp_proxy();
> if(src_ip == internal_ip_of_media_server)
> force_rtp_proxy("ocfaei");
> else
> force_rtp_proxy("ocfaie");
> }
> if (isbflagset(6)) {
> fix_nated_contact();
> }
> }
>
> failure_route[1] {
> if (is_method("INVITE")
> && (isbflagset(6) || isflagset(5))) {
> unforce_rtp_proxy();
> }
>
> if (t_was_cancelled()) {
> exit;
> }
> }
>
> Any pointers would be greatly appreciated.
>
> Thanks
> Bruce
>
> _______________________________________________
> Kamailio (OpenSER) - Users mailing list
> Users at lists.kamailio.org
> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>
>
--
Daniel-Constantin Mierla
* http://www.asipto.com/
More information about the Users
mailing list