Low Bandwidth Networking Project:
Requirements
Last update: 2006-11-20
by David Pierce <chikuru@mali.geekcorps.org>
Scope
This document describes the requirements for the Low Bandwidth
Networking project, to be implemented in the villages of Bourem Inaly
and Bourem Foghas.
We
envision using a split proxy with caching and filtering on both server
and client
side. On the client side, the customer
will be able to access email and the Internet (with limits on amount of
data transferred). Both server and client will filter out email
attachments and images. The server will filter out ads.
The connection path between client and server is
client >> RBGAN
modem >> satellite >> inmarsat.com >> Internet
>> server
To
avoid unnecessary latencies between the inmarsat.com and the server,
the server will reside in the United States. Minimizing latency is
important because we want to support instant messaging between stations.
Based
on previous experience (Ian Howard, RANET project), the server may need
to be more than a virtual server. Squid and loband, for example,
require significant resources.
Server-side Proxy
The
server, managed by Geekcorps Mali (GCM), will act as a proxy server for
multiple clients. It will provide limited access to email, the
Internet, and instant messaging. It will allow a system administrator
at GCM to monitor customers' network usage.
Client-side Proxy
The
client is a single computer that serves as firewall, cache, and
customer workstation. We
do not anticipate connecting additional client computers. The client
can only connect to the GCM proxy server, which it does using an RBGAN
modem.
Use Cases
- Customer reads the daily news, pulled from RSS feeds.
- Customer reads weather bulletins, updated every hour.
- Customer sends and receives email (limited in number and size).
- Customer browses the Internet. All data is
filtered through the server-side proxy server and cached in the local
proxy server.
- Customer uses interactive web pages, e.g., to fill out forms.
- Customer does instant messaging, limited to rates sufficient for
chatting.
- The client computer limits bandwidth to a maximum instantaneous
rate.
- The client computer limits bandwidth on a daily basis. The
bandwidth not used on one day is available the next day.
- Customer monitors total usage and remaining funds, just as with
cell phones.
- The server computer filters spam.
- The server provides statistics on customer's total usage and
remaining funds.
Non-Use Cases
- Customers cannot install new software.
- Customers cannot access the Internet except through the proxy
server.
- Customers cannot send or receive email attachments.
Requirements
- All of the use cases are supported.
- All data sent between server and client is compressed.
- All nonessential content (images, ads, etc.) will be filtered out
at the server.
- Throughput is artificially throttled so that performance better
reflects actual cost.
Relevant Technologies
Most of the entries in this list were culled from the documents Wireless
Networking in the Developing World and Autonomous and Remote
Computing Platforms for Installations in Lesser Developed Countries.
- Server-side Administration / Troubleshooting / Development
- Protocol Analyzers
- Ethereal
- Kismet
- Driftnet
- Etherpeg
- Bandwidth Monitoring
- MRTG
- RRDTool
- NTOP
- Cacti
- iptraf
- Troubleshooting
- ping
- traceroute
- mtr
- Throughput
- ttcp
- iperf
- Network Health
- cacti
- SmokePing
- Nagios
- To Use in the Implementation
- iptables (firewall)
- SQUID (caching server, compressing)
- Dan's Guardian (web site content filtering)
- Skweezer (proxy that reformats for PDAs or cellphones)
- dnsmasq (caching DNS and DHCP server)
- Cameleon - http://www.sysctl.org/cameleon (ad blocker)
- CBQ (shaper, rate limiter)
- UUCP (remote copying with compression)
- loband.org (stripping web pages)
- procmail (white lists, email to text)
- spamassassin
- ClamAV (virus filtering)
- Jabber (with the jabber server running on the GCM server)
- Ruby (general programming language to glue the pieces together)
Scenarios
We
will expand these in the design phase and use them to make sure we have
a complete design. We will also use them to test the implementation.
- Customer requests page from local cache.
- Customer requests page from remote cache.
- Customer requests page not in either cache.
- Customer interacts with web page with a form.
- Customer reads email.
- Customer sends an email.
- Customer attempts to send an attachment.
- Someone sends an attachment to the customer.
- Customer uses instant messaging.
- Customer attempts to send a file using IM.
- Someone attempts to send a file to the customer using IM.
- Customer attempts to use more than the bandwidth allotted for a
given day.
- Customer queries client computer for his usage statistics.
- The server updates RSS feeds.
- The server monitors Jabber usage to record how often it is used
for communication among radio stations.
Open Questions
- Where can we find documentation, tutorials, working examples, and
forums for each relevant technology?
- Has
this problem already been solved elsewhere? (E.g., for the RANET
project or the Internet kiosks in India) Do we have access to the
details of existing
solutions?
- Is bandwidth being used whenever the client is connected to the
satellite even when no data is being sent?
- Where
does ifconfig get the number of packets and bytes from? NTOP may be
overkill. Does Ruby have a library that could provide this information?
Ian: get the data from /proc and /sys.