Hi again, Nice to read the comment from you. Yes it could be a case - but this race condition will remain valid until I put some check on the insertion and lock the resource if one user is using that table, I forgot what they say in programming terms
What do you suggest i do to avoid this since I may have customers with SIP trunks and I'd have to apply concurrent call limits to them using the same logic. Regards, Sammy. On Wed, Jun 13, 2012 at 1:23 PM, Daniel-Constantin Mierla <mico...@gmail.com > wrote: > 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 < > mico...@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 < >> mico...@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 < >>> 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>: >>>>> >>>>>> 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> >>>>>> 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>: >>>>>>> >>>>>>>> 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> 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 >>>>>>>>> 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 >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> 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 >>>>>>> >>>>>>> Mobile +49 179 2021244 <%2B49%20179%202021244> >>>>>>> Office +49 40 34927219 <%2B49%2040%2034927219> >>>>>>> Fax +49 40 34927220 <%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 >>>>>>> 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 >>>>>> 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 >>>> >>> >>> >>> -- >>> Daniel-Constantin Mierla - >>> http://www.asipto.comhttp://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 >>> >>> >>> >>> >> >> -- >> Daniel-Constantin Mierla - >> http://www.asipto.comhttp://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 >> >> >> >> > > -- > Daniel-Constantin Mierla - http://www.asipto.comhttp://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