ITR: Designing a Programming Environment for Network Systems
University Of Texas At Austin, Austin TX
Investigators
Abstract
Network systems-designed to process packets efficiently-must meet two requirements: (1) support a large number of high-bandwidth links, and hence large system throughputs; and (2) offer a wide range of services (such as VPN, intrusion detection, virus scanning, differentiated services, and overlay network processing). To meet these requirements simultaneously, a new breed of processors, referred to as network processors (NPUs), has emerged. Network processors, when combined with general-purpose processors, function-specific coprocessors and other reconfigurable logic elements, create a powerful platform for designing network systems. Unfortunately, the methodologies and tools needed for programming these embedded, highly-parallel network systems are in their infancy. Today, to develop high-performance packet processing applications on such systems, programmers are required to be intimately familiar with the hardware. Programmers are required to partition their application at design time among the different processor types and develop hand-tuned code for managing network system resources. This approach is tedious, slow, and yields code that is difficult to port from one NPU-based platform to another. With the next-generation of network systems and NPUs supporting a larger number of processors, more diverse memory hierarchies, and more complex processor interconnects, the difficulty in programming network systems will only increase over time. The objective of the proposed research is to create a programming environment that will make future generations of network systems as easily programmable as today's workstations and servers. Realizing this vision requires an inter-disciplinary research program that spans the fields of networking, programming languages, compilers, run-time systems, and software engineering. The proposed multi-disciplinary activity will yield a programming environment that includes: (1) a domain-specific programming language for specifying packet processing applications; (2) a set of tools for profiling run-time characteristics of applications; (3) a set of compile-time tools and techniques for mapping packet processing applications onto complex network system architectures; and (4) a run-time system that adapts resource allocations dynamically to create network systems that are robust against attacks. Together, this set of tools and methodologies will create an environment that will facilitate rapid development of portable, high-performance packet processing applications on programmable network systems-the building blocks of future generations of multi-service information networks.
View original record on NSF Award Search →