ECEA 5371 Network Principles in Practice: Linux Networking

2nd course in the Network Systems: Principles and Practice (Linux and Cloud Networking) Specialization

Instructor: Eric Keller, Associate Professor

Welcome! In this course, titled "Network Principles in Practice: Linux Networking," we delve into the dynamic domain of Linux Networking, featuring a robust set of features essential for contemporary networked systems. Departing from traditional approaches, our emphasis is on practical application over foundational knowledge. Throughout the course, you'll explore the integration of concepts into Linux, gaining hands-on experience in architecting and implementing complex networks and systems. From understanding the Linux kernel's role to building gateways and navigating virtual networking and container orchestration with Kubernetes, each week offers valuable insights and practical skills. Join us on this journey where understanding meets real-world application, providing a comprehensive exploration of network systems.

Prior knowledge needed:Ìý

Learning Outcomes

  • Describe how Linux works as a data plane and how control and management plane software interfaces with the Linux data plane.
  • Set up a network topology in a lab setting, using virtualization and container technology
  • Configure a BGP router in Linux, interact with it to see the routing tables, and understand how it interfaces with the Linux data plane.
  • Configure Linux load balancing with ipvsadm.
  • Configure Linux filtering and address translation with iptables.
  • Understand and be able to describe Linux support for network virtualization (with network namespaces).
  • Apply knowledge of virtual networking to be able to reverse engineer an existing network.
  • Deploy Pods, Deployments, and Services in Kubernetes, and inspect deployed resources.

Syllabus

Duration: 4Ìýhours

In this course, we delve into Linux Networking, a domain with a robust set of features crucial in contemporary networked systems. The course is titled "Network Principles in Practice" to emphasize a departure from traditional approaches. Unlike typical network systems courses that focus on foundational knowledge—protocols and concepts—our emphasis is on reinforcing these concepts. We explore how they are integrated into a widely adopted system like Linux. The goal is not just understanding but also practical application, providing hands-on experience in architecting and implementing complex networks and network systems. We'll start our journey into Linux networking be learning how the Linux kernel serves as the data plane and how control and management plane software interacts with it. This week will also review the lab environment and introduce some useful tools for troubleshooting. We’ll end by looking at Linux’s support for layer 2 and set up some network devices.

Duration: 5Ìýhours

This week you will dive into IP networking within the Linux environment. We kick off by exploring the utilities designed for managing forwarding tables in Linux. From there, we progress to the intricacies of running routing software, illustrating how to transform Linux into a fully functional open-source router. The week concludes with a comprehensive discussion on resources, paving the way for more extensive and realistic experiments in Linux routing.

Duration: 2Ìýhours

This week we expand the scope and see how to build a gateway using the capabilities inherent in Linux. ÌýHere, a gateway functions at the network's edge, executing tasks such as filtering, address translation, load balancing, and enforcement of quality of service policies. ÌýWe’ll learn some background for each topic, followed by an exploration of relevant Linux utilities that can achieve that functionality.

Duration: 4 hours

This week, we examine Linux's robust support for Virtual Networking, aligning with the trend of containerization. We begin by unraveling the core construct in Linux—the network namespace—and subsequently explore tools for effective network namespace management. Practical application of earlier concepts will illustrate the networking of containerized applications. Furthermore, we will delve into the intricacies of Docker networking, providing a comprehensive understanding of its functionality.

Duration: 3Ìýhours

In this final week, our focus broadens to encompass a comprehensive container orchestration system, namely Kubernetes. We will begin with an overview to ensure everyone has a foundational understanding of using Kubernetes. Then, we delve into the architecture of Kubernetes, both at a holistic level and with a detailed focus on networking intricacies. The week concludes with a hands-on approach, as we embark on creating our own network plugin for Kubernetes.

Duration: 2Ìýhours

This module contains materials for the final exam. If you've upgraded to the for-credit version of this course, please make sure you review the additional for-credit materials in the Introductory module and anywhere else they may be found.

To learn about ProctorU's exam proctoring, system test links, and privacy policy, visitÌýwww.colorado.edu/ecee/online-masters/current-students/proctoru.

Grading

Assignment
Percentage of Grade
Creating a Bridge18%
Introduction to Linux Networking Summary5%
Peering a BGP Router18.5%
IP Layer with Linux Networking Summary5%
Creating a Gateway with Linux Summary5%
Investigating Network Namespaces18.5%
Virtual Networking in Linux Summary5%
Kubernetes Networking with Linux Summary5%
Final Exam20%

Letter Grade Rubric

Letter GradeÌý
Minimum Percentage
A93%
A-90%
B+86%
B83%
B-80%
C+76%
C73%
C-70%
D+66%
D60%
F0%