Hello,
On 05/17/05 10:22, Hendrik Scholz wrote:
Hi!
Andrei Pelinescu-Onciul wrote:
Balance the REGISTERs after the to uri and the
INVITEs after the request
uris (ds_select_dst("..", "3"), not documented but present in
unstable).
I already found those when backporting the dispatcher module to 0.8.14.
If the uri is an alias (e.g.
lookup("aliases") returns true) balance the
message again after the request uri/send it back to the load balancer.
Let's pretend this:
I register UA 'a' and it get's balanced to SER backend 'Y'.
I register UA 'b' and it get's balanced to SER backend 'Z'.
Now 'a' also has an alias (a phone number) of '123456'.
If I call 'a' the load balancer takes care of everything and backend 'Y'
can process the call.
Now '123456' get's balanced to 'Z' due to the hash algorithm.
Since the initial register of 'a' was on 'Y' the 'Z' backend
doesn't
know anything about the alias.
Or am I getting something wrong here?
My idea was to get the alias from Radius instead of the incomplete
usrloc DB. The additional hop involved is needed to push the
request to the backend ('Y') where 'a' initially registered on.
there could be more complex scenarios, for example if you use speed
dials then you have kind of aliases per users and must take in
consideration the r-uri and from uri. I have started working on a
controller system for dispatcher to be able to do the distribution after
interaction with some backend. This has to follow the logic of SIP
routing policy prior to user location lookup.
An extra round trip might be involved, but if
your users don't use
aliases very often it might not be an issue.
We do have many aliases and all calls from the PSTN have to be
looked up but I think it's easier to do the lookup on the backend
rather than having a usrloc DB on the load balancer.
One solution would be the usage of a distributed and replicated database
system (cluster) to store user profiles. This will allow an increase of
queries with less performance penalties but will add some overhead for
maintenance.
Daniel
Hendrik