Thursday, October 2, 2008

Roofnet

Roofnet is essentially a way to get wireless internet working with a distribution of nodes that is neither random nor planned. The goal is to have relatively few internet connections servicing a community of users who will connect through this wireless mesh.

In order to accomplish this, a collection of Roofnet nodes were distributed, each installed by a local community member and connected to an ISP. If a given node finds itself to be connected, it broadcasts itself as a gateway. Otherwise, it acts as a DHCP server. Roofnet nodes use NAT to translate the IPs that it assigns to attached devices. Routing works as follows: each node keeps a list of nearby nodes, as well as the quality of the links between them. It also maintains this list for other nodes in the network, and is able to request such a list if its own list is deficient. It can then run Dijkstra's algorithm to determine the best path between itself and an internet gateway.

This routing algorithm can receive updates in multiple ways. First, if the quality of a link changes, the nodes at either end of that link will notice and update themselves. Second, other nodes will periodically ask for updates. Third, nodes can overhear other nodes' updates and adjust their own lists. To guess the throughput of a multi-hop connection, the inverse of the sums of the inverses of the individual throughputs are used. No reason is given for this (or at least I could not find one), other than the fact that it seemed to match empirical data.

Suffice it to say that the paper finds that they get decent throughput, and that they do so without using RTS/CTS. My question is this: how many users can they have connected to such a network at once (no more than 256 due to internal IP representations? no more than 65536 due to NAT?). Is it possible to set up port forwarding for services that users may require? How many simultaneous connections can be made before congestion drives throughput to a standstill? In other words, would Roofnet be a suitable way to connect a community? Also, who would be willing to foot the bill for the internet that Roofnet connects to?

Some of those questions are technical, and some of those questions are more logistic. But after reading through the paper (perhaps I did not read carefully enough), I still don't know what causes reduced throughput across a multi-hop connection. They claim that it is due to interference between packets transmitted by different nodes, but that seems unlikely to account for all of the reduction (especially because RTS/CTS didn't help). Is it because the routers are slow? Is it because there are many people on each given connection, and packets going across multiple connections must be scheduled multiple times? Somebody tell me if I completely missed this section of the paper.

No comments: