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 <mico...@gmail.com <mailto:mico...@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 <govoi...@gmail.com <mailto:govoi...@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
            <cars...@ng-voice.com <mailto:cars...@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 <govoi...@gmail.com
                <mailto:govoi...@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
                    <mico...@gmail.com <mailto:mico...@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@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@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:pr...@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@lists.sip-router.org
                        <mailto:sr-users@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@lists.sip-router.org
                    <mailto:sr-users@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:cars...@ng-voice.com <mailto:cars...@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@lists.sip-router.org
                <mailto:sr-users@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@lists.sip-router.org
            <mailto:sr-users@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@lists.sip-router.org <mailto:sr-users@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@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to