Xplorations
I build computer systems – some projects and research I’ve worked on in the past 🛠🖥️🛜👩🏻💻
Towards a debuggable kernel design
An approach to build a kernel with debuggability as a design principle. Find the paper on arXiv.
Parallelism Battle: Cilk vs Go
ClikRats vs GopherRats a parallel programmed solution to GraphRats that compares using Go’s coroutines and Cilk’s parallel primitives for parallel programming. The analysis suggested that Cilk offers an extremely convenient way to parallelize programs and get considerable performance improvements directly using sequential code (only add cilk_for!). Go requires more thought as goroutines need to be synchronized, but its packaged tools and excellent documentation along with a runtime to capture bugs makes it worth the time spent on developing a solution. Both languages have similarities in work stealing and work division through “tasks” but are different in terms of the facilities provided inherently in the language (Go’s goroutines and runtime with garbage collection in contrast to Cilk’s threads and cilk_for / cilk_spawn and cilk_sync).
Named Asynchronous Communication in Challenged Networks using XIA overlay Networks
The current Internet Protocol stack assumes the communicating hosts to be simultaneously connected and traditional networks rely on routing protocols to guarantee connectivity between all devices. However there are “Challenged Networks” where the hosts are intermittently connected, routing protocols are difficult to converge. A new communication paradigm – Named Asynchronous Communication which combines Information Centric Networking with Named Content Caching can enable communication in challenged networks.
I worked with Prof. Peter Steenkiste @ CMU on designing and implementing source based routing in named asynchronous xia-overlay networks to provide ability to communicate in challenged networks.
Pebbles Kernel
Pebbles is an x86 IA32 monolithic kernel that provides virtual memory management, process and thread management, multi-tasking facility as well as necessary drivers and syscalls alongwith virtualization support. Implemented Pebbles as part of CMU’s Operating System Design and Implementation (15-410) coursework.
TCP in the wild
A TCP in userspace with congestion control using Reno, optimized for Earth to Moon communication (high loss, high latency environment). Improved the throughput by over 10%!
Contentify
Contentify proposes an intuitive scheme for content centric networks to bridge the gap between the content and how it is addressed. While Contentify can be generalized to all kinds of networks, the broadcast nature of wireless networks allows for flexible and realistic scenarios with sensor devices. The prospect of Content Centric Networks for growing data communication needs in IoT and sensor networks make a compelling case for working on this problem.
An SDN Approach to Bandwidth Efficiency in Wireless Mesh Networks
An SDN approach that moves away from the conventional single association model used in WMNs by making use of the capabilities of all the mesh gateways present in the network by splitting traffic
Enhancing ganglia-nagios-bridge
I worked on various enhancements for ganglia-nagios-bridge as a Google Summer of Code intern. The nagios checkresult generator to generate passive nagios checkresults for consumption by nagios, was used by the Pynag library and eventually formed the base for syslog-nagios-bridge in Debian.