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

Daniel-Constantin Mierla miconda at gmail.com
Tue Jun 12 11:43:49 CEST 2012


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://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/20120612/3b91c2be/attachment-0001.htm>


More information about the sr-users mailing list