Hi All,<div><br></div><div>I am glad to read about progress for Commotion.</div><div><br></div><div>This was my proposal sent many moons ago to the OLSR listserv for a new plugin to efficiently tweak TX power, and I am reposting here. Comments encouraged ...</div>
<div><br></div><div>---</div><div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><div>
In follow up to the Commotion code sprint / conference that just occurred:</div><div><a href="http://tech.chambana.net/projects/commotion" target="_blank" style="color: rgb(0, 84, 136); ">http://tech.chambana.net/projects/commotion</a></div>
<div><a href="http://tech.chambana.net/projects/commotion/wiki/JUNE_2011_CODE_SPRINTSUMMIT" target="_blank" style="color: rgb(0, 84, 136); ">http://tech.chambana.net/projects/commotion/wiki/JUNE_2011_CODE_SPRINTSUMMIT</a><br>
</div><div>... we discussed a potential OLSR plugin that would gradually turn down a node's TX <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span>until a minimum specified LQ was reached by one of that node's 2-hop neighbors.</div>
<div><br></div><div>The primary use case for this plugin is to support a mesh of primarily low-<span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> / battery-<span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> devices (smart phones, laptops, tablets) being used by democratic activists as a secure and reliable communications platform that is difficult to be controlled or cut off by authoritarian regimes.</div>
<div><br></div><div>In this use case, low TX <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> is ideal, as it prompts longer routes and more hops through mesh, making the identification of a packet's source more difficult.  Likewise, lower TX<span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> makes a node more difficult to detect / eavesdrop.  I understand this use case does run counter to convention, in particular sacrificing throughput and reliability for longer routes.</div>
<div><br></div><div>Although, I would expect this plugin could be generalized to also provide some measure of tx <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> vs. interference optimization in more typical meshes.</div>
<div><br></div><div>Below is a very rough, psuedo-code-ish spec for this plugin resulting from discussion with conference attendees.  I am planning on doing a proof-of-concept implementation of this plugin to try out in a small mesh, and comments, suggestions, criticisms, and witticisms (especially funny ones) are welcome.</div>
<div><br></div><div><div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; "><i>Functional spec:</i></span></div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">- Gradually turn down TX <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> until reachability of 2-hop neighbor degrades below specified LQ</span></div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">- Node beacons its config to 2-hop piers to tell neighbors not also turn down their tx pwr at the same time</span></div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; "><i><br></i></span></div><div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; ">
<span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; "><i>Operational params:</i></span></div><div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; ">
<span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">- minLQ (int): minimum LQ for 2-hop neighbors</span></div><div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; ">
- period (int): time period for TX <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> adjustments</div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">- beaconCfg (bool): enable beaconing of config to neighbor nodes </span></div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">- battery (bool): node running on battery?</span></div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">- upCmd / downCmd (string): commands for raising / lowering TX <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> (a bit hackish, but different radios may not all support iw and/or iwconfig)</span></div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; "><div style="padding-right: 1px; ">
<span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">- delta (int): delta for changing TX <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span>, e.g. 1dB, 2dB</span></div>
- oprhanTxPwr (int): Nominal TX <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> level for isolated nodes (may be 0?)</span></div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">- neighborCheck (int): time period when an isolated node powers up tx to check for new neighbors</span></div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; "><br></span></div><div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; ">
<span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; "><i>Edge case:</i></span></div><div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; ">
<span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">- Battery-powered (or even wire-powered?) node with no visible neighbors should eventually turn down (or turn off?) its transmitter.  Turn TX <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> down to orphanTxPwr, and periodically <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span> back up on interval neighborCheck to check if a neighbor has appeared</span></div>
<div style="padding-right: 1px; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px; "><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; ">--> collect these settings into config profiles for laptoppers to select from desktop, e.g. lowest <span class="il" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 204); color: rgb(34, 34, 34); background-position: initial initial; background-repeat: initial initial; ">power</span>, normal, max throughput</span></div>
</div><div><span style="background-color: rgb(220, 204, 255); padding-top: 0px; padding-bottom: 1px; "><br></span></div></span></div><div><br><div class="gmail_quote">On Wed, Jul 27, 2011 at 8:07 AM, Josh King <span dir="ltr"><<a href="mailto:joshking@newamerica.net">joshking@newamerica.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hey everyone,<br>
<br>
I have published a draft roadmap for the project at:<br>
<br>
<a href="http://tech.chambana.net/projects/commotion/wiki/roadmap" target="_blank">http://tech.chambana.net/projects/commotion/wiki/roadmap</a><br>
<br>
This is rough so far (and software focused, still working on adding in<br>
more documentation and outreach tasks), but I think serves to give an<br>
overall view of how the project is laid out and where it's heading.<br>
Recognizing that the project is made up of a large number of different<br>
pieces on different platforms, I've made a few structural decisions as<br>
far as the roadmap (and a coincident refactoring of the website):<br>
<br>
* The project has been re-structured into a number of subprojects, as it<br>
didn't make sense to me to put a large number of projects with<br>
substantially different codebases into one git repository. I realize<br>
that if we end up having a large shared codebase at the end then we may<br>
want to re-integrate, or create a shared repository drawn on by all<br>
sub-projects. Other people may have other takes on this. In any event,<br>
there are subprojects "Commotion-Openwrt", "Commotion-Android",<br>
"Commotion-Windows", etc. I hope that this will also help to clarify<br>
confusion between Commotion the overarching project and Commotion the<br>
OpenWRT embedded firmware (now Commotion-OpenWRT). All issues from<br>
subprojects are visible in the existing "Commotion" superproject.<br>
<br>
* The roadmap is structured into a number of 'releases.' The first one<br>
is a pre-release at the end of October, which will serve simply to pull<br>
together all of the disparate software elements in their current form,<br>
as well as give me some time to work on some features for the<br>
Commotion-OpenWRT firmware to bring it up to feature parity with some<br>
other firmwares out there in order to make it more useful to the<br>
community networks we're working with to deploy and test it. Past that,<br>
there are 4 "Developer Releases" which are split up in roughly 2-month<br>
increments through the year, with a "Finished Release" next summer. I<br>
structure it in this way to recognize that we need some general<br>
milestones to hit, but that each piece of component software has its own<br>
versioning and there's no need to try and change that, and the DR1-4<br>
naming scheme is not likely to strongly conflict with any other<br>
versioning scheme in use. Feedback around this is welcome, and the<br>
timeline is likely to change slightly as the release date as required by<br>
OTI's Internet Freedom grant award is predicated on when we actually get<br>
the check from the US State Department, which is not yet.<br>
<br>
I'm currently still putting items from the roadmap into the issue<br>
tracker as it makes sense, and adding users from the existing project<br>
into the subprojects (Redmine doesn't automatically migrate them).<br>
People should feel free to add to the roadmap for now, just ping the<br>
list when you do so to help me keep track of what's changed.<br>
<font color="#888888"><br>
--<br>
Josh King<br>
Technologist<br>
Open Technology Initiative<br>
New America Foundation<br>
<br>
</font><br>_______________________________________________<br>
Commotion-dev mailing list<br>
<a href="mailto:Commotion-dev@lists.chambana.net">Commotion-dev@lists.chambana.net</a><br>
<a href="http://lists.chambana.net/mailman/listinfo/commotion-dev" target="_blank">http://lists.chambana.net/mailman/listinfo/commotion-dev</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div>Ben West</div><div><a href="mailto:me@benwest.name" target="_blank">me@benwest.name</a></div><br>
</div>