[OpenSIPS-Users] [OpenSIPS-Devel] [RFC] Distributed User Location

Adrian Georgescu ag at ag-projects.com
Fri Apr 5 14:50:51 CEST 2013


The lookup function could be extended to determine which node is responsible for a given SIP URI based on a one-way hashing function. Chord is an example of algorithm that can be used to map the hashes to the nodes (practically is a integer comparison where all SIP URIs are attracted by the next integer that corresponds to the IP of the server). Same lookup function can then be used to route traffic for a give user to the right node. If this is baked in, you need only to create some module that maintains a list of all active nodes. When one node joins, this is made known to the location table module so its lookup can take it into consideration. When one node leaves same process occurs, the node is removed from the table and lookup will find another node.

Adrian
 

On Apr 5, 2013, at 2:34 PM, Bogdan-Andrei Iancu wrote:

> Hello Adrian,
> 
> The actual question is IF there is SOMETHING that can be done directly in the usrloc module to help with distributed scenario (to have some built-in functionality to have an auto-of-the-box solution). I'm fully aware you can combine the existing module with other kind of backends and do the work.
> 
> Of course we can leave the usrloc module as it is and expect people to have their own fight to distributed it (as you did, as we did and many other did) - the idea is to have a ready to use approach here (if something like this exists) to address the most common and used cases.
> 
> Regards,
>  Bogdan-Andrei Iancu
> OpenSIPS Founder and Developer
> http://www.opensips-solutions.com
> 
> On 04/05/2013 08:51 AM, Adrian Georgescu wrote:
>> 
>> Hello Vlad,
>> 
>> We developed such a solution and is operational since 2005 but not in the open source domain. The start point was P2P protocols used for file sharing. Is less of a SIP server issue (we used stock OpenSER and stock OpenSIPS for years) but rather a generic self-organizing network design where SIP accounts map to certain nodes using Chord style hashing function. The problem you need to solve is not necessarily SIP related (as it turns out that it works with any sip servers of client out there) but simply making a join/leave protocol that allows for horizontal scalability and adding this adapter to OpenSIPS. This layer if is abstract enough you can use it for any other thing not just OpenSIPS. We use it to horizontally scale Asterisk servers, OpenXCAP servers, MSRP Relay servers, Media Proxy servers for example. Here is the design document:
>> 
>> https://docs.sipthor.net/projects/documentation/wiki/SipThorDescription
>> 
>> And here is some papers we wrote back in 2005/2006 about this concept which can provide some clues for whomever wants to build this in OpenSIPS.
>> 
>> http://www.ag-projects.com/presentations-corporate-285/41-sip2007
>> 
>> Adrian
>> 
>> 
>> 
>> On Apr 4, 2013, at 3:05 PM, Vlad Paiu wrote:
>> 
>>> Hello all,
>>> 
>>> We would like to get suggestions and help on the matter of distributing the user location information.
>>> Extending the User Location with a built-in distributed support is not straight forward - it is not about simply sharing data - as it is really SIP dependent and network limited
>>> 
>>> While now, by using the OpenSIPS trunk, it is possible to just share the actual usrloc info ( by using the db_cachedb module and storing the information in a MongoDB cluster ), you can encounter real-life scenarios where just sharing the info is not enough, like :
>>>    - NAT-ed clients, where only the initial server that received the Register has the pin-hole open, and thus is the only server that can relay traffic back to the respective client
>>>    - the user has a SIP client that only accepts traffic from the server IP that it's currently registered against, and thus would reject direct traffic from other IPs ( due to security reasons )
>>> 
>>> We would like to implement a true general solution for this issue, and would appreciate your feedback on this. Also we'd appreciate if you could share the needs that you would have from such a distributed user location feature, and the scenarios that you would use such a feature in real-life setups.
>>> 
>>> 
>>> Best Regards,
>>> 
>>> -- 
>>> Vlad Paiu
>>> OpenSIPS Developer
>>> http://www.opensips-solutions.com
>>> 
>>> 
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>> 
>> 
>> 
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> _______________________________________________
> Devel mailing list
> Devel at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20130405/a9c4fc76/attachment.htm>


More information about the Users mailing list