CS395T: Network System Design & Implementation

Fall 2003

 

Home

Course Information

Schedule

Project Information

 

Course Content

 

Network systems—designed to support packet processing applications efficiently—must meet two, often conflicting, requirements: (1) support a large number of high-bandwidth links, and hence large system throughputs; and (2) offer a wide range of flexible, upgradeable services in addition to conventional bridging and forwarding functions. Traditionally, telecom and datacom equipment vendors have used general-purpose processors or fixed-function, application-specific integrated circuits (ASICs) to implement network systems. Because of their inherent programmability, general-purpose computing platforms meet the flexibility requirements of modern network systems. However, they fail to meet the performance requirements of modern network systems; in fact, the inter-arrival times of packets in modern networks (e.g., operating at OC-192 interface speeds) are approaching the inherent I/O and memory access latencies observed in general-purpose computing systems. Network systems designed using ASICs, on the other hand, use special-purpose hardware to meet the performance requirements of modern networks; however, they often fail to meet the flexibility requirements. To meet simultaneously the demands of high performance, flexibility, and economy, an alternative to general-purpose processors and ASICs, referred to as network processors (NPUs), has emerged. Network processors, much like general-purpose processors, are programmable. However, their designs include several innovative architectural features to enable the processing of packets at high rates. Network processors, when combined with general-purpose processors, co-processors, and programmable logic elements, create a powerful platform for designing network systems.

 

In this course, we will motivate the need for network processors by analyzing the requirements and characteristics of a variety of networking applications and systems being deployed in different parts of the network infrastructure. We will survey network processors from prominent vendors, and describe the architectural approaches and design tradeoffs in designing network processors. Then, we will discuss the challenges in programming networks systems; we will highlight the programming issues that arise because of the heterogeneous, multi-processor nature of network systems. We will discuss challenges in designing programming languages, compilers, and operating systems that will make next-generation of network systems as easy to design and program as today's workstations and servers.

Course Philosophy

 

Most courses offered in undergraduate and graduate program today can be thought of as tools-oriented courses; in these courses, students learn about tools that they can use to solve problems. The design and implementation of most complex systems, in practice, require tools and techniques from many related areas to be brought together in non-trivial ways. Further, in many cases, the complexity of these problems requires the tools and techniques to be enhanced significantly. Unfortunately, conventional tools-oriented courses fail to expose students to these issues. This course is an example of a complementary, but an inherently different, class of problem-oriented courses. In this course, we will focus on a specific problem (namely, network system design and implementation), and illustrate how a variety of tools and techniques from language design, compilers, operating systems, and architecture can be brought together to design high-throughput network systems.