course-intro
Download
Report
Transcript course-intro
COMS W6998-5:
Network Systems Design
and Implementation
Prof. Erich Nahum
Spring 2010
Today’s Agenda
Class Overview
Target Audience
Prerequisites
Course Materials
Grading
Who I am
Who you are
50,000 foot flyover of Linux Networking
Network Systems Design and
Implementation
What’s Design vs. Implementation?
Design: How to think about systems
Implementation: How it actually works
A good system has done both well…
The Linux Networking Stack
+ Mature (over 15 years old)
+ Open (we can look at it)
+ Relevant (large market share)
+ Feature-rich (millions of LOCs)
Hundreds of protocols, devices, features
- Evolving (changes every day)
Network Systems Design and
Implementation
What are we going to look at?
Actual protocols: TCP, IP, UDP, ARP, etc…
Programming interfaces: system calls, sockets,
device APIs
Routing subsystem, including netfilter/iptables
Support mechanisms: buffer management, device
management, timers, lists, hash tables,
interrrupts…
Kernel tools: profiling, tracing, debugging
Target Audience
Who should take this class?
Networking students who want to learn more
about protocols and how they are implemented
Operating systems students who want to learn a
important large kernel subsystem in detail
Security students who wish to learn more about
firewalls and packet filtering
MS students who want to improve systems
building skills
Prerequisites
You should have good knowledge of OS and
networking in general
COMS 4118 Operating Systems
COMS 4119 Networking
If you haven’t taken those, it’s still possible
but…
You should be proficient with C programming
You should not be afraid to dive in to the kernel
Textbooks
Unfortunately, everything is outdated. Some
possible but not required texts:
Herbert, Linux TCP/IP Networking for Embedded Systems,
Charles River Media, 2007. Covers 2.6.16.20 (June 2006).
Benvenuti, Understanding Linux Networking Internals,
O’Reilly Media, Dec. 2005. Covers 2.4 and up to 2.6.12
(June 2005).
Wehrle et al., Linux Networking Architecture, Prentice Hall,
May 2004. Covers 2.4.
Major networking cleanup in 2.6.23.
Sometimes it is like pulling teeth to get a book to
admit which kernel it uses…
Which Kernel ? Which Distro?
Kernel: Most likely 2.6.31.
Most recent kernel in latest distributions
Ubuntu 9.10, openSUSE 11.2, Fedora 12
Open to discussion
2.6.33 release is imminent, but…
Don’t want to get too far away from the distribution
Changes are probably small enough
Found some good docs on 2.6.31.
Distribution: ???
Columbia an Ubuntu shop
IBM a RedHat/SLES shop
Tentative Schedule
Class Topic
1 Intro, Networking Overview
2 Support mechanisms: buffer management, network devices, timers,
lists, hash tables
3 Device Layer: device drivers, packet reception and transmission,
interrupts, softnet
4 Data link layer: net core, Eth, ARP, bridging
5 Network Layer: IP, routing, forwarding
6 Network Layer: netfilter/IPtables
7 Transport Layer: UDP, TCP
8 Socket layer: system calls, sockets, ip_proto
9 Student subsystem presentations
10 Student project presentations
Grading
This is a seminar, and the first time I’ve taught it.
Thus, everything is subject to revision. What I’m
thinking now is:
33% Class participation: discussion and interactivity in
class
33% Class presentation: a presentation on a major
subsystem in the network stack
33% Class project: a project involving modifying,
extending, or improving an existing system
Potential list on class Web page
Still thinking about a paper reading list
Papers would be on issues illustrated by the code
Who I Am
Research Staff Member at IBM T.J. Watson for 13
years
Ph.D. in C.S. in 1996 from UMass-Amherst
Working in Networking since 1988
OS/2, AIX, FreeBSD, Linux (2.2/2.4), x-Kernel
Adjunct in CS Department
Same as Professors Misra, Schulzrinne, and Rubenstein
Taught OS in Spring of 2008, even got a CULPA review
Why am I teaching this class?
To learn current 2.6 networking stack
Best way to learn is to teach
Who You Are
Who are you, anyway?
What are you looking to get out of this class?