SMesh source code and binariesSMesh is licensed under the SMesh Open-Source License. SMesh requires a device that runs Linux and has a 802.11 wireless interface. We tested it on x86, Linksys WRT54G and Meraki routers. Here is an overview of the operating modes of SMesh. The latest stable version is 2.3. Spines 3.1 or later.
SMesh Redundant Multipath kernel modulesSMesh Redundant Multipath adds kernel support for forwarding data packets to the mobile client through multiple paths. CPU utilization decreases significantly when using SMesh with these modules, allowing low-cost routers to fully utilize the available bandwidth on the wireless networks. A user-space implementation of a routing protocol that uses redundant multipath, as described in our paper, is available in the Spines distribution. These modules are available under the GNU GPL license.
iproute shared libraryChanging kernel routing tables from a C program requires system calls that are limitted and sometimes outdated when moving from one version of Linux to another. The common "ip route" shell command is the best way of manipulating routing tables in Linux. However, calling the shell version of the software incurs a significant overhead on low-cost routers (per route update, 40 ms, compared to only 1 ms when using this library on WRT54 routers). This library provides a direct interface to process the "ip route" command with the same usage as the shell version, but without going through the shell. This software is available under the GNU GPL license.
Supported HardwareSMesh on ADI Pronghorn instructions.
SMesh on Meraki instructions. Supported models of the Linksys router are all Linux based versions as per the table below. Tested models include a (T) at the end of the line.
CDF0 = WRT54G v1.0 / ADM6996L Chipset / CPU 125MhzWRT54GL
CDF1 = WRT54G v1.0 / ADM6996L Chipset / CPU 125Mhz
CDF2 = WRT54G v1.1 / ADM6996L Chipset / CPU 125Mhz
CDF3 = WRT54G v1.1 / ADM6996L Chipset / CPU 125Mhz
CDF5 = WRT54G v2.0 / ADM6996L Chipset / CPU 200Mhz (T)
CDF7 = WRT54G v2.2 / BCM5325EKQM Chipset / CPU 200Mhz (T)
CDF8 = WRT54G v3.0 / BCM5325EKQM Chipset / CPU 200Mhz (T)
CDF9 = WRT54G v3.1 / BCM5325EKQM Chipset / CPU 200Mhz (T)
CDFA = WRT54G v4.0 / BCM5352E Chipset / CPU 200Mhz (T)
Note: WRT54G v5.0 has 2Mb/8Mb RAM. It uses VxWorks OS and is incompatible with 3rd party firmware and SMesh.
CL7A = WRT54GL / BCM5352E Chipset / CPU 200Mhz (T)WRT54GS
CGN0 = WRT54GS v1.0 / ADM6996L Chipset / CPU 200Mhz
CGN1 = WRT54GS v1.0 / ADM6996L Chipset / CPU 200Mhz
CGN2 = WRT54GS v1.1 / BCM5325EKQM Chipset / CPU 200Mhz
CGN3 = WRT54GS v2.0 / BCM5325EKQM Chipset / CPU 200Mhz
CGN4 = WRT54GS v2.1 / BCM5325EKQM Chipset / CPU 200Mhz
CGN5 = WRT54GS v3.0 / BCM5352E Chipset / CPU 200Mhz
CGN6 = WRT54GS v4.0 / BCM5352E Chipset / CPU 200Mhz
Questions or comments to: firstname.lastname@example.org TEL: (410) 516-5562
FAX: (410) 516-6134
Distributed Systems and Network lab
Computer Science Department
Johns Hopkins University
3400 N. Charles Street Baltimore, MD 21218-2686