CSCA 5073: Network Principles in Practice: Linux Networking

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:
    • Programming languages: Basic to intermediate level experience with Python
    • Math: Basic math experience - through college algebra
    • Technical requirements: Windows or Mac, Linux, VS Code, Docker
 

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

Assignment

Percentage of Grade

Creating a Bridge

18%

Introduction to Linux Networking Summary

5%

Peering a BGP Router

18.5%

IP Layer with Linux Networking Summary

5%

Creating a Gateway with Linux Summary

5%

Investigating Network Namespaces

18.5%

Virtual Networking in Linux Summary

5%

Kubernetes Networking with Linux Summary

5%

Final Exam

20%

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 exam.This exam is similar to the quizzes throughout the course:

  • The exam is non proctored.
  • It is a two-hour exam.
  • You may submit your exam only once.
  • The exam contains multiple choice questions and two reflection questions. There are no programming questions in the exam.
  • You are not allowed to use any notes or access other websites when you take your exam.

 

Notes

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