Hello,

Another weekend struggling to make a call from jssip to another jssip behind firewall and I still receive 488 - Not Acceptable Here. I tried all the ideas that I had/received without any success - including catch 488 and re-invite.

request_route {

# per request initial checks
route(REQINIT);

# websockets
route(WSDETECT);
# NAT detection
route(NATDETECT);

        .........
}

route[WITHINDLG] {
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
route(DLGURI);
if (is_method("BYE")) {
setflag(FLT_ACC); # do accounting ...
setflag(FLT_ACCFAILED); # ... even if the transaction fails
}
else if ( is_method("ACK") ) {
route(NATMANAGE);
    .................

}

branch_route[MANAGE_BRANCH] {
xdbg("new branch [$T_branch_idx] to $ru\n");
route(NATMANAGE);
}

# Caller NAT detection route
route[NATDETECT] {
#!ifdef WITH_NAT
force_rport();
if (nat_uac_test("19")) {
if (is_method("REGISTER")) {
fix_nated_register();
} else {
add_contact_alias();
}
setflag(FLT_NATS);
}
#!endif
return;
}

# RTPProxy control
route[NATMANAGE] {
#!ifdef WITH_NAT
if (is_request()) {
if(has_totag()) {
if(check_route_param("nat=yes")) {
setbflag(FLB_NATB);
}
}
}
if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB)))
return;

#tried this
        rtpproxy_manage("+","93.187.138.214");
#tried this too
        #if (is_request()) {
# if (is_direction("downstream"))
# rtpproxy_manage("1FOII");
# else
# rtpproxy_manage("1FOIIR");
#} else {
# if (is_direction("downstream"))
# rtpproxy_manage("2FOIIR");
# else
# rtpproxy_manage("2FOII");
#}

if (is_request()) {
if (!has_totag()) {
add_rr_param(";nat=yes");
}
}
if (is_reply()) {
if(isbflagset(FLB_NATB)) {
add_contact_alias();
}
}
#!endif
return;
}

failure_route[MANAGE_FAILURE] {
t_on_failure("UA_FAILURE");
...
}

failure_route[UA_FAILURE] {
if (t_check_status("488") && sdp_content()) {
if (sdp_get_line_startswith("$avp(mline)", "m=")) {
if ($avp(mline) =~ "SAVPF") {
$avp(rtpproxy_offer_flags) = "frocsp";
$avp(rtpproxy_answer_flags) = "froc+SP";
} else {
$avp(rtpproxy_offer_flags) = "froc+SP";
$avp(rtpproxy_answer_flags) = "frocsp";
}
# In a production system you probably need to catch
# "RTP/SAVP" and "RTP/AVPF" and handle them correctly
# too
}
append_branch();
rtpproxy_offer($avp(rtpproxy_offer_flags));
t_on_reply("RTPPROXY_REPLY");
route(RELAY);
}
}

What do I miss from my configuration?

Thank you.

Best regards,
Mihai M


On Wed, Jan 29, 2014 at 2:57 PM, Klaus Darilion <klaus.mailinglists@pernau.at> wrote:
Peter had a talk at Astricon 2013 presenting how it works. I think the magic lies on the parameters. See this slide (there are some more interesting slides)
https://www.youtube.com/watch?list=PLighc-2vlRgQHZMBp-8CCFi5otCnw7Lwj&v=rXsVSaRuv20&feature=player_detailpage#t=659


regards
Klaus



On 29.01.2014 12:53, Mihai Marin wrote:
Hello,
Thank you for your answer.

My server is a centos with public ip. I'm using chrome with jssip
framework for sip client - tried sipml5 also. I have attached to this
e-mail my kamailio configuration.

Regarding the kamailio + mediaproxy-ng I took the latest versions from
git - also tried with kamailio 4.1.1. The mediaproxy-ng I'm running
using the command: /tmp/mediaproxy-ng/daemon/mediaproxy-ng
--ip=PUBLIC_IP --listen-ng=127.0.0.1:2222 <http://127.0.0.1:2222>




