[SR-Users] Dispatcher alg:7 not working accordingly

Daniel-Constantin Mierla miconda at gmail.com
Mon Jun 4 12:33:35 CEST 2012


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>:
>> 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> 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>:
>>>> 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> 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
>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>
>>>>>
>>>>> --
>>>>> 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
>>>>>
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>>>
>>>
>>>
>>> --
>>> 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
>>>
>>> Mobile +49 179 2021244
>>> Office +49 40 34927219
>>> Fax +49 40 34927220
>>>
>>> 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
>>> 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
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>
>

-- 
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






More information about the sr-users mailing list