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@gmail.com mailto:miconda@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@gmail.com <mailto:govoiper@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@ng-voice.com <mailto:carsten@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@gmail.com <mailto:govoiper@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@gmail.com <mailto:miconda@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:proxy@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:carsten@ng-voice.com <mailto:carsten@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