<div dir="ltr">Restrictive licenses ... Ain&#39;t nobody got time fo dat!</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Feb 17, 2013 at 10:32 AM, Ken Rice <span dir="ltr">&lt;<a href="mailto:krice@freeswitch.org" target="_blank">krice@freeswitch.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>
<font face="Monaco, Courier New"><span style="font-size:11pt">The Spread License is pretty much a deal killer imo... Unless they are willing to eliminate that Clause for use with FreeSWITCH... That’s as bad as the AGPL...<div class="im">
<br>
<br>
<br>
On 2/17/13 9:50 AM, &quot;Eliot Gable&quot; &lt;<a href="http://egable+freeswitch@gmail.com" target="_blank">egable+freeswitch@gmail.com</a>&gt; wrote:<br>
<br>
</div></span></font><blockquote><div class="im"><font face="Monaco, Courier New"><span style="font-size:11pt">ZMQ also does not work with a fork, which is needed in order to execute any system commands (like iptables or anything else which has no programming API). That pretty much eliminates ZMQ as a possibility. <br>

<br>
I did some research this weekend, and of all the possibilities I could find, the one that caught my attention the most was Spread: <a href="http://www.spread.org/" target="_blank">http://www.spread.org/</a><br>
<br>
There are some drawbacks to it, namely:<br>
<br>
1) It requires any marketing material mentioning FreeSWITCH or any project / solution utilizing FreeSWITCH to also include a prepared statement about the use of the Spread toolkit. This is a fairly major licensing issue, as all commercial solutions utilizing FreeSWITCH as a core component would then also need to mention the use of the Spread toolkit within FreeSWITCH. It is essentially a &quot;viral clause,&quot; which would be very tedious for people to make sure they honor correctly.<br>

<br>
2) The toolkit uses a stand-alone daemon which would then need to be monitored separately from FreeSWITCH and would be another point of failure, adding complexity to the system. Basically, if that daemon were to crash, FreeSWITCH would need to know about it and would need to either respawn it or shut down. This would bring the need for Pacemaker or something similar back into the picture for any viable HA solution. Alternatively, we could write some code similar to daemontools into FreeSWTICH which respawns the daemon if it dies, but we would have to test the impact of this respawning on the overall cluster to determine if it impacts visibility of the node at any point in time. Another alternative would be to wrap the daemon into a thread inside FreeSWITCH such that if the daemon caused a segfault or something, it would force FreeSWITCH to terminate, as well. I have not done a code review of the daemon yet to determine if this is viable alternative, but assuming they have not coded it on LSD or something, it is more than likely possible. <br>

<br>
3) They boast about how it can handle up to 8,000 1KB messages per second. I don&#39;t consider that boast-worthy. When I worked at Broadvox a few years ago, I had a FS pair which ran around 380 calls per second (760 sessions per second). Each call generates dozens of events. That hardware was getting dated when I left Broadvox, and today&#39;s hardware along with the performance improvements done to FS since then means we could conceivably have a single node which runs over 1k calls per second firing dozens of events per call. That means a single box could completely consume the message bandwidth of the entire Spread network. Imagine trying to have 64 such boxes running. We are really in need of a solution which boasts hundreds of thousands of messages per second. Spread seems like it might be off by an order of magnitude and then some.<br>

<br>
Despite these issues, Spread still seems to come closer to our needs than any other solution I found. FYI, I also looked at the Corosync IPC system, and was not at all impressed. On paper, Spread exceeds Corosync&#39;s capabilities by a fair margin.<br>

<br>
There are some strategies for mitigating issue #3 with Spread, as well. For example, we could limit messages across the Spread network to things like heartbeats and / or other HA and synchronization related messages. Basically, think of it like a D-channel on a PRI. For sending high packet per second streams of messages, we could do standard unicast connections or even try straight up mutlicasting to all nodes on the LAN. Sending heartbeats every 10ms across the Spread network would put a 64-node cluster at 6,400 messages per second just with heartbeats. That would still leave a decent amount of message bandwidth available for other types of negotiation messages and should still allow for sub-second fail-over detection and reaction. Of course, this is all assuming we can actually get 8,000 1KB messages per second out of a 64-node cluster. <br>

<br>
There are likely lots of things that impact how many messages per second Spread can handle. A lot of it has to do with network latency and CPU power. Spread uses acknowledgements and message reordering to ensure delivery in a way that accounts for things like node membership changes during the time the message is in transit and whether the message has been received by all nodes in the cluster. Network latency is probably one of the biggest factors in how many messages per second it can handle. On a faster network link, the messages per second would be higher and on a slower network, it would be lower. Obviously, CPU processing time and scheduling is important, as well. If one system is extremely overloaded and the Spread daemon is being starved for CPU resources, that will add extra latency in processing and also reduce message throughput. Obviously, this could also impact whether the node is seen as visible. So, this is one more argument for why we would need to try to run the daemon as a thread under FreeSWITCH. Then it has the same scheduling priority as FreeSWITCH and cannot be starved for resources by FreeSWITCH itself. It also would exhibit the same amount of resource starvation FreeSWITCH experiences on the node, so would more accurately reflect the state of FreeSWITCH on the node. <br>

