Hello all,
A new module providing a web interface to kamailio/sip-router RPC interface is available in trunk: http://kamailio.org/docs/modules/devel/modules/xhttp_rpc.html http://sip-router.org/docbook/sip-router/branch/master/modules/xhttp_rpc/xht... The module is using the embedded web server provided by xhttp module: http://kamailio.org/docs/modules/devel/modules/xhttp.html
A simple config that will enable the web interface is provide on the README file. Simply point your browser to http://<server_IP>:<TCP_port>/<xhttp_rpc_root> and start browsing available RPC commands. For more info about the module please see the README file.
Regards, Ovidiu Sas
Stefan Sayer writes:
if it's acceptable for you to use an external B2BUA, you could send the calls through SEMS' sbc, activating session timers there and using parallel calls cc_pcalls to limit.
what if parties of the call do not support session timers and do not (for one reason or another) send byes to terminate the call? can your example configuration still detect that the parties have gone away (assuming that only signaling goes through sems)?
limit_calls_sst.sbcprofile.conf: call_control=parallel_calls parallel_calls_module=cc_pcalls parallel_calls_uuid=$fU parallel_calls_max_calls=1 # enable session timers - will refresh # even if endpoint doesnt support it enable_session_timer=yes # refresh every minute session_expires=120
if not, i guess one needs to replace enable_session_timer with call call_timer_timer. if so, how expensive are call_timer_timers from implementation point of view?
-- juha
o Juha Heinanen on 11/21/2011 11:49 PM:
Stefan Sayer writes:
if it's acceptable for you to use an external B2BUA, you could send the calls through SEMS' sbc, activating session timers there and using parallel calls cc_pcalls to limit.
what if parties of the call do not support session timers and do not (for one reason or another) send byes to terminate the call? can your
don't confuse support for SIP session timers with doing the actual refresh.
if both endpoints do support session timers, then they will according to the algorithmus in SST negotiate the refresh timer value and who is going to have the refresher role.
if only one endpoint supports SST, that one is always going to be the one who is taking on the refresher role.
so, if the endpoints on either leg don't support SST, then it's always SEMS who is doing the refresh on that leg, if it hasn't been refreshed before (e.g. by an end-to-end refresh from the other side).
Any endpoint could do session refresh (reinvite, update) any time it wants to. SST support just help to prevent that both endpoint do the refresh, because by negotiating it, both know who is doing it, and at what interval. The other can then drop the call when session expired.
What you can do in a call stateful proxy is to enforce that SST are used, and also enforce maximum timer values. The problem with forcing SST in the proxy is of course that the call will fail of none of the endpoints supports SST. You can then also use the timer value to e.g. reset your concurrent call limit; if no refresh came up to that point, you know that the call is dead anyway (but you don't know whether clever endpoints are trying to trick your proxy).
What you exactly can't do in a call stateful proxy - as opposed to a b2bua - is to make all this work if both parties don't support SST.
example configuration still detect that the parties have gone away (assuming that only signaling goes through sems)?
yes, sems sends reinvite/update, that fails, and sems closes the call on both sides and removes the entry in the call limit table.
limit_calls_sst.sbcprofile.conf: call_control=parallel_calls parallel_calls_module=cc_pcalls parallel_calls_uuid=$fU parallel_calls_max_calls=1 # enable session timers - will refresh # even if endpoint doesnt support it enable_session_timer=yes # refresh every minute session_expires=120
if not, i guess one needs to replace enable_session_timer with call call_timer_timer. if so, how expensive are call_timer_timers from implementation point of view?
if you additionally want to set an absolute maximum call timer, you can also do that with the call_timer call control module. call_control=parallel_calls,call_timer call_timer_module=call_timer call_timer_timer=3600 parallel_calls_module=...
call_timer are not very expensive - it's one (long time) timer per call (compared to SST where it's two timers if SEMS is refresher, otherwise one).
Stefan
-- juha