Network software is hard to design, implement, debug, and maintain. This basic problem is compounded by heterogeneity and the need for high performance. Heterogeneity results in multiplying the amount of networking software that must be developed and maintained. To improve performance, networking software is often hand-crafted in an operating system kernel, where software is particularly hard to debug and maintain. Emerging high-speed networking technology, coupled with next generation multimedia applications, is resulting in increased demand for high performance and extremely flexible networking software. A fundamental theme of this proposal is that advances in network software can only be achieved by an approach that simultaneously considers programming ease, platform diversity, and performance.
This proposal investigates the use of compiler technology to rapidly prototype and automatically optimize complex protocol software. The result is network software that is easier to write, more portable, and more maintainable. Yet, with the appropriate automatic optimizations, the performance of such implementations should compare favorably to the performance of hand-crafted implementations.