# Roofnet

Roofnet was an experimental 802.11b/g mesh network developed by the Computer Science and Artificial Intelligence Laboratory at the Massachusetts Institute of Technology (MIT). Research included link-level measurements of 802.11, finding high-throughput routes in the face of lossy links, link adaptation, and developing new protocols which take advantage of radio’s unique properties (ExOR). The software developed for this project is available free as open source.

## Routing protocol

The routing protocol is called SrcRR. There are two broadcasts used with the protocol. The first is periodic broadcasts used to determine a metric called ETX. These public broadcasts measure the probability that a packet between two nodes in radio contact reaches its destination. The second broadcast type is used to build up routing tables. A node 0 will broadcast that it wants to find a route to D. Then each node that receives the broadcast will add its id to the route and forward the packet. When node D receives a packet, it will reply back along the route that was found for that packet. Then node 0 can use this information to determine the best route using the ETX metrics and the route information returned from its query.

## Media access and forwarding

One media access and forwarding protocol tested with RoofNet was ExOR. ExOR simulates some advantages of multicasted data networks by using conventional 802.11 digital radios operated in broadcast modes.
The source radio uses routing data to establish a list of radios that could help reach the destination radio. The list is ordered so that radios closer to the destination are nearer to the head of the list. The destination is at the head of the list. The list is compactly stored in each packet.
Each packet also includes a list that shows the progress of each packet through the list of radios. This list has one entry per packet. Each entry is the number of radio that is closest to the destination and has retransmitted that packet. The source initially sets this list all to the source radio's number.
Then, the source broadcasts a batch of packets. Radios not on a packet's list discard the packet.
Radios on the list save the packet. They update their list of radios transmitting each packet. But they wait a calibrated time before they retransmit any packet. The time is less if they are closer to the destination. The time is a probabilistic estimate of the time to retransmit the packets that will be retransmitted by radios closer to the destination.
If a radio receives a packet transmitted from a radio that is closer to the destination, the farther radio throws away that packet, and never retransmits it. It also updates its list of packet progress.
As they work backwards toward the source, the retransmissions propagate the batch of packets' progress information back to the source radio.
At the end, a few packets of each batch sent by the source may never reach the destination. It sends these on by the most reliable route, using conventional routing.

## Development

Roofnet's technology formed the basis for Meraki, a mesh networking startup founded by members of MIT's Parallel and Distributed Operating Systems group. Meraki was acquired by Cisco Systems in 2012.