I&#39;ve reposted to a new thread &quot;Asterisk High Capacity Stability&quot; as I don&#39;t think the subject of this thread is appropriate anymore. <br><br>-kn0x<br><br><div><span class="gmail_quote">On 5/12/07, <b class="gmail_sendername">
Alex Balashov</b> &lt;<a href="mailto:abalashov@evaristesys.com">abalashov@evaristesys.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>On Sat, 12 May 2007, Atlanticnynex said something to this effect:<br><br>&gt; &#39;SIP Redirect Proxy&#39;, which I&#39;m understanding to just redirect the SIP<br>&gt; requests to the appropriate destination based on the routing logic- and
<br>&gt; OpenSER is no longer involved in the call process (meaning that<br>&gt; accounting can no longer be handled); but I hear their are many different<br>&gt; ways for OpenSER to behave, can this include my described configuration?
<br><br>&nbsp;&nbsp; I gather that OpenSER can be combined with rtpproxy to stay in the media<br>path as well, if desired.&nbsp;&nbsp;And really, OpenSER can behave however you want;<br>it allows you full read/write modification of pretty much any SIP header.
<br><br>&nbsp;&nbsp; In terms of what module to use for this, I had a very hard time with this<br>too since, believe it or not, for such a ubiquitous open-source package,<br>it did not offer a straightforward way of making SQL database dips without
<br>relying on the particular schema of some module or another.<br><br>&nbsp;&nbsp; Ultimately, I found that the &#39;avp&#39; module has a little function called<br>avp_db_query() which can extract query results and stick them in individual
<br>AVP values.&nbsp;&nbsp;This function may have just been put there for kicks, since<br>what AVP &quot;really&quot; implements is some transparent way of storing key/value<br>pairs.<br><br>&nbsp;&nbsp; So, what I really end up doing for most of my intelligent routing is
<br>something like:<br><br>---<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avp_db_query(&quot;SELECT ip_addr, port FROM customer_proxies WHERE<br>customer_id = $avp(S:customer_id) AND active = true&quot;,<br>&quot;$avp(S:proxy_ip);$avp(S:proxy_port)&quot;);
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!is_avp_set(&quot;$avp(S:proxy_ip)&quot;) ||<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!is_avp_set(&quot;$avp(S:proxy_port)&quot;)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_INFO&quot;, &quot;target-das - [$ci] - Active proxy not<br>found.\n&quot;)
<br>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;404&quot;, &quot;Not Found&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_INFO&quot;, &quot;target-das - [$ci] - Resolved proxy<br>$avp(S:proxy_ip):$avp(S:proxy_port)\n&quot;);
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avp_pushto(&quot;$ru/domain&quot;, &quot;$avp(S:proxy_ip):$avp(S:proxy_port)&quot;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_INFO&quot;, &quot;target-das - [$ci] - Attempting handoff to $ru\n&quot;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avp_delete(&quot;$avp(S:customer_id)&quot;);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avp_delete(&quot;$avp(S:proxy_ip)&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avp_delete(&quot;$avp(S:proxy_port)&quot;);<br><br>---<br><br>&nbsp;&nbsp; Seems like the simplest approach to me.<br><br>&gt; My SIP users can&#39;t know who the Upstream Providers are, so all traffic must
<br>&gt; be &#39;relayed&#39; through my server, including media.<br><br>&nbsp;&nbsp; In that case, use Asterisk as an SBC and keep it in the media path<br>perhaps, or tack on an RTP proxy to OpenSER, although unfortunately I can<br>
tell you absolutely nothing about how to go about this.<br><br>&gt; I&#39;ve confirmed that my SIP users can authenticate to OpenSER via the<br>&gt; RADIUS module, but 1) how do I keep track of the call detail records<br>
&gt; {minutes used, user info, dest. info} and report it back to RADIUS?<br><br>&nbsp;&nbsp; A decent RADIUS module will have the capability log the accounting<br>information into a RADIUS accounting backend as well, since accounting is a
<br>key component of RADIUS.&nbsp;&nbsp;If not, you can use something akin to what I<br>described above to keep the CDRs yourself.<br><br>&gt; how do can OpenSER authenticate to my Upstream Providers?<br><br>&nbsp;&nbsp; I am not sure if it can.&nbsp;&nbsp;There may have to be a B2BUA somewhere further
<br>upstream within your &quot;backend platform,&quot; as is not infrequently done.<br><br>&nbsp;&nbsp; In other implementations I&#39;ve seen, all connections to providers are done<br>on a hard-coded port/IP-mapped &quot;peer&quot; basis so that proxies can hand calls
<br>off straight to them.&nbsp;&nbsp;But another way is to put another SBC-type unit at<br>the egress to the provider(s) to take care of that.&nbsp;&nbsp;Just beware that this<br>comes with the full implications of a B2BUA--distinct logical call legs.
<br><br>Best of luck,<br><br>-- Alex<br><br>--<br>Alex Balashov&nbsp;&nbsp; &lt;<a href="mailto:sasha@presidium.org">sasha@presidium.org</a>&gt;<br>_______________________________________________<br>--Bandwidth and Colocation provided by 
<a href="http://Easynews.com">Easynews.com</a> --<br><br>asterisk-users mailing list<br>To UNSUBSCRIBE or update options visit:<br>&nbsp;&nbsp; <a href="http://lists.digium.com/mailman/listinfo/asterisk-users">http://lists.digium.com/mailman/listinfo/asterisk-users
</a><br></blockquote></div><br>