Get a head start on program admission

Preview this course in the non-credit experience today! 
Start working toward program admission and requirements right away. Work you complete in the non-credit experience will transfer to the for-credit experience when you upgrade and pay tuition. See How It Works for details.

  • Course Type: Breadth
  • Specialization: Network Systems: Principles and Practice (Linux and Cloud Networking)
  • Instructor: Dr. Eric Keller, Associate Professor, Electrical, Computer & Energy Engineering
  • Prior knowledge needed: TBD

Learning Outcomes

  • Set up a network topology in a lab setting, using virtualization and container technology.

  • Apply knowledge of virtual networking to be able to reverse engineer an existing network.

  • Architect more complex networks and larger and realistic routing experiments.

  • Be able to build and deploy a custom network plugin for Kubernetes.

Course Grading Policy


Percentage of Grade

Creating a Bridge


Introduction to Linux Networking Summary


Peering a BGP Router


IP Layer with Linux Networking Summary


Creating a Gateway with Linux Summary


Investigating Network Namespaces


Virtual Networking in Linux Summary


Kubernetes Networking with Linux Summary


Final Exam


Course Content

Duration: 4 hours 40 mins

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: 4 hours 22 mins

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 13 mins

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 10 mins

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: 2 hours 22 mins

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 project. 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.


  • Cross-listed Courses: Courses that are offered under two or more programs. Considered equivalent when evaluating progress toward degree requirements. You may not earn credit for more than one version of a cross-listed course.
  • Page Updates: This page is periodically updated. Course information on the Coursera platform supersedes the information on this page. Click the View on Coursera button above for the most up-to-date information.