CPS 512 Project Ideas
The course is project intensive, and you'll want to get started early.
Projects should be done in groups of two. If you want to try to mesh your
project for this class with your existing areas of research or interest, feel
free - but please make sure that they're appropriately on topic. "A neural
network approach for finding working paths in broken networks" would be a
perfectly OK project; "A neural network approach for making AIBO robots walk, so
that maybe they can physically transport messages between routers" is probably
not.
- Implement and evaluate DNS prefetching for the Web
-
- Multiple Connections Considered Helpful
- (This is a vague, open-ended project idea). Opening many TCP connections
in parallel sometimes helps things out quite a bit, in terms of resilience,
fully using links, etc. Is there an architectural principle behind this that
can be exploited more generally?
- Concurrent Multipath Transfers
-
- Large-scale, fast packet duplication and merging
- One technique for proactively coping with failures on very fast
time-scales is simply to duplicate all packets. What seems like a crazy idea
on the surface may not be so radical when viewed in light of many ISPs
overprovisioning policies which keep many backbone networks loaded at 10%
utilization or less. Bandwidth keeps getting cheaper, but round-trip times and
the cost of failures do not. Assuming that such a trade-off was worth it,
design a system (end-host? router-based?) that can rapidly and efficiently
split and merge packets and send them along two different paths through the
network. Consider both the splitting and merging mechanism and the routing
mechanism. For this project, you may either address or ignore the effects of
such a practice on congestion control.
- Congestion Control and Packet Duplication
- Consider the above scheme for packet duplication. Imagine running a TCP
bulk transfer along it. This scheme effectively masks losses. Model the
effects of this scheme on a network under various assumptions (all duplicated
flows, a mix of duplicated and non-duplicated flows, etc.) and then design a
mechanism to ensure that these flows compete fairly with normal TCP flows.
(consider ECN or XCP-like mechanisms. How do you signal that a packet was
"lost" after the fact?)
- User interfaces for offline browsing
- How would you create an interface that was designed to facilitate using
the Web (as we know it) when your connectivity is sporadic or highly part
time? How would you design an interface to help users cope with extremely high
request latency (on the order of minutes)? As an example of this, consider how
email works with IMAP: A user dials in, gets all of their email, and can then
begin answering it serially while offline. Are there equivalents for browsing,
which is a much more impulsive, less structured interaction? Perhaps the
browser would highlight "available" content, and/or automatically prefetch a
few links out when a user browses, and then show the user what links were
queued, etc.
- A protocol for prefetching
- Most prefetching has examined prefetching using standard HTTP requests.
Can you design the perfect prefetching protocol? It might do a better job of
finding shared content (already done by several proposals, e.g., Rhea et al.),
it might take advantage of the compression benefits of sending multiple pages
at once to reduce file transfer sizes, etc.
- Community Networks
- Dealing with Cheating in Community Networks
- Mechanisms for Cheating in Wireless Networks
- Devise new mechanisms for obtaining unfair amounts of service in wireless
networks. Attack other nodes and make them drop offline or deny service to
them. Break existing protocols that purport to achieve fair allocations and
prevent cheating.
- Omni vs. Directional Antennas, Planned vs. Unplanned
- We saw two different designs for wireless networks, the wireless Leyden
and Digital Gangentic Plains projects (directional antennas, planned topology)
and the Roofnet project (mostly omnidirectional, mostly unplanned). Each of
these approaches has benefits. Omnidirectional antennas didn't require
adjustment after the fact, and were much easier to configure. The unplanned
topology had similar benefits. Directional antennas increase spatial reuse
and, therefore, capacity. They can also improve the distance and quality of
links. Emerging technologies for phased-array antennas offer the possibility
of the best of both worlds, via software-steerable antennas. How can you take
advantage of such a technology? What does it do to routing? To the timescales
of adaptation?
- Power Savings
- Security and Availability
- (Please don't all pile in on DDOS type projects. While they're related and
can be relevant, this risks stepping outside the boundaries of the course.)
- Migrate for Community Wireless
- One of the problems in the Roofnet project is that because it uses NAT,
flows are "pinned" to the gateway that they first go out of. If the network
topology changes, or the gateway fails, the connection will die or remain
bound to a sub-optimal path. This represents a case of unfortunate---and
unnecessary---fate sharing between two communicating endpoints and a box in
the middle. Design a scheme to circumvent this problem. Possibilities include
using TCP migrate on an end-to-end basis (with its attendant drawbacks for
deployment) or having the gateway nodes perform Mobile IP-like services and
pass the traffic to each other over the wired Internet.
- Peer to Peer
- Diagnosing failure causes
- Peer to peer + a big central data reposityr to diagnose the cause (or
something less grandiose) of Internet failures.
- Dealing with retransmissions and re-routing at multiple time-scales
- RPC systems as a basis for unreliable environments
- Satya has some ideas for interesting RPC features (side-effects, etc). In
general, if you had to design an RPC system for use in an unreliable
environment, what would you do? Would you choose RPC as the basis, or is an
explicit messaging interface somehow better?
- Caching in Wireless Networks
- Can you take advantage of application (or other) layer caching in wireless
networks? Deploy a set of Squid (or other) caches at all nodes in a Roofnet,
and have them cooperate to vastly improve the peformance observed by end
hosts?
- How to do "background" transfers for prefetching in wireless? Google for
"TCP nice" for background on this.
- How to do cache peering in wireless networks? You've got lossy links,
etc.; does it change the way you want to cache?
- How to do generic TCP transfer caching? (Talk to Bruce)
- Coming up with your own project
- A couple of suggestions for coming up with your own project. Find a
problem or area in networking that you like---ideally, one that really excites
you, or that seems immediately relevant and important. Then, address the
following questions:
- Has a solution been posed to this problem in the past and, if so, what
do you think of it?
- If a solution has been proposed, has it been evaluated properly?
- If the system has been simulated, does anyone understand its
mathematical properties?
- If the system has been simulated, has it been implemented and its
performance studied under realistic conditions? (Do the simulations, math,
and reality match up?)
- Is the solution scalable? Secure? Robust to failures, both expected and
unexpected? Will it work in heterogenous environments, and does it contain
embedded, unrealistic assumptions about the environments in which it will
run? Will it stand up to coming advances in technology?
- If several solutions have been proposed, has anyone performed a
comparative study of them? Why do some schemes work better than others? Can
we characterize the conditions under whichsome schemes work better than
others?