[SR-Users] SIP-over-Websocket Load Balancing
Murugan Pandian
manpower13.cse at gmail.com
Mon Jun 15 10:39:56 CEST 2015
Let me try this script ,Thanks
On Mon, Jun 15, 2015 at 1:27 PM, Alexandru Covalschi <568691 at gmail.com>
wrote:
> > sorry, i thought you use registrar/usrloc modules
> Well, I do use them - so if you could explain in which table does Kamailio
> write the user's proto and which flags I can use - I'll make a test to see
> which scheme is preferable :)
>
> So, about script:
>
> 1.) Write to redis
> Please read http://kamailio.org/docs/modules/4.3.x/modules/ndb_redis.html
> this guide to understand how to connect redis to Kamailio
> It route[AUTH] you shall add write to redis command:
>
> if (is_method("REGISTER") || from_uri==myself)
> {
> # authenticate requests
>
> redis_cmd("protobase", "SET $fU $proto bar", "r"); # Here is the redis
>
> if (!auth_check("$fd", "subscriber", "1")) {
> auth_challenge("$fd", "0");
> exit;
> }
> # user authenticated - remove auth header
> if(!is_method("REGISTER|PUBLISH"))
> consume_credentials();
> }
>
> You can find information about pseudo-variables on this
> http://www.kamailio.org/wiki/cookbooks/4.0.x/pseudovariables page
>
> 2. Rtpengine algorithm
> First of all, look through https://github.com/sipwise/rtpengine and
> http://kamailio.org/docs/modules/4.3.x/modules/rtpengine.html to
> understand what's the difference between rtpengine and rtpproxy
> In your NATMANAGE route change rtpproxy_manage(); or rtpengine_manage();
> string to this:
>
> if(ds_is_from_list())
> {
> xlog("L_NOTICE","====== selecting $tU proto\n");
> redis_cmd("protobase", "GET $tU", "uproto");
> xlog("L_NOTICE","===== $tU has proto
> $redis(uproto=>value)\n");
> if ($redis(uproto=>value)=="ws")
> {
> xlog("L_NOTICE","===== $tU is a websocket user\n");
> rtpengine_manage("direction=internal direction=external force
> trust-address replace-origin replace-session-connection ICE=force
> RTP/SAVPF");
> }
> else
> {
> xlog("L_NOTICE","===== $tU is classy user\n");
> rtpengine_manage("direction=internal direction=external force
> trust-address replace-origin replace-session-connection");
> }
> } else {
> xlog("L_NOTICE","====== $fU proto is $proto ");
> if ($proto=="ws")
> {
> xlog("L_NOTICE","===== $fU is websocket user\n");
> rtpengine_manage("direction=external direction=internal force
> trust-address replace-origin replace-session-connection ICE=force RTP/AVP");
> }
> else
> {
> xlog("L_NOTICE","===== $fU is a classy user");
> rtpengine_manage("direction=external direction=internal
> replace-origin replace-session-connection force trust-address RTP/AVP");
> }
>
> }
>
>
> 2015-06-14 22:24 GMT+03:00 Juha Heinanen <jh at tutpro.com>:
>
>> Alexandru Covalschi writes:
>>
>> > > you don't need a database for that. you can use location table flags
>> > Can you please describe how to do that? I chosen redis because I need to
>> > figure out the proto of the leg_b (called) user pretty fast - mysql is
>> much
>> > slower.
>>
>> sorry, i thought you use registrar/usrloc modules.
>>
>> -- juha
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>
>
>
> --
> Alexandru Covalschi
> ABRISS-Solutions
> VoIP engineer and system administrator
> phone: +37367398493
> web: http://abs-telecom.com/
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150615/07e6f178/attachment.html>
More information about the sr-users
mailing list