[Freeswitch-users] FS as Media Gateway Only

Code Ghar codeghar at gmail.com
Thu Jun 3 20:00:54 PDT 2010


Hi David

Have you (or someone here) worked with Kamailio? If it can be used to act as
stateful proxy, it could work this way: Kamailio (10.10.1.1) takes the
packet, determines if it is part of a certain call (maybe look at Call ID,
etc.) -- or if it's a new call to pick one server -- and sends the packet to
FS1 (10.10.1.2); FS1 responds with SDP containing its own IP for media;
Kamilio modifies the headers (especially Contact to set its own IP instead
of FS IP) and sends to carrier.

This way we can have multiple FS media servers running behind one signaling
IP. Since all FS servers have their own external IPs reachable from the
outside network, their IPs in effect appear as media IPs to carriers and
they send signaling to Kamailio but media directly to the FS server actually
handling the call.

Yes, it's not a pure FS solution but best tool for the job, right? Of
course, I am assuming (having never worked with Kamailio) that it can handle
this kind of architecture. I think it should be able to handle signaling for
lots and lots of simultaneous calls because it is not handling media at all,
freeing up resources for signaling only.

Any thoughts?


On Fri, May 28, 2010 at 6:31 AM, David Ponzone <david.ponzone at gmail.com>wrote:

> Code,
>
> you're totally right.
> In this model (FS), the media server will also be in the SIP Path.
> That's why I answered in the first place that this was not achievable with
> FS, because your idea was more a Kamaillo/RTPProxy setup, where the
> mediaserver only does RTP with the endpoints, and is not in the SIP path at
> all:
>
> inbound <--------SIP------ SIP Server/Proxy ------------SIP-------> Carrier
>                                                   |
>              <---------RTP------ MediaServer--------RTP--------------->
>
>
> Verizon Business (in Europe at least) has a such infrastrucutre: OpenSER
> for the SIP part, and Nortel GWs for the RTP.
> This way, they just give me the IPs of their OpenSER servers, and they can
> deploy as many media servers as they need without telling us (of course, we
> dont filter that).
>
> I don't know how this is implemented in Kamaillo/OpenSER but perhaps, for a
> nice bounty, that would be something possible in FS.
>
> David Ponzone  Direction Technique
> email: david.ponzone at ipeva.fr
> tel:      01 74 03 18 97
> gsm:   06 66 98 76 34
>
> Service Client IPeva
> tel:      0811 46 26 26
> www.ipeva.fr  -   www.ipeva-studio.com
>
> *Ce message et toutes les pièces jointes sont confidentiels et établis à
> l'intention exclusive de ses destinataires. Toute utilisation ou diffusion
> non autorisée est interdite. Tout message électronique est susceptible
> d'altération. **IPeva** décline toute responsabilité au titre de ce
> message s'il a été altéré, déformé ou falsifié. Si vous n'êtes pas
> destinataire de ce message, merci de le détruire immédiatement et d'avertir
> l'expéditeur.*
> *
> *
>
>
>
> Le 28/05/2010 à 05:34, Code Ghar a écrit :
>
> Hi Vitalie
>
> Thanks for providing the link and details. If I understood correctly, the
> chain of signaling would be Inbound -> FSSIP -> FSRTP -> Outbound (using
> names and terms in my original question), while the chain of media would be
> Inbound -> FSRTP -> Outbound. This way we can have multiple servers handling
> media and minimal servers handling signaling.
>
> Let me clarify a little more my motivation for asking this question in the
> first place. I work with telecom carriers on a daily basis and have seen
> many different architectures. The first biggest problem is how to load
> balance SIP traffic when you are receiving calls, if one server is not
> enough. The second biggest problem is handling all RTP, including
> transcoding. With this architecture, one or two IPs for signaling can be
> handled by most carriers. So you can beef up your hardware for signaling and
> depend less on your carrier's ability to load balance traffic for you. If
> they can do round-robin or failover for two IPs, you are golden. And then
> you can deploy multiple nodes to handle all RTP duties, without having to
> concern your carrier about multiple servers and IPs. But there's one thing
> still missing. Your outbound carrier still needs to allow traffic from
> multiple IPs because now they are dealing with FSRTP instead of FSSIP.
>
> Is there such a solution possible using FS that all signaling, for both
> inbound and outbound carriers, can be handled by a couple of FSSIP nodes
> (depending on the amount of traffic, maybe a few more) while delegating
> media responsibilities to multiple FSRTP nodes? In this situation, SIP IP is
> always, say 10.10.10.1 or 10.10.10.2, but the SDP may use media IPs
> 10.10.10.3, 10.10.10.4, 10.10.10.5, and so on. Almost all carriers I have
> seen concern themselves only with which SIP IPs they should allow and don't
> care how many or which media IPs they have to deal with. Any ideas on
> minimizing signaling IPs while adding more media IPs as required?
>
> I have seen re-invite being used in production where you can just let your
> inbound and outbound handle media between them on their own without it going
> through your network. But there are circumstances where people might need to
> pass media through their own network, chiefly to perform transcoding and
> also to handle other interop issues. It is because of this use case,
> combined with the need for minimizing signaling IPs, that the original
> question was asked.
>
>
>
>
> On Thu, May 27, 2010 at 1:15 AM, Vitalii Colosov <vetali100 at gmail.com>wrote:
>
>> Hi Code,
>>
>> I have working example doing exactly what you've described.
>> One signalling FS bridges incoming call to a set of media servers
>> (depending on ip, but you can implement any routing logic including round
>> robin) and then transfers media stream after bridging to that media server.
>>
>> You can achieve this on signalling FS by creating a Lua script that
>> contains the following lines:
>>
>> media_server="my_media_X.mydomain.com"; --to be determined by routing
>> logic
>> forwarding_session = "sofia/external/"..called_number.."@"..media_server;
>> session:setVariable("bypass_media_after_bridge", "true");
>> session:setVariable("hangup_after_bridge", "true");
>> session:execute("bridge",forwarding_session);
>>
>> The call will arrive to the selected media server successfully and media
>> stream will start bypassing signalling FS after bridge.
>>
>> You can read the following thread, it describes how you can setup such
>> configuration.
>>
>> http://lists.freeswitch.org/pipermail/freeswitch-users/2010-March/055231.html
>>
>> I think it will fit your needs.
>>
>> Regards,
>> Vitalie
>>
>>
>> 2010/5/27 Code Ghar <codeghar at gmail.com>
>>
>>> Is it possible -- and are there any case studies, practical experience,
>>> etc -- on deploying FreeSWITCH (FS) in this architecture: one server (FSSIP)
>>> handles SIP signaling only, and multiple servers (FSRTP1, FSRTP2, ...,
>>> FSRTPn) handle all media responsibilities? So when a call comes in, the SDP
>>> contains IP of, say FSRTP1, as media handler. For this to work, FSSIP would
>>> request FSRTPx for media resources for each new call and add its IP and port
>>> in SDP. The media servers/gateways would play IVR, etc.; collect DTMF and
>>> forward as appropriate to FSSIP; perform transcoding; etc.; all while FSSIP
>>> only deals with signaling. This way multiple servers could be deployed to
>>> handle media responsibilities and only a handful would be required for
>>> signaling. In future if there's a greater need for transcoding, etc. all you
>>> need to do is deploy a media server and not have to add servers for
>>> signaling.
>>>
>>> This idea came to me because I have come across two proprietary
>>> applications that do it this way. They have a SIP component and a media
>>> component. You can run both on the same physical machine or you can separate
>>> them out into multiple machines.
>>>
>>> Another way for this could be to integrate FS as a media component to
>>> another application's SIP component. A mix-and-match, so to speak.
>>>
>>> On the flip side, deploy FS as a SIP server and use media capabilities of
>>> some other hardware or software application. For example, FS handles
>>> signaling and use dedicated hardware for media. A good example of this is
>>> illustrated (somewhat) by an image on Sangoma's website:
>>> http://www.sangoma.com/assets/images/content/transcoding_diagram.jpg.
>>> Look at the "pooled transcoding".
>>>
>>> Is FS even designed to be this modular? If so, how can the aforementioned
>>> scenario(s) be achieved?
>>>
>>> _______________________________________________
>>> FreeSWITCH-users mailing list
>>> FreeSWITCH-users at lists.freeswitch.org
>>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> http://www.freeswitch.org
>>>
>>>
>>
>> _______________________________________________
>> FreeSWITCH-users mailing list
>> FreeSWITCH-users at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> http://www.freeswitch.org
>>
>>
> _______________________________________________
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
>
> _______________________________________________
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20100603/4886011b/attachment.html 


More information about the FreeSWITCH-users mailing list