<br>
If anyone has any other suggestions than Spread, I would like to hear it. Also, some feedback on item #1 would be great, as I cannot really judge for everyone else how willing they are to accept such a licensing clause.<br>

<br>
<br>
<br>
On Tue, Feb 12, 2013 at 8:48 PM, Joćo Mesquita &lt;<a href="http://jmesquita@freeswitch.org" target="_blank">jmesquita@freeswitch.org</a>&gt; wrote:<br>
</span></font></div><blockquote><div class="im"><font face="Monaco, Courier New"><span style="font-size:11pt">I have used ZeroMQ in the past for this sorts of things but it really won&#39;t be able to detect failures really fast. It is not made for this. Maybe we can gather the requirements for such message bus? Zmq for example provides you with this cool interface to build messaging protocols on top of it but it does not provide reliability when it comes to endpoint to endpoint connection without a heartbeat implemented on the user end. Can this be used for FS as well? Anyhow, just throwing some ideas...<br>

<br>
Joćo Mesquita<br>
FreeSWITCH™ Solutions<br>
<br>
<br>
On Tue, Feb 12, 2013 at 5:42 PM, Dave R. Kompel &lt;<a href="http://drk@drkngs.net" target="_blank">drk@drkngs.net</a>&gt; wrote:<br>
</span></font></div><blockquote><div class="im"><font face="Monaco, Courier New"><span style="font-size:11pt">I&#39;ve done a few experments with using both Redis, and the evil &quot;Microsoft Azure Service bus&quot; (the server on prem based version) to extend the eventing system to have global PUB/SUB. This way things like registrations, and Limit stuff could be made global. <br>

 <br>
I&#39;m looking for a way, in my carrier switch implmentation, to implment both HA Failover and Scaleout clustering.<br>
 <br>
--Dave<br>
<br>
</span></font></div><blockquote><font face="Monaco, Courier New"><span style="font-size:11pt"><hr align="CENTER" size="3" width="100%"><b>From:</b> Eliot Gable [<a href="mailto:egable+freeswitch@gmail.com" target="_blank">mailto:egable+freeswitch@gmail.com</a> &lt;<a href="mailto:egable%2Bfreeswitch@gmail.com" target="_blank">mailto:egable%2Bfreeswitch@gmail.com</a>&gt; ]<div class="im">
<br>
<b>To:</b> FreeSWITCH Users Help [<a href="mailto:freeswitch-users@lists.freeswitch.org" target="_blank">mailto:freeswitch-users@lists.freeswitch.org</a>]<br>
<b>Sent:</b> Tue, 12 Feb 2013 05:49:13 -0800<br>
<b>Subject:</b> [Freeswitch-users] FreeSWITCH Message Bus / Shared Key Value Store<br>
<br>
<br>
Tony and Mike and I had a discussion last night about FreeSWITCH with regards to implementing some form of core message bus or shared key-value store. We discussed a few different options, but did not really settle on anything. If you are writing modules or using FreeSWITCH in a multi-node setting, please share what features / functionality you would like to see implemented in this regard, how you would use it, and why you want to see the specific mechanism of your choice rather than some alternative. Also, please consider and mention whether &quot;cluster awareness&quot; is something that factors into your use case. By this, I mean having each FS node have some idea about the state / status of each other node in terms of taking calls vs acting as a standby or slave node, etc. <br>

</div></span></font></blockquote></blockquote></blockquote></blockquote><span class="HOEnZb"><font color="#888888"><font face="Monaco, Courier New"><span style="font-size:11pt"><br>
-- <br>
Ken<br>
<font color="#0000FF"><u><a href="http://www.FreeSWITCH.org" target="_blank">http://www.FreeSWITCH.org</a><br>
<a href="http://www.ClueCon.com" target="_blank">http://www.ClueCon.com</a><br>
<a href="http://www.OSTAG.org" target="_blank">http://www.OSTAG.org</a><br>
</u></font><a href="http://irc.freenode.net" target="_blank">irc.freenode.net</a> #freeswitch<br>
</span></font>
</font></span></div>


<br>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
FreeSWITCH-powered IP PBX: The CudaTel Communication Server<br>
<a href="http://www.cudatel.com" target="_blank">http://www.cudatel.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://wiki.freeswitch.org" target="_blank">http://wiki.freeswitch.org</a><br>
<a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Anthony Minessale II<br><br>FreeSWITCH <a href="http://www.freeswitch.org/">http://www.freeswitch.org/</a><br>ClueCon <a href="http://www.cluecon.com/">http://www.cluecon.com/</a><br>
Twitter: <a href="http://twitter.com/FreeSWITCH_wire">http://twitter.com/FreeSWITCH_wire</a><br><br>AIM: anthm<br><a href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</a><br>GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</a><br>
IRC: <a href="http://irc.freenode.net">irc.freenode.net</a> #freeswitch<br><br>FreeSWITCH Developer Conference<br><a href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</a><br><a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</a><br>
pstn:+19193869900
</div>