[Serusers] Carrier-grade framework for SER
Erik Versaevel
erik at infopact.nl
Fri Jan 21 11:05:07 CET 2005
You might allso want to check the LVS mailinglist, there is some
discussion going on for a SIP module for the LVS with call-id
persistence, that would solve distributing request among the real servers.
Greger V. Teigre wrote:
> Dear Andreas,
>
> As I indicated in an earlier email, I would be interested in taking
> part in a joint effort to further develop ser's high-availability and
> scalability (HAS). I would probably have to do some development
> anyway, and I would prefer to see such support in the public domain.
> In Nov/Dec I called for responses on a SOAP-based provisioning
> interface, but heard nothing, so here is an overlap of interests.
> Please see inline comments.
>
> Andreas Granig wrote:
>
>> Hi guys,
>>
>> I'd like to propose another possibility for a highly-available and
>> scalable system design based on SER:
>>
>> The problems I've encountered for scalable systems are:
>> - Distribution of the user location and alias location among the nodes
>> (user location is based on registrations, alias location comes from
>> web interfaces and is used for call forwarding).
>> - Reloading up to date location tables after breakdown and recovery
>> of a node
>
>
> If we are to define the elements required as part of a HAS-effort, I
> think I would also include load balancing across servers in a single
> data center, not only distribution of usrloc/alias replication across
> centers. You mentioned yourself the problem of clients not supporting
> DNS SRV. I think some kind of reference design using Linux HA or
> virtual server would be useful for the community. I have seen several
> people asking questions, but I haven't seen documentation of a
> successful implementation. The reference design must of course handle
> NAT traversal and the possibility of RTP proxying.
> Anybody with experiences or thoughts?
>
>> So I'm just thinking loud about the following provisioning system:
>>
>> - Write a client which fulfills the this demands:
>>
>> - Receive one or more locations from SER via a SER module or from a
>> web application and distribute them to other
>> known clients. Take care of retransmissions if a client isn't
>> reachable or reports a temporary failure.
>>
>> - Receive one or more locations from other clients and write
>> them into the SER FIFO. If writing into the FIFO fails, try to
>> write directly into the database (location-table, alias-table
>> etc.). Report a temporary failure if this also fails.
>
>
> yes, I see you here define a more general network wrapper to the
> FIFO. Why not extend the scope right now to support any FIFO
> implemented command, also future?
> If FIFO writing is not possible, I believe an alert should be made
> and the request left in a transaction queue. There is probably a
> reason for the FIFO error and also writing directly to the database
> will mess up the synch between DB and server.
>
>> Maybe a centralized server should be used which receives the locations
>> from the clients and distributes them to other clients, so that the
>> nodes just know about the server and nothing about other nodes. This
>> would make integration of new nodes easy.
>> On the other hand, it's another single point of failure, so a
>> decentralized solution should be considered. But that would mean that
>> you've to inform every node about the existence of a new node.
>
>
> I agree that that each node should be independent. I once implemented
> a token ring-like system where each node would report its existance.
> Something similar would be appropriate. We could even use SIP REGISTER
> from each client using a specifically crafted username and use NOTIFYs
> to update everybody about changes :-) Each client could use its local
> ser server to lookup contacts. Well, this could create a dependency
> loop, but it was sort of a cool idea ...
> Bringing up new clients will of course need some special thoughts
> in terms of their status and at what point in replication they should
> enter. Probably each transaction should use a unique transaction id...
>
>> The protocol used between the nodes should be simple and fast. So I
>> think SOAP drops out here. Maybe XMLRPC or ICE
>> (http://www.zeroc.com/ice.html) could be used.
>
>
> Why do you think SOAP should be dropped?
> If this is to be a general module for both provisioning and
> replication across servers, we must handle many different usage
> scenarios, ex. provisioning over the Internet, and we should use a
> framework where we can get as much as possible for "free", ex.
> SSL/TLS, authentication etc.
> In my experience, SOAP can be both simple and fast and there are
> far more auto-generation tools/frameworks etc for SOAP. A simple
> RPC-type SOAP message is not really far from XML-RPC, basically an
> envelope extra. The ability to auto-generate a client based on a WSDL
> file is pretty nice, as well. With regards to ICE, we should probably
> avoid using toolkits where commercial licenses must be bought for
> commercial usage.
> I have used gSOAP (http://www.cs.fsu.edu/~engelen/soap.html), which
> is a powerful, but very simple to use C/C++.
>
>> I'd be willing to release these parts as GPL for creating an open
>> framework for carrier-grade SER integration, so any feedback,
>> improvements or flames are highly welcome.
>
>
> Ditto.
>
> I have here contributed to increasing the scope... But I think the
> correct approach would be to make something simple in the beginning,
> maybe only the provisioning and the queue and a text-based config file
> for clients to replicate to. We could then add the ser module for
> forwarding usrloc to the local client.
>
> Andreas: What's your time scope?
>
> Core developers of ser: I think we need your opinion(s) before we
> start anything?!
>
> Regards,
> Greger
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
More information about the sr-users
mailing list