On 12/28/2009 01:50 PM, Antonio Goméz Soto wrote:
Hm, now I am getting a bit worried. Scaling up my asterisk setup using OpenSER will definitely not be as easy as I thought...
So what parts can be done by openser itself? Can it do:
- Attended transfer?
No. It is not an endpoint.
- Call Pickup? Directed?
No. It is not an endpoint.
- Call recording (mid call)
No, it is not an endpoint, although it can trigger external media proxy processes via APIs / control sockets (mediaproxy, rtpproxy) that can perform this functionality.
- Listening-in (Training)
No.
Also, asterisk has long had serious problems with showing callerid/connected party after attended transfer, blind forward or call pickup. Does OpenSER have those problems too? Does it support P-Asserted-Id or Connected Party?
OpenSER does not inherently support or not support a header; it has nothing to do with them except to pass them along in a request. It can attach them, and it can read their values if they are present and act on them in some user-defined way; this is true of any such header.
If a lot of calls need one of the above features, then using kamailio does not scale up my asterisk-based PBX too much, does it?
OpenSER cannot augment, extend or implement any of the PBX-like features you're looking for; that is simply not what it does. SIP messages enter OpenSER and they leave it, the effect of which is to intervene in and direct the establishment of calls to various destinations.
It is fundamentally a network element inside a VoIP service delivery platform, not an application server, PBX, feature server, or other type of call endpoint. It's a rather low-level piece of infrastructure.
I think you may have misunderstood what it is people mean when they say that they use OpenSER to help horizontally scale their use of Asterisk out. The role is a complementary one, not a substitute. For example, a typical design for application or service delivery using Asterisk + OpenSER involves multiple Asterisk servers that behave identically when they receive an inbound call, regardless of which server the call came into. This is typically done using some sort of database that keeps shared state, and most likely a central point of logic deployment, such as a FastAGI controller. In this type of situation, as an example, an OpenSER-based load balancer in front of this farm of servers to round-robin among them or do other intelligent call distribution can be used to great effect.
But Asterisk (or whatever backend) must still provide the fundamental functionality.
Think of Kamailio the same way you would think of a Layer 3 IP router. What you are proposing is analogous to saying that a router can be used to scale an HTTP web server / web site operation. A router cannot inherently do that, but it can assist in doing so as an element of a web server and network topology that makes that possible.
-- Alex