<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hello,<br>
<br>
<div class="moz-cite-prefix">On 6/13/12 11:47 AM, SamyGo wrote:<br>
</div>
<blockquote
cite="mid:CAJUJwtjmz=-055-DMfMr=T5dQQgSuEVgmttnwYdLee7VPnpNaw@mail.gmail.com"
type="cite">Hi again,
<div>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 <br>
<br>
</div>
<div>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.</div>
</blockquote>
<br>
you can use lock functions from cfgutils to synchronize on a
resource (like uid), should be better than locking an entire db
table -- this will require that the updates will be done only from
config, not by other applications.<br>
<br>
Cheers,<br>
Daniel<br>
<blockquote
cite="mid:CAJUJwtjmz=-055-DMfMr=T5dQQgSuEVgmttnwYdLee7VPnpNaw@mail.gmail.com"
type="cite">
<div><br>
</div>
<div>Regards,</div>
<div>Sammy.</div>
<div><br>
</div>
<div><br>
<div class="gmail_quote">On Wed, Jun 13, 2012 at 1:23 PM,
Daniel-Constantin Mierla <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:miconda@gmail.com"
target="_blank">miconda@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hello,
<div class="im"><br>
<br>
<div>On 6/12/12 12:01 PM, SamyGo wrote:<br>
</div>
<blockquote type="cite">Thanks Sir,
<div>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. </div>
<div><br>
</div>
<div>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 !!</div>
<div><br>
Let me know if there could be any improvement in
this.</div>
</blockquote>
<br>
</div>
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.<br>
<br>
Cheers,<br>
Daniel
<div>
<div class="h5"><br>
<br>
<blockquote type="cite">
<div><br>
</div>
<div>Thanks</div>
<div>Best Regards,</div>
<div>Sammy G.</div>
<div><br>
<div class="gmail_quote">On Tue, Jun 12, 2012 at
2:43 PM, Daniel-Constantin Mierla <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:miconda@gmail.com"
target="_blank">miconda@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hello,<br>
<br>
if you are using integer UID, I would
suggest you use modulo operation to select
the destination address -- this will require
config operations only.<br>
<br>
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.<br>
<br>
Cheers,<br>
Daniel
<div>
<div><br>
<br>
<div>On 6/7/12 1:37 PM, SamyGo wrote:<br>
</div>
<blockquote type="cite">Hi again,
<div>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. </div>
<div> 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.</div>
<div><br>
</div>
<div>I hope I've explained the
scenario in simpler terms here.</div>
<div><br>
</div>
<div>Regards,</div>
<div>Sammy Go.</div>
<div><br>
<br>
<div class="gmail_quote">On Thu, Jun
7, 2012 at 4:20 PM,
Daniel-Constantin Mierla <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:miconda@gmail.com"
target="_blank">miconda@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF"
text="#000000"> Hello,<br>
<br>
that hash function is intended
for hashing alpha-numeric
usernames and has a fair
distribution for such cases.<br>
<br>
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.<br>
<br>
Maybe if you explain what is
your target to implement, we
can provide the right hints to
do it.<br>
<br>
Cheers,<br>
Daniel
<div>
<div><br>
<br>
<div>On 6/6/12 6:09 PM,
SamyGo wrote:<br>
</div>
<blockquote type="cite">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. !
<div> <br>
<br>
<div
class="gmail_quote">On
Mon, Jun 4, 2012 at
3:33 PM,
Daniel-Constantin
Mierla <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span>
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0 0
0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">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:<br>
<br>
<a
moz-do-not-send="true"
href="http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=83a558fbad700198a8667ef01f756269d7e2c310"
target="_blank">http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=83a558fbad700198a8667ef01f756269d7e2c310</a><br>
<br>
Should be easy to
backport if other
version is used.<br>
<br>
Cheers,<br>
Daniel
<div>
<div><br>
<br>
On 6/4/12
12:23 PM,
Carsten Bock
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
It's hard to
say, most
likely not.
You find the
used
hash-function
here:<br>
<br>
841 unsigned
int
ds_get_hash(str
*x, str *y)<br>
<a
moz-do-not-send="true"
href="http://git.sip-router.org/cgi-bin/gitweb.cgi?p=sip-router;a=blob;f=modules_k/dispatcher/dispatch.c;h=ae0c51b122d34e29b3474957a64b24ff492cfcd5;hb=HEAD"
target="_blank">http://git.sip-router.org/cgi-bin/gitweb.cgi?p=sip-router;a=blob;f=modules_k/dispatcher/dispatch.c;h=ae0c51b122d34e29b3474957a64b24ff492cfcd5;hb=HEAD</a><br>
<br>
It was
originally
implemented to
distribute
usernames to
servers,<br>
which worked
fine.<br>
<br>
Carsten<br>
<br>
2012/6/4
SamyGo <<a
moz-do-not-send="true" href="mailto:govoiper@gmail.com" target="_blank">govoiper@gmail.com</a>>:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Thanks Sir,<br>
<br>
Thats what I
expected. Do
you think this
will change if
I use only two<br>
values with
huge
difference in
each other,
lets say
{26000,29000}
?<br>
<br>
Regards,<br>
Sammy<br>
<br>
On Mon, Jun 4,
2012 at 3:05
PM, Carsten
Bock <<a
moz-do-not-send="true"
href="mailto:carsten@ng-voice.com" target="_blank">carsten@ng-voice.com</a>>
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Hi,<br>
<br>
this
functionality
uses a generic
"hash"
function to
generate an<br>
Integer-Value
of the PVAR
and then
reduces this
to the number
hosts in<br>
your
destination
set.<br>
If you have
only using two
different
values of the
PVAR and only
two<br>
hosts in the
dispatcher
list, it can
likely happen,
that the same
host<br>
is choosen.
You should try
a wider range
of values for
your PVAR...<br>
(e.g. try 1000
different
values), then
you should see
a
distribution.<br>
<br>
Carsten<br>
<br>
2012/6/4
SamyGo <<a
moz-do-not-send="true" href="mailto:govoiper@gmail.com" target="_blank">govoiper@gmail.com</a>>:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Hi,<br>
<br>
No, nothing at
all. I haven't
went too deep
into debug
logs but no<br>
internal<br>
error was
appearing.
Everything was
as calm as
ever and I
only get one<br>
destination
uri.<br>
<br>
So maybe what
I'm getting
from your
email is that
, for this to
work the<br>
way<br>
I expect is to
have more
unique and
random values
in my
hash_pvar to
get<br>
the<br>
required
functionality.<br>
<br>
Thanks once
again,<br>
BR<br>
SG<br>
<br>
On Mon, Jun 4,
2012 at 11:52
AM,
Daniel-Constantin
Mierla<br>
<<a
moz-do-not-send="true"
href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>>
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
Hello,<br>
<br>
do you get any
errors in the
log?<br>
<br>
Be aware that
hash functions
may return
same code for
different
input<br>
values. A hash
function is
guaranteed to
return same
code for same<br>
input<br>
value, but
there can be
collisions of
codes for
different
values.<br>
<br>
Cheers,<br>
Daniel<br>
<br>
<br>
On 6/3/12 3:41
PM, SamyGo
wrote:<br>
<br>
Hello,<br>
<br>
I'm having
trouble using
algorithm 7 in
dispatcher
module. Here
is my<br>
kamailio
version. The
problem is
that despite
multiple
dispatcher<br>
entries<br>
corresponding
to one set all
calls go only
to only one
destination.<br>
<br>
<br>
[root@control1
~]# kamailio
-V<br>
version:
kamailio 3.2.3
(x86_64/linux)
59f87e<br>
flags: STATS:
Off, USE_IPV6,
USE_TCP,
USE_TLS,
TLS_HOOKS,<br>
USE_RAW_SOCKS,<br>
DISABLE_NAGLE,
USE_MCAST,
DNS_IP_HACK,
SHM_MEM,
SHM_MMAP,
PKG_MALLOC,<br>
DBG_QM_MALLOC,
USE_FUTEX,
FAST_LOCK-ADAPTIVE_WAIT,
USE_DNS_CACHE,<br>
USE_DNS_FAILOVER,
USE_NAPTR,
USE_DST_BLACKLIST,
HAVE_RESOLV_RES<br>
ADAPTIVE_WAIT_LOOPS=1024,
MAX_RECV_BUFFER_SIZE
262144,
MAX_LISTEN 16,<br>
MAX_URI_SIZE
1024, BUF_SIZE
65535, DEFAULT
PKG_SIZE 4MB<br>
poll method
support: poll,
epoll_lt,
epoll_et,
sigio_rt,
select.<br>
id: 59f87e<br>
compiled on
18:04:08 Apr
19 2012 with
gcc 4.1.2<br>
[root@control1
~]#<br>
<br>
Here is the
dipacther
module params.<br>
<br>
<br>
<br>
# -------
Load-balancer
params ------<br>
modparam("dispatcher",
"db_url",
DBURL)<br>
modparam("dispatcher",
"table_name",
"dispatcher")<br>
modparam("dispatcher",
"setid_col",
"setid")<br>
modparam("dispatcher",
"destination_col",
"destination")<br>
modparam("dispatcher",
"force_dst",
1)<br>
modparam("dispatcher",
"flags", 3)<br>
modparam("dispatcher",
"dst_avp",
"$avp(i:271)")<br>
modparam("dispatcher",
"cnt_avp",
"$avp(i:273)")<br>
modparam("dispatcher",
"ds_ping_from",
<a
moz-do-not-send="true">"sip:proxy@109.XXX.2XX.XX"</a>)<br>
modparam("dispatcher",
"ds_ping_interval",15)<br>
modparam("dispatcher",
"ds_probing_mode",
1)<br>
modparam("dispatcher",
"ds_ping_reply_codes",<br>
"class=2;code=403;code=404;code=484;class=3")<br>
modparam("dispatcher",
"hash_pvar",
"$avp(i:274)")<br>
modparam("dispatcher",
"ds_hash_size",
9)<br>
modparam("dispatcher",
"ds_hash_initexpire",
60)<br>
<br>
<br>
<br>
Below is the
function call
based on
avp(i:274)<br>
<br>
<br>
<br>
avp_db_query("select
uid from
uid_did_map
where
accountcode =<br>
'$fU'","$avp(i:274)");<br>
xlog("L_INFO","$rm
from $fu
(IP:$si:$sp)
---------<br>
UID:'$avp(i:274)-----------'\n");<br>
ds_load_update();<br>
if(!ds_select_dst("1","7"))
{<br>
sl_send_reply("500",
"No
destination<br>
available");<br>
xlog("route[MAIN]
: $rm : No
destinations<br>
available for
$rd");<br>
exit;<br>
}<br>
<br>
<br>
I'm getting
two different
values for
avp(i:274)
{26,29} but
the<br>
destination
are not hashed
on its base.<br>
<br>
Please help.<br>
<br>
Regards,<br>
Sammy G.<br>
<br>
<br>
<br>
_______________________________________________<br>
SIP Express
Router (SER)
and Kamailio
(OpenSER) -
sr-users
mailing list<br>
<a
moz-do-not-send="true"
href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
<a
moz-do-not-send="true"
href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"
target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
<br>
<br>
--<br>
Daniel-Constantin
Mierla - <a
moz-do-not-send="true"
href="http://www.asipto.com" target="_blank">http://www.asipto.com</a><br>
<a
moz-do-not-send="true"
href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a>
- <a
moz-do-not-send="true"
href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a><br>
Kamailio
Advanced
Training,
Seattle, USA,
Sep 23-26,
2012 -<br>
<a
moz-do-not-send="true"
href="http://asipto.com/u/katu" target="_blank">http://asipto.com/u/katu</a><br>
Kamailio
Practical
Workshop,
Netherlands,
Sep 10-12,
2012 -<br>
<a
moz-do-not-send="true"
href="http://asipto.com/u/kpw" target="_blank">http://asipto.com/u/kpw</a><br>
<br>
<br>
<br>
</blockquote>
<br>
_______________________________________________<br>
SIP Express
Router (SER)
and Kamailio
(OpenSER) -
sr-users
mailing list<br>
<a
moz-do-not-send="true"
href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
<a
moz-do-not-send="true"
href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"
target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
<br>
</blockquote>
<br>
<br>
--<br>
Carsten Bock<br>
CEO
(Geschäftsführer)<br>
<br>
ng-voice GmbH<br>
Schomburgstr.
80<br>
D-22767
Hamburg /
Germany<br>
<br>
<a
moz-do-not-send="true"
href="http://www.ng-voice.com" target="_blank">http://www.ng-voice.com</a><br>
mailto:<a
moz-do-not-send="true"
href="mailto:carsten@ng-voice.com" target="_blank">carsten@ng-voice.com</a><br>
<br>
Mobile <a
moz-do-not-send="true"
href="tel:%2B49%20179%202021244" value="+491792021244" target="_blank">+49
179 2021244</a><br>
Office <a
moz-do-not-send="true"
href="tel:%2B49%2040%2034927219" value="+494034927219" target="_blank">+49
40 34927219</a><br>
Fax <a
moz-do-not-send="true"
href="tel:%2B49%2040%2034927220" value="+494034927220" target="_blank">+49
40 34927220</a><br>
<br>
Sitz der
Gesellschaft:
Hamburg<br>
Registergericht:
Amtsgericht
Hamburg, HRB
120189<br>
Geschäftsführer:
Carsten Bock<br>
Ust-ID:
DE279344284<br>
<br>
Hier finden
Sie unsere
handelsrechtlichen
Pflichtangaben:<br>
<a
moz-do-not-send="true"
href="http://www.ng-voice.com/imprint/" target="_blank">http://www.ng-voice.com/imprint/</a><br>
<br>
_______________________________________________<br>
SIP Express
Router (SER)
and Kamailio
(OpenSER) -
sr-users
mailing list<br>
<a
moz-do-not-send="true"
href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
<a
moz-do-not-send="true"
href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"
target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</blockquote>
<br>
<br>
_______________________________________________<br>
SIP Express
Router (SER)
and Kamailio
(OpenSER) -
sr-users
mailing list<br>
<a
moz-do-not-send="true"
href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
<a
moz-do-not-send="true"
href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"
target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
<br>
</blockquote>
<br>
<br>
</blockquote>
<br>
-- <br>
Daniel-Constantin
Mierla - <a
moz-do-not-send="true"
href="http://www.asipto.com" target="_blank">http://www.asipto.com</a><br>
<a
moz-do-not-send="true"
href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a>
- <a
moz-do-not-send="true"
href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a><br>
Kamailio
Advanced
Training,
Seattle, USA,
Sep 23-26,
2012 - <a
moz-do-not-send="true"
href="http://asipto.com/u/katu" target="_blank">http://asipto.com/u/katu</a><br>
Kamailio
Practical
Workshop,
Netherlands,
Sep 10-12,
2012 - <a
moz-do-not-send="true"
href="http://asipto.com/u/kpw" target="_blank">http://asipto.com/u/kpw</a><br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
SIP Express
Router (SER)
and Kamailio
(OpenSER) -
sr-users
mailing list<br>
<a
moz-do-not-send="true"
href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
<a
moz-do-not-send="true"
href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"
target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
<pre cols="72">--
Daniel-Constantin Mierla - <a moz-do-not-send="true" href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a moz-do-not-send="true" href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a moz-do-not-send="true" href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - <a moz-do-not-send="true" href="http://asipto.com/u/katu" target="_blank">http://asipto.com/u/katu</a>
Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 - <a moz-do-not-send="true" href="http://asipto.com/u/kpw" target="_blank">http://asipto.com/u/kpw</a></pre>
<br>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
<pre cols="72">--
Daniel-Constantin Mierla - <a moz-do-not-send="true" href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a moz-do-not-send="true" href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a moz-do-not-send="true" href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - <a moz-do-not-send="true" href="http://asipto.com/u/katu" target="_blank">http://asipto.com/u/katu</a>
Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 - <a moz-do-not-send="true" href="http://asipto.com/u/kpw" target="_blank">http://asipto.com/u/kpw</a></pre>
<br>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
<pre cols="72">--
Daniel-Constantin Mierla - <a moz-do-not-send="true" href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a moz-do-not-send="true" href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a moz-do-not-send="true" href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - <a moz-do-not-send="true" href="http://asipto.com/u/katu" target="_blank">http://asipto.com/u/katu</a>
Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 - <a moz-do-not-send="true" href="http://asipto.com/u/kpw" target="_blank">http://asipto.com/u/kpw</a></pre>
<br>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Daniel-Constantin Mierla - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - <a class="moz-txt-link-freetext" href="http://asipto.com/u/katu">http://asipto.com/u/katu</a>
Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 - <a class="moz-txt-link-freetext" href="http://asipto.com/u/kpw">http://asipto.com/u/kpw</a></pre>
<br>
<br>
</body>
</html>