[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sr-users
Subject:    Re: [SR-Users] Need help understanding/separating signaling from media
From:       Grant Bagdasarian <GB () cm ! nl>
Date:       2013-02-26 15:24:00
Message-ID: FB7D97A214987F458242ACBDF876140738C07870B6 () clubvirtual40 ! ClubMessage ! local
[Download RAW message or body]

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 wit=
h 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 S=
DP 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 Kamai=
lio (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 it=
s 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 R=
TPProxy 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 m=
edia



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 wit=
h 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 S=
DP 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 endp=
oint, and they will send media to it.  Kamailio instructs rtpproxy to bridg=
e both streams.



When the call is torn down, Kamailio tells rtpproxy to disengage and deallo=
cate the bridge mapping for those streams.



-- Alex



[1] Which may be running on the same host, or may be running on another hos=
t, in a distributed fashion.  Kamailio talks to rtpproxy through rtpproxy's=
 UDP control socket, and more than one rtpproxy may be used, both for failo=
ver and round-robin load distribution.  This is readily baked into the rtpp=
roxy 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<mailto:sr-users@lists.sip-router.org>

http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

[Attachment #3 (text/html)]

<html xmlns:v="urn:schemas-microsoft-com:vml" \
xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type \
content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 \
(filtered medium)"><style><!-- /* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{mso-style-priority:99;
	mso-style-link:"Plain Text Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
span.PlainTextChar
	{mso-style-name:"Plain Text Char";
	mso-style-priority:99;
	mso-style-link:"Plain Text";
	font-family:"Calibri","sans-serif";}
.MsoChpDefault
	{mso-style-type:export-only;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:424573719;
	mso-list-type:hybrid;
	mso-list-template-ids:-1093133922 67698705 67698713 67698715 67698703 67698713 \
67698715 67698703 67698713 67698715;} @list l0:level1
	{mso-level-text:"%1\)";
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level2
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level3
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l0:level4
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level5
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level6
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l0:level7
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level8
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l0:level9
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div \
class=WordSection1><p class=MsoPlainText><i>Alex wrote: <o:p></o:p></i></p><p \
class=MsoPlainText><i>The Kamailio 'rtpproxy' module goes out to the rtpproxy \
service[1] and asks it to engage the call, saying: &quot;Can you please allocate and \
provide me with a pair of ports for each end of this call?&quot;&nbsp; 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.<o:p></o:p></i></p><p class=MsoPlainText><o:p>&nbsp;</o:p></p><p \
class=MsoPlainText>What if both endpoints are on different networks?<o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>Endpoint 1 \
-------------- Kamailio -------------- Endpoint 2<o:p></o:p></p><p \
class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
|<o:p></o:p></p><p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<o:p></o:p></p><p \
class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
|<o:p></o:p></p><p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
+-------------------- RTPProxy -----------------+<o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>Please correct me if \
I&#8217;m wrong:<o:p></o:p></p><p class=MsoPlainText \
style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if \
!supportLists]><span style='mso-list:Ignore'>1)<span style='font:7.0pt "Times New \
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Endpoint 1 (10.0.0.1) \
sends an INVITE containing the offer to Kamailio (10.0.0.2).<o:p></o:p></p><p \
class=MsoPlainText style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 \
lfo1'><![if !supportLists]><span style='mso-list:Ignore'>2)<span style='font:7.0pt \
"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Kamailio \
asks RTPProxy to engage the call and allocate two ports.<o:p></o:p></p><p \
class=MsoPlainText style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 \
lfo1'><![if !supportLists]><span style='mso-list:Ignore'>3)<span style='font:7.0pt \
"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>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.<o:p></o:p></p><p class=MsoPlainText \
style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if \
!supportLists]><span style='mso-list:Ignore'>4)<span style='font:7.0pt "Times New \
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>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).<o:p></o:p></p><p class=MsoPlainText \
style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if \
!supportLists]><span style='mso-list:Ignore'>5)<span style='font:7.0pt "Times New \
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
</span></span><![endif]>&#8230;..<o:p></o:p></p><p class=MsoPlainText \
style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if \
!supportLists]><span style='mso-list:Ignore'>6)<span style='font:7.0pt "Times New \
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Endpoint 1 sends its \
media to 10.0.0.3:1000 and Endpoint 2 sends its media to \
20.0.0.3:1001.<o:p></o:p></p><p class=MsoPlainText \
style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if \
!supportLists]><span style='mso-list:Ignore'>7)<span style='font:7.0pt "Times New \
Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>RTPProxy bridges both \
ends.<o:p></o:p></p><p class=MsoPlainText><o:p>&nbsp;</o:p></p><p \
class=MsoPlainText>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.<o:p></o:p></p><p \
class=MsoPlainText>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?<o:p></o:p></p><p class=MsoPlainText><o:p>&nbsp;</o:p></p><p \
class=MsoPlainText>Regards,<o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>Grant<o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>-----Original \
Message-----<br>From: sr-users-bounces@lists.sip-router.org \
[mailto:sr-users-bounces@lists.sip-router.org] On Behalf Of Alex Balashov<br>Sent: \
Monday, January 28, 2013 5:11 PM<br>To: sr-users@lists.sip-router.org<br>Subject: Re: \
[SR-Users] Need help understanding/separating signaling from media</p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>Hi \
Grant,<o:p></o:p></p><p class=MsoPlainText><o:p>&nbsp;</o:p></p><p \
class=MsoPlainText>On 01/28/2013 11:03 AM, Grant Bagdasarian wrote:<o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>&gt; I think that the \
RTP Proxy module does precisely this, but what I <o:p></o:p></p><p \
class=MsoPlainText>&gt; still don&#8217;t understand is how the rtp stream is passed \
between these <o:p></o:p></p><p class=MsoPlainText>&gt; two agents for each \
call.<o:p></o:p></p><p class=MsoPlainText><o:p>&nbsp;</o:p></p><p \
class=MsoPlainText>The Kamailio 'rtpproxy' module goes out to the rtpproxy service[1] \
and asks it to engage the call, saying: &quot;Can you please allocate and provide me \
with a pair of ports for each end of this call?&quot;&nbsp; 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.<o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>The result is that as \
far as both UAs are concerned, rtpproxy is their endpoint, and they will send media \
to it.&nbsp; Kamailio instructs rtpproxy to bridge both streams.<o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>When the call is torn \
down, Kamailio tells rtpproxy to disengage and deallocate the bridge mapping for \
those streams.<o:p></o:p></p><p class=MsoPlainText><o:p>&nbsp;</o:p></p><p \
class=MsoPlainText>-- Alex<o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>[1] Which may be \
running on the same host, or may be running on another host, in a distributed \
fashion.&nbsp; 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.&nbsp; This is readily baked into the rtpproxy module.<o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p class=MsoPlainText>-- <o:p></o:p></p><p \
class=MsoPlainText>Alex Balashov - Principal<o:p></o:p></p><p \
class=MsoPlainText>Evariste Systems LLC<o:p></o:p></p><p class=MsoPlainText>235 E \
Ponce de Leon Ave<o:p></o:p></p><p class=MsoPlainText>Suite 106<o:p></o:p></p><p \
class=MsoPlainText>Decatur, GA 30030<o:p></o:p></p><p class=MsoPlainText>United \
States<o:p></o:p></p><p class=MsoPlainText>Tel: +1-678-954-0670<o:p></o:p></p><p \
class=MsoPlainText>Web: <a href="http://www.evaristesys.com/"><span \
style='color:windowtext;text-decoration:none'>http://www.evaristesys.com/</span></a>, \
<a href="http://www.alexbalashov.com/"><span \
style='color:windowtext;text-decoration:none'>http://www.alexbalashov.com/</span></a><o:p></o:p></p><p \
class=MsoPlainText><o:p>&nbsp;</o:p></p><p \
class=MsoPlainText>_______________________________________________<o:p></o:p></p><p \
class=MsoPlainText>SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing \
list<o:p></o:p></p><p class=MsoPlainText><a \
href="mailto:sr-users@lists.sip-router.org"><span \
style='color:windowtext;text-decoration:none'>sr-users@lists.sip-router.org</span></a><o:p></o:p></p><p \
class=MsoPlainText><a \
href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"><span \
style='color:windowtext;text-decoration:none'>http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</span></a><o:p></o:p></p></div></body></html>




_______________________________________________
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

--===============1042538350==--


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic