<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<tt>Hi Ben,<br>
<br>
<tt><tt>I see you<tt>r problem here. So, <tt>le<tt>t's exp<tt>lore
this:<br>
<tt>1) <tt>for <tt>sending the call to carrier, on
OpenSIPS, you do TH (w<tt>ith advertise)
resulting in a Contact with the public IP of
the SBC.<br>
<tt>2) also, <tt>manually add a RR header
with the private IP of OpenSIPS.<br>
<tt>3) send call to SBC, which will add
its own RR stuff.<br>
<br>
<tt>Now, on th<tt>e sequential request
from Carrier<tt>, the RURI will co<tt>ntain
the Contact of OpenSIPS (the pub
IP of SBC), some R<tt>oute hdrs
due the SBC and the Route we
added on OpenSIPS.<br>
<tt>- <tt>when<tt> request<tt>
<tt>gets<tt> to SBC,
the SBC will <tt>do
loose route,
consume its
Route h<tt>ead<tt>ers,
and <tt>it
will use the
next available
R<tt>oute w<tt>hich
points to the
pri<tt>v IP of
OpenSIPS<tt>
(and it will
not use the
public <tt>IP
in <tt>RURI
for <tt>routing)<br>
<tt>- <tt>requests
gets to
OpenSIPS,
simply
remove_hf()
and Route head<tt>ers
(<tt>do not do
any loose_r<tt>oute()
a<tt>s it is
useless) and h<tt>it
th_matching<tt>
-> this
will refact<tt>or
the request <tt>(RURI,
Contact,
Route) for the
leg on the
other side
-> this <tt>should
be f<tt>ine.<br>
<br>
<tt>For the
other
direction<tt>
(still sequent<tt>ial),
you <tt>do <tt>th_matching<tt>
on OpenSIPS <tt>and
not<tt>hing
more. This <tt>will
sen<tt>d a<tt>
request
holding t<tt>he
Routes due <tt>the
SBC, a <tt>Cont<tt>act
with the
public IP and
<tt>and RURI
pointing <tt>probably</tt>
to the
carrier.<br>
<br>
<tt>Shortl<tt>y
you do
standard TH,
but on
outbound
scenario, add
a fake RR
header to
trick the SBC
to route the
sequent<tt>ial
to <tt>your
OpenSIPS.</tt></tt></tt></tt><br>
<br>
</tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt>Does
<tt>it make
sense ?</tt> </tt></tt></tt></tt></tt></tt></tt><br>
</tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt></tt><br>
<br>
</tt></tt></tt><tt>Regards,</tt><br>
</tt>
<pre class="moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a class="moz-txt-link-freetext" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a></pre>
<div class="moz-cite-prefix">On 29.07.2016 18:05, Newlin, Ben wrote:<br>
</div>
<blockquote cite="mid:418CE841-BB2E-46D9-B8C3-2CD7BCDD5841@inin.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]-->
<style><!--
/* Font Definitions */
@font-face
        {font-family:Arial;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Courier New";
        panose-1:2 7 3 9 2 2 5 2 4 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@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:12.0pt;
        font-family:Calibri;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New","serif";}
tt
        {mso-style-priority:99;
        font-family:"Courier New","serif";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Courier;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:Calibri;
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:Calibri;
        color:windowtext;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:Calibri;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">Here is the
scenario:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">My servers
are only listening on a private IP address. There is a
public address on our SBC. I have a carrier that requires
that the Contact IP address matches the public address we
provided to them. So when I do TH on my server I have to
also do set_advertised_address to advertise the public
address in the Contact header. Sequential requests use the
Contact as the Request URI and the SBC is doing RR so all
requests will come back through it. When the SBC receives a
sequential request it strips its Route headers and forwards
to the Request URI (previous Contact URI). But that URI now
points back to the SBC, so it cannot deliver the request. If
my server could Record-Route the initial request with its
private address, the SBC would be able to route the request
back to it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Here is a
trace of my scenario:
<a moz-do-not-send="true"
href="http://pastebin.com/x927mFtq">http://pastebin.com/x927mFtq</a>.
I created it with SIPp so some endpoints are on the same IPs
but with different ports. The public IP is 192.168.99.100,
with port 7060 representing the PSTN carrier and port 5060
the SBC. The private IP is 10.0.2.15, with port 5060 being
the SBC again and port 6060 being my server. You can see
that the ACK cannot be delivered correctly to my server with
this configuration.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">The problem
here stems from the fact that Topology Hiding should really
be done at the edge of the network in order to be most
effective. But my OpenSIPS server doesn’t sit on the Edge of
the network, it is behind an SBC. So TH is complicated by
the fact that my OpenSIPS has no public IP of its own and
must advertise the public IP of the SBC instead, but future
requests must still be routable into the private network. I
am really using TH to hide the two ends of the call from
each other, not to hide my internal network topology.<o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span
style="font-size:10.5pt;color:black"><o:p> </o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black">Ben
Newlin</span><span style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span
style="color:black">Bogdan-Andrei Iancu
<a class="moz-txt-link-rfc2396E" href="mailto:bogdan@opensips.org"><bogdan@opensips.org></a><br>
<b>Date: </b>Friday, July 29, 2016 at 8:40 AM<br>
<b>To: </b>"Newlin, Ben" <a class="moz-txt-link-rfc2396E" href="mailto:Ben.Newlin@inin.com"><Ben.Newlin@inin.com></a>,
OpenSIPS users mailling list
<a class="moz-txt-link-rfc2396E" href="mailto:users@lists.opensips.org"><users@lists.opensips.org></a><br>
<b>Subject: </b>Re: [OpenSIPS-Users] Record-Route and
Dialog topology_hiding()<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Times New
Roman","serif""><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><tt><span style="font-size:10.0pt">Hi
Ben,</span></tt><span
style="font-size:10.0pt;font-family:"Courier
New","serif""><br>
<br>
<tt>Sorry to disagree, but IMHO they do exclude one each
other. </tt><br>
<br>
<tt>Adding RR to TH should not be seen as a way of
fixing some broken TH scenarios (with advertise).</tt><br>
<tt>So, let me try to understand what is not working for
you. You do TH and advertise. In this case, normally,
in the Contact headers generated by OpenSIPS (as a
result of TH), it should be the TH interface, right ?
What exactly seems to be the problem ? do you have a
trace to show the issues ?</tt><br>
<br>
<tt>Regards,</tt><br>
<br>
</span><o:p></o:p></p>
<pre>Bogdan-Andrei Iancu<o:p></o:p></pre>
<pre>OpenSIPS Founder and Developer<o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a><o:p></o:p></pre>
<div>
<p class="MsoNormal">On 27.07.2016 16:05, Newlin, Ben
wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="font-size:11.0pt">I
understand that normally you would not need RR with
TH, but the two concepts are not mutually exclusive in
SIP. As I said, I have a need to Record-Route the call
on my server as I am advertising a different address
than I am listening on. This means that TH will
populate the Contact header with the advertised
address and if I cannot Record-Route with the actual
address then I will not receive sequential requests.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal"><span
style="font-size:10.5pt;color:black"> </span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><span
style="font-size:10.5pt;color:black">Ben Newlin</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="color:black">From:
</span></b><span style="color:black">Bogdan-Andrei
Iancu
<a moz-do-not-send="true"
href="mailto:bogdan@opensips.org"><bogdan@opensips.org></a><br>
<b>Date: </b>Wednesday, July 27, 2016 at 3:59 AM<br>
<b>To: </b>OpenSIPS users mailling list <a
moz-do-not-send="true"
href="mailto:users@lists.opensips.org">
<users@lists.opensips.org></a>, "Newlin,
Ben" <a moz-do-not-send="true"
href="mailto:Ben.Newlin@inin.com">
<Ben.Newlin@inin.com></a><br>
<b>Subject: </b>Re: [OpenSIPS-Users] Record-Route
and Dialog topology_hiding()</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-family:"Times New
Roman","serif""> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><tt><span
style="font-size:10.0pt">Hi Ben,</span></tt><span
style="font-size:10.0pt;font-family:"Courier
New","serif""><br>
<br>
<tt>As I mentioned in different thread, TH is not
compatible with the RR mechanism. If you do TH,
your OpenSIPS will act as and end point (from
SIP perspective), so there will be no Route/RR
headers at all. So no need to do loose_route or
so. You just do TH matching for the sequential
requests and nothing more.</tt><br>
<br>
<tt>Regards,</tt><br>
<br>
<br>
</span><o:p></o:p></p>
<pre>Bogdan-Andrei Iancu<o:p></o:p></pre>
<pre>OpenSIPS Founder and Developer<o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a><o:p></o:p></pre>
<div>
<p class="MsoNormal">On 22.07.2016 16:48, Newlin,
Ben wrote:<o:p></o:p></p>
</div>
<blockquote
style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="font-size:11.0pt">Hi,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I
am using the Dialog module with
topology_hiding() in my server and I have a need
to Record-Route the call on my server as I am
advertising a different address than I am
listening on. I have found what I believe is an
inconsistency in the handling of Record-Route
within the Dialog topology_hiding functionality.
The topology_hiding isn’t a true B2BUA, but it
does set up different parameters for the
incoming UAC and outgoing UAS sides of the call
for the Via headers, Record-Route and Route
headers, and the Contact header(s).</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">The
problem is that the record_route() and
loose_route() functions operate on different
sides of the call. The record_route() function
will only add a Record-Route header to the
outgoing UAS side of the call. And since the
record_route() function cannot be called from
onreply_route, but is no way to add a
Record-Route header to the UAC side of the call.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">On
the other hand, the loose_route() function only
operates on the incoming UAC side of the call
and there is no way to perform loose_route() on
the UAS side of the call.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">So
there is a situation where Record-Route headers
can only be added on the outgoing UAS side, but
the associated Route headers can only be removed
on the incoming UAC side (where they won’t exist
since they can’t be added) and any added headers
on the UAS side cannot be processed properly due
to the lack of loose_route.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I
can provide further information if this is
unclear. It should be easily reproducible by
attempting to use record_route in a
topology_hiding scenario. The route is added to
the outbound leg, but is not removed by
loose_route so the message is looped back every
time.</span><o:p></o:p></p>
<div>
<p class="MsoNormal"
style="line-height:16.8pt;background:white"><span
style="font-size:9.0pt;font-family:Arial;color:#666666"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"
style="line-height:16.8pt;background:white"><b><span
style="font-size:10.0pt;font-family:Arial;color:#155570">Ben Newlin</span></b><b><span
style="font-size:10.0pt;font-family:Arial;color:#666666"> </span></b><span
style="font-size:10.0pt;font-family:Arial;color:#666666">| Sr Voice
Network Engineer, PureCloud</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"
style="line-height:16.8pt;background:white"><span
style="font-size:10.0pt;font-family:Arial;color:#666666">phone & fax
+1.317.957.1009 | </span><span
style="font-size:10.0pt;font-family:Arial;color:#0585A7"><a
moz-do-not-send="true"
href="mailto:ben.newlin@inin.com">ben.newlin@inin.com</a> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"
style="line-height:16.8pt;background:white"><span
style="font-size:9.0pt;font-family:Arial;color:#666666;border:solid
windowtext 1.0pt;padding:0in"><img
moz-do-not-send="true" id="_x0000_i1025"
src="cid:Word%20Work%20File%20D_.jpg"
alt="age removed by sender." border="0"
height="21" width="196"></span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"
style="line-height:12.0pt;background:white"><span
style="font-size:10.0pt;font-family:Arial;color:#0585A7"><a
moz-do-not-send="true"
href="http://www.inin.com">www.inin.com</a></span><o:p></o:p></p>
</div>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><span
style="font-family:"Times New
Roman","serif""><br>
<br>
<br>
<br>
</span><o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Users mailing list<o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><span
style="font-family:"Times New
Roman","serif""> </span><o:p></o:p></p>
</div>
</div>
</blockquote>
<p class="MsoNormal"><span style="font-family:"Times
New Roman","serif""><o:p> </o:p></span></p>
</div>
</div>
</div>
</blockquote>
<br>
</body>
</html>