<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Nir Simionovich blog &#187; AGI</title>
	<atom:link href="http://www.simionovich.com/category/agi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simionovich.com</link>
	<description>The rants and raves of a technogeek</description>
	<lastBuildDate>Sat, 03 Sep 2011 19:26:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Call Analytics &#8211; Closed Alpha testing group</title>
		<link>http://www.simionovich.com/2010/03/14/call-analytics-closed-alpha-testing-group/</link>
		<comments>http://www.simionovich.com/2010/03/14/call-analytics-closed-alpha-testing-group/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 09:09:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[digium]]></category>
		<category><![CDATA[Elastix]]></category>
		<category><![CDATA[Fonality]]></category>
		<category><![CDATA[FreePBX]]></category>
		<category><![CDATA[freeswitch]]></category>
		<category><![CDATA[GreenfieldTech]]></category>
		<category><![CDATA[PHPAGI]]></category>
		<category><![CDATA[sangoma]]></category>
		<category><![CDATA[TrixBox]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=397</guid>
		<description><![CDATA[Well, it's been almost a month since I've started writing about the humbug project. Now, it's time to actually get you people involved, at least in the initial levels. We are looking to add 10 additional members into the humbug call analytics suite. Currently available analytics during the alpha testing is inbound call analytics.

]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2010%2F03%2F14%2Fcall-analytics-closed-alpha-testing-group%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2010%2F03%2F14%2Fcall-analytics-closed-alpha-testing-group%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Well, it&#8217;s been almost a month since I&#8217;ve started writing about the humbug project. Now, it&#8217;s time to actually get you people involved, at least in the initial levels. We are looking to add 10 additional members into the humbug call analytics suite. Currently available analytics during the alpha testing is inbound call analytics.</p>
<p>Our aim is to gather as much information as we can and as much user requests as we can, humbug is a community oriented project, thus it relies on community oriented input and feature requests. Participating members will  be granted access to the humbug analytics portal, allowing them to gather statistical information regarding their inbound call hits and their top ten DID numbers &#8211; we are working on additional statistics. As new stats will become available, we&#8217;ll role those out into the service as soon as possible.</p>
<p>In order to participate in the closed alpha testing, please send an email to alphatest at humbuglabs.org, and we&#8217;ll send you a short piece of dialplan code to insert into your <a class="zem_slink" title="Asterisk (PBX)" rel="homepage" href="http://www.asterisk.org/">Asterisk</a> server. Technically speaking, we&#8217;ll send you a short AGI command that looks like this:</p>
<p>exten =&gt; _X.,n,AGI(agi://somehost/DataReceiver,some_unique_ident)</p>
<p>The above line needs to be inserted into any place you would like to generate call analytics from. We&#8217;ll also enclose configuration steps for <a class="zem_slink" title="FreePBX" rel="wikipedia" href="http://en.wikipedia.org/wiki/FreePBX">FreePBX</a> (and other FreePBX compatible distributions). We are hard at work for creating a FreePBX integrated module, so you can do a one-click install.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/30a0c292-bf3e-4955-a2cb-865340d13569/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=30a0c292-bf3e-4955-a2cb-865340d13569" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2010/03/14/call-analytics-closed-alpha-testing-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Call Analytics &#8211; Beyond CDR analysis &#8211; Part I</title>
		<link>http://www.simionovich.com/2010/02/22/call-analytics-beyond-cdr-analysis-part-i/</link>
		<comments>http://www.simionovich.com/2010/02/22/call-analytics-beyond-cdr-analysis-part-i/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 15:03:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Application programming interface]]></category>
		<category><![CDATA[Israel]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[Real-time computing]]></category>
		<category><![CDATA[Rosetta Stone]]></category>
		<category><![CDATA[Site Management]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=388</guid>
		<description><![CDATA["Oh, just get me the CDR's and I'll take it from there" - how many times have I heard these words before? I can't even imagine the number of times in the past 15 years of IT/Telecom's work that I've done and in the last 8 years of Asterisk in particular - when it comes to billing and fraud management, it would appear that the CDR's are the Rosetta Stone of the industry.  ]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2010%2F02%2F22%2Fcall-analytics-beyond-cdr-analysis-part-i%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2010%2F02%2F22%2Fcall-analytics-beyond-cdr-analysis-part-i%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>&#8220;Oh, just get me the <a class="zem_slink" title="Call detail record" rel="wikipedia" href="http://en.wikipedia.org/wiki/Call_detail_record">CDR</a>&#8216;s and I&#8217;ll take it from there&#8221; &#8211; how many times have I heard these words before? I can&#8217;t even imagine the number of times in the past 15 years of IT/Telecom&#8217;s work that I&#8217;ve done and in the last 8 years of <a class="zem_slink" title="Asterisk (PBX)" rel="homepage" href="http://www.asterisk.org/">Asterisk</a> in particular &#8211; when it comes to billing and fraud management, it would appear that the CDR&#8217;s are the <a class="zem_slink" title="Rosetta Stone (software)" rel="homepage" href="http://www.rosettastone.com">Rosetta Stone</a> of the industry.</p>
<p>Over the past 6 months, several of my friends and I had been asking ourselves this question: &#8220;Is there more to billing, fraud management and profit leakage? does it really all begins and ends with the CDRs?&#8221; &#8211; so, here we were, a group of 3 engineers dealing with telecom system and billing systems &#8211; we knew that the answer is a definite YES, however, how come most companies and system aren&#8217;t even aware of this, in such a way that causes them to leak telecom profits and waste their hard earned profit margins on simple accidental mis-interpretation of CDR records.</p>
<p>So, we&#8217;ve decided to sit down and start analyzing calls in <a class="zem_slink" title="Real-time computing" rel="wikipedia" href="http://en.wikipedia.org/wiki/Real-time_computing">real-time</a>, trying to evaluate not only the CDR record that is received upon the completion of the call &#8211; but also understand the traversal path of the call, analyzing it in real time and evaluating it profit leakage potential. At the mean time, we&#8217;re concentrating our work on Asterisk, as it is the simplest for us to implement &#8211; however, we&#8217;re not focusing it only on that &#8211; we&#8217;ll looking at adding it to FreeSwitch, Yate, OpenSer/Kamailio, OpenSIPS and the various varients.</p>
<p>So, what have we done so far? well, one thing we never really had with any of the existing systems was a clear view of what&#8217;s going on &#8220;right-now&#8221; on our systems, so we said: &#8220;it would really be great if we could know how many call hits we&#8217;ve received during the past 15, 30, 45 or 60 minutes&#8221; &#8211; so here is what we made:</p>
<p><a href="http://www.simionovich.com/wp-content/uploads/2010/02/humbug3.jpg"><img class="aligncenter size-full wp-image-389" title="Inbound call statistics for 30 minutes" src="http://www.simionovich.com/wp-content/uploads/2010/02/humbug3.jpg" alt="Inbound call statistics for 30 minutes" width="690" height="387" /></a>The above image shows our top 10 inbound DID numbers, as you can see these are in the 972 and 447 country codes (yes, we work mainly in <a class="zem_slink" title="Israel" rel="geolocation" href="http://maps.google.com/maps?ll=31.7833333333,35.2166666667&amp;spn=1.0,1.0&amp;q=31.7833333333,35.2166666667%20%28Israel%29&amp;t=h">Israel</a> and the <a class="zem_slink" title="United Kingdom" rel="geolocation" href="http://maps.google.com/maps?ll=51.5,-0.116666666667&amp;spn=10.0,10.0&amp;q=51.5,-0.116666666667%20%28United%20Kingdom%29&amp;t=h">UK</a>). At the backend, our servers are analyzing the data in real time, generating an active alert in the case a DID number&#8217;s <a class="zem_slink" title="Statistics" rel="wikipedia" href="http://en.wikipedia.org/wiki/Statistics">statistics</a> change in a somewhat drastic change, thus, establish a traffic anomaly. Another thing that interested us was our usage across multiple servers, which we are exhibiting in the below graph:</p>
<p><a href="http://www.simionovich.com/wp-content/uploads/2010/02/humbug1.jpg"><img class="aligncenter size-full wp-image-390" title="Traffic by server spread" src="http://www.simionovich.com/wp-content/uploads/2010/02/humbug1.jpg" alt="Traffic by server spread" width="800" height="481" /></a></p>
<p>Now, as you can see, the top graph shows a discrete anomaly:</p>
<p><a href="http://www.simionovich.com/wp-content/uploads/2010/02/humbug21.jpg"><img class="aligncenter size-full wp-image-392" title="Discrete traffic anomaly" src="http://www.simionovich.com/wp-content/uploads/2010/02/humbug21.jpg" alt="Discrete traffic anomaly" width="409" height="186" /></a>This anomaly indicates something went wrong on all our servers between 00:45 and 1:15, which gives us a fairly discrete period of time to seek for a problem in the system. What happened was that one of the guys updated a portion of the data traversal <a class="zem_slink" title="Application programming interface" rel="wikipedia" href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a> &#8211; basically deleting it <img src='http://www.simionovich.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  [we resumed full work after about 40 minutes].</p>
<p>So, where is it all going to? well simple, a new <a class="zem_slink" title="Open Source" rel="wikinvest" href="http://www.wikinvest.com/concept/Open_Source">Open Source</a> based service that we&#8217;ll be launching within a few months from now. Our intention is to provide a means for simple, straight <a class="zem_slink" title="Forward (association football)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Forward_%28association_football%29">forward</a>, highly reliable, call analytics, fraud management and profit leakage analysis service. A service which is based upon a simple to use API on one hand and Open Source based data gathering agents. Our belief is that by analyzing large amounts of data, from multiple sources around the world, we&#8217;ll be able to ascertain the fingerprint of a telecom bound attack &#8211; being able to alert the respective users of the service and maybe in the later future, also provide a means to block the attack as it advances across the world.</p>
<p>I&#8217;ll be updating about our advancement as we go along, but for the time being, this is something I felt would interest you.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/48389df4-cfc0-4a29-999f-bd64ebfa9a06/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=48389df4-cfc0-4a29-999f-bd64ebfa9a06" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2010/02/22/call-analytics-beyond-cdr-analysis-part-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Astricon 2009 – Glendale, AZ – Part II</title>
		<link>http://www.simionovich.com/2009/10/15/astricon-2009-%e2%80%93-glendale-az-%e2%80%93-part-ii/</link>
		<comments>http://www.simionovich.com/2009/10/15/astricon-2009-%e2%80%93-glendale-az-%e2%80%93-part-ii/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 00:18:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[digium]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[GreenfieldTech]]></category>
		<category><![CDATA[Innovation Award]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VMWARE]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=342</guid>
		<description><![CDATA[Ok, it's day 1 (or actually day 2) for AstriCon 2009 - and here's my report for the day. ]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F10%2F15%2Fastricon-2009-%25e2%2580%2593-glendale-az-%25e2%2580%2593-part-ii%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F10%2F15%2Fastricon-2009-%25e2%2580%2593-glendale-az-%25e2%2580%2593-part-ii%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Ok, it&#8217;s day 1 (or actually day 2) for AstriCon 2009 &#8211; and here&#8217;s my report for the day.</p>
<p>Yesterday was kind&#8217;a of a hectic day for me, as I was teaching a full day track of Asterisk and Cloud Computing, specifically, implementing Asterisk systems with Amazon EC2. I started the day with a class filled with 20+ people, and ended the day with a similar number &#8211; so in general I&#8217;m very happy. Not many people tend to attend the pre-conference days, so having that number of people and their positive reactions through out the day were very reassuring to me.</p>
<p>If there is one thing I&#8217;ve learned from this experience, it is the following: If you give a full day track, don&#8217;t arrive at the hotel 24 hours prior to it &#8211; you need at least 48 hours! People didn&#8217;t really notice (I hope), but through out the day I was suffering from a splitting headache &#8211; one that would usually send me right into bed with a couple of Advil&#8217;s. But hey, that didn&#8217;t stop me and I powered through it, I&#8217;m fairly proud of myself for doing so &#8211; as at the end of the day I regained back my strength and was livelier.</p>
<p>Today was the first official day of the conference &#8211; I gave the opening talk for the Cloud Computing track of the day. My talk was about how to build &#8220;IP Centrex&#8221; like services, without building an &#8220;IP Centrex&#8221;. I guess that I didn&#8217;t really introduce a brand new concept, but actually talked about something that many are thinking about, but are not inclined to try it on their own and burn some cash on. I guess my talk helped them out saying: &#8220;Hey, we&#8217;re not talking out of our asses here, this guy makes some sense and what we thought of isn&#8217;t that far fetched&#8221;.</p>
<p>Previous to that, Digium announced the <a title="2009 Innovation Award Winners" href="http://www.digium.com/en/mediacenter/viewpress/digium-announces-winners-of-2009-innovation-awards" target="_blank">2009 Digium innovation award winners</a>, where my company won an award in the pioneer category. This is the second year in a row my company had won the award, and I&#8217;m really happy with being acknowledged for this specific work. Having being a part of the community for over 7 years now, this award, at least to me personally, says a lot &#8211; it&#8217;s basically saying: &#8220;Look, you&#8217;ve done good, you&#8217;ve done some work that really helps out the project and the community in general &#8211; here&#8217;s a beer and a toast to you &#8211; hip hip&#8221; &#8211; well, that&#8217;s kind&#8217;a of a mouth full, but you get what I mean. I think that this is actually the place to mention that the award was for developing a high-powered Dialer/IVR platform, used in the Israeli elections and the work was contracted for a company called <a title="Shtrudel Ltd" href="http://www.shtrudelltd.com" target="_blank">Shtrudel.</a></p>
<p>The all conference party is tonight &#8211; so I better rest up and be ready for it &#8211; should be fun. I guess beer and food are always a good mix when a bunch geeks are getting together <img src='http://www.simionovich.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2009/10/15/astricon-2009-%e2%80%93-glendale-az-%e2%80%93-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A baby, a house and a full time job</title>
		<link>http://www.simionovich.com/2009/07/19/a-baby-a-house-and-a-full-time-job/</link>
		<comments>http://www.simionovich.com/2009/07/19/a-baby-a-house-and-a-full-time-job/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 11:22:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Amazon Elastic Compute Cloud]]></category>
		<category><![CDATA[Application programming interface]]></category>
		<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[File sharing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Pirate Bay]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=319</guid>
		<description><![CDATA[For those of you who know personally, you probably already know that last month I became a father. I guess the transition is something that I was more or less ready for, at least on the technical terms of the transition.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F07%2F19%2Fa-baby-a-house-and-a-full-time-job%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F07%2F19%2Fa-baby-a-house-and-a-full-time-job%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>For those of you who know personally, you probably already know that last month I became a father. I guess the transition is something that I was more or less ready for, at least on the technical terms of the transition. However, the thing that completely surprised me was the mental transition &#8211; which isn&#8217;t even related to the somewhat lack of sleep here and there.</p>
<p>So, here I am, about a month and half away into the final touches to our new home, spending the weekend deploying over 100 meters of CAT-5 cabling in the house &#8211; yes the house is network rigged to the teeth. I&#8217;m sitting in my daughters room, clamping away the wall sockets for the network, thinking to myself: &#8220;hmmmm&#8230;. will Nitzan need a single network connection? or should I put at least two for future usage? &#8230; hmmmm&#8230;. well, I guess time would tell&#8221;. In any case, so there I was, spending most of my weekend being my own geeky self, thinking about wiring, networking, wireless exposures, access points, etc. I then go back home, and suddenly, all that disappears the minute I put Nitzan on my shoulder to burp her. It&#8217;s really funny, but with her on my shoulder, I guess everything goes away for a few minutes. My brother-in-law informed the house that he caught me burping Nitzan, while sitting at my computer answering emails with the other hand &#8211; Ok, so I can&#8217;t stop being a geek all together.</p>
<p>In any case, here I am juggling the various aspects of being a father to a new born baby, attending to the various tasks required to final touches of the house (painters, cleaners, air cons, dry walls, etc) and of course, attending to my customers &#8211; some of which are completely ambivalent to the fact that I&#8217;m under a constant lack of sleep in the past month. Well, I guess in a couple of months Nitzan will start sleeping better, and would make life easier for both me and my wife; in the mean while, we take comfort with the sleep periods my wife gets during the day, so that I can work and cater to my customers, while she caters to Nitzan during the nights &#8211; and I have to be honest about this, when it comes to the baby, my wife is the closest thing to a Jedi Knight, her ability to stay focused and clam even when the Nitzan is screaming is amazing &#8211; I can&#8217;t always do it.</p>
<p>Ok, enough about the house and Nitzan, let&#8217;s go back to been geeks for a bit. As you can see on the right hand side of the blog, I&#8217;ll be speaking at the up-coming <a title="Astricon Speakers List" href="http://www.astricon.net/confSpeakers.aspx" target="_blank"><span class="zem_olink">Astricon</span></a>. I&#8217;ll be giving a talk about how to build &#8220;IP-Centrex&#8221; like installations, utilizing Asterisk and tools like VMWARE, XEN and OpenVZ. However, while my talk may be interesting to you (I hope), my pre-conference tutorial will be much more interesting. I&#8217;ll be giving a full day tutorial, teaching people how to install Asterisk in a clouded environment (<a class="zem_slink" title="Cloud Computing" rel="wikinvest" href="http://www.wikinvest.com/concept/Cloud_Computing">cloud computing</a>), mainly the <a class="zem_slink" title="Amazon EC2" rel="crunchbase" href="http://www.crunchbase.com/product/amazon-ec2">Amazon EC2</a> cloud computing infrastructure. For those of you reading this blog, you may have noticed that I&#8217;ve developed a <a title="Various posts about Amazon EC2" href="http://www.simionovich.com/tag/amazon/" target="_blank">distinct interest in the Amazon EC2 cloud</a>, which I&#8217;ve written about several times and also lectured about at Amoocon. While my Amoocon presentation was mainly informational, at Astricon I&#8217;ll be primarily teaching you how to do what I did. Well, I won&#8217;t be teaching you the inner workings of the <a title="GreenfieldTech IVR API framework" href="http://www.greenfieldtech.net/products/gtvapi" target="_blank">GreenfieldTech IVR API framework</a>, although, if you&#8217;re gonna ask questions I will answer (especially if you ask the question 3 times, I can&#8217;t stand it when people ask the same question 3 times &#8211; I just have to answer it &#8211; nudge nudge).</p>
<p>Ok, back to fatherhood and Nitzan stuff. The mental transition that I was referring to before is something that I felt last night in its most force. My wife and I decided to go to one of the malls, not far away from our house. So, we entrusted Nitzan with my in-laws and drove to the mall. The mall I&#8217;m referring to is called &#8220;The seven stars mall&#8221; and we like it. It&#8217;s not a big mall, but its got this shop called DOMO, that carries these high class cooking ware (my wife and I really like to cook &#8211; my chilli con-carne is well known). So, here we were walking the mall, after I ordered a pair of shoes that I needed. So, my wife comments: &#8220;You know something, let&#8217;s see if there is some sale at Super-Pharm.&#8221; &#8211; and then we ended up purchasing baby formula, pacifiers and baby wipes. I then asked my wife if she maybe wants to walk into DOMO, but we both didn&#8217;t really think about it &#8211; suddenly, something that was like a default prior to Nitzan is no longer a default &#8211; interesting isn&#8217;t it?</p>
<p>In any case, this is how my life looks like at this point in time &#8211; and I have to admit that I kind&#8217;a like it. Sure, I don&#8217;t get as much sleep as I got before, but hey, I&#8217;m happy with it &#8211; so I just keep on smiling and go on forward.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/3e059ca7-4f5b-4284-8e33-9013e7224e35/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=3e059ca7-4f5b-4284-8e33-9013e7224e35" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2009/07/19/a-baby-a-house-and-a-full-time-job/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asterisk AGI Programming &#8211; New Book</title>
		<link>http://www.simionovich.com/2009/02/18/asterisk-agi-programming-new-book/</link>
		<comments>http://www.simionovich.com/2009/02/18/asterisk-agi-programming-new-book/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 23:08:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Asterisk Book]]></category>
		<category><![CDATA[Asterisk Developers]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Packt Publishing]]></category>
		<category><![CDATA[PHPAGI]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=254</guid>
		<description><![CDATA[Well, it&#8217;s finally out &#8211; my new book that is Some of you already know, but over the past year I&#8217;ve been busy writing a new book. This time it&#8217;s a book for Asterisk developers, especially tailored to PHP developers wishing to utilizing the PHPAGI framework. The book is out from Packt Publishing (Like my]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F02%2F18%2Fasterisk-agi-programming-new-book%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F02%2F18%2Fasterisk-agi-programming-new-book%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Well, it&#8217;s finally out &#8211; my new book that is <img src='http://www.simionovich.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Some of you already know, but over the past year I&#8217;ve been busy writing a new book. This time it&#8217;s a book for Asterisk developers, especially tailored to PHP developers wishing to utilizing the PHPAGI framework. The book is out from Packt Publishing (Like my old AsteriskNOW book) and is updated with all the recent changes in Asterisk &#8211; including version 1.6.X and DAHDI.</p>
<div class="wp-caption aligncenter" style="width: 550px"><a href="http://www.packtpub.com/asterisk-gateway-interface-programming/book"><img title="Asterisk Developers Book" src="http://images.packtpub.com/images/full/184719446X.jpg" alt="Asterisk Developers Book" width="540" height="666" /></a><p class="wp-caption-text">Asterisk Developers Book</p></div>
<p>If you like my work with Asterisk and would like to read more of my work, go ahead and get an electronic version of this book. I know it&#8217;s a little self promoting, by hey, it never hurts does it?</p>
<p>I&#8217;ve included a chapter on how to build a complete project from scratch, detailing the various analysis steps and various paradigms required to develop a fully functional Asterisk based application. I believe that even experienced Asterisk developers will benefit from this book.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2009/02/18/asterisk-agi-programming-new-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>So long SigValue &#8211; Hello Asterisk + EC2!</title>
		<link>http://www.simionovich.com/2009/02/02/so-long-sigvalue-hello-asterisk-ec2/</link>
		<comments>http://www.simionovich.com/2009/02/02/so-long-sigvalue-hello-asterisk-ec2/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 06:01:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Broadsoft]]></category>
		<category><![CDATA[digium]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Nortel]]></category>
		<category><![CDATA[Personeta]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[SigValue]]></category>
		<category><![CDATA[Sylantro]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=223</guid>
		<description><![CDATA[As some of you may know, I&#8217;ll be attending the ITExpo in Miami Beach, Florida. The subject I&#8217;ll be lecturing about is &#8220;Virtualizing Asterisk&#8221;. However, I have to be honest, I really need to change the subject to be called &#8220;Asterisk in the Cloud&#8220;. Ever since the introduction of Amazon EC2, people had been trying]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F02%2F02%2Fso-long-sigvalue-hello-asterisk-ec2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F02%2F02%2Fso-long-sigvalue-hello-asterisk-ec2%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>As some of you may know, I&#8217;ll be attending the <a title="ITExpo" href="http://www.itexpo.com" target="_blank">ITExpo</a> in Miami Beach, Florida. The subject I&#8217;ll be lecturing about is &#8220;Virtualizing Asterisk&#8221;. However, I have to be honest, I really need to change the subject to be called &#8220;<a title="Asterisk" href="http://www.asterisk.org" target="_blank">Asterisk</a> in the <a title="Cloud Computing" href="http://www.greenfieldtech.net/expertise" target="_blank">Cloud</a>&#8220;.</p>
<p>Ever since the introduction of Amazon EC2, people had been trying to get Asterisk to run properly inside an EC2 instance. While installing a vanilla Asterisk on any of the Fedora/RedHat variant instances in EC2 isn&#8217;t much of a hassle, getting the funky stuff to work is a little more tricky.</p>
<p>One of these tricky bits (which I hadn&#8217;t yet found a solution for) is the issue of supplying a timer for Asterisk&#8217;s MeetMe application. In the old days (prior to Asterisk 1.6), Asterisk required the utilization of a virtual timer driver, provided by Zaptel in the past and now the DAHDI framework. The problem is, that while you are fully capable of compiling and installing DAHDI on an Amazon EC2 instance &#8211; the problem starts once you want to use it.</p>
<h1>A few words about Amazon EC2</h1>
<p>For those not familiar with Amazon EC2, its general infrastructure is based upon the XEN virtualization project. XEN is a para-virtualization framework, meaning that is performs some of the work utilizing the underlying Operating System kernel and some of the work performed with a special Kernel in the virtualized Operating System instance. This poses an interesting issue with every type of application that relies on hardware resources and their emulation.</p>
<p>To learn more about the XEN project, go to <a title="http://www.xen.org" href="http://www.xen.org/" target="_blank">http://www.xen.org</a>.</p>
<h1>So, where&#8217;s the big deal?</h1>
<p>So, if you can compile your code and run it in an instance, as long as you have the kernel headers and kernel source packages &#8211; you should be just fine &#8211; right? WRONG!</p>
<p>Amazon EC2 deploys its own Kernel binary image upon bootstrap, causing what ever compilation you may have done to the Kernel to go away (unless you&#8217;re creating a machine from real scratch). Another issue is a version skew between the installed Operating System kernel modules, the actual kernel and the installed compiler. For example, the instance that I was using had the XEN capable kernel compiled with gcc version 4.0.X, while the installed operating system was gcc version 4.1.X &#8211; so, no matter what I did to compile my kernel modules or binary kernel, I would always end up in a situation where loading the newly compiled kernel modules will generate an error.</p>
<p>Did I manage to solve it? &#8211; NOT YET. I&#8217;m still working on it, and I have to admit, that considering the fact that I have over 10 years of Linux experience and had compiled kernels from scratch many times, this one has gotten me a little baffled &#8211; I guess I&#8217;ll just need a few more nights and a case of Red-Bull to crack this one open.</p>
<h1>So, what can we do with EC2?</h1>
<p>In my view, EC2 + Asterisk is the ultimate IN/NGN services environment &#8211; and I have proof of that. A recent lab test that I did with one of my customers showed a viable commercial alternative to Sigvalue when using Asterisk and EC2 structures. The main reason for our belief in using EC2 was the following graph:</p>
<div id="attachment_224" class="wp-caption aligncenter" style="width: 490px"><a href="http://www.simionovich.com/wp-content/uploads/2009/02/graph1.png"><img class="size-full wp-image-224" title="IN/NGN usage over 24 hours" src="http://www.simionovich.com/wp-content/uploads/2009/02/graph1.png" alt="IN/NGN usage over 24 hours" width="480" height="360" /></a><p class="wp-caption-text">IN/NGN usage over 24 hours</p></div>
<p>What we&#8217;ve noticed was that while our IN/NGN system was generating traffic, it&#8217;s general usage showed peak usage for a period of 2.5 hours, with a gradial increase and decrease over a period of almost 10 hours. Immediately that led us to a question: &#8220;Can we use Amazon EC2 to provide an automatd scaling facility for the IN/NGN system, allowing the system to reduce its size as required?&#8221;</p>
<p>To do this, we&#8217;ve devised the following IN/NGN system:</p>
<div id="attachment_225" class="wp-caption aligncenter" style="width: 490px"><a href="http://www.simionovich.com/wp-content/uploads/2009/02/ec2-architecture.jpg"><img class="size-full wp-image-225" title="Amazon EC2 Enabled IN/NGN Platform" src="http://www.simionovich.com/wp-content/uploads/2009/02/ec2-architecture.jpg" alt="Amazon EC2 Enabled IN/NGN Platform" width="480" height="581" /></a><p class="wp-caption-text">Amazon EC2 Enabled IN/NGN Platform</p></div>
<p>Our softswitch would have a static definition of routing calls to all our Asterisk servers, including our EC2 instances which had static Elastic IP numbers assigned to these. The EC2 Controller server was incharge of initiating the EC2 instances at the pre-defined times, mainly, 30 minutes prior to the projected increase in traffic. Once the controller reaches its due timer, it will automatically launch the EC2 instances required to sustain the inbound traffic.</p>
<p>For our tests, we&#8217;ve initiated 5 AMI instances, using the EC2 c1.medium instance. This instance basically includes 2 cores of an AMD opteron, about 8GB of RAM and about 160GB of Hard drive &#8211; more than enough. Initially, we&#8217;ve started spreading the load evenly across the servers, reaching about 80 concurrent channels per instance, and all was working just fine. We managed to reach a point where we were able to sustain a total of about 110 concurrent channels per instance, including the media handling &#8211; which is not too bad, considering that we are running inside a XEN instance. The one thing that made the entire environment extremely light weight is the <a title="http://www.greenfieldtech.net/products" href="http://www.greenfieldtech.net/products" target="_blank">GTx Suite </a>of APIs for Asterisk. Thanks to the <a title="http://www.greenfieldtech.net/products" href="http://www.greenfieldtech.net/products" target="_blank">GTx Suite</a> of APIs, scalability is fairly simple, as all application-layer logic is controlled from a central business logic engine, serving the Asterisk servers via an XML-RPC based web service. Thanks to Amazon, practically infinite, bandwidth allocation &#8211; the connections from the Asterisk servers to the US based central business logic was set at a whopping 25mSec, thus, there was no visible delay to the end user.</p>
<p>It is clear that the utilization of Asterisk and EC2 operational constructs can allow a carrier to establish their own IN/NGN environment. However, how these are designed, implemented and operated are at the hands of the carrier &#8211; and not a specific vendor. If the carriers around the world will take to this approach, time will tell. As a recent survey stated that 18% of the US PBX market is currently dominated by Open Source solution, having Digium dominate 85% of these 18% (~15%), I&#8217;m confident that we will see this combination of solutions in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2009/02/02/so-long-sigvalue-hello-asterisk-ec2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asterisk 3rd Party API &#8211; and their importance</title>
		<link>http://www.simionovich.com/2009/01/30/asterisk-3rd-party-api-and-their-importance/</link>
		<comments>http://www.simionovich.com/2009/01/30/asterisk-3rd-party-api-and-their-importance/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 13:07:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[dialer]]></category>
		<category><![CDATA[digium]]></category>
		<category><![CDATA[Greenfield Technologies]]></category>
		<category><![CDATA[GreenfieldTech]]></category>
		<category><![CDATA[Interactive Voice Response]]></category>
		<category><![CDATA[IVR]]></category>
		<category><![CDATA[Recorded]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=221</guid>
		<description><![CDATA[As some of may know, I spend most of my time working as an Asterisk Developer and Consultant in my own company &#8211; called Greenfield Technologies Ltd. - named GreenfieldTech for short. Since the day I started my company I knew a few facts and truths: GreenfieldTech starts as a one man operation &#8211; thus, spending]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F01%2F30%2Fasterisk-3rd-party-api-and-their-importance%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F01%2F30%2Fasterisk-3rd-party-api-and-their-importance%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>As some of may know, I spend most of my time working as an Asterisk Developer and Consultant in my own company &#8211; called <a title="Greenfield Technologies Ltd." href="http://www.greenfieldtech.net" target="_blank">Greenfield Technologies Ltd.</a> - named GreenfieldTech for short. Since the day I started my company I knew a few facts and truths:</p>
<ol>
<li><a title="GreenfieldTech" href="http://www.greenfieldtech.net" target="_blank">GreenfieldTech </a>starts as a one man operation &#8211; thus, spending more than 15% of my day to day tasks on support issues will surely stress me out and drive my business to the ground.</li>
<li>I don&#8217;t really want to deal with PBX installations and various office telephony aspects of using Asterisk &#8211; simply because it requires to much of item 1.</li>
<li>I need a way to be able to provide a fast response to my customers, maintain a low support over head and make sure that what ever I do, it can be accounted for.</li>
</ol>
<p>Hence the above, I understood that <a title="GreenfieldTech" href="http://www.greenfieldtech.net" target="_blank">GreenfieldTech</a>&#8216;s products are not really the various services it provides, but actually the products vary completely from what a product looks and feels like. I understood that in order to provide this fast development turn-around I needed my own development framework. Surely PHPAGI, Adhearsion and Asterisk-JAVA can easily provide for a development framework &#8211; but it still doesn&#8217;t help me one bit &#8211; I needed something different.</p>
<p>I then realized that <a title="GreenfieldTech" href="http://www.greenfieldtech.net" target="_blank">GreenfieldTech</a>&#8216;s products are the one product line that all developers and vendor steer away from: Programmatical API frameworks. The programmatic framework should provide the most basic feature set, allowing it to be extended and continued onwards at ease. Hence, the suite of GTx API frameworks were born. A set of 3 different APIs provide all the facilities required for building any of the below:</p>
<ul>
<li>Dynamic IVR structures &#8211; driven via web services</li>
<li>Recording systems</li>
<li>Pre-Paid/Post-paid solutions</li>
<li>Inteligent Network (IN) services</li>
<li>Automatic Dialers &#8211; Predictive, Power, Progressive, Preview</li>
<li>Broadcasting systems</li>
<li>and more &#8230;</li>
</ul>
<p>The entire API suite is based upon XML-RPC based web services. When I introduced XML-RPC to one of my customers, he immediately indicated: &#8220;But, XML-RPC doesn&#8217;t really provide for session oriented persistency. Why are you using XML-RPC?&#8221; &#8211; The reason is simple &#8211; we don&#8217;t need session persistency in the API &#8211; Asterisk can provide all of that internally. Thanks to Asterisk&#8217;s channel oriented architecture, we can regard each of Channel thread in Asterisk as a seperated data container, capable of holding all your session information and persistency information at ease.</p>
<p>Recorder API &#8211; <a href="http://www.greenfieldtech.net/products/gtrapi">http://www.greenfieldtech.net/products/gtrapi</a><br />
IVR API &#8211; <a href="http://www.greenfieldtech.net/products/gtvapi">http://www.greenfieldtech.net/products/gtvapi</a><br />
Dialer API &#8211; <a href="http://www.greenfieldtech.net/products/gtdapi">http://www.greenfieldtech.net/products/gtdapi</a></p>
<p>The best thing about the GTx API suite is this &#8211; they are all interconnected. For example, call being handled by the Dialer API can be then handed over to the IVR API, operating within the same Asterisk server or a remotely located Asterisk server (via SIP/IAX2).</p>
<p>In the time to come, I&#8217;ll be showing you various XML-RPC structures and example of how to use the GTx API suite, and do all sorts of interesting IVR and Dialer structures.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2009/01/30/asterisk-3rd-party-api-and-their-importance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts of virtualization &#8211; Part III</title>
		<link>http://www.simionovich.com/2009/01/21/thoughts-of-virtualization-part-iii/</link>
		<comments>http://www.simionovich.com/2009/01/21/thoughts-of-virtualization-part-iii/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 18:25:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[dialer]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VMWARE]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=201</guid>
		<description><![CDATA[Ok, it&#8217;s been almost 24 hours since I started my serious playing around with Amazon EC2, and I can honestly say that I&#8217;m tired &#8211; however, I&#8217;m very pleased with my results. Like any other experiment, this one started with a requirement. The requirement was to install and operate one of the dialer frameworks I&#8217;ve]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F01%2F21%2Fthoughts-of-virtualization-part-iii%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2009%2F01%2F21%2Fthoughts-of-virtualization-part-iii%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Ok, it&#8217;s been almost 24 hours since I started my serious playing around with Amazon EC2, and I can honestly say that I&#8217;m tired &#8211; however, I&#8217;m very pleased with my results. Like any other experiment, this one started with a requirement. The requirement was to install and operate one of the dialer frameworks I&#8217;ve written in the past year on an EC2 based instance. In order to evaluate the process, let&#8217;s start with our baseline installation, meaning, what am I using in the real-world:</p>
<p><strong>Hardware and Software Specification</strong></p>
<p>The original machine answered to the following specification: Quad Core CPU, 2GB of RAM, 250GB of Hard Drive. My original machine was running CentOS 5.2 with an x86_64 kernel installed. In terms of software installed, we had Asterisk 1.4.22.1, MySQL 5.X, PHP, FreePBX, Apache and my dialer framework.</p>
<h1><strong>Introducing Amazon EC2 AMI<br />
</strong></h1>
<p>An EC2 AMI is basically an image of a computer, contained with a single installation manifest on the Amazon cloud computing system. AMI&#8217;s provide for the simplest manner to start using EC2, as these usually include a pre-defined server installation, that usually has some stuff already installed.</p>
<h2>Choosing your AMI</h2>
<p>Amazon provides a multitude of AMI&#8217;s to work with, unfortunately, most of these are either out-dated and the sheer number of these makes the choice somewhat overwhelming. I decided to start working with a working AMI image of Fedora Core 8, that already had the LAMP stack installed &#8211; the one I used was:</p>
<div class="cell_liner"><img src="https://console.aws.amazon.com/images/logo_fedora.gif" alt="LAMP Web Starter" /></div>
<div class="cell_liner"><strong>LAMP Web Starter</strong> (AMI ID: ami-ba4eaad3)<br />
<span class="ami_description">Fedora Core 8, 32-bit architecture, PHP 5.0.4, Apache 2.0.54, and MySQL 4.1.20</span></div>
<h2>The YUM Repository issue</h2>
<p>For some strange reason, the AMI images contained in the Amazon repository are all unable to perform any updates to their installed RPM packages. It took me a while to understand what&#8217;s wrong, but in general, the fedora project had simply removed the old releases from their repository, so I had to go in and manually modify the /etc/yum.repos.d/ configuration files. For you convenience, here is the repos list that I&#8217;m using at this point:</p>
<p><a href="http://www.simionovich.com/wp-content/uploads/2009/01/repos.conf">YUM Repositories for Amazon EC2 Fedora images</a> &lt;- click this to download the file</p>
<pre>[development]
name=Fedora Core $releasever - Development Tree
baseurl=http://archives.fedoraproject.org/pub/archive/fedora/linux/core/development/$basearch/
enabled=1
gpgcheck=0</pre>
<pre>[extras-development]
name=Fedora Extras $releasever - Development Tree
baseurl=http://archives.fedoraproject.org/pub/archive/fedora/linux/extras/development/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-extras
gpgcheck=0</pre>
<pre>[extras]
name=Fedora Extras $releasever - $basearch
baseurl=http://archives.fedoraproject.org/pub/archive/fedora/linux/extras/$releasever/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-extras
gpgcheck=1</pre>
<pre>[updates-testing]
name=Fedora Core $releasever - $basearch - Test Updates
baseurl=http://archives.fedoraproject.org/pub/archive/fedora/linux/core/updates/testing/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-test</pre>
<pre>[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://archives.fedoraproject.org/pub/archive/fedora/linux/core/updates/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora</pre>
<pre>[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://archives.fedoraproject.org/pub/archive/fedora/linux/core/$releasever/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora</pre>
<p>If you are trying to install an instance, you may use the above for any Fedora based AMI on EC2.</p>
<h2>Creating my own AMI</h2>
<p>While going about and building a single server is fun, I needed a way to create my own installation AMI once I&#8217;ve completed my modifications. The Amazon EC2 resources website gives out a whole lot of information, which can be somewhat confusing for the first time reader. So, I searched for a better way to construct my own AMI image. I found the following web page, which was really really helpful: <a class="wp-caption" title="Azeez's Notes blog" href="http://afkham.org/2008/10/how-to-create-ec2-ami.html" target="_blank">Azeez&#8217;s Notes</a>.</p>
<p>Azeez&#8217;s blog gives a very concise and to the point, step by step, guide to building your own AMI image &#8211; it got me up and running in less than 10 minute &#8211; WAY TO GO AZEEZ.</p>
<h2>So far, so good &#8230;</h2>
<p>So far my installed instances are working just fine and I&#8217;m currently operating a cluster of a few of these dialer systems. I&#8217;m in the process of checking what kind of mileage I&#8217;ll get from the EC2 instances, in comparison to a real hardware server &#8211; which is really interesting.</p>
<p>My main objective here is to be able to build a dialer-on-demand framework, which will enable my customers to increase their capacity utilizing a simple web interface to initiate my AMI instances. I&#8217;ll report back with additional information once I have it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2009/01/21/thoughts-of-virtualization-part-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts of Virtualization &#8211; Part III &#8211; Multiple Asterisk Gateways</title>
		<link>http://www.simionovich.com/2008/12/15/thoughts-of-virtualization-part-iii-multiple-asterisk-gateways/</link>
		<comments>http://www.simionovich.com/2008/12/15/thoughts-of-virtualization-part-iii-multiple-asterisk-gateways/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 12:17:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[scaling]]></category>
		<category><![CDATA[syslog]]></category>
		<category><![CDATA[Virtual Server]]></category>
		<category><![CDATA[VM]]></category>
		<category><![CDATA[VMWARE]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=180</guid>
		<description><![CDATA[While this post is titled &#8220;Thoughts of Virtualizaiton&#8221;, the applications described can be easily applied to non-VM type installations. Virtualization is a wonderful tool, it enables rapid growth and rapid deployment of new servers and services. However, just like any other platform that tends to grow across the time line, it poses the same annoying]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F12%2F15%2Fthoughts-of-virtualization-part-iii-multiple-asterisk-gateways%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F12%2F15%2Fthoughts-of-virtualization-part-iii-multiple-asterisk-gateways%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>While this post is titled &#8220;Thoughts of Virtualizaiton&#8221;, the applications described can be easily applied to non-VM type installations.</p>
<p>Virtualization is a wonderful tool, it enables rapid growth and rapid deployment of new servers and services. However, just like any other platform that tends to grow across the time line, it poses the same annoying issue of managing a large system, especially when dealing with Asterisk based installations.</p>
<p>Let us imagine the following scenario: A Calling Card company while utilizes 8 different Asterisk application servers, are utilizing a single Database servers cluster and are receiving inbound calls from various sources and load balanced across all Asterisk application servers. What I&#8217;ve described above is more or less the practice most (if not) all calling card operators deploy. No matter if the usage is A2Billing, MOR, ASTBILL &#8211; the methodology is more or less the same.</p>
<p>One of the bigger issues with such an installation is debugging of a running session, more over, the ability to debug a session after it is finished. This situation is caused by a simple, yet annoying issue, we are operating within a &#8220;zero-knowledge&#8221; system, where we have no precognition of where a specific call will be handled utilizing our cluster. Now, if you are an experienced sysadmin, you would most probably do the following:</p>
<ol>
<li>SSH to all your Asterisk servers.</li>
<li>Tile all consoles on your desktop.</li>
<li>Start the test &#8211; and hope your eyes are fast enough to capture the right gateway.</li>
</ol>
<p>Well, this is the normal practice with most people &#8211; but I have to admit it&#8217;s kind of annoying. Now, let&#8217;s imagine that we are now building our system from scratch, we&#8217;re not using A2Billing or any of the other Open Source products, we simply build our own application framework. So, what do we need to do in order to keep track of our system correctly?</p>
<p><strong>Step 1: Consolidate</strong></p>
<p>Consolidate the messages coming from each of your gateways to a single logging facility. The best track would be to utilize some form of Syslog facility. For example, all the scripts and network services that I develop utilize a clear and concise interface to syslog. I usually re-direct the syslog facility that I use to an external server, thus, I get all the logs on a single syslog file system.</p>
<p>If you are worried about I/O issues on the syslog server, you can always create a &#8220;syslog-proxy&#8221; using tools such as memcached or others.</p>
<p><strong>Step 2: Identify</strong></p>
<p>Your syslog write function should always include a prefix indicating the name of the generating Asterisk server. For example, have something like the following prefix your syslog entry:</p>
<h5>Dec 14 21:51:32 pbx [PBX01/6d6d6423a2244aa71980e5a5b437919e/check_pincode[22537]: agiParameters: check_pincode</h5>
<p>While the syslog facility will include your generating hostname, when duplication VM&#8217;s, this would be a really good practice.</p>
<p><strong>Step 3: Analyse</strong></p>
<p>Once your logs are consolidated to a single environment, it should be fairly simple for you to go about and analyse these in a pre-defined routine. There is little to gain from analysing the logs on-the-fly, but analysing it every 5/10/15 minutes will prove worthwhile.</p>
<p><strong>Step 4: Audit</strong></p>
<p>Auditing is good &#8211; as long as you keep a clear view of what you audit and what you don&#8217;t. Audit key points in your application to a database can save you a whole lot of time of debugging &#8211; just make sure your audit is clear.</p>
<p>Keep the above in mind and you should be just fine creating any scale of platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/12/15/thoughts-of-virtualization-part-iii-multiple-asterisk-gateways/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pokemon Asterisk Anyone?</title>
		<link>http://www.simionovich.com/2008/11/03/pokemon-asterisk-anyone/</link>
		<comments>http://www.simionovich.com/2008/11/03/pokemon-asterisk-anyone/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 18:29:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[PIKA]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=142</guid>
		<description><![CDATA[So, over the past 2 years, we&#8217;ve seen many Asterisk appliances &#8211; ranging from the Digium AADK on one side of the spectrum to the RoweTel IP04 appliance, it is clear that appliances are the hottest thing in the Asterisk sector to-date. While most appliances take on a similar form, usually one of the following:]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F11%2F03%2Fpokemon-asterisk-anyone%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F11%2F03%2Fpokemon-asterisk-anyone%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>So, over the past 2 years, we&#8217;ve seen many Asterisk appliances &#8211; ranging from the Digium AADK on one side of the spectrum to the RoweTel IP04 appliance, it is clear that appliances are the hottest thing in the Asterisk sector to-date.</p>
<p>While most appliances take on a similar form, usually one of the following: an ADI BlackFin reference design or a PC-Engines Geode based appliance, one company decided to go completely the other way around &#8211; namely PIKA technologies. Now, don&#8217;t let the name PIKA fool you, these guys are no pokemons, they know their stuff.</p>
<p>While at AstriCon 2008, I&#8217;ve been approached by the people at PIKA technologies, asking me to test and evaluate their WARP Appliance product &#8211; a Linux based appliance framework, for building Linux based appliances, with a focus on telephony. They awarded me with an appliance to test, equipped with 5 FXS ports and 4 FXO ports, I was on my way to start my telephony appliance.</p>
<p><a href="http://www.simionovich.com/wp-content/uploads/2008/11/pika2.jpg"><img class="aligncenter size-full wp-image-143" title="PIKA LCD Display" src="http://www.simionovich.com/wp-content/uploads/2008/11/pika2.jpg" alt="" width="480" height="320" /></a></p>
<p>First thing&#8217;s first, computing power &#8211; while most appliances rely on fairly low scale computing power, the PIKA appliances boasts a massive PowerPC CPU, with a uCkernel based Linux 2.6.X kernel &#8211; while many other appliances still rely on 2.4.X. The on-board LCD display makes finding your appliance IP number a breeze, which is very important in my book. Opening the box is very easy, exposing its inner workings:</p>
<p><a href="http://www.simionovich.com/wp-content/uploads/2008/11/pika1.jpg"><img class="aligncenter size-full wp-image-145" title="Internals" src="http://www.simionovich.com/wp-content/uploads/2008/11/pika1.jpg" alt="" width="480" height="720" /></a></p>
<p>One thing nice about the LCD display is the fact that once you plug something in, the LCD will show the applicable LCD icon as connected &#8211; making for quick diagnostics for the lame sysadmin a breeze.</p>
<p>Now we&#8217;re getting to the slightly annoying part, the WARP appliance is not your average PBX appliance &#8211; in fact, it&#8217;s not a PBX at all &#8211; it&#8217;s a framework for building telephony appliances. So, if you want to get Asterisk + FreePBX to run on it, you&#8217;ll need to spend some time getting it up and running correctly. If you want to start working with the appliance, I suggest that you get to know cross-compiling and build tools, in order to utilize the buildtools provided with the appliance.</p>
<p>Over all, the appliance comes with a fairly stock Linux and Asterisk pre-compiled, with all the required modules to get a fully functional PBX running. For my initial tests, I&#8217;ve used the AsteriskGUI, which worked just fine with the system, making the configuration a breeze.</p>
<p>I&#8217;m currently evaluating their FreePBX build-tool, provided by Philippe from FreePBX, and we&#8217;ll see how that goes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/11/03/pokemon-asterisk-anyone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hijacked by RTFM to la-la land</title>
		<link>http://www.simionovich.com/2008/10/28/talking-out-of-his-ass/</link>
		<comments>http://www.simionovich.com/2008/10/28/talking-out-of-his-ass/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 00:32:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[AdHearsion]]></category>
		<category><![CDATA[DAHDI]]></category>
		<category><![CDATA[digium]]></category>
		<category><![CDATA[freeswitch]]></category>
		<category><![CDATA[IVR]]></category>
		<category><![CDATA[LCR]]></category>
		<category><![CDATA[purist]]></category>
		<category><![CDATA[pursits]]></category>
		<category><![CDATA[Routing]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[sangoma]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=132</guid>
		<description><![CDATA[I keep a vigilant eye on Google Alerts. To be more exact, I&#8217;ve got a few alerts defined, in accordance to subjects that interest me. Two of these subjects are Asterisk and FreeSwitch. Recently, the following had been posted on a personal blog: Chose Freeswitch over Asterisk October 28, 2008 – 12:09 am Posted in Uncategorized]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F10%2F28%2Ftalking-out-of-his-ass%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F10%2F28%2Ftalking-out-of-his-ass%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>I keep a vigilant eye on Google Alerts. To be more exact, I&#8217;ve got a few alerts defined, in accordance to subjects that interest me. Two of these subjects are Asterisk and FreeSwitch. Recently, the following had been posted on a personal blog:</p>
<div class="entry-meta">
<h2 class="entry-title"><a title="Permalink to Chose Freeswitch over Asterisk" rel="bookmark" href="http://onruby.flempo.com/2008/10/28/chose-freeswitch-over-asterisk/">Chose Freeswitch over Asterisk</a></h2>
<ul>
<li class="entry-date"><abbr class="published" title="2008-10-28T00:09:50+0000">October 28, 2008 – 12:09 am</abbr></li>
<li class="entry-category">Posted in <a title="View all posts in Uncategorized" rel="category tag" href="http://onruby.flempo.com/category/uncategorized/">Uncategorized</a></li>
<li class="entry-tags">Tagged <a rel="tag" href="http://wordpress.com/tag/asterisk/">asterisk</a>, <a rel="tag" href="http://wordpress.com/tag/freeswitch/">freeswitch</a>, <a rel="tag" href="http://wordpress.com/tag/telfa/">telfa</a></li>
</ul>
</div>
<p>Our PBX/IVR web-based generator <a title="Telfa - VOIP PBX configurable on the web" href="http://telfa.cz/" target="_blank">Telfa</a> has been moved from <a title="Asterisk" href="http://asterisk.org/" target="_blank">Asterisk</a> to <a title="Freeswitch" href="http://freeswitch.org/" target="_blank">Freeswitch</a>. Why?</p>
<p>Asterisk just seems to come from a different world than what I am used to. Inflexible and problematic. Very long configuration files with ancient syntax. Now I’m far from pretending I’ve used Asterisk enough to understand it pros and cons well, but I have a decent software development experience and I can tell when something “smells.” I didn’t want to build our system (that I want to be flexible and scale well) on some old technology that is only living from its past.</p>
<p>And (most importantly) there are many people experienced with both Asterisk and Freeswitch favoring the latter: <a title="Asterisk vs. Freeswitch" href="http://www.anders.com/cms/266/Asterisk.vs.FreeSWITCH" target="_blank">Anders Brownworth</a>, <a title="Jonathan Palley" href="http://rubyforge.org/pipermail/telegraph-users/2008-July/000136.html" target="_blank">Jonathan Palley</a> (creator of <a title="Telegraph" href="http://code.google.com/p/telegraph/" target="_blank">Telegraph</a>, a Rails plug-in that lets you talk to Freeswitch), or of course the creator of Freeswitch (and former Asterisk developer!) <a title="Anthony Missale" href="http://www.freeswitch.org/node/117" target="_blank">Anthony Minessale</a> himself.</p>
<p>[Extract from: <a href="http://onruby.flempo.com/2008/10/28/chose-freeswitch-over-asterisk/#comment-58" target="_blank">http://onruby.flempo.com/2008/10/28/chose-freeswitch-over-asterisk/#comment-58</a>]</p>
<p>Reading the above simply flames me UP &#8211; WHAT A LOAD OF BULL!</p>
<p>The writer admits that: &#8220;Now I’m far from pretending I’ve used Asterisk enough to understand it pros and cons well, but I have a decent software development experience and I can tell when something “smells.”&#8221; &#8211; If he&#8217;s such a worthy developer, the above simply proves that he&#8217;s simply an RTFM!</p>
<p>Asterisk provides a multitude of methodologies for configuration management, dialplan logic programming, programmatic API structures &#8211; basically, all the tools you need to go about and create your application. While I admit that FreeSwitch is slightly better at the &#8220;Core Switching&#8221; environment, implementing a near true Soft Switching architecture &#8211; Asterisk is a totally different thing.</p>
<p>A while back I decided to develop a couple of my better systems on FreeSwitch, as a test of my abilities. To see if I can be as proficient with FreeSwitch as I am with Asterisk. I re-developed the applications on FreeSwitch from scratch, however, FreeSwitch&#8217;s somewhat annoying XML configuration structures made it a hell for me to develop something that I would ask my customers to put their money on.</p>
<p>I started working with Asterisk in 2002, and starting 2003 I tried to have people in Israel start using Asterisk. I can honestly say that the first ever true adaptation of Asterisk in Israel came about only late 2005, and even that wasn&#8217;t for mission critical applications. Asterisk had achieved a point in which it is now considered a valid replacement for classic IN and NGN applications and engines, such as SigValue. I suspect that FreeSwitch will become a more dominant contender in that part within a period of 18 to 24 months, as its developer community will grow &#8211; time will tell.</p>
<p>In my large installations, I like using Asterisk as my IVR/Application engine envrionment and using FreeSwitch as my routing and LCR environment, simply because it&#8217;s capable of handling slightly more SIP-to-SIP connections than Asterisk &#8211; but that is the only reason, all the rest is Asterisk.</p>
<p>Both projects are wonderful tools, each one with its own set of strengths and weaknesses. Learn how to balance the use of the two, utilize the best of both world &#8211; and stop being a bloody purist, that&#8217;s exactly what leads to poor technologies such as Microsoft and poor life practices, like wars and terror.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/10/28/talking-out-of-his-ass/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A2Billing+Apache vs. A2Billing+Lighttpd</title>
		<link>http://www.simionovich.com/2008/10/14/a2billingapache-vs-a2billinglighttpd/</link>
		<comments>http://www.simionovich.com/2008/10/14/a2billingapache-vs-a2billinglighttpd/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 04:51:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[A2Billing]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Authorization]]></category>
		<category><![CDATA[errord]]></category>
		<category><![CDATA[FreePBX]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[memory]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=108</guid>
		<description><![CDATA[Ok, it goes without saying: &#8220;A2Billing is one of the most complete Calling Card systems in the Asterisk market today.&#8221; &#8211; on the other hand, it is also true that: &#8220;A2Billing is one of the most complex and convoluted pieces of code ever written!&#8221;. The combination of the above makes for a fairly combustible mixture,]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F10%2F14%2Fa2billingapache-vs-a2billinglighttpd%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F10%2F14%2Fa2billingapache-vs-a2billinglighttpd%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Ok, it goes without saying: &#8220;A2Billing is one of the most complete Calling Card systems in the Asterisk market today.&#8221; &#8211; on the other hand, it is also true that: &#8220;A2Billing is one of the most complex and convoluted pieces of code ever written!&#8221;.</p>
<p>The combination of the above makes for a fairly combustible mixture, especially if you have a big system. Now, I recently ran into an issue, where PHP was litterally eating up almost 512MB of ram, in order to run the A2Billing reports. In it self, that didn&#8217;t make much sense to me. However, after inspecting the code, and realizing that A2Billing uses GD in run-time to generate images out of thousands of CDR records, it made perfect sense that it may just be eating up memory.</p>
<p>So, increasing the memory on PHP to go up to 512MB of RAM helps, but creates an interesting probelm. Whenever Apache will invoke a script, it will automatically consume a shitload of RAM, and for each time I intiate a new query, it will spawn a new Apache instance, and consume the same amount of memory. That said, after 6 queries of 512MB, about 50% of the machines RAM was already eaten up &#8211; and Apache will not free it!</p>
<p>At this point, I had 2 choices:</p>
<ol>
<li>Go into the A2Billing code, change the GD code to work right or simply change it completely to something else (maybe flash).</li>
<li>Work around the problem with a mix of proper IT practices.</li>
</ol>
<p>I admit that I hate quite a lot of things (I won&#8217;t list these here); however; nothing ranks up the list as modifying someone elses code, when I know for fact that it will be unmaintainable in the future. So, I choose option number 2.</p>
<p>I&#8217;ve being playing alot with Lighttpd lately, and got some really nice performance from it. So, I said to myself, this would be a great test to see if Lighttpd+FastCGI can solve the problem here. I had to work my way around lighttpd to do what I wanted and verify that my FastCGI server in Lighttpd doesn&#8217;t consume all memory, however, here is what I got working with A2Billing, and really nice.</p>
<p>Step 1: Enable the required modules:</p>
<pre>server.modules              = (</pre>
<pre>                               "mod_access",</pre>
<pre>                               "mod_auth",</pre>
<pre>                               "mod_status",</pre>
<pre>                               "mod_fastcgi",</pre>
<pre>                               "mod_accesslog" )</pre>
<p>Step 2: Enable the FastCGI Server</p>
<pre>fastcgi.server             = ( ".php" =&gt;</pre>
<pre>                               ( "localhost" =&gt;</pre>
<pre>                                 (</pre>
<pre>                                   "socket" =&gt; "/var/run/lighttpd/php-fastcgi.socket",</pre>
<pre>                                   "bin-path" =&gt; "/usr/bin/php-cgi",</pre>
<pre>                                   "idle-timeout" =&gt; 30,</pre>
<pre>                                   "max-procs" =&gt; 1,</pre>
<pre>                                   "min-procs" =&gt; 1</pre>
<pre>                                 )</pre>
<pre>                               )</pre>
<pre>                            )</pre>
<p>Step 3: Modify user permissions (required if you are using FreePBX)</p>
<pre>server.username            = "asterisk"</pre>
<pre>server.groupname           = "asterisk"</pre>
<p>Step 4: Setup authentication and authorization (optional)</p>
<pre>#### auth module</pre>
<pre>## read authentication.txt for more info</pre>
<pre>auth.backend               = "htpasswd"</pre>
<pre>auth.backend.htpasswd.userfile = "/var/www/.htpasswd"</pre>
<pre>auth.require               = ( "/" =&gt;</pre>
<pre>                               (</pre>
<pre>                                 "method"  =&gt; "basic",</pre>
<pre>                                 "realm"   =&gt; "A2Billing Management",</pre>
<pre>                                 "require" =&gt; "valid-user"</pre>
<pre>                               )</pre>
<pre>                             )</pre>
<p>The above configuration made the interface spwan a single FastCGI, insuring that memory usage is never over utilized. I still need 512MB of RAM to run the scripts, but at least now it&#8217;s limited to only 512MB of RAM, out of a machine that has 16GB of RAM.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/10/14/a2billingapache-vs-a2billinglighttpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TrixBox shows its support (or lack of it)</title>
		<link>http://www.simionovich.com/2008/09/22/trixbox-shows-its-support-or-lack-of-it/</link>
		<comments>http://www.simionovich.com/2008/09/22/trixbox-shows-its-support-or-lack-of-it/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 12:02:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[digium]]></category>
		<category><![CDATA[FreePBX]]></category>
		<category><![CDATA[Kerry Garison]]></category>
		<category><![CDATA[Sangome]]></category>
		<category><![CDATA[TrixBox]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=65</guid>
		<description><![CDATA[Well, it&#8217;s quite common to get a flame here and there on any Internet technical maling list, but the following really caught my eye. Here&#8217;s an extract from the TrixBox forum: &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- CUT HERE &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- Subject: SS7 on Sangoma a101D shoieb_arshad Submitted by shoieb_arshad on Sat, 09/20/2008 &#8211; 12:16am. hello i have a two running]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F09%2F22%2Ftrixbox-shows-its-support-or-lack-of-it%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F09%2F22%2Ftrixbox-shows-its-support-or-lack-of-it%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Well, it&#8217;s quite common to get a flame here and there on any Internet technical maling list, but the following really caught my eye. Here&#8217;s an extract from the TrixBox forum:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- CUT HERE &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Subject: SS7 on Sangoma a101D</p>
<div class="comment forum-comment comment-even">
<div class="comment-left">
<div class="author-name">shoieb_arshad</div>
</div>
<div class="comment-right">
<div class="links">Submitted by shoieb_arshad on Sat, 09/20/2008 &#8211; 12:16am.</div>
<div class="content">
<p>hello<br />
i have a two running trixbox server with sangoma a101D cards in them. i want to connect these two servers with each other over a SS7 link. i have installed wanpipe utilities and using T1 cross over cable. both card are showing green light and also there is no alarm in the system. now i am trying to install some ss7 library in the system. i have tried both chan_ss7 and libss7. chan_ss7 didnt work in any way.<br />
so i am trying to use libss7.<br />
with new asterisk 1.6 and libss7, digium says it will supports mtp2 signalling. just need to add command<br />
signalling=mtp2. but they also said that only digium card will support this feature. can i use direct mtp2 signalling on sangoma cards or is there is any other way around???????</p></div>
</div>
</div>
<div class="comment forum-comment comment-odd">
<div class="comment-left">
<div class="author-name">SkykingOH</div>
<p> </p>
<div class="comment-right">
<div class="title">Why are you trying to do</div>
<div class="links">Sat, 09/20/2008 &#8211; 9:47am</div>
<div class="content">
<table class="case_changes" border="0">
<tbody></tbody>
</table>
<p>Why are you trying to do this? Is your goal to terminate SS-7 trunks to an Asterisk box at some point?</p>
<p>Your exercise sounds academic, ISDN User Part is essentially SS-7 and besides who trunks Asterisk with PRI&#8217;s</p>
<p>The last guy that asked these questions was working on a University project, if this is what you are doing then do your own homework. If not please explain your application so I can make a few suggestions.</p>
<div class="author-signature">&#8211;<br />
Scott</div>
<p>aka &#8220;Skyking&#8221;</p></div>
</div>
<div class="content">
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- CUT HERE &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Ok, putting aside the discussion of Digium vs. Sangoma (It&#8217;s a well known fact I&#8217;m a Digium fan), I think I hadn&#8217;t seen any remark on any Asterisk forum which was rude as this one. The fact that TrixBox is not something you would naturally use for SS7, the fact that it&#8217;s Asterisk based simply makes it possible. Why does the responder care &#8220;Why the user wants SS7?&#8221; &#8211; it doesn&#8217;t matter one bit, he wants to do it, he has his reasons &#8211; just give the guy an answer and help him out.</p>
<p>Our responder says: &#8220;&#8230; and besides who trunks Asterisk with PRI&#8217;s &#8230;&#8221; &#8211; well, I can number multiple situations when Asterisk was required to be trunked with PRI circuits. For one, security measures sometime insist that you interconnect Asterisk with PRI circuits and not over IP. For example, one of my customers, a company in the defense industry required a secured VoIP connection to a provider, without exposing it&#8217;s internal network on the physical layer &#8211; the only way to do it was to interconnect Asterisk via a PRI circuit.</p>
<p>&#8220;&#8230; if this is what you are doing then do your own homework &#8230;&#8221; &#8211; That&#8217;s even worse than saying RTFM. In the Asterisk world, and especially in the SS7 world, nothing is straight forward and usually, things are slightly more complex than anticipated. Saying something like: &#8220;Do your homework&#8221; is like saying, &#8220;I know how to help you, it&#8217;s complex, but I won&#8217;t tell you&#8221;.</p>
<p>The good old saying says: &#8220;If you don&#8217;t have anything nice to say, don&#8217;t say anything&#8221; &#8211; it applies well to mailing lists and forums.</p>
<p>I admit, I had been known to throw a flame or two here and there &#8211; however, it is always related to a specific issue, and is usually related to non-technical issues being published on a technical list.</p></div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/09/22/trixbox-shows-its-support-or-lack-of-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dialers &#8211; Myth or Truth?</title>
		<link>http://www.simionovich.com/2008/09/15/dialers-myth-or-truth/</link>
		<comments>http://www.simionovich.com/2008/09/15/dialers-myth-or-truth/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 09:40:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[demographic]]></category>
		<category><![CDATA[dialer]]></category>
		<category><![CDATA[predictive]]></category>
		<category><![CDATA[PSTN]]></category>
		<category><![CDATA[vicidial]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=59</guid>
		<description><![CDATA[Over the past 12 months, I&#8217;ve been heavily involved in the development of high-speed dialers. While many companies published a prolific number of automatic dialers (power, predictive, broadcast) &#8211; none of these companies ever announced there top speed dialing capability. An so I ask myself: &#8220;What is the reason not to release these numbers publicly?&#8221;]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F09%2F15%2Fdialers-myth-or-truth%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F09%2F15%2Fdialers-myth-or-truth%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Over the past 12 months, I&#8217;ve been heavily involved in the development of high-speed dialers. While many companies published a prolific number of automatic dialers (power, predictive, broadcast) &#8211; none of these companies ever announced there top speed dialing capability.</p>
<p>An so I ask myself: &#8220;What is the reason not to release these numbers publicly?&#8221; &#8211; interesting, isn&#8217;t it. So, I decided to experiment myself and see if I would release public numbers for my dialer. I&#8217;ve designed my dialer to be capable of generating upto 35 calls concurrently. My questions was this: &#8220;While the dialer is fully capable these numbers in a test scenario, will this number be reached in real life?&#8221;</p>
<p>So, I started experimenting with my code &#8211; doing a very simple test. I&#8217;ve installed my dialer on a Dual Quad Core system, 8GB RAM, and a RAID-1 array as the storage. Now, I&#8217;ve setup the system to generate up to 35 calls every second, allowing the server to sustain a total of 180 concurrent calls &#8211; 360 channels.</p>
<p>What happend was actually this: the dialer generated about 180 dials within a period of about 8 seconds, and then, simply waited till some of the calls completed in order to generate additional calls. Ok, that is understandable, however, what is the throughput of the dialer? So, I decided to do another test, I filled up my queue with a total of 50,000 records. In addition, I&#8217;ve arranged with my carrier to terminate the calls to on of their SigValue systems, to sustain the enormous number of inbounds. In addition, I asked them to perform a small measurement of the average call inits per second. I was shocked with the result!</p>
<p>While the dialer simply peaked upon startup, after 20 seconds of operations it started normalizing at around 6 call initiations per second. But how can that be? how can it be that a dialer capable of dialing 35 calls is slowed down to crawl? &#8211; the reason is simple, the latency imposed by the PSTN/VoIP network, the time it takes for the calls to terminate and the actual time the call is left on the air, while the dial happens. All these factors together had given me the notion that there is no practical top speed, as it is in direct relation to the demographics of the dialer operations.</p>
<p>Having said that, is it possible to devise a formula to calcualte this number on a per demographic basis? maybe on a per PSTN/VoIP carrier type? maybe a combination of the both? will a formula such as that will enable for the better creation of broadcast/predictive dialer? &#8211; no use dialing tons of number into a demographic that can&#8217;t handle it, while at the other side of the spectrum, what demographics will benifit from the utilization of an automated dialer?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/09/15/dialers-myth-or-truth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache vs. Lighttpd (AKA: Lighty)</title>
		<link>http://www.simionovich.com/2008/08/27/apache-vs-lighttpd-aka-lighty/</link>
		<comments>http://www.simionovich.com/2008/08/27/apache-vs-lighttpd-aka-lighty/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 11:21:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGI]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technnology]]></category>
		<category><![CDATA[Ajaz]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[dialer]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.simionovich.com/?p=55</guid>
		<description><![CDATA[For a while now I&#8217;ve been toying around with the idea of utilizing Lighttpd for various web based applications. One of these application is my Automatic Dialer framework, also known as the GTD-API. The main issue with the GTD-API (besides that it is highly reliant on a MySQL database), is the fact that all requests]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F08%2F27%2Fapache-vs-lighttpd-aka-lighty%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.simionovich.com%2F2008%2F08%2F27%2Fapache-vs-lighttpd-aka-lighty%2F&amp;source=nirsimionovich&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>For a while now I&#8217;ve been toying around with the idea of utilizing Lighttpd for various web based applications. One of these application is my Automatic Dialer framework, also known as the GTD-API. The main issue with the GTD-API (besides that it is highly reliant on a MySQL database), is the fact that all requests have to be processed via XML-RPC HTTP post requests.</p>
<p>The main issue that I had was this: in a production scenario, a dialer management system will generate over 100 requests to the XML-RPC server. While Apache is fully capable of rendering services at such a speed, its increasing size and boilerplate automatically introduce a management issue. In addition, as I was trying to build a dialer appliance that can be used in any enterprise, the ever expanding Apache wasn&#8217;t a good choice.</p>
<p>While I was looking at both NginX and Lighttpd, the latter captured my eye, thanks to a simple advantage &#8211; The integration of FastCGI based PHP was so easy, that it almost troubling that I used Apache all these years.</p>
<p>At this point, once I got Lighhtpd working with my Dialer, I said to myself: &#8220;It would be really cool to go about and send status reports back from the dialer, directly to the web client activating the call. In addition, I really don&#8217;t want to go about and perform these updates to the database, then query the database &#8211; that would, literally, kill the MySQL server.</p>
<p>So, I implemented a local session storage area for each call, which updated the call status as it traverses. The information was stored on the hard drive, which allowed a better response time than the ever indexing MySQL server. The status reports were picked up from the Lighttpd server via an Ajax client (which I didn&#8217;t write &#8211; I suck at JS) &#8211; and it works quite well.</p>
<p>I wonder, can Lighttpd completely replace Apache? &#8230; time will tell&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simionovich.com/2008/08/27/apache-vs-lighttpd-aka-lighty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

