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?
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: