[OpenSIPS-Users] RTPproxy + Opensips 1.7.0
Razvan Crainea
razvancrainea at opensips.org
Tue Nov 8 13:46:45 CET 2011
Hi Sebastien,
Taking a look into RTPProxy code, I see that the error 10 is returned
when rtpproxy can't create a listener. This happens when it can't create
or bind a socket, or doesn't have enough ports allocated. My guess is
that it can't bind a socket on the interface specified by the "-l"
parameter.
Best regards,
--
Ra(zvan Crainea
OpenSIPS Developer
On 11/08/2011 02:38 PM, Sebastien CRUAUX wrote:
> Hi Razvan,
>
> You are right ! I think I found the lines of code you are talking
> about in the force_rtp_proxy_body function so I added some traces in it :
>
> cp = send_rtpp_command(args->node, v,
> vcnt);
> LM_INFO("command sent to rtpproxy, cp
> = %s, err = %d\n",cp,rtpp_get_error(cp));
> if (!cp && !create) {
> LM_ERR("cannot lookup a
> session on a different RTPProxy\n");
> goto error;
> }
> if (cp && (err = rtpp_get_error(cp))) {
> /* check internal errors */
> if (err >= 7 && err <= 10) {
> LM_INFO("rtpproxy
> returned an error, we disable the node\n");
> cp = NULL;
>
> args->node->rn_disabled = 1;
>
> args->node->rn_recheck_ticks = get_ticks() +
>
> rtpproxy_disable_tout;
>
> raise_rtpproxy_event(args->node, 0);
> } else {
> LM_ERR("unhandled
> rtpproxy error: %d\n", err);
> goto error;
> }
> }
> /* if not successfull choose a
> different rtpproxy */
> if (!cp) {
> args->node =
> select_rtpp_node(args->callid, 0);
> if (!args->node) {
> LM_ERR("no available
> proxies\n");
> goto error;
> }
> LM_DBG("trying new rtpproxy
> node %s\n", args->node->rn_address);
> }
>
> and this is what I get :
>
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]: INFO :: (INVITE)
> rtpproxy set 1
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:select_rtpp_node: entering select_rtpp_node
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:select_rtpp_node: rtpproxy node count = 1
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:select_rtpp_node: node->rn_disabled = 0,
> node->rn_recheck_ticks = 0, get_ticks = 4
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:select_rtpp_node: result rtpp_test = 0
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:force_rtp_proxy_body: command sent to rtpproxy, cp = E10
> , err = 10
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:force_rtp_proxy_body: rtpproxy returned an error, we
> disable the node
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:select_rtpp_node: entering select_rtpp_node
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:select_rtpp_node: rtpproxy node count = 1
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:select_rtpp_node: node->rn_disabled = 1,
> node->rn_recheck_ticks = 64, get_ticks = 4
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> INFO:rtpproxy:select_rtpp_node: result rtpp_test = 1
> Nov 8 13:33:57 WWW_64Bits ./opensips[25568]:
> ERROR:rtpproxy:force_rtp_proxy_body: no available proxies
>
> This confirms what you said. Any idea what this error 10 means ?
> Unfortunaltely i cannot find the rtpproxy log file, I think it should
> output its logs in /var/log/messages but it doesn't.
>
> Best regards,
>
> Sebastien
>
> Le 08/11/2011 12:39, Razvan Crainea a écrit :
>> Hi Sebastien,
>>
>> I think I found out what is your problem. As you noted, there are two
>> "select_rtpp_node" functions calls for only one INVITE. The problem
>> is that the first time OpenSIPS sends a command to RTPProxy, it
>> receives an error. If OpenSIPS detecs the error, it automatically
>> disables the node for a while (exactly for rn_recheck_ticks seconds,
>> your second question) and tries a new node. As you don't have any
>> different node in the set, no RTPProxy can be used and an error is
>> triggered.
>> You should try to see why RTPProxy returns an error to OpenSIPS
>> requests. You can check RTPProxy logs, or try to trace the
>> communication between them. I'd be happy to help you if you can
>> provide me any of this information.
>>
>> Regards,
>> --
>> Ra(zvan Crainea
>> OpenSIPS Developer
>>
>> On 11/08/2011 01:22 PM, Sebastien CRUAUX wrote:
>>> Hi Razvan,
>>>
>>> Actually we don't even enter in the rtpp_test function. I added some
>>> other traces in the select_rtpp_node function :
>>>
>>> if (selected_rtpp_set->rtpp_node_count == 1) {
>>> LM_INFO("rtpproxy node count = 1\n");
>>> node = selected_rtpp_set->rn_first;
>>> LM_INFO("node->rn_disabled = %d,
>>> node->rn_recheck_ticks = %d, get_ticks =
>>> %d\n",node->rn_disabled,node->rn_recheck_ticks,get_ticks());
>>> if (node->rn_disabled && node->rn_recheck_ticks <=
>>> get_ticks())
>>> node->rn_disabled = rtpp_test(node, 1, 0);
>>> LM_INFO("result rtpp_test = %d\n", node->rn_disabled);
>>> return node->rn_disabled ? NULL : node;
>>> }
>>>
>>> and here is what I get when an INVITE is received :
>>>
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]: INFO :: (INVITE)
>>> rtpproxy set 1
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]:
>>> INFO:rtpproxy:select_rtpp_node: entering select_rtpp_node
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]:
>>> INFO:rtpproxy:select_rtpp_node: rtpproxy node count = 1
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]:
>>> INFO:rtpproxy:select_rtpp_node: node->rn_disabled = 0,
>>> node->rn_recheck_ticks = 0, get_ticks = 121
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]:
>>> INFO:rtpproxy:select_rtpp_node: result rtpp_test = 0
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]:
>>> INFO:rtpproxy:select_rtpp_node: entering select_rtpp_node
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]:
>>> INFO:rtpproxy:select_rtpp_node: rtpproxy node count = 1
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]:
>>> INFO:rtpproxy:select_rtpp_node: node->rn_disabled = 1,
>>> node->rn_recheck_ticks = 181, get_ticks = 121
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]:
>>> INFO:rtpproxy:select_rtpp_node: result rtpp_test = 1
>>> Nov 8 11:19:01 WWW_64Bits ./opensips[24317]:
>>> ERROR:rtpproxy:force_rtp_proxy_body: no available proxies
>>>
>>> You can see we never enter in the "if" :(
>>> Consequently, I have several questions :
>>> - why do we see 2 calls to select_rtpp_node while we have chosen
>>> only the rtpproxy set 1 ?
>>> - what does the node->rn_recheck_ticks parameter means ?
>>> - do you think the bug is in my opensips.cfg or in the rtpproxy module ?
>>>
>>> Thanks a lot for your help.
>>>
>>> Best regards,
>>>
>>> Sebastien
>>>
>>> Le 08/11/2011 12:10, Razvan Crainea a écrit :
>>>> Hi Sebastien,
>>>>
>>>> No, if rtpp_test returns 1, it means that the chosen rtpproxy node
>>>> should be disabled for a while. You should try to see why OpenSIPS
>>>> detects the node as disabled.
>>>>
>>>> Regards,
>>>> --
>>>> Ra(zvan Crainea
>>>> OpenSIPS Developer
>>>>
>>>> On 11/07/2011 04:31 PM, Sebastien CRUAUX wrote:
>>>>> Hi Razvan,
>>>>>
>>>>> I added some INFO traces in the select_rtpp_node function in order
>>>>> to get some clues about what happens (see enclosed file).
>>>>> Here is what is displayed in my /var/log/messages when an INVITE
>>>>> is received :
>>>>>
>>>>> Nov 7 15:21:38 WWW_64Bits ./opensips[19884]: INFO :: (INVITE)
>>>>> rtpproxy set 1
>>>>> Nov 7 15:21:38 WWW_64Bits ./opensips[19884]:
>>>>> INFO:rtpproxy:select_rtpp_node: entering select_rtpp_node
>>>>> Nov 7 15:21:38 WWW_64Bits ./opensips[19884]:
>>>>> INFO:rtpproxy:select_rtpp_node: rtpproxy node count = 1
>>>>> Nov 7 15:21:38 WWW_64Bits ./opensips[19884]:
>>>>> INFO:rtpproxy:select_rtpp_node: result rtpp_test = 0
>>>>> Nov 7 15:21:38 WWW_64Bits ./opensips[19884]:
>>>>> INFO:rtpproxy:select_rtpp_node: entering select_rtpp_node
>>>>> Nov 7 15:21:38 WWW_64Bits ./opensips[19884]:
>>>>> INFO:rtpproxy:select_rtpp_node: rtpproxy node count = 1
>>>>> Nov 7 15:21:38 WWW_64Bits ./opensips[19884]:
>>>>> INFO:rtpproxy:select_rtpp_node: result rtpp_test = 1
>>>>> Nov 7 15:21:38 WWW_64Bits ./opensips[19884]:
>>>>> ERROR:rtpproxy:force_rtp_proxy_body: no available proxies
>>>>>
>>>>> This is really weird, if rtpp_test returns 1, it should mean that
>>>>> the rtpproxy socket was found right ? Then why do we have an error
>>>>> message saying that there are no available proxies ? I'm confused...
>>>>>
>>>>> Best regards,
>>>>>
>>>>> Sebastien
>>>>>
>>>>> Le 04/11/2011 15:23, Razvan Crainea a écrit :
>>>>>> Hi Sebastien,
>>>>>>
>>>>>> I will try to replicate this scenario and see if I am getting the
>>>>>> same behaviour. I will get back to you later.
>>>>>>
>>>>>> Regards,
>>>>>> --
>>>>>> Ra(zvan Crainea
>>>>>> OpenSIPS Developer
>>>>>>
>>>>>> On 11/04/2011 04:20 PM, Sebastien CRUAUX wrote:
>>>>>>> I also tried to enter the rtpproxy_sock parameters and the set
>>>>>>> IDs in the nh_sockets table and to load the rtpproxy sets from
>>>>>>> the database but it did not work either :(
>>>>>>>
>>>>>>> Sebastien
>>>>>>>
>>>>>>> Le 04/11/2011 11:52, Sebastien CRUAUX a écrit :
>>>>>>>> Hi Razvan,
>>>>>>>>
>>>>>>>> Yes I think I declared the rtpproxy sets correctly, unless
>>>>>>>> there is some new parameter in the new rtpproxy module that I
>>>>>>>> forgot :
>>>>>>>>
>>>>>>>> # ----- rtpproxy params -----
>>>>>>>> modparam("rtpproxy", "rtpproxy_sock", "1 == udp:localhost:12221")
>>>>>>>> modparam("rtpproxy", "rtpproxy_sock", "2 == udp:localhost:12222")
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Sebastien
>>>>>>>>
>>>>>>>> Le 04/11/2011 11:44, Razvan Crainea a écrit :
>>>>>>>>> Hi Sebastien,
>>>>>>>>>
>>>>>>>>> Are you sure that when you declare the RTPProxy sets you
>>>>>>>>> allocate them the set identifiers (1 and 2)? Can you send us
>>>>>>>>> the rtpproxy_sock parameters declaration?
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> --
>>>>>>>>> Ra(zvan Crainea
>>>>>>>>> OpenSIPS Developer
>>>>>>>>>
>>>>>>>>> On 11/04/2011 12:27 PM, Sebastien CRUAUX wrote:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I am currently migrating my old Opensips 1.6.2 to the new
>>>>>>>>>> Opensips 1.7.0 but I am facing some issues with the
>>>>>>>>>> configuration of rtpproxy.
>>>>>>>>>> The version of rtpproxy I am using is the commit
>>>>>>>>>> 6b82ff914543d21ff9ddbb797b40a77516348308.
>>>>>>>>>>
>>>>>>>>>> When I start Opensips, the two sets of rtpproxies I
>>>>>>>>>> configured are detected :
>>>>>>>>>>
>>>>>>>>>> INFO:rtpproxy:rtpp_test: rtp proxy <udp:localhost:12221>
>>>>>>>>>> found, support for it enabled
>>>>>>>>>> INFO:rtpproxy:rtpp_test: rtp proxy <udp:localhost:12222>
>>>>>>>>>> found, support for it enabled
>>>>>>>>>>
>>>>>>>>>> However, when an INVITE is received by Opensips it seems
>>>>>>>>>> rtpproxy is not found, consequently the SDP body is not
>>>>>>>>>> rewritten :
>>>>>>>>>>
>>>>>>>>>> INFO :: (INVITE) rtpproxy set 1
>>>>>>>>>> ERROR:rtpproxy:force_rtp_proxy_body: no available proxies
>>>>>>>>>>
>>>>>>>>>> More information about my configuration :
>>>>>>>>>> - my Opensips/rtpproxy server has 2 IP addresses, one opened
>>>>>>>>>> on the internet, one internal used to communicate with my
>>>>>>>>>> VoIP/PSTN gateway
>>>>>>>>>> - I have 2 sets of rtpproxies : the 1st one is in bridge mode
>>>>>>>>>> for VoIP to PSTN or PSTN to VoIP calls, the 2nd one only
>>>>>>>>>> listens on the external IP and is used for SIP to SIP calls
>>>>>>>>>>
>>>>>>>>>> ./rtpproxy -u seb -l 172.17.1.126 172.17.1.131 -s
>>>>>>>>>> udp:localhost 12221 -m 18000 -M 18020
>>>>>>>>>> ./rtpproxy -u seb -l 172.17.1.131 -s udp:localhost 12222
>>>>>>>>>> -m 18021 -M 18030
>>>>>>>>>>
>>>>>>>>>> - below is the part of my opensips.cfg file which handles the
>>>>>>>>>> INVITE requests (I just replaced my public IP address with
>>>>>>>>>> xx.xx.xx.xx) :
>>>>>>>>>>
>>>>>>>>>> if (is_method("INVITE")) {
>>>>>>>>>> if (registered("location","$fu") &&
>>>>>>>>>> registered("location")) { # if From and To are SIP
>>>>>>>>>> registered : we use rtpproxy 2 (external IP)
>>>>>>>>>> setflag(22);
>>>>>>>>>> xlog("INFO :: (INVITE) rtpproxy set 2");
>>>>>>>>>> }
>>>>>>>>>> else
>>>>>>>>>> {
>>>>>>>>>> # otherwise, SIP to ISUP or ISUP to SIP call : we use
>>>>>>>>>> rtpproxy 1 (bridge mode)
>>>>>>>>>> xlog("INFO :: (INVITE) rtpproxy set 1");
>>>>>>>>>> }
>>>>>>>>>> if (has_body("application/sdp")) {
>>>>>>>>>> if (isflagset(22)) {
>>>>>>>>>> set_rtp_proxy_set("2");
>>>>>>>>>> if
>>>>>>>>>> (rtpproxy_offer("","xx.xx.xx.xx")) {
>>>>>>>>>> t_on_reply("1");
>>>>>>>>>> }
>>>>>>>>>> }
>>>>>>>>>> else {
>>>>>>>>>> set_rtp_proxy_set("1");
>>>>>>>>>> if (dst_ip == 172.17.1.131)
>>>>>>>>>> { # my IP address opened to the internet
>>>>>>>>>> (external IP)
>>>>>>>>>> if
>>>>>>>>>> (rtpproxy_offer("ei","xx.xx.xx.xx")) {
>>>>>>>>>> t_on_reply("1");
>>>>>>>>>> }
>>>>>>>>>> }
>>>>>>>>>> if (dst_ip == 172.17.1.126)
>>>>>>>>>> { # my internal IP address
>>>>>>>>>> if
>>>>>>>>>> (rtpproxy_offer("ie","xx.xx.xx.xx")) {
>>>>>>>>>> t_on_reply("1");
>>>>>>>>>> }
>>>>>>>>>> }
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> }
>>>>>>>>>> else {
>>>>>>>>>> t_on_reply("2");
>>>>>>>>>> }
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Any idea ? I have been stuck on this issue for a few days,
>>>>>>>>>> this configuration worked fine with my previous versions of
>>>>>>>>>> Opensips and rtpproxy.
>>>>>>>>>>
>>>>>>>>>> Best Regards,
>>>>>>>>>>
>>>>>>>>>> Sebastien
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Users mailing list
>>>>>>>>>> Users at lists.opensips.org
>>>>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Users mailing list
>>>>>>>>> Users at lists.opensips.org
>>>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Users mailing list
>>>>>>>> Users at lists.opensips.org
>>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Users mailing list
>>>>>>> Users at lists.opensips.org
>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Users mailing list
>>>>>> Users at lists.opensips.org
>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at lists.opensips.org
>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.opensips.org
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20111108/293f356f/attachment-0001.htm>
More information about the Users
mailing list