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 <miconda(a)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 <
> miconda(a)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 <
>> miconda(a)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(a)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=83a558f…
>>>>
>>>> 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_…
>>>>>
>>>>> It was originally implemented to distribute usernames to servers,
>>>>> which worked fine.
>>>>>
>>>>> Carsten
>>>>>
>>>>> 2012/6/4 SamyGo <govoiper(a)gmail.com>om>:
>>>>>
>>>>>> 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(a)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(a)gmail.com>om>:
>>>>>>>
>>>>>>>> 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(a)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(a)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(a)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
>>>>>>>
>>>>>>> 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(a)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(a)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(a)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
>
>
>
>