| Back to CS Home Page |
Computer Science Course Information |
| Course No. | CIS 786 | Sections | 105 |
| Title | Advanced Networking |
| Course Website | web.njit.edu/~ott/Adv.Netw |
| 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 |
| 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 NS2, The Networking code in Linux, explanation of third homework. 09/22/2005 week 4 NS2, 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 NS2, the networking code in Linux. Virtual Clock based control mechanisms. Likely to spill into next week(s). 10/13/2005 week 7 Midterm NS2, 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. --- Forouzan, TCP/IP 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. Wiley. (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. Books: Learning Perl. Randal Schwartz and Tom Christiansen O'Reilly. Programming Perl. Larry Wall and Randal Schwartz O'Reilly & Associates, Inc. Perl Cookbook Tom Christiansen and Nathan Torkington O'Reilly. (And more: see the NJIT Library, or see Amazon. There also is a ``Perl for Dummies''.) On the Web (Courtesy Mr Jain): http://www.comp.leeds.ac.uk/Perl/start.html http://cee.carleton.ca/~nholtz/cgi-bin/tutorial/Courses/Grad/1994-95/82.562/perl/index.html http://oopweb.com/Perl/Documents/ppp/VolumeFrames.html http://www.sunsite.ualberta.ca/Documentation/Misc/perl-5.6.0/pod/perlfunc.html http://www.cis.ksu.edu/Systems/Info/develop/perl.info.Top.html 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. http://lartc.org Saravanan Radhakrishnan (1999) Linux - Advanced Networking Overview Version 1. http://qos.ittc.ukans.edu/howto/ Glenn Herrin (2000) Linux IP Networking A Guide to the Implementation and Modification of the Linux Protocol Stack http://www.kernelnewbies.org/documents/ (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 seriously. |