<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Factors Affecting Village Telco Performance</title>
	<atom:link href="http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/</link>
	<description>an easy-to-use, scalable, standards-based, wireless, local, do-it-yourself, telephone company toolkit</description>
	<lastBuildDate>Thu, 09 Feb 2012 14:06:04 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
	<item>
		<title>By: Rick van Rein</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-2102</link>
		<dc:creator>Rick van Rein</dc:creator>
		<pubDate>Tue, 29 Nov 2011 13:42:48 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-2102</guid>
		<description>Hi David,

I&#039;ve been thinking a lot about header overhead over the past few weeks, to figure out how to downtune the overhead (also for mobile VoIP).  I worked on a method that could compress the combined IPv6/UDP/RTP headers to about 1 byte, which is possible because they are highly predictable.  But, as so often, such generally useful work has already been itching with someone else:

http://www.rohc.net/

I didn&#039;t know about the RoHC line of RFC&#039;s before, but there is at least one implementation in open source that you might want to port to OpenWRT for your purposes ;-) although I think it might need expansion with RTP-mode compression.

It looks like a normal IPv6/UDP/RTP header combo would reduce to about 1 byte, exactly as what I found to be possible.  Codec2 and RoHC could combine to IP-level telephony traffic at 5+1 bytes once per 40 ms... or 1200 b/s...!

As for the Ethernet level, it&#039;s good to know that there is an ethernet payload type for RoHC, namely 0x22F1.  So you don&#039;t need to worry about compatibility issues with uncompressed traffic, and you won&#039;t even need the two bytes for LLC1.

I thought that was worth bothering you once more for ;-)


