I am generally interested in finding the simplest possible approaches to building software systems. Complexity is anathema to robustness, security, analyzability, and ultimately scalability and performance. The goal of my research is to 1) find basic patterns for the design of software and system infrastructure, and 2) to redesign and rebuild existing systems using a modular composition of basic building blocks. I expect that this approach leads to a better charting of the infrastructure-software design space and results in systems that are easier to analyze and verify and ultimately, systems that just work better (faster, more efficient, more reliable, etc.)
The overall focus of my work in this area is on system-level infrastructure software, in particular runtime systems. Examples of runtime systems are operating system kernels, virtual machine hypervisors, user-level threading systems, programming language runtimes, etc. The high-level research objectives are the following:
The basic goal is to find a basic formalism (a type of language) to precisely describe essential network functionality, such as forwarding, routing, and naming/discovery. Given that even basic concepts such as name and address lack a precise and commonly agreed definition, it is high time that networking is put on a theoretically sound footing. Ideally, such a language would also permit code generation and verification and thereby ease the deployment of new communication protocols and services.
The quality of the network service determines what end-to-end transport services can be offered to applications. In past work, I have studied edge-based load control, fine-grained scheduling with low overhead, and innovative packet scheduling approaches. I keep an interest in the area, in particular buffer management and feedback-based load control.
I have designed, built, and evaluated system-level network software.
last updated Aug 07, 2015 - Martin Karsten