COMS W6998: NETWORK SYSTEMS DESIGN AND IMPLEMENTATION
Spring 2010


HOME

ANNOUNCEMENTS

SYLLABUS

PROJECTS

GRADES

PAPERS

RESOURCES

C Programming

Linux

VMWare


Course Description

This class takes a deep look at how network protocols are designed and implemented using the Linux kernel as a case study. The goal is to understand how this important subsystem works in detail in order to conduct experimental research using the Linux kernel. The class includes detailed code walkthroughs of a recent Linux kernel (2.6.32-33), a class project, and perhaps some relevant research paper readings and presentations. Topics include :
  • Specific network protocol implementations such as sockets, TCP, IP, Ethernet, ARP, network device drivers, routing and bridging;
  • Support mechanisms such as buffer management, packet queuing, timers, hash tables, interrupts, and synchronization;
  • Network-related security mechanisms such as packet capture, filtering, firewalling, iptables, and netfilter;
  • Other kernel support facilities such as profiling, tracing, and debugging.
Time permitting, we may investigate networking in virtualized environments such as KVM.

Target Audience

This class should be useful to the following students:
  • Networking students who wish to deepen their understanding of network protocols and implementation and learn how to use the Linux kernel for their research;
  • Operating systems students who wish to look at a large kernel subsystem not normally covered by COMS 4118;
  • Security students who wish to learn more about how firewalls and packet filters are implemented
  • Masters students who wish to build on and improve their system building skills.

Prerequisites

COMS w4118 Operating Systems and COMS w4119 Computer Networks or permission of the instructor.

Class Time and Place

Wednesdays 11:00 AM -- 12:50 PM; 327 Mudd Building

Personnel


Role
Who
Mail
Office
Hours

Instructor
Erich Nahum
nahum at cs
CSC 464
TBD

TA
Vailis Pappas
vpappas at cs
CSB 520
TBD

Textbooks

Unfortunately, all textbooks on this topic are seriously out-of-date. Thus we will be relying on presentations and code walkthroughs. No textbooks are required; however, the following texts may be useful for background/context:
  1. Linux TCP/IP Networking for Embedded Systems (2nd Edition). Thomas Herbert. Charles River Media, November 2006. Uses 2.6.16. Available from Amazon.com.
  2. Understanding Linux Networking Internals. Christian Benvenuti. O'Reilly Media 2005. Covers 2.4 and up to 2.6.8. Available from Amazon.com). See also Errata.
  3. Linux Networking Architecture. Wehrle et al. Prentice Hall, May 2004. Covers 2.4. Available from Amazon.com.
  4. Understanding the Linux Kernel (3rd Edition). Daniel P. Bovet and Marco Cesati. O'Reilly Media, 2005. Uses 2.6.11. Available from Amazon.com. See also Errata.
  5. Essential Linux Device Drivers. Sreekrishnan Venkateswaran. Prentice Hall, April 2008. Uses 2.6.24. Available from Amazon.com.
  6. Professional Linux Kernel Architecture. Wolfgang Mauerer. Wrox, October 2008. Uses 2.6.24. Available from Amazon.com

Grading

33%: Class Participation: Involvement and activity in class.
33%: Class Presentation: Presenting an overview of a Linux subsystem and/or research paper.
33%: Class Project: A project involving modifying the Linux kernel is required.

Computer Accounts

You're welcome to use any development environment you want. I recommend using a recent Linux distribution (RedHat, CentOS, Ubuntu, SLES) inside of VMWare Player (available for free). You can use your own laptop or one of the CLIC machines. In order to use the CLIC machines, you need a CS account. You are responsible for obtaining this account.