Cheers,
-Rick</description>
		<content:encoded><![CDATA[<p>Hi David,</p>
<p>I&#8217;ve been thinking a lot about header overhead over the past few weeks, to figure out how to downtune the overhead (also for mobile VoIP).  I worked on a method that could compress the combined IPv6/UDP/RTP headers to about 1 byte, which is possible because they are highly predictable.  But, as so often, such generally useful work has already been itching with someone else:</p>
<p><a href="http://www.rohc.net/" rel="nofollow" onclick="urchinTracker('/outgoing/www.rohc.net/?referer=');">http://www.rohc.net/</a></p>
<p>I didn&#8217;t know about the RoHC line of RFC&#8217;s before, but there is at least one implementation in open source that you might want to port to OpenWRT for your purposes <img src='http://villagetelco.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  although I think it might need expansion with RTP-mode compression.</p>
<p>It looks like a normal IPv6/UDP/RTP header combo would reduce to about 1 byte, exactly as what I found to be possible.  Codec2 and RoHC could combine to IP-level telephony traffic at 5+1 bytes once per 40 ms&#8230; or 1200 b/s&#8230;!</p>
<p>As for the Ethernet level, it&#8217;s good to know that there is an ethernet payload type for RoHC, namely 0x22F1.  So you don&#8217;t need to worry about compatibility issues with uncompressed traffic, and you won&#8217;t even need the two bytes for LLC1.</p>
<p>I thought that was worth bothering you once more for <img src='http://villagetelco.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Cheers,<br />
-Rick</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Rowe</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-1530</link>
		<dc:creator>David Rowe</dc:creator>
		<pubDate>Sun, 20 Nov 2011 20:11:51 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-1530</guid>
		<description>Some great ideas Rick, I will link to them from the Codec 2 post.  Cheers, David</description>
		<content:encoded><![CDATA[<p>Some great ideas Rick, I will link to them from the Codec 2 post.  Cheers, David</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rick van Rein</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-1483</link>
		<dc:creator>Rick van Rein</dc:creator>
		<pubDate>Sun, 20 Nov 2011 06:53:48 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-1483</guid>
		<description>Headless Idea #2: Step down from UDP to LLC1

As we pile protocol on protocol, we often forget what can be done at the lower layers.  The mirror image of UDP on IP is LLC1 on Ethernet.  For a mesh, you probably don&#039;t need full-blown IP anyway -- and as a radio amateur you&#039;ll like it -- LLC1 and LLC2 are look a lot like AX.25.

If I was to save on RTP bandwidth, I would start off by using IPv6, not IPv4.  That is a good idea for SIP/RTP anyway, and perhaps it is time to stop the stampede of NAT.  All rarely transmitted stuff, so SIP and RTCP, would just be shipped as IPv6 traffic, but RTP would be siphoned through another procedure.

If the entire country uses a fixed /64 prefix to cover its telephone net, than that prefix would not add any information.  And the lower 64 bits can simply be an EUI-64 address, so basically a MAC address.  This means that such IPv6 addresses can be reduced to a MAC address.  Now on to the UDP port used for RTP.  Assuming that a small range of (even) UDP ports is assigned to RTP and statically mapped to the SAP values of an LLC1 link, it would be possible to remove the UDP port as well.  It is now up to you to decide if the RTP header adds valuable information, or if one or more RTP packets could be packaged with a payload type annex 8-bit VPI.

Another bit of information that seems to be forgotten, is that early ethernets could use 2-byte addresses instead of the common 6-byte, globally unique addresses.  In a mesh architecture, it should be quite possible to use this abbreviated form, provided of course that modern WiFi hardware still supports it.

Finally, do we need 802.1p/q headers?  I don&#039;t think so -- the transmission over the air is not going to be sped up and your mesh probably has no switches; and upon arrival, the special transmission format makes these packets easily recognisable and subjectable to internal prioritisation / traffic shaping.

So, what do we have now?
 - 2 or 6 bytes ethernet destination
 - 2 or 6 bytes ethernet source
 - 2 bytes length &lt; 1500
 - 2 bytes for LLC1
 - n RTP dressed-down packets, each
     - 1 byte payload type
     - 7 bytes of compressed voice
If n=5 and 2-byte ethernet still works, we&#039;d have 13 bytes of &quot;overhead&quot; and 35 bytes of data, the valuable content being 73% of the total.  More than enough room to challenge yourself to an even more radical Codec 2...

I&#039;ll leave it to you to decide if this is inspired or insane ;-)</description>
		<content:encoded><![CDATA[<p>Headless Idea #2: Step down from UDP to LLC1</p>
<p>As we pile protocol on protocol, we often forget what can be done at the lower layers.  The mirror image of UDP on IP is LLC1 on Ethernet.  For a mesh, you probably don&#8217;t need full-blown IP anyway &#8212; and as a radio amateur you&#8217;ll like it &#8212; LLC1 and LLC2 are look a lot like AX.25.</p>
<p>If I was to save on RTP bandwidth, I would start off by using IPv6, not IPv4.  That is a good idea for SIP/RTP anyway, and perhaps it is time to stop the stampede of NAT.  All rarely transmitted stuff, so SIP and RTCP, would just be shipped as IPv6 traffic, but RTP would be siphoned through another procedure.</p>
<p>If the entire country uses a fixed /64 prefix to cover its telephone net, than that prefix would not add any information.  And the lower 64 bits can simply be an EUI-64 address, so basically a MAC address.  This means that such IPv6 addresses can be reduced to a MAC address.  Now on to the UDP port used for RTP.  Assuming that a small range of (even) UDP ports is assigned to RTP and statically mapped to the SAP values of an LLC1 link, it would be possible to remove the UDP port as well.  It is now up to you to decide if the RTP header adds valuable information, or if one or more RTP packets could be packaged with a payload type annex 8-bit VPI.</p>
<p>Another bit of information that seems to be forgotten, is that early ethernets could use 2-byte addresses instead of the common 6-byte, globally unique addresses.  In a mesh architecture, it should be quite possible to use this abbreviated form, provided of course that modern WiFi hardware still supports it.</p>
<p>Finally, do we need 802.1p/q headers?  I don&#8217;t think so &#8212; the transmission over the air is not going to be sped up and your mesh probably has no switches; and upon arrival, the special transmission format makes these packets easily recognisable and subjectable to internal prioritisation / traffic shaping.</p>
<p>So, what do we have now?<br />
 &#8211; 2 or 6 bytes ethernet destination<br />
 &#8211; 2 or 6 bytes ethernet source<br />
 &#8211; 2 bytes length &lt; 1500<br />
 &#8211; 2 bytes for LLC1<br />
 &#8211; n RTP dressed-down packets, each<br />
     &#8211; 1 byte payload type<br />
     &#8211; 7 bytes of compressed voice<br />
If n=5 and 2-byte ethernet still works, we&#039;d have 13 bytes of &quot;overhead&quot; and 35 bytes of data, the valuable content being 73% of the total.  More than enough room to challenge yourself to an even more radical Codec 2&#8230;</p>
<p>I&#039;ll leave it to you to decide if this is inspired or insane <img src='http://villagetelco.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rick van Rein</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-1480</link>
		<dc:creator>Rick van Rein</dc:creator>
		<pubDate>Sun, 20 Nov 2011 06:30:40 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-1480</guid>
		<description>Headless Idea #1: Combine RTP packets

The overhead of sending RTP packets individually is surprising, and I&#039;ve been thinking about this problem in the past.  In a trunkish setup, with a number of RTP streams flowing between the same endpoints, it would be possible to combine a number of RTP packets into one, thus spreading the header overhead over a number of RTP streams.

This would work best if some concentration of traffic takes place; for instance in a PBX per village.  Or, since broadcasting is free in a WiFi setting, multiple recipients within reach could be addressed in the same message.

RFC 2198 defines a binary format for piling up various RTP pieces, at a tagging overhead of 4 bytes.  And voila, Codec2 is once again a bandwidth-slurping beast ;-)  I&#039;m pretty sure you&#039;ll be able to sacrafice several of these bytes by specialising this approach for your codec, and thereby find the motivation to make Codec 2 even more impressive than it already is.

You would end up with nodes collecting a few RTP packets from different sources, taking them apart, splitting them each to their destination, and shipping those out once in a while.  This would lead to extra delays, but that may be compensated: it is possible to send smaller packets at more regular intervals since there is less waste -- 40 ms could become 10 ms, with 10-20 ms delay at intermediate nodes.

The real disadvantage would be that you would need to do something similar to VPI setup in ATM; when the RTP payload type is used so much, it is probably necessary to change it on each RTP-packing-unpacking hop; a lookup table depending on the sender with the sent payload type could serve to lookup the outgoing hop and payload type.

I&#039;ll leave it to you to decide if this is inspired or insane ;-)</description>
		<content:encoded><![CDATA[<p>Headless Idea #1: Combine RTP packets</p>
<p>The overhead of sending RTP packets individually is surprising, and I&#8217;ve been thinking about this problem in the past.  In a trunkish setup, with a number of RTP streams flowing between the same endpoints, it would be possible to combine a number of RTP packets into one, thus spreading the header overhead over a number of RTP streams.</p>
<p>This would work best if some concentration of traffic takes place; for instance in a PBX per village.  Or, since broadcasting is free in a WiFi setting, multiple recipients within reach could be addressed in the same message.</p>
<p>RFC 2198 defines a binary format for piling up various RTP pieces, at a tagging overhead of 4 bytes.  And voila, Codec2 is once again a bandwidth-slurping beast <img src='http://villagetelco.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />   I&#8217;m pretty sure you&#8217;ll be able to sacrafice several of these bytes by specialising this approach for your codec, and thereby find the motivation to make Codec 2 even more impressive than it already is.</p>
<p>You would end up with nodes collecting a few RTP packets from different sources, taking them apart, splitting them each to their destination, and shipping those out once in a while.  This would lead to extra delays, but that may be compensated: it is possible to send smaller packets at more regular intervals since there is less waste &#8212; 40 ms could become 10 ms, with 10-20 ms delay at intermediate nodes.</p>
<p>The real disadvantage would be that you would need to do something similar to VPI setup in ATM; when the RTP payload type is used so much, it is probably necessary to change it on each RTP-packing-unpacking hop; a lookup table depending on the sender with the sent payload type could serve to lookup the outgoing hop and payload type.</p>
<p>I&#8217;ll leave it to you to decide if this is inspired or insane <img src='http://villagetelco.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Codec 2 at 1400 bits/s &#171; Rowetel</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-1095</link>
		<dc:creator>Codec 2 at 1400 bits/s &#171; Rowetel</dc:creator>
		<pubDate>Tue, 15 Nov 2011 00:37:21 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-1095</guid>
		<description>[...] 1400 bit/s Codec 2 uses 56 bit (7 byte) packets, sent every 40ms. If used for VOIP the RTP+UDP+IP overhead is 40 bytes/packet. So the payload is just 15 % of the total VOIP [...]</description>
		<content:encoded><![CDATA[<p>[...] 1400 bit/s Codec 2 uses 56 bit (7 byte) packets, sent every 40ms. If used for VOIP the RTP+UDP+IP overhead is 40 bytes/packet. So the payload is just 15 % of the total VOIP [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-132</link>
		<dc:creator>Aaron</dc:creator>
		<pubDate>Fri, 18 Dec 2009 09:41:53 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-132</guid>
		<description>I&#039;ve been following villagetelco for some time. I find it very interesting. After reading this article I would like to point out a possible solution for the cpu usage. I set out to create a stronger, faster, and more realiable router at a low cost for the users at Open-Mesh. Some of the technology you guys use seems very similar to what I&#039;m used to. 

Check out http://www.anaptyxmesh.com You&#039;ll find indoor and outdoor models that will easily run your OpenWRT variant. Add to the fact it&#039;s designed for dual radio usage, where one card serves the mesh and the other serves the client. I suspect you would of course alter this layout, but maybe it would help you with hardware for the more demanding situation.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been following villagetelco for some time. I find it very interesting. After reading this article I would like to point out a possible solution for the cpu usage. I set out to create a stronger, faster, and more realiable router at a low cost for the users at Open-Mesh. Some of the technology you guys use seems very similar to what I&#8217;m used to. </p>
<p>Check out <a href="http://www.anaptyxmesh.com" rel="nofollow" onclick="urchinTracker('/outgoing/www.anaptyxmesh.com?referer=');">http://www.anaptyxmesh.com</a> You&#8217;ll find indoor and outdoor models that will easily run your OpenWRT variant. Add to the fact it&#8217;s designed for dual radio usage, where one card serves the mesh and the other serves the client. I suspect you would of course alter this layout, but maybe it would help you with hardware for the more demanding situation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alexander Chemeris</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-131</link>
		<dc:creator>Alexander Chemeris</dc:creator>
		<pubDate>Wed, 02 Dec 2009 22:05:32 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-131</guid>
		<description>Moved to the mailing list.</description>
		<content:encoded><![CDATA[<p>Moved to the mailing list.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Rowe</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-130</link>
		<dc:creator>David Rowe</dc:creator>
		<pubDate>Wed, 02 Dec 2009 21:40:38 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-130</guid>
		<description>Hi Alex,

Yes I tried to check out your samples yesterday but received a 404 error when I hit the link.  BTW for some reason I am not receiving email notifications from this site so my responses depend on me checking this blog.  Feel free to continue this discussion on the Google Group if I am slow to respond.

The reasons for using Asterisk are described on the &lt;a href=&quot;http://wiki.villagetelco.org/index.php/FAQ&quot; rel=&quot;nofollow&quot;&gt;Village Telco FAQ&quot;&lt;/a&gt;.

I understand Asterisk does have some PLC algorithms, but we haven&#039;t experimented with them yet.  I guess we would require some notification of missed frames, and perhaps experimentation with the jitter buffer.

Thanks,

David</description>
		<content:encoded><![CDATA[<p>Hi Alex,</p>
<p>Yes I tried to check out your samples yesterday but received a 404 error when I hit the link.  BTW for some reason I am not receiving email notifications from this site so my responses depend on me checking this blog.  Feel free to continue this discussion on the Google Group if I am slow to respond.</p>
<p>The reasons for using Asterisk are described on the <a href="http://wiki.villagetelco.org/index.php/FAQ" rel="nofollow" onclick="urchinTracker('/outgoing/wiki.villagetelco.org/index.php/FAQ?referer=');">Village Telco FAQ&#8221;</a>.</p>
<p>I understand Asterisk does have some PLC algorithms, but we haven&#8217;t experimented with them yet.  I guess we would require some notification of missed frames, and perhaps experimentation with the jitter buffer.</p>
<p>Thanks,</p>
<p>David</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alexander Chemeris</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-129</link>
		<dc:creator>Alexander Chemeris</dc:creator>
		<pubDate>Wed, 02 Dec 2009 13:19:29 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-129</guid>
		<description>Hi David,

Ok, you&#039;ve convinced me, that this is a PLC problem :)

Examples I&#039;ve shown are for generic PLC, i.e. it works on any raw-audio stream. So you just decode packet to raw audio and then apply this PLC. We developed it for the cases when codec does not have internal PLC, like G.711. It&#039;s a shame Asterisk still does not have PLC.

Algorithm 3 (which produces audio with clicks) is actually a dumb frame repetition algorithm - something you can code in an evening by yourself. Algorithm 4 is frame repetition with smoothing just to remove clicks. It requires slightly more work. Seems I can&#039;t tell you a lot about algorithms 0-2, as it&#039;s a IP of SIPez LLC. I just can tell that it took my co-worker quite some time to implement and polish them to remove all clicks and pops and make it as smooth as possible while introducing zero delay. I would love to see this algorithms in open-source, but that&#039;s not in my competence.

I&#039;ve created examples of the same audio with 80ms audio frames and 20% of loss, but I can&#039;t put them online right now, because my ISP is having difficulties in receiving money from me, grr.. I&#039;ll post the link here when my connection brings up.

I still advise you to capture real audio (on sending side) with real packet loss (on receiving side), so we can model it and ply with.

PS Why have you chosen to use Asterisk as a SIP UA? It seems it&#039;s more of a server, then UA. Writing some client will take some more time, but will likely be lighter the Asterisk and will likely have things like PLC.</description>
		<content:encoded><![CDATA[<p>Hi David,</p>
<p>Ok, you&#8217;ve convinced me, that this is a PLC problem <img src='http://villagetelco.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Examples I&#8217;ve shown are for generic PLC, i.e. it works on any raw-audio stream. So you just decode packet to raw audio and then apply this PLC. We developed it for the cases when codec does not have internal PLC, like G.711. It&#8217;s a shame Asterisk still does not have PLC.</p>
<p>Algorithm 3 (which produces audio with clicks) is actually a dumb frame repetition algorithm &#8211; something you can code in an evening by yourself. Algorithm 4 is frame repetition with smoothing just to remove clicks. It requires slightly more work. Seems I can&#8217;t tell you a lot about algorithms 0-2, as it&#8217;s a IP of SIPez LLC. I just can tell that it took my co-worker quite some time to implement and polish them to remove all clicks and pops and make it as smooth as possible while introducing zero delay. I would love to see this algorithms in open-source, but that&#8217;s not in my competence.</p>
<p>I&#8217;ve created examples of the same audio with 80ms audio frames and 20% of loss, but I can&#8217;t put them online right now, because my ISP is having difficulties in receiving money from me, grr.. I&#8217;ll post the link here when my connection brings up.</p>
<p>I still advise you to capture real audio (on sending side) with real packet loss (on receiving side), so we can model it and ply with.</p>
<p>PS Why have you chosen to use Asterisk as a SIP UA? It seems it&#8217;s more of a server, then UA. Writing some client will take some more time, but will likely be lighter the Asterisk and will likely have things like PLC.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Rowe</title>
		<link>http://villagetelco.org/2009/11/factors-affecting-village-telco-performance/#comment-128</link>
		<dc:creator>David Rowe</dc:creator>
		<pubDate>Wed, 02 Dec 2009 00:49:31 +0000</pubDate>
		<guid isPermaLink="false">http://villagetelco.org/?p=353#comment-128</guid>
		<description>Hi Alex,

The packet loss test involved sending a VOIP call over a mesh network that was loaded with UDP traffic such that it had a measurable packet loss (2%, 5% etc). The VOIP call was sent and received by lightly loaded x86 Asterisk boxes, the MP was not being used for voice processing, just passing on packets.

Nothing special was done to handle packet loss, I just used some standard Asterisk boxes with the GSM codec.

Wow 20% packet loss concealment is very impressive.  What sort of codec were you using?  Are you concealment algorithms open source?  

I would like to see more work done in the area of packet loss but it is very time consuming and we have many other tasks to do on the Village Telco project.

If we use 4 codec packet aggregation it is likely that 4 consecutive packets will be lost (80ms) so the distribution won&#039;t be random.

Cheers,

David</description>
		<content:encoded><![CDATA[<p>Hi Alex,</p>
<p>The packet loss test involved sending a VOIP call over a mesh network that was loaded with UDP traffic such that it had a measurable packet loss (2%, 5% etc). The VOIP call was sent and received by lightly loaded x86 Asterisk boxes, the MP was not being used for voice processing, just passing on packets.</p>
<p>Nothing special was done to handle packet loss, I just used some standard Asterisk boxes with the GSM codec.</p>
<p>Wow 20% packet loss concealment is very impressive.  What sort of codec were you using?  Are you concealment algorithms open source?  </p>
<p>I would like to see more work done in the area of packet loss but it is very time consuming and we have many other tasks to do on the Village Telco project.</p>
<p>If we use 4 codec packet aggregation it is likely that 4 consecutive packets will be lost (80ms) so the distribution won&#8217;t be random.</p>
<p>Cheers,</p>
<p>David</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: basic
Object Caching 395/399 objects using disk: basic

Served from: villagetelco.org @ 2012-02-11 12:30:21 -->
