Computer networks are of critical importance to the daily operations of many businesses and organizations. Consequently, it is essential to maintain and improve the performance, availability, and security of these networks through updates to network routers' configurations. Today, most configuration updates are carefully planned by human operators and deployed in a meticulously orchestrated sequence of steps during a planned maintenance window. However, determining the precise sequence of changes to make is a daunting task. The goal of this project is to automated the task of generating sequences of configuration updates for computer networks running distributed routing protocols.
Several students will work in close collaboration with Professor Gember-Jacobson to: (1) examine how human operators break configuration changes into steps, (2) study prior work on breaking down updates for software-defined networks, (3) extend and implement existing algorithms to allow specific types of configuration updates to be broken into steps, and (4) evaluate the algorithms using configurations from real university networks. The project will involve a mix of reading related work, analyzing existing network configurations, extending existing algorithms, and writing code. You will learn how campus computer networks function, improve your coding and testing skills, gain experience designing and evaluating algorithms, and help improve the networks you use every day.
Students should be familiar with the Java or Python programming languages and basic data structures (covered in COSC 101 and 102). Students should also have systems programming experience (e.g., gained through COSC 201) or experience with graphs and logic (covered in COSC 290).