I also tried the following configuration and I have the same error:
route {
         ......................

##################################################################################################################
# Use RTP-Proxy
###############################################################################################################
#if (!rtpproxy_offer("arf")) {
#sl_send_reply("503", "No RTP-Relay available");

#exit;
#}
if (is_method("INVITE")) {
if (sdp_content()) {
if (rtpproxy_offer())
rtpproxy_manage("cowf","PUBLIC_IP");
t_on_reply("1");
}
} else {
               if (sdp_content()) {
if (rtpproxy_offer())
rtpproxy_manage("cowf","PUBLIC_IP");
}
}
if (is_method("ACK") && sdp_content()) {
          rtpproxy_answer();
rtpproxy_manage("cowf","PUBLIC_IP");
}


#t_on_reply("1");

# Relay this statefully
t_relay();
         ...............................................................
*******************************************************************
onreply_route[1] {
if ((($Rp == MY_WS_PORT || $Rp == MY_WSS_PORT)
&& !(proto == WS || proto == WSS)) || $Rp == MY_MSRP_PORT) {
xlog("L_WARN", "SIP response received on $Rp\n");
drop;
exit;
}
if (nat_uac_test(64)) {
# Do NAT traversal stuff for replies to a WebSocket connection
# - even if it is not behind a NAT!
# This won't be needed in the future if Kamailio and the
# WebSocket client support Outbound and Path.
add_contact_alias();
}
# A Transaction from a NATed Client to a NATed Client? Use the RTP-Proxy!
if (status=~"(180)|(183)|(2[0-9][0-9])") {
fix_nated_contact();
if (sdp_content()) {
rtpproxy_answer();
                 }
         }
}

If my problem could be caused by a kamalio miss-configuration could you
please send me an example of configuration that should work with
websockets, rtpproxy-ng->mediaproxy-ng in order to remove one possible
cause?

Thank you.

Best regards,
Mihai M

On Wed, Jan 29, 2014 at 1:31 PM, Klaus Darilion
<klaus.mailinglists@pernau.at <mailto:klaus.mailinglists@pernau.at>> wrote:

    Hi!

    The problem is different SDP formats between normal SIP
    clients/gateways, and WebRTC clients.

    You have to instruct mediaproxy-ng to rewrite the SDP and do the
    conversion (encryption, ...).

    So either the rtpproxy_ng calls lack the commands for the
    "gatewaying", or the webrtc clients uses eg. an encryption which is
    not supported by mediaproxy-ng.

    Please also post the kamailio.cfg snippets when calling rtpproxy_ng
    and give details about your environment (browser, SIP client ...)

    regards
    Klaus


    On 27.01.2014 22:38, Mihai Marin wrote:

        Hello Sirs,
        I have a problem configuring kamailio with mediaproxy-ng and I'm
        asking
        for help.

        I managed to build everything, kamailio find support for
        mediaproxy-ng
        using rtpproxy-ng. When I'm trying to make a call from Web using my
        phone's internet provider to my computer's web I get 488 Not
        Acceptable
        Here. Swithing the caller I get no video.

        I have used the kamailio-advanced.cfg generated and added websocket
        support. The call in my network is working perfect.

        Can you help me with this?

        mediaproxy-ng log:
        mediaproxy-ng[14896]: Returning to SIP proxy:
        d7:createdi1390864117e7:__streamslld3:tag10:trhh9viigs6:__status34:known
        but
        unconfirmed peer
        address5:statsd3:rtpd8:__countersd7:packetsi0e5:__bytesi0e6:errorsi0ee12:peer
        addressd6:family4:IPv47:__address13:213.233.85.554:__porti48279ee23:advertised
        peer
        addressd6:family4:IPv47:__address13:213.233.85.554:__porti48279ee10:local
        porti30008ee4:rtcpd8:__countersd7:packetsi0e5:__bytesi0e6:errorsi0ee12:peer
        addressd6:family4:IPv47:__address13:213.233.85.554:__porti48280ee23:advertised
        peer
        addressd6:family4:IPv47:__address13:213.233.85.554:__porti48280ee10:local
        porti30009eeeed3:tag0:6:__status20:unknown peer
        address5:statsd3:rtpd8:__countersd7:packetsi0e5:__bytesi0e6:errorsi0ee12:peer
        addressd6:family4:IPv67:__address2:::4:porti0ee23:__advertised
        peer addressd6:family4:IPv67:__address2:::4:porti0ee10:local
        porti30010ee4:rtcpd8:__countersd7:packetsi0e5:__bytesi0e6:errorsi0ee12:peer
        addressd6:family4:IPv67:__address2:::4:porti0ee23:__advertised peer
        addressd6:family4:IPv67:__address2:::4:porti0ee10:local
        porti30011eeeeee6:totalsd5:__inputd3:rtpd7:packetsi0e5:__bytesi0e6:errorsi0ee4:rtcpd7:__packetsi0e5:bytesi0e6:__errorsi0eee6:outputd3:rtpd7:__packetsi0e5:bytesi0e6:__errorsi0ee4:rtcpd7:__packetsi0e5:bytesi0e6:__errorsi0eeee6:result2:oke



        kamailio:

        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=860 a=24

        n=rtpproxy_manage
        11(14926) DEBUG: rtpproxy-ng [rtpproxy.c:1333]:
        rtpp_function_call():
        proxy reply:
        d7:createdi1390864117e7:__streamslld3:tag10:trhh9viigs6:__status34:known
        but
        unconfirmed peer
        address5:statsd3:rtpd8:__countersd7:packetsi0e5:__bytesi0e6:errorsi0ee12:peer
        addressd6:family4:IPv47:__address13:213.233.85.554:__porti48279ee23:advertised
        peer
        addressd6:family4:IPv47:__address13:213.233.85.554:__porti48279ee10:local
        porti30008ee4:rtcpd8:__countersd7:packetsi0e5:__bytesi0e6:errorsi0ee12:peer
        addressd6:family4:IPv47:__address13:213.233.85.554:__porti48280ee23:advertised
        peer
        addressd6:family4:IPv47:__address13:213.233.85.554:__porti48280ee10:local
        porti30009eeeed3:tag0:6:__status20:unknown peer
        address5:statsd3:rtpd8:__countersd7:packetsi0e5:__bytesi0e6:errorsi0ee12:peer
        addressd6:family4:IPv67:__address2:::4:porti0ee23:__advertised
        peer addressd6:family4:IPv67:__address2:::4:porti0ee10:local
        porti30010ee4:rtcpd8:__countersd7:packetsi0e5:__bytesi0e6:errorsi0ee12:peer
        addressd6:family4:IPv67:__address2:::4:porti0ee23:__advertised peer
        addressd6:family4:IPv67:__address2:::4:porti0ee10:local
        porti30011eeeeee6:totalsd5:__inputd3:rtpd7:packetsi0e5:__bytesi0e6:errorsi0ee4:rtcpd7:__packetsi0e5:bytesi0e6:__errorsi0eee6:outputd3:rtpd7:__packetsi0e5:bytesi0e6:__errorsi0ee4:rtcpd7:__packetsi0e5:bytesi0e6:__errorsi0eeee6:result2:oke
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=867 a=16 n=if
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=862 a=24

        n=is_request
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=866 a=16 n=if
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=863 a=24

        n=has_totag
        11(14926) DEBUG: siputils [checks.c:103]: has_totag(): no totag
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=864 a=25

        n=add_rr_param
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=873 a=16 n=if
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=867 a=24

        n=is_reply
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=873 a=2

        n=return
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=1009 a=16 n=if
        11(14926) ERROR: *** cfgtrace:
        c=[/usr/local/etc/kamailio/__kamailio-advanced.cfg] l=989 a=24

        n=t_is_canceled
        11(14926) DEBUG: tm [t_lookup.c:1071]: t_check_msg(): DEBUG:
        t_check_msg: msg id=2 global id=2 T start=0x7f62174df4e0
        11(14926) DEBUG: tm [t_lookup.c:1143]: t_check_msg(): DEBUG:
        t_check_msg: T already found!
        11(14926) DEBUG: tm [t_reply.c:1827]: relay_reply(): DEBUG:
        relay_reply:
        branch=0, save=0, relay=0 icode=0
        11(14926) DEBUG: <core> [msg_translator.c:2007]:
        generate_res_buf_from_sip_res(__):  old size: 397, new size: 305

        11(14926) DEBUG: <core> [msg_translator.c:2025]:
        generate_res_buf_from_sip_res(__): copied size: orig:125, new:

        33, rest:
        272 msg=
        SIP/2.0 488 Not Acceptable Here
        Via: SIP/2.0/WS
        ebhg3v0qb6fm.invalid;rport=__1034;received=213.233.85.55
        <tel:213.233.85.55>;branch=__z9hG4bK8048296         <mailto:sip%3Abob@93.187.138.__214
        <mailto:sip%253Abob@93.187.138.214>>>;tag=r6dc2287g9


        From: "Alice Test" <sip:alice@93.187.138.214
        <mailto:sip%3Aalice@93.187.138.214>
        <mailto:sip%3Aalice@93.187.__138.214
        <mailto:sip%253Aalice@93.187.138.214>>>;tag=trhh9viigs


        Call-ID: fvgga4ikm8vrvuji0g0n
        CSeq: 6228 INVITE
        Content-Length: 0


        11(14926) DEBUG: websocket [ws_frame.c:713]: ws_frame_transmit(): Tx
        message:
        SIP/2.0 488 Not Acceptable Here
        Via: SIP/2.0/WS
        ebhg3v0qb6fm.invalid;rport=__1034;received=213.233.85.55
        <tel:213.233.85.55>;branch=__z9hG4bK8048296         <mailto:sip%3Abob@93.187.138.__214
        <mailto:sip%253Abob@93.187.138.214>>>;tag=r6dc2287g9


        From: "Alice Test" <sip:alice@93.187.138.214
        <mailto:sip%3Aalice@93.187.138.214>
        <mailto:sip%3Aalice@93.187.__138.214
        <mailto:sip%253Aalice@93.187.138.214>>>;tag=trhh9viigs


        Call-ID: fvgga4ikm8vrvuji0g0n
        CSeq: 6228 INVITE
        Content-Length: 0


        Thank you.

        Best regards,
        Mihai M


        _________________________________________________

        SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
        mailing list
        sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org>
        http://lists.sip-router.org/__cgi-bin/mailman/listinfo/sr-__users <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>


    _________________________________________________

    SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
    sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org>
    http://lists.sip-router.org/__cgi-bin/mailman/listinfo/sr-__users

    <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>




_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users


_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users