Computer Science Course Information
Back to CS Home Page

Computer Science Course Information

Level >Graduate >FALL_2005 >List >

Advanced Networking

Course No. CIS 786
Sections 105
Title Advanced Networking
Course Website
Prerequisite(s) Strong performance in CIS 656 or an equivalent course, and knowledge of a high level language (C, C++, or Java)
Instructor Teunis Ott
  • Office Room No. : GITC 4313
  • Office Phone : 973-596-5776
  • Fax : 973-596-5777
  • Email :
  • Website:
  • Lab : GITC 4325
  • Instructor Office Hours
    Description The course involves making changes to the Networking code in the Linux kernel (Loadable Kernel Modules and/or recompiling the kernel). Since the kernel in written in C, knowledge of C is preferred, but students who know C++ or Java will have no trouble picking up enough C.

    It is recommended that students who have not had an OS course take one simultaneously with this course.

    Every student will become superuser on a computer in the Internet Lab. There are not enough computers: students will share.
    (Get the OS back in original shape when you go home for the night!)

    Every student will do, in addition to the homework, a class project.
    Must be ``a few days work'. Students are encouraged to invent their own project. Every student will give a 15 - 20 minute presentation on his/her project. Students should have chosen / be assigned a project no later
    than 10/12/2005.

    Homework will include making a change to the Networking code in the Linux kernel, observing the effects using tcpdump, and getting the kernel back into its original state.

    In addition to the Linux Kernel, students will be exposed to NS2
    (Network Simulator 2, freeware from ISI). This has become a de-facto
    standard for simulations of the Internet.
    Topics A number of theoretical topics will be covered.

    Weekly schedule:

    09/01/2005 week 1
    TCPdump howto,
    FTP howto,
    NISTNET howto,
    explanation of first homework.

    09/08/2005 week 2
    The Networking code in Linux,
    Loadable Kernel Module howto.
    Recompiling the kernel.
    explanation of second homework.

    09/15/2005 week 3
    The Networking code in Linux,
    explanation of third homework.

    09/22/2005 week 4
    The Networking code in Linux.

    09/29/2005 week 5
    Linear Bounded Arrival Processes,
    Leaky Buckets,
    Policing and Enforcing,
    Service Level Agreements.
    (RFCs 1633, 2474, 2998, 3006, 3086, etc).
    Likely to spill into next week(s).

    10/06/2005 week 6
    the networking code in Linux.
    Virtual Clock based control mechanisms.
    Likely to spill into next week(s).

    10/13/2005 week 7 Midterm
    the networking code in Linux.

    10/20/2005 week 8
    Integrated Services and
    Differentiated Serices

    10/27/2005 week 9
    Performance Analysis of TCP,
    the square root law,
    Explicit Congestion Notification.

    11/03/2005 week 10
    ``Fractal'' Traffic,
    Long Range Dependence,
    Heavy Tailed Behavior.

    11/10/2005 week 11
    Student presentations,
    Acive Queue Management.

    11/17/2005 week 12
    Student presentations,
    RED, SRED, and variations.

    11/24/2005 no class

    12/01/2005 week 13
    Student presentations,

    12/08/2005 week 14
    Miscellaneous Topics

    12/15/2005 Final Exam.
    Text Book(s) Books:

    Wehrle, K., Pahlke, F., Ritter, H., Muller, D. and Bechler, M.
    The Linux Networking Architecture,
    Design and Implementation of Network Protocols in the Linux Kernel.
    Prentice Hall (2005).

    This will be the main text for this course.


    Same book as in CIS 656. Make sure to have the third edition. We will
    cover some more of the chapters 15 - 28.


    Crowcroft and Phillips (2001)
    TCP/IP and Linux Protocol Implementation
    Systems Code for the Linux Internet.

    (This book did not give me what I expected from it. Students should borrow
    it and browse through it, but probably not buy it.)


    Satchell and Clifford (2000)
    Linux IP Stacks Commentary, In-Depth Code Annotation
    Coriolis Open Press

    (This book is out of print. Amazon has second hand copies for sale.
    There is a copy in the Internet Lab.
    Mr Jain read most of it and had the same reaction I had to
    Crowcroft and Phillips.)


    W. Richard Stevens
    TCP/IP Illustrated, Vol I:
    The Protocols
    (Addison Wesley, ISBN 0-201-63346-0\9)

    Gary R. Wright and W. Richard Stevens
    TCP/IP Illustrated, Vol II:
    The Implementation
    (Addison Wesley, ISBN 0-201-63354-X)

    (These two books are a ``bible'' on the BSD Unix implementation of
    TCP/IP. Stevens I gives a ``theoretical introduction'', and Stevens II
    gives a detailed description and explanation of the code. If you can
    afford it, buy both.


    Nemeth, Snyder, Hein (with Boggs, Crosby, McClain) (2002)
    Linux Administration Handbook
    Prentice Hall.

    (Access to this book, or a similar book on Linux Administration, will be necessary for a short while. I recommend you buy this book, but you probably can manage with borrowing it.)

    A ``general'' book on Linux may be useful. There are many, feel free to
    use your own favorite.


    Kernighan and Ritchie (1988, second edition)
    The C Programming Language
    (ANSI C)
    Prentice Hall.

    (Unless you are a really good C programmer you will need this book, or a book like this. Make sure you have a book that follows the ANSI standard.
    I use this book and have found it quite adequate. Feel free to use your
    own favorite book on C.)


    Students will learn to use tcpdump to observe and analyze packet flows.
    The modus operandi is:
    Use tcpdump with option ``-w'' (``write'') to create a raw binary file.
    Then use tcpdump with option ``-r'' (``read'') to read that file, and
    to create various (depending on other options) human-readable files.

    These ``human-reable'' files are not that terribly readable! The next step is to analyze these files, and/or make them more readable. This can be done using C or C++, but use of Perl is recommended.

    So make sure to have access to ``Perl'' information.


    Learning Perl.
    Randal Schwartz and Tom Christiansen

    Programming Perl.
    Larry Wall and Randal Schwartz
    O'Reilly & Associates, Inc.

    Perl Cookbook
    Tom Christiansen and Nathan Torkington

    (And more: see the NJIT Library, or see Amazon. There also is a
    ``Perl for Dummies''.)

    On the Web (Courtesy Mr Jain):

    Examples of Perl scripts will be given and explained, but this will not
    be a class on Perl!


    Students will have access to the Linux Operating System Source Code.
    Pieces of it will be discussed in class.


    There also is a sizable amount of material on the web. See e.g.

    Bert Hubert et al (2003)
    Linux Advanced Routing & Traffic Control HOWTO.

    Saravanan Radhakrishnan (1999)
    Linux - Advanced Networking Overview Version 1.

    Glenn Herrin (2000)
    Linux IP Networking
    A Guide to the Implementation and
    Modification of the Linux Protocol Stack
    (master's project!)
    I read the last one, and found it not really useful.
    Students may want to try it and see whether they get more out of it.

    Time & Place Thursday 6:00 PM - 9:05 PM,Kupfrian Hall 100
    Other Info For books, homework, exams, grading, more detailed outline, additional
    information, see the webpages. Make sure to also read the pages for
    the Fall 2004 course in Advanced Networking. Make sure to get the
    password for the password protected pages. These contain material that
    may be published in a copyrighted form.

    Because this is advanced class, content is likely to deviate from the
    projection below. Requests by students for special topics will be taken

    Registrar's Website