Hello,
I want to separate signaling and media in our architecture but I'm not entirely sure if the following will work (note that it is still in a design phase and these kinds of constructs are still new to me):
User Agent 1-------------- Kamailio -------------- User Agent 2 | | | | | | -------------- Media Server Cluster --------------
The signaling will go through Kamailio but the media stream should pass through one of the media servers in the cluster for each call. Is it possible to achieve this by having Kamailio instruct the media server which ports to open and alter sdp information? I think that the RTP Proxy module does precisely this, but what I still don't understand is how the rtp stream is passed between these two agents for each call. Also, is RTP proxy the best way to do this or are there any other third party media servers which I could use? I don't need any fancy functionality, just basic media handling/pass-through. Regards, Grant
Hi Grant,
On 01/28/2013 11:03 AM, Grant Bagdasarian wrote:
I think that the RTP Proxy module does precisely this, but what I still don’t understand is how the rtp stream is passed between these two agents for each call.
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
The result is that as far as both UAs are concerned, rtpproxy is their endpoint, and they will send media to it. Kamailio instructs rtpproxy to bridge both streams.
When the call is torn down, Kamailio tells rtpproxy to disengage and deallocate the bridge mapping for those streams.
-- Alex
[1] Which may be running on the same host, or may be running on another host, in a distributed fashion. Kamailio talks to rtpproxy through rtpproxy's UDP control socket, and more than one rtpproxy may be used, both for failover and round-robin load distribution. This is readily baked into the rtpproxy module.
Hello Alex,
Thank you for the explanation. It's clear to me now. One more thing, I've read that it's not recommended to have media being handled by virtual servers, is this also the case when using rtpproxy? We are using VMWare for virtualization.
Regards,
Grant
________________________________________ Van: sr-users-bounces@lists.sip-router.org [sr-users-bounces@lists.sip-router.org] namens Alex Balashov [abalashov@evaristesys.com] Verzonden: maandag 28 januari 2013 17:11 Aan: sr-users@lists.sip-router.org Onderwerp: Re: [SR-Users] Need help understanding/separating signaling from media
Hi Grant,
On 01/28/2013 11:03 AM, Grant Bagdasarian wrote:
I think that the RTP Proxy module does precisely this, but what I still don’t understand is how the rtp stream is passed between these two agents for each call.
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
The result is that as far as both UAs are concerned, rtpproxy is their endpoint, and they will send media to it. Kamailio instructs rtpproxy to bridge both streams.
When the call is torn down, Kamailio tells rtpproxy to disengage and deallocate the bridge mapping for those streams.
-- Alex
[1] Which may be running on the same host, or may be running on another host, in a distributed fashion. Kamailio talks to rtpproxy through rtpproxy's UDP control socket, and more than one rtpproxy may be used, both for failover and round-robin load distribution. This is readily baked into the rtpproxy module.
-- Alex Balashov - Principal Evariste Systems LLC 235 E Ponce de Leon Ave Suite 106 Decatur, GA 30030 United States Tel: +1-678-954-0670 Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
It is indeed not generally recommended, due to the extremely real-time, delay-sensitive nature of media and the way VMs can subject a user space process like rtpproxy to distorted I/O scheduling and timing.
However, this seems to be less of a problem as virtualisation evolves closer and closer "to the metal", and in any case is unlikely to be an issue for relatively small numbers of concurrent calls, on a non-oversubscribed hypervisor.
Still, it is not recommended from a "best practical" point of view, definitely not.
Grant Bagdasarian GB@cm.nl wrote:
Hello Alex,
Thank you for the explanation. It's clear to me now. One more thing, I've read that it's not recommended to have media being handled by virtual servers, is this also the case when using rtpproxy? We are using VMWare for virtualization.
Regards,
Grant
Van: sr-users-bounces@lists.sip-router.org [sr-users-bounces@lists.sip-router.org] namens Alex Balashov [abalashov@evaristesys.com] Verzonden: maandag 28 januari 2013 17:11 Aan: sr-users@lists.sip-router.org Onderwerp: Re: [SR-Users] Need help understanding/separating signaling from media
Hi Grant,
On 01/28/2013 11:03 AM, Grant Bagdasarian wrote:
I think that the RTP Proxy module does precisely this, but what I still don’t understand is how the rtp stream is passed between these two agents for each call.
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
The result is that as far as both UAs are concerned, rtpproxy is their endpoint, and they will send media to it. Kamailio instructs rtpproxy to bridge both streams.
When the call is torn down, Kamailio tells rtpproxy to disengage and deallocate the bridge mapping for those streams.
-- Alex
[1] Which may be running on the same host, or may be running on another host, in a distributed fashion. Kamailio talks to rtpproxy through rtpproxy's UDP control socket, and more than one rtpproxy may be used, both for failover and round-robin load distribution. This is readily baked into the rtpproxy module.
-- Alex Balashov - Principal Evariste Systems LLC 235 E Ponce de Leon Ave Suite 106 Decatur, GA 30030 United States Tel: +1-678-954-0670 Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Alright, thanks! I'll just use virtuals for our sip proxies and physical servers for media, like I intended to do. ________________________________________ Van: sr-users-bounces@lists.sip-router.org [sr-users-bounces@lists.sip-router.org] namens Alex Balashov [abalashov@evaristesys.com] Verzonden: maandag 28 januari 2013 18:18 Aan: SIP Router - Kamailio (OpenSER) and SIP Express Router (SER) - Users Mailing List Onderwerp: Re: [SR-Users] Need help understanding/separating signaling from media
It is indeed not generally recommended, due to the extremely real-time, delay-sensitive nature of media and the way VMs can subject a user space process like rtpproxy to distorted I/O scheduling and timing.
However, this seems to be less of a problem as virtualisation evolves closer and closer "to the metal", and in any case is unlikely to be an issue for relatively small numbers of concurrent calls, on a non-oversubscribed hypervisor.
Still, it is not recommended from a "best practical" point of view, definitely not.
Grant Bagdasarian GB@cm.nl wrote:
Hello Alex,
Thank you for the explanation. It's clear to me now. One more thing, I've read that it's not recommended to have media being handled by virtual servers, is this also the case when using rtpproxy? We are using VMWare for virtualization.
Regards,
Grant
Van: sr-users-bounces@lists.sip-router.org [sr-users-bounces@lists.sip-router.org] namens Alex Balashov [abalashov@evaristesys.com] Verzonden: maandag 28 januari 2013 17:11 Aan: sr-users@lists.sip-router.org Onderwerp: Re: [SR-Users] Need help understanding/separating signaling from media
Hi Grant,
On 01/28/2013 11:03 AM, Grant Bagdasarian wrote:
I think that the RTP Proxy module does precisely this, but what I still don’t understand is how the rtp stream is passed between these two agents for each call.
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
The result is that as far as both UAs are concerned, rtpproxy is their endpoint, and they will send media to it. Kamailio instructs rtpproxy to bridge both streams.
When the call is torn down, Kamailio tells rtpproxy to disengage and deallocate the bridge mapping for those streams.
-- Alex
[1] Which may be running on the same host, or may be running on another host, in a distributed fashion. Kamailio talks to rtpproxy through rtpproxy's UDP control socket, and more than one rtpproxy may be used, both for failover and round-robin load distribution. This is readily baked into the rtpproxy module.
-- Alex Balashov - Principal Evariste Systems LLC 235 E Ponce de Leon Ave Suite 106 Decatur, GA 30030 United States Tel: +1-678-954-0670 Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Sent from my mobile, and thus lacking in the refinement one might expect from a fully-fledged keyboard.
Alex Balashov - Principal Evariste Systems LLC 235 E Ponce de Leon Ave Suite 106 Decatur, GA 30030 United States Tel: +1-678-954-0670 Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Hello,
Consider the below image like in my original e-mail.
User Agent 1-------------- Kamailio -------------- User Agent 2 | | | | | | -------------- Media Server Cluster --------------
What if UA1 and UA2 are on different remote networks. Kamailio must have two interfaces connected to both networks in order to send/receive traffic.
Let's say UA1 is on 72.0.0.1 and UA2 is on 10.0.0.1. Kamailio would have 72.0.0.2 and 10.0.0.2. But a media server must also have IP addresses in these ranges in order to receive traffic and in turn bridge them.
Would RTPProxy still work in this scenario?
Also, let's consider UA1 to be one of many SIP Trunk suppliers. Each using a different network. This would mean each media server must have multiple IP addresses configured to exchange traffic with the suppliers. How does RTPProxy work in a scenario like that? When allocating ports for each call, does it also look at the IP address where the call is coming from?
Some routes must be configured on the media servers for multiple remote networks to communicate with each other, but I think that's out of the scope of how RTPProxy handles things.
I hope someone could explain this to me.
Thanks!
Grant
-----Original Message----- From: sr-users-bounces@lists.sip-router.org [mailto:sr-users-bounces@lists.sip-router.org] On Behalf Of Alex Balashov Sent: Monday, January 28, 2013 5:11 PM To: sr-users@lists.sip-router.org Subject: Re: [SR-Users] Need help understanding/separating signaling from media
Hi Grant,
On 01/28/2013 11:03 AM, Grant Bagdasarian wrote:
I think that the RTP Proxy module does precisely this, but what I still don't understand is how the rtp stream is passed between these two agents for each call.
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
The result is that as far as both UAs are concerned, rtpproxy is their endpoint, and they will send media to it. Kamailio instructs rtpproxy to bridge both streams.
When the call is torn down, Kamailio tells rtpproxy to disengage and deallocate the bridge mapping for those streams.
-- Alex
[1] Which may be running on the same host, or may be running on another host, in a distributed fashion. Kamailio talks to rtpproxy through rtpproxy's UDP control socket, and more than one rtpproxy may be used, both for failover and round-robin load distribution. This is readily baked into the rtpproxy module.
Could someone please take a look at my previous question below?
-----Original Message----- From: Grant Bagdasarian Sent: Tuesday, February 5, 2013 1:12 PM To: sr-users@lists.sip-router.org Subject: RE: [SR-Users] Need help understanding/separating signaling from media
Hello,
Consider the below image like in my original e-mail.
User Agent 1-------------- Kamailio -------------- User Agent 2 | | | | | | -------------- Media Server Cluster --------------
What if UA1 and UA2 are on different remote networks. Kamailio must have two interfaces connected to both networks in order to send/receive traffic.
Let's say UA1 is on 72.0.0.1 and UA2 is on 10.0.0.1. Kamailio would have 72.0.0.2 and 10.0.0.2. But a media server must also have IP addresses in these ranges in order to receive traffic and in turn bridge them.
Would RTPProxy still work in this scenario?
Also, let's consider UA1 to be one of many SIP Trunk suppliers. Each using a different network. This would mean each media server must have multiple IP addresses configured to exchange traffic with the suppliers. How does RTPProxy work in a scenario like that? When allocating ports for each call, does it also look at the IP address where the call is coming from?
Some routes must be configured on the media servers for multiple remote networks to communicate with each other, but I think that's out of the scope of how RTPProxy handles things.
I hope someone could explain this to me.
Thanks!
Grant
-----Original Message----- From: sr-users-bounces@lists.sip-router.org [mailto:sr-users-bounces@lists.sip-router.org] On Behalf Of Alex Balashov Sent: Monday, January 28, 2013 5:11 PM To: sr-users@lists.sip-router.org Subject: Re: [SR-Users] Need help understanding/separating signaling from media
Hi Grant,
On 01/28/2013 11:03 AM, Grant Bagdasarian wrote:
I think that the RTP Proxy module does precisely this, but what I still don't understand is how the rtp stream is passed between these two agents for each call.
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
The result is that as far as both UAs are concerned, rtpproxy is their endpoint, and they will send media to it. Kamailio instructs rtpproxy to bridge both streams.
When the call is torn down, Kamailio tells rtpproxy to disengage and deallocate the bridge mapping for those streams.
-- Alex
[1] Which may be running on the same host, or may be running on another host, in a distributed fashion. Kamailio talks to rtpproxy through rtpproxy's UDP control socket, and more than one rtpproxy may be used, both for failover and round-robin load distribution. This is readily baked into the rtpproxy module.
-- Alex Balashov - Principal Evariste Systems LLC 235 E Ponce de Leon Ave Suite 106 Decatur, GA 30030 United States Tel: +1-678-954-0670 Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Alex wrote:
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
What if both endpoints are on different networks?
Endpoint 1 -------------- Kamailio -------------- Endpoint 2
| | |
| | |
| | |
+-------------------- RTPProxy -----------------+
Please correct me if I'm wrong:
1) Endpoint 1 (10.0.0.1) sends an INVITE containing the offer to Kamailio (10.0.0.2).
2) Kamailio asks RTPProxy to engage the call and allocate two ports.
3) Kamailio writes the IP and port of the RTPProxy (10.0.0.3:1000) in the SDP of the 100 Trying and replies back to Endpoint 1.
4) Kamailio (20.0.0.2) now sends the INVITE with offer to Endpoint 2 (20.0.0.1), but with modified SDP (20.0.0.3:1001).
5) .....
6) Endpoint 1 sends its media to 10.0.0.3:1000 and Endpoint 2 sends its media to 20.0.0.3:1001.
7) RTPProxy bridges both ends.
What makes it so difficult for me to understand is that both Kamailio and RTPProxy are connected to two different networks. A call between endpoint 1 and 2 must be bridged by Kamailio and RTPProxy.
How does Kamailio know it has to tell RTPProxy to engage a call on network 10.0.0.0 and 20.0.0.0 and allocate two ports, 1 for each network?
Regards,
Grant
-----Original Message----- From: sr-users-bounces@lists.sip-router.org [mailto:sr-users-bounces@lists.sip-router.org] On Behalf Of Alex Balashov Sent: Monday, January 28, 2013 5:11 PM To: sr-users@lists.sip-router.org Subject: Re: [SR-Users] Need help understanding/separating signaling from media
Hi Grant,
On 01/28/2013 11:03 AM, Grant Bagdasarian wrote:
I think that the RTP Proxy module does precisely this, but what I
still don't understand is how the rtp stream is passed between these
two agents for each call.
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
The result is that as far as both UAs are concerned, rtpproxy is their endpoint, and they will send media to it. Kamailio instructs rtpproxy to bridge both streams.
When the call is torn down, Kamailio tells rtpproxy to disengage and deallocate the bridge mapping for those streams.
-- Alex
[1] Which may be running on the same host, or may be running on another host, in a distributed fashion. Kamailio talks to rtpproxy through rtpproxy's UDP control socket, and more than one rtpproxy may be used, both for failover and round-robin load distribution. This is readily baked into the rtpproxy module.
--
Alex Balashov - Principal
Evariste Systems LLC
235 E Ponce de Leon Ave
Suite 106
Decatur, GA 30030
United States
Tel: +1-678-954-0670
Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.orgmailto:sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Alex wrote:
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
What if both endpoints are on different networks?
Endpoint 1 -------------- Kamailio -------------- Endpoint 2
| | |
| | |
| | |
+-------------------- RTPProxy -----------------+
Please correct me if I'm wrong:
1) Endpoint 1 (10.0.0.1) sends an INVITE containing the offer to Kamailio (10.0.0.2).
2) Kamailio asks RTPProxy to engage the call and allocate two ports.
3) Kamailio writes the IP and port of the RTPProxy (10.0.0.3:1000) in the SDP of the 100 Trying and replies back to Endpoint 1.
4) Kamailio (20.0.0.2) now sends the INVITE with offer to Endpoint 2 (20.0.0.1), but with modified SDP (20.0.0.3:1001).
5) .....
6) Endpoint 1 sends its media to 10.0.0.3:1000 and Endpoint 2 sends its media to 20.0.0.3:1001.
7) RTPProxy bridges both ends.
What makes it so difficult for me to understand is that both Kamailio and RTPProxy are connected to two different networks. A call between endpoint 1 and 2 must be bridged by Kamailio and RTPProxy.
How does Kamailio know it has to tell RTPProxy to engage a call on network 10.0.0.0 and 20.0.0.0 and allocate two ports, 1 for each network?
Regards,
Grant
-----Original Message----- From: sr-users-bounces@lists.sip-router.orgmailto:sr-users-bounces@lists.sip-router.org [mailto:sr-users-bounces@lists.sip-router.org] On Behalf Of Alex Balashov Sent: Monday, January 28, 2013 5:11 PM To: sr-users@lists.sip-router.orgmailto:sr-users@lists.sip-router.org Subject: Re: [SR-Users] Need help understanding/separating signaling from media
Hi Grant,
On 01/28/2013 11:03 AM, Grant Bagdasarian wrote:
I think that the RTP Proxy module does precisely this, but what I
still don't understand is how the rtp stream is passed between these
two agents for each call.
The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] and asks it to engage the call, saying: "Can you please allocate and provide me with a pair of ports for each end of this call?" The rtpproxy process answers, and Kamailio then writes the IP and ports provided by rtpproxy into the SDP of both the requests and replies involved in setting up the call.
The result is that as far as both UAs are concerned, rtpproxy is their endpoint, and they will send media to it. Kamailio instructs rtpproxy to bridge both streams.
When the call is torn down, Kamailio tells rtpproxy to disengage and deallocate the bridge mapping for those streams.
-- Alex
[1] Which may be running on the same host, or may be running on another host, in a distributed fashion. Kamailio talks to rtpproxy through rtpproxy's UDP control socket, and more than one rtpproxy may be used, both for failover and round-robin load distribution. This is readily baked into the rtpproxy module.
--
Alex Balashov - Principal
Evariste Systems LLC
235 E Ponce de Leon Ave
Suite 106
Decatur, GA 30030
United States
Tel: +1-678-954-0670
Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.orgmailto:sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users