UW logo

CS 838 Algorithmic design for fast network systems
(a.k.a. Network algorithmics: building fast network devices)
Spring 2008

Material covered

This class takes an interdisciplinary systems approach to solving performance problems implementors of network devices face. It is an interdisciplinary approach because it uses techniques from fields such as networking, computer architecture, operating systems, hardware design, and algorithms. It is a systems approach because it relies on an understanding of how the various subsystems that compose a router or a server work together and how performance bottlenecks can be neutralized by moving functions in time and space between subsystems. This class covers a variety of specific problems from both router and server design and shows how in many seemingly unrelated cases a few general principles can be applied to resolve performance problems: shifting computation in time (precomputation, lazy evaluation, batching), relaxing system requirements, avoiding unnecessary generality, optimizing for the expected case, passing hints across interfaces, and a few more.

The main problems the class will address can be loosely grouped into problems that come up mostly in the context of routers (and other network devices) that will form two thirds of the material, and problems that are primarily endhost problems that make up one third of the material. The main problems in the first category addressed in this class are: exact match lookups, prefix lookups, packet classification, deep packet inspection (string matching and regular expression matching), logging/summarizing traffic, switching, and packet scheduling. The main problems from the second category addressed in this class are: packet filters, early demultiplexing, avoiding data copying, minimizing context switching, efficient timers, and protocol processing (buffer management, checksums, reassembly).

Should I take this class?

If you are interested in cutting-edge research on computer networking problems with high impact on industry, this is a good class to take. The class makes extensive use of concepts from computer architecture and systems. If you are in one of those fields and want to get a broader view of how it applies to the design of network servers, routers, switches, and other network devices, this is a good class to take.

If you consider working for a network equipment manufacturer (Cisco, Alcatel-Lucent, Nortel, Juniper, etc.) after you graduate, this is a good class to take.

If you are curious how the need to execute performance-critical tasks affects the internal organization of routers and servers, this is a good class to take.

Note: This class was last offered three years ago (in Spring 2005). Most likely it will not be offered for two or three years after Spring 2008. If you are interested in the material, it is most prudent to take the class now as opposed to waiting for the next time it will be offered.

Class structure

We will use a textbook for most of the material of the class: George Varghese's Network Algorithmics: An Interdisciplinary Approach to Designing Fast Networked Devices. For some topics we will rely partly or entirely on recent papers not covered in the book. The class has a group project focusing on topics such as deep packet inspection which pose challenges to the implementors of today's network systems. See the grading summary for more details. In the early part of the semester we will have three classes per week while later we will switch to one class per week to give you time to work on the projects. See the class schedule for more details.