[SR-Users] Dispatcher alg:7 not working accordingly
Daniel-Constantin Mierla
miconda at gmail.com
Wed Jun 13 10:23:38 CEST 2012
Hello,
On 6/12/12 12:01 PM, SamyGo wrote:
> Thanks Sir,
> Doing a static or even a run-time mapping of same UID calls to
> destination server is what I thought about this type of case almost an
> year ago.
>
> What I am thinking is : create a table for UID/Destination Mapping;
> for a unique UID see if there is any destination in that table. If it
> exists just jump to that server directly. If no UID/destination entry
> is found for that UID then invoke Dispatcher; select destination, make
> call to it, and store this in UID/destination map table !!
>
> Let me know if there could be any improvement in this.
can be a solution, indeed. You may have a race if that user does calls
in parallel first time and different destinations are selected -- not
sure it is the case for you.
Cheers,
Daniel
>
> Thanks
> Best Regards,
> Sammy G.
>
> On Tue, Jun 12, 2012 at 2:43 PM, Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
> Hello,
>
> if you are using integer UID, I would suggest you use modulo
> operation to select the destination address -- this will require
> config operations only.
>
> Another option you can map an UID to a dispatcher set id (e.g.,
> via mtree or htable) and then you can do the alg 8.
>
> Cheers,
> Daniel
>
>
> On 6/7/12 1:37 PM, SamyGo wrote:
>> Hi again,
>> yes my scenario is quiet simple. I've lots of users and groups
>> of those users are defined by UIDs, one UID means 70 users of one
>> client whereas other UID could've 3 users of another client.
>> So what I am trying to implement here is that calls from one same
>> UID are always routed to exactly one same destination server.
>> That'll help in issues like call-parking, call-pickup, conference
>> calls etc.
>>
>> I hope I've explained the scenario in simpler terms here.
>>
>> Regards,
>> Sammy Go.
>>
>>
>> On Thu, Jun 7, 2012 at 4:20 PM, Daniel-Constantin Mierla
>> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>
>> Hello,
>>
>> that hash function is intended for hashing alpha-numeric
>> usernames and has a fair distribution for such cases.
>>
>> I don't think is good for hashing numbers, at the end of a
>> day, a number is already like a hash code. You can use in the
>> config file modulo operation to select a particular
>> destination based on a number.
>>
>> Maybe if you explain what is your target to implement, we can
>> provide the right hints to do it.
>>
>> Cheers,
>> Daniel
>>
>>
>> On 6/6/12 6:09 PM, SamyGo wrote:
>>> Sorry for late reply: this wasn't very helpful. I think
>>> Hashing algo code needs to get bit smarter. If there is any
>>> possibility can you please let me know. !
>>>
>>>
>>> On Mon, Jun 4, 2012 at 3:33 PM, Daniel-Constantin Mierla
>>> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>>
>>> To make the life easier to spot the hash code in such
>>> case, I just committed a small patch to print it for alg 7:
>>>
>>> http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=83a558fbad700198a8667ef01f756269d7e2c310
>>>
>>> Should be easy to backport if other version is used.
>>>
>>> Cheers,
>>> Daniel
>>>
>>>
>>> On 6/4/12 12:23 PM, Carsten Bock wrote:
>>>
>>> It's hard to say, most likely not. You find the used
>>> hash-function here:
>>>
>>> 841 unsigned int ds_get_hash(str *x, str *y)
>>> http://git.sip-router.org/cgi-bin/gitweb.cgi?p=sip-router;a=blob;f=modules_k/dispatcher/dispatch.c;h=ae0c51b122d34e29b3474957a64b24ff492cfcd5;hb=HEAD
>>>
>>> It was originally implemented to distribute
>>> usernames to servers,
>>> which worked fine.
>>>
>>> Carsten
>>>
>>> 2012/6/4 SamyGo <govoiper at gmail.com
>>> <mailto:govoiper at gmail.com>>:
>>>
>>> Thanks Sir,
>>>
>>> Thats what I expected. Do you think this will
>>> change if I use only two
>>> values with huge difference in each other, lets
>>> say {26000,29000} ?
>>>
>>> Regards,
>>> Sammy
>>>
>>> On Mon, Jun 4, 2012 at 3:05 PM, Carsten Bock
>>> <carsten at ng-voice.com
>>> <mailto:carsten at ng-voice.com>> wrote:
>>>
>>> Hi,
>>>
>>> this functionality uses a generic "hash"
>>> function to generate an
>>> Integer-Value of the PVAR and then reduces
>>> this to the number hosts in
>>> your destination set.
>>> If you have only using two different values
>>> of the PVAR and only two
>>> hosts in the dispatcher list, it can likely
>>> happen, that the same host
>>> is choosen. You should try a wider range of
>>> values for your PVAR...
>>> (e.g. try 1000 different values), then you
>>> should see a distribution.
>>>
>>> Carsten
>>>
>>> 2012/6/4 SamyGo <govoiper at gmail.com
>>> <mailto:govoiper at gmail.com>>:
>>>
>>> Hi,
>>>
>>> No, nothing at all. I haven't went too
>>> deep into debug logs but no
>>> internal
>>> error was appearing. Everything was as
>>> calm as ever and I only get one
>>> destination uri.
>>>
>>> So maybe what I'm getting from your
>>> email is that , for this to work the
>>> way
>>> I expect is to have more unique and
>>> random values in my hash_pvar to get
>>> the
>>> required functionality.
>>>
>>> Thanks once again,
>>> BR
>>> SG
>>>
>>> On Mon, Jun 4, 2012 at 11:52 AM,
>>> Daniel-Constantin Mierla
>>> <miconda at gmail.com
>>> <mailto:miconda at gmail.com>> wrote:
>>>
>>> Hello,
>>>
>>> do you get any errors in the log?
>>>
>>> Be aware that hash functions may
>>> return same code for different input
>>> values. A hash function is
>>> guaranteed to return same code for same
>>> input
>>> value, but there can be collisions
>>> of codes for different values.
>>>
>>> Cheers,
>>> Daniel
>>>
>>>
>>> On 6/3/12 3:41 PM, SamyGo wrote:
>>>
>>> Hello,
>>>
>>> I'm having trouble using algorithm 7
>>> in dispatcher module. Here is my
>>> kamailio version. The problem is
>>> that despite multiple dispatcher
>>> entries
>>> corresponding to one set all calls
>>> go only to only one destination.
>>>
>>>
>>> [root at control1 ~]# kamailio -V
>>> version: kamailio 3.2.3
>>> (x86_64/linux) 59f87e
>>> flags: STATS: Off, USE_IPV6,
>>> USE_TCP, USE_TLS, TLS_HOOKS,
>>> USE_RAW_SOCKS,
>>> DISABLE_NAGLE, USE_MCAST,
>>> DNS_IP_HACK, SHM_MEM, SHM_MMAP,
>>> PKG_MALLOC,
>>> DBG_QM_MALLOC, USE_FUTEX,
>>> FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE,
>>> USE_DNS_FAILOVER, USE_NAPTR,
>>> USE_DST_BLACKLIST, HAVE_RESOLV_RES
>>> ADAPTIVE_WAIT_LOOPS=1024,
>>> MAX_RECV_BUFFER_SIZE 262144,
>>> MAX_LISTEN 16,
>>> MAX_URI_SIZE 1024, BUF_SIZE 65535,
>>> DEFAULT PKG_SIZE 4MB
>>> poll method support: poll, epoll_lt,
>>> epoll_et, sigio_rt, select.
>>> id: 59f87e
>>> compiled on 18:04:08 Apr 19 2012
>>> with gcc 4.1.2
>>> [root at control1 ~]#
>>>
>>> Here is the dipacther module params.
>>>
>>>
>>>
>>> # ------- Load-balancer params ------
>>> modparam("dispatcher", "db_url", DBURL)
>>> modparam("dispatcher", "table_name",
>>> "dispatcher")
>>> modparam("dispatcher", "setid_col",
>>> "setid")
>>> modparam("dispatcher",
>>> "destination_col", "destination")
>>> modparam("dispatcher", "force_dst", 1)
>>> modparam("dispatcher", "flags", 3)
>>> modparam("dispatcher", "dst_avp",
>>> "$avp(i:271)")
>>> modparam("dispatcher", "cnt_avp",
>>> "$avp(i:273)")
>>> modparam("dispatcher",
>>> "ds_ping_from",
>>> "sip:proxy at 109.XXX.2XX.XX")
>>> modparam("dispatcher",
>>> "ds_ping_interval",15)
>>> modparam("dispatcher",
>>> "ds_probing_mode", 1)
>>> modparam("dispatcher",
>>> "ds_ping_reply_codes",
>>> "class=2;code=403;code=404;code=484;class=3")
>>> modparam("dispatcher", "hash_pvar",
>>> "$avp(i:274)")
>>> modparam("dispatcher",
>>> "ds_hash_size", 9)
>>> modparam("dispatcher",
>>> "ds_hash_initexpire", 60)
>>>
>>>
>>>
>>> Below is the function call based on
>>> avp(i:274)
>>>
>>>
>>>
>>> avp_db_query("select uid from
>>> uid_did_map where accountcode =
>>> '$fU'","$avp(i:274)");
>>> xlog("L_INFO","$rm from $fu
>>> (IP:$si:$sp) ---------
>>> UID:'$avp(i:274)-----------'\n");
>>> ds_load_update();
>>> if(!ds_select_dst("1","7")) {
>>> sl_send_reply("500", "No destination
>>> available");
>>> xlog("route[MAIN] : $rm : No
>>> destinations
>>> available for $rd");
>>> exit;
>>> }
>>>
>>>
>>> I'm getting two different values for
>>> avp(i:274) {26,29} but the
>>> destination are not hashed on its base.
>>>
>>> Please help.
>>>
>>> Regards,
>>> Sammy G.
>>>
>>>
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and
>>> Kamailio (OpenSER) - sr-users
>>> mailing list
>>> sr-users at lists.sip-router.org
>>> <mailto:sr-users at lists.sip-router.org>
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>> --
>>> Daniel-Constantin Mierla -
>>> http://www.asipto.com
>>> http://twitter.com/#!/miconda
>>> <http://twitter.com/#%21/miconda> -
>>> http://www.linkedin.com/in/miconda
>>> Kamailio Advanced Training, Seattle,
>>> USA, Sep 23-26, 2012 -
>>> http://asipto.com/u/katu
>>> Kamailio Practical Workshop,
>>> Netherlands, Sep 10-12, 2012 -
>>> http://asipto.com/u/kpw
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio
>>> (OpenSER) - sr-users mailing list
>>> sr-users at lists.sip-router.org
>>> <mailto:sr-users at lists.sip-router.org>
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>>
>>> --
>>> Carsten Bock
>>> CEO (Geschäftsführer)
>>>
>>> ng-voice GmbH
>>> Schomburgstr. 80
>>> D-22767 Hamburg / Germany
>>>
>>> http://www.ng-voice.com
>>> mailto:carsten at ng-voice.com
>>> <mailto:carsten at ng-voice.com>
>>>
>>> Mobile +49 179 2021244
>>> <tel:%2B49%20179%202021244>
>>> Office +49 40 34927219
>>> <tel:%2B49%2040%2034927219>
>>> Fax +49 40 34927220 <tel:%2B49%2040%2034927220>
>>>
>>> Sitz der Gesellschaft: Hamburg
>>> Registergericht: Amtsgericht Hamburg, HRB 120189
>>> Geschäftsführer: Carsten Bock
>>> Ust-ID: DE279344284
>>>
>>> Hier finden Sie unsere handelsrechtlichen
>>> Pflichtangaben:
>>> http://www.ng-voice.com/imprint/
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio
>>> (OpenSER) - sr-users mailing list
>>> sr-users at lists.sip-router.org
>>> <mailto:sr-users at 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 at lists.sip-router.org
>>> <mailto:sr-users at lists.sip-router.org>
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>>
>>>
>>> --
>>> Daniel-Constantin Mierla - http://www.asipto.com
>>> http://twitter.com/#!/miconda
>>> <http://twitter.com/#%21/miconda> -
>>> http://www.linkedin.com/in/miconda
>>> Kamailio Advanced Training, Seattle, USA, Sep 23-26,
>>> 2012 - http://asipto.com/u/katu
>>> Kamailio Practical Workshop, Netherlands, Sep 10-12,
>>> 2012 - http://asipto.com/u/kpw
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) -
>>> sr-users mailing list
>>> sr-users at lists.sip-router.org
>>> <mailto:sr-users at lists.sip-router.org>
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>
>> --
>> Daniel-Constantin Mierla -http://www.asipto.com
>> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
>> Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 -http://asipto.com/u/katu
>> Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 -http://asipto.com/u/kpw
>>
>>
>>
>>
>
> --
> Daniel-Constantin Mierla -http://www.asipto.com
> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
> Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 -http://asipto.com/u/katu
> Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 -http://asipto.com/u/kpw
>
>
>
>
--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - http://asipto.com/u/katu
Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 - http://asipto.com/u/kpw
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20120613/0d472c78/attachment-0001.htm>
More information about the sr-users
mailing list