Hi Shaahin,<div><br></div><div>I see what you are trying to do here, get a list of gateways to be used for a particular destination(or any other logic) and then based on that list involve the drouting module. What I can imagine here is this would result in something like inserting the returned list into opensips first and then asking the module(insert into module table, refresh the module list and then) to do the processing for you.</div>
<div><br></div><div>If you have something like above in your mind, then it will be a performance overhead on per call basis !</div><div><br></div><div>I&#39;d suggest you to go without the Drouting module, in your perl script do all the gateway processing and send back results to opensips in AVPs and develop the &quot;Drouting like&quot; functionality in opensips.</div>
<div><br></div><div>Though I&#39;m not sure about your whole scenario precisely, what I can tell you is how I had done somewhat similar setup. I had all the gateways in a different DB and was using OpenSIPS-RADIUS integration. RADIUS used perl scripts and returned a list of sorted gateways to try. The list was processed in opensips in serial-forking manner.</div>
<div><br></div><div>Another possibility, that I can think for you, is tell your Drouting module to connect to the DB containing the table with ALL the gateways in it. The perl script will just return you the prefixes or enough logic to be input to the DROUTING functions and Drouting decides the actual gateway. (Make sure in your perl script you put intelligent logic which will ensure that DROUTING module selects from only your desired gateways)</div>
<div><br></div><div>I hope I made some sense here.</div><div><br></div><div>Regards,</div><div>Sammy</div><div><br></div><div><br><div class="gmail_quote">On Fri, Aug 31, 2012 at 7:55 AM, Shaahin Madani <span dir="ltr">&lt;<a href="mailto:shaahin.madani@gmail.com" target="_blank">shaahin.madani@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><font><font face="verdana,sans-serif">Greetings,</font></font><div><font><font face="verdana,sans-serif"><br>
</font></font></div><div><font><font face="verdana,sans-serif">Thanks for the helpful replies. Presently, the list of gateways cannot be retrieved using a direct query on the external database, and hence I need the Perl script to act as the middle-ware too. Some changes in the external database may fix this, and then I would be able to use the </font></font><font face="courier new, monospace">avops</font><font face="verdana, sans-serif"> module as Ali suggested, </font><span style="font-family:verdana,sans-serif">but I need to first thoroughly study all the consequences ...</span></div>

<div><font><font face="verdana,sans-serif"><br></font></font></div><div><font><font face="verdana,sans-serif">Regarding the bottleneck issue, I don&#39;t see any way that I can avoid the queries (or Perl). In case it turns out to be a real bottleneck, then is there any way to go around it, or will I actually be hitting an OpenSIPS limitation?</font></font></div>

<div><font><font face="verdana,sans-serif"><br></font></font></div><div><font><font face="verdana,sans-serif">Cheers,</font></font></div><div><font><font face="verdana,sans-serif">Shaahin</font></font></div><div><font><font face="verdana,sans-serif"><br>

</font></font></div><div><font face="verdana, sans-serif">P.S. [to Ali and Rudy]: It&#39;s &quot;Shaahin&quot;, not &quot;Shaheen&quot; :-)</font></div><div><div class="h5"><div><font><font face="verdana,sans-serif"><br>
</font></font></div><div>
<font><font face="verdana,sans-serif"><br></font></font><br><div class="gmail_quote">On Fri, Aug 31, 2012 at 2:03 AM, Rudy <span dir="ltr">&lt;<a href="mailto:rudy@dynamicpacket.com" target="_blank">rudy@dynamicpacket.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Brett,<br>
<br>
 Any complex logic, perl, sql or otherwise can impact performance and<br>
create a bottleneck. Regarding the perl module in particular, I can<br>
tell you that it works pretty well.<br>
<br>
Thanks in advance,<br>
<div>--Rudy<br>
Dynamic Packet<br>
Toll-Free: 888.929.VOIP ( 8647 )<br>
<br>
<br>
</div><div><div>On Thu, Aug 30, 2012 at 11:58 AM, Brett Nemeroff &lt;<a href="mailto:brett@nemeroff.com" target="_blank">brett@nemeroff.com</a>&gt; wrote:<br>
&gt; If you can sum up the logic in an SQL query I&#39;d recommend doing that. If you<br>
&gt; can cache the results in memcache, even better. Just keep in mind that any<br>
&gt; complicated logic can serve as a significant bottleneck. Depending on your<br>
&gt; traffic load, that may or may not be an issue.<br>
&gt;<br>
&gt; I know there are a few recommendations for the perl module here, but I&#39;m not<br>
&gt; sure of the status of the module and if it&#39;s actively maintained. I&#39;d love<br>
&gt; to hear from others about their own experiences using it. I haven&#39;t used it<br>
&gt; myself in maybe 6 years or so.<br>
&gt; -Brett<br>
&gt;<br>
&gt;<br>
&gt; On Thu, Aug 30, 2012 at 9:09 AM, Shaahin Madani &lt;<a href="mailto:shaahin.madani@gmail.com" target="_blank">shaahin.madani@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Bogdan and Brett,<br>
&gt;&gt;<br>
&gt;&gt; Thanks for your replies. The issue here is that my OpenSIPS simply does<br>
&gt;&gt; not have the list of gateways, that is the gateways are *not* available in<br>
&gt;&gt; the dr_gateways table. For every INVITE request, the list of gateways must<br>
&gt;&gt; be dynamically built, and only afterwards the actual dynamic routing can<br>
&gt;&gt; take place. The logic behind building the list of gateways relies on a<br>
&gt;&gt; totally separate database.<br>
&gt;&gt; To sum it up, I would say the desired scenario would resemble the steps<br>
&gt;&gt; below:<br>
&gt;&gt;<br>
&gt;&gt; 1) OpenSIPS receives an INVITE<br>
&gt;&gt; 2) OpenSIPS asks an external system (e.g. the Perl script) for the<br>
&gt;&gt; gateways available for this specific INVITE request<br>
&gt;&gt; 3) A list of gateways is returned to OpenSIPS (based on some black-box<br>
&gt;&gt; logic)<br>
&gt;&gt; 4) OpenSIPS dynamically routes the INVITE to the specified gateways,<br>
&gt;&gt; prioritising based on cost, time, or ...<br>
&gt;&gt;<br>
&gt;<br>
</div></div><div><div>&gt; _______________________________________________<br>
&gt; Users mailing list<br>
&gt; <a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br>
&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;<br>
<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</div></div></blockquote></div><br></div></div></div></div>
<br>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
<br></blockquote></div><br></div>