My broad areas of interest are Networking and Distributed Systems. I am part of Srini's Distributed Systems Network Protocols and Applications (DNA) group. Even more generally, I am interested in anything which involves building cool and novel systems! Some areas I have worked on include: structured peer-to-peer overlays, application-layer multicast, network security, scalable file-distribution, etc.

Thesis Research

My thesis research focuses on network and system support for distributed multi-party interactive applications with particular emphasis on online multi-player games. The main component of my study aims at providing scalable, distributed and low-latency architectures for highly interactive games such as First Person Shooters (FPS) like Quake. To this end, I have designed and implemented a distributed middleware and modified the (once) popular QuakeII FPS game engine to use our substrate for distributing game state across multiple servers or peers. For more technical details and downloads, please click here.

In a separate but related direction, I am looking at network protocol requirements for supporting spectators in online multi-player games. Online game-worlds are so immersive and gamers have become so skilled in playing that a large number of other players want to watch online gaming tournaments. A few First Person Perspective games (e.g., shooting games like Quake, Half-life, car racing games, etc.) have come up with limited spectator-support systems. The basic question is how to deliver the gaming stream to a large, dynamic, and heterogeneous population of spectators in a reliable and cost-effective manner. On the face of it, this problem is akin to that of distributing other streaming content (e.g., audio/video) to a large client population. However, spectating differs from audio/video (A/V) streaming in a number of ways that presents unique challenges as well as opportunities for optimization. These challenges are discussed as well as preliminary designs for a scalable spectator-support system are proposed in this paper.

Mercury: Range Queries in P2P Systems

A lot of recent work on building scalable peer-to-peer (P2P) systems has concentrated on Distributed Hash Tables or DHTs. DHTs offer a number of scalability advantages (load balancing, logarithmic hop routing with bounded local state) - but, the hash table or "exact match" interface offered by DHTs is not flexible enough for many applications. For example, it is unclear how DHTs could be modified to regain the highly desirable flexibility offered by keyword-based lookups needed in file-sharing applications.

The Mercury protocol (details in this paper) aims to push the envelope further by supporting multi-attribute range queries along with contiguous (non-hashed) data placement. Mercury also incorporates support for dynamic leave-join based load balancing which is needed in any non-hashed data placement design. The protocol provides logarithmic hop routing guarantees as well.

You can download a C++ implementation of Mercury here. The current version is 0.9.2, released on March 20, 2006. Compiles with gcc3.2, gcc3.4. Does not compile with gcc4.0 yet. It has been tested to run on RedHat Linux 9 and MacOS X. Documentation on running mercury and writing applications will soon be added.

Other Research Projects

Deconstructing BitTorrent
In recent years, BitTorrent has emerged as a very popular and scalable peer-to-peer file distribution mechanism. It has been very successful at distributing large files quickly and efficiently without overwhelming the capacity of the origin server, even under extreme flash crowd conditions. In this paper, we present a simulation-based study of BitTorrent. The goal is to deconstruct the BitTorrent system and evaluate the impact of its core mechanisms, individually and in combination, on overall system performance under a variety of workloads. Our evaluation focuses on several important metrics including peer link utilization, file download time, fairness amongst peers in terms of volume of content served, susceptibility to free-riding, etc. Our results show that BitTorrent performs near-optimally in terms of uplink utilization, download time, and fairness, except under certain extreme conditions. We present and evaluate simple techniques designed to alleviate the sub-optimalities encountered under such workloads. These findings indicate that there is little reason to augment BitTorrent-like systems with complex coding techniques since the potential benefit expected is small.

Work done with Venkat Padmanabhan and Cormac Herley at Microsoft Research, Redmond.

Using Fingerprints for DDoS detection
In this project, we build mechanisms to help an ISP network detect if its network as a whole is under attack or if a significant portion of its network is carrying traffic aimed at bringing down an external destination. In our scheme, routers in the ISP network construct profiles or fingerprints of traffic using stream-sampling algorithms. These fingerprints are used to identify anomalies and trigger suspicions about various flows. The suspicions are re-inforced by other routers to respond uniformly using RIO-based preferential packet dropping. Preliminary evaluation based on Abilene traces is described in this paper (pdf).
Multimodal Protocols for Adapting to Highly Variable Operating Conditions
The goal of the project was to answer the following question: is it possible to redesign the traditional rigid protocols to take on very different operating modes when faced with different environments? We presented a case for such multi-modal protocols in our paper. Specifically, we discuss multi-modal reliability and routing. We show the feasibility of designing multi-modal protocols by describing how these protocols can make operating mode decisions and switch modes without additional overhead. Joint work with Aditya Akella and Suman Nath. Related techreport: pdf.
RTReX: Replay Debugger for Java RMI programs
Traditional methods for debugging distributed programs are ineffective because the asynchrony and unpredictability of the interconnecting network results in system state which is hard to reproduce. In this project, we designed and implemented a trace and replay based distributed debugger for the Java RMI system. In the replay phase, only one component is re-executed while the rest of the system is simulated using the traces recorded in the record phase. We thus manage to give a one-machine debugging perspective to the programmer. We found that the time and space overheads for debugging are acceptable. Joint work with Vahe Poladian. Project report: pdf.
Hardware-software Interfaces for Reconfigurable Fabrics
This project focused on designing and implementing a general-purpose interface between the two halves of an application that allows arbitrary computation to be placed on reconfigurable hardware. Our interface was based on compiler-generated stubs which allowed placing arbitrary procedures on the reconfigurable fabric. This was a significant departure from previous approaches that allowed only simple, call-free computation or leaf procedures to be placed on the reconfigurable hardware. Joint work with Mahim Mishra. Related paper: pdf.



  • NSDI 2006. Slides: PPT
  • INFOCOM 2006. Slides: PPT
  • SIGCOMM 2004. Slides: PPT
  • MPDS 2003. Slides: PPT | PDF
  • OPENSIG 2002. Slides: PPT | PDF
  • NETGAMES 2002. Slides: PPT | PDF

Last modified: Tue Jun 02 18:21:49 EDT 2009

Get Firefox!