CS 494/594: Internetworking Protocols (Winter 2008)


Course coordinates:
Monday/Wednesday 4:40pm-6:30pm
Neuberger Hall 241
Class e-mail/WWW:
pdx-cs594 at yahoogroups com
groups.yahoo.com/group/pdx-cs594
thefengs.com/wuchang/work/courses/cs594
Instructor:
Wu-chang Feng
wuchang at cs pdx edu
Office hours:
10:30am-12pm MW
120-17 FAB (4th Ave Bldg.)
TA:
Kathryn Mohror
kathryn at cs
Office hours:
Office Hrs: 10-11am Tuesday
              2:30-3:30pm Friday
Outside of FAB 120
Required book: Computer Networking: A Top-Down Approach (4th ed) James Kurose, Keith Ross

Lecture Material
The course will use the slides below which are a modified version of the textbook's slides.  The course will cover the first 5 chapters of the textbook with additional material added at the end of the course as needed.

Chapter 0 (ppt | pdf) About the course
Chapter 1 (ppt | pdf) Internet overview
Chapter 2 (ppt | pdf) Application layer
Chapter 3 (ppt | pdf) Transport layer
Chapter 2 and 3 review by example (ppt | pdf) Midterm Exam
Chapter 4 (ppt | pdf) Network layer (4 lectures)
Chapter 5 (ppt | pdf) Data link layer (2 lectures)
Protocol perils (ppt | pdf) (1 lecture)
Exam review
Final exam (Last day of class)
Final project


Homeworks and programming project
Homework #1 (Chapter 1)
  • R11, R12, R13, R15, R23, R25, P16, P18
  • WireShark lab
    • Available from on-line textbook resources or from "Files" section of course group.
    • Getting Started: 1-4
Homework #2 (Chapter 2)
  • R19, R27, P1, P6, P7, P8, P15
  • WireShark labs
    • DNS: 1-10, 16-19
    • HTTP: 1-11, 16-17
Homework #3 (Chapter 3)
  • R3, R4, R7, R8, R9, R10, R15, P14, P20, P26
  • WireShark lab
    • TCP: 4-6, 8-11, 13
  • Source code grok:
    • Copy of Linux source tree: zip (33MB)
    • A) Within the Linux source tree, find and list the function that implements Karn's and Jacobson's RTT estimator algorithm.
    • B) Within the Linux source tree, find and list the function that transitions a TCP socket into the listen state.
Homework #4 (Chapter 4)
  • R3, R15, R21, P14, P22, P27, P28
  • WireShark labs
    • DHCP: 1, 4, 5, 7-8, 12-13
    • ICMP: 1-4
    • IP: 1-9
  • Source code grok:
    • A) Within the Linux source tree, find where ICMP TTL messages are generated.
    • B) Within the Linux source tree, find where IP fragmentation is implemented
Homework #5 (Chapter 5)
  • R3, R7, R9, R13, P5, P20, P21
  • WireShark lab
    • ARP: 1-7, 12, 16
  • Source code grok (Extra credit worth 10% of Homework #5):
    • A) Using Google or the Linux man pages, find out where in /proc the arp cache timeout value can be found
    • B) What is the default linux timeout for arp cache entries?
    • C) Within the Linux source tree, find and list the struct where this timeout is defined
    • D) Within the Linux source tree, find and list the function that implements the timeout
Programming project: A networked game

You are to implement a multiplayer game, specify a network protocol for supporting the game on-line, and implement the protocol faithfully in a programming language of your choice. 

Rules and requirements
  • The game and protocol should support text messaging amongst its participants.
  • The protocol should be concise, sending only data that is necessary.
  • An RFC-style protocol specification should be provided that describes the protocol.  That is, the format of the messages that the client and server will exchange in order to properly implement the game.
  • An electronic copy of your commented source code should be provided to the instructor
  • To discourage plagiarism, a demo and code walkthrough will be given to the instructor.  You will be asked specific questions about the code that you are expected to be able to answer.
Due dates
  • Source code and protocol specification tarball
    • Due by 11:59pm on 3/19/2008
    • Follow submission instructions here
  • Project demo and code walkthrough
    • IMPORTANT: You should set up and have your demo working *before* your time slot.
    • E-mail me 3 available timeslots you can make
    • Demo time slots 3/13 : FAB 120-17
      •  5:00pm- 5:20pm: Lucas Suggs
    • Demo time slots 3/19 : FAB 86-01
      •  3:20pm- 3:40pm: Eric Day
      •  3:40pm- 4:00pm: Ramya Chandrasekar
      •  4:00pm- 4:20pm: Weiye Zhou
    • Demo time slots 3/20 : FAB 86-01
      •  1:20pm- 1:40pm: Emma Kuo
      •  1:40pm- 2:00pm
      •  2:00pm- 2:20pm
      •  2:20pm- 2:40pm
      •  2:40pm- 3:00pm: Jaredine Koh
      •  3:00pm- 3:20pm: Timothy Welbourn
      •  3:20pm- 3:40pm: James Steele
      •  3:40pm- 4:00pm: Steven Bokma
      •  4:00pm- 4:20pm: Michael Laskowski
      •  4:20pm- 4:40pm: Amit Hulme
      •  4:40pm- 5:00pm:
      •  5:00pm- 5:20pm:
      •  5:20pm- 5:40pm: Lorraine Stauf
      •  5:40pm- 6:00pm: Sutheera Hengcharoen
    • Demo time slots 3/21 : FAB 86-01
      •  1:00pm- 1:20pm: Alexandr Ruban
      •  1:20pm- 1:40pm: Artur Perez
      •  1:40pm- 2:00pm
      •  2:00pm- 2:20pm: Paul Burrows
      •  2:20pm- 2:40pm
      •  2:40pm- 3:00pm
      •  3:00pm- 3:20pm
      •  3:20pm- 3:40pm
      •  3:40pm- 4:00pm
      •  4:00pm- 4:20pm
      •  4:20pm- 4:40pm: Patrick McCormick
      •  4:40pm- 5:00pm: Akkshayaa Venkatram
      •  5:00pm- 5:20pm: Gurkan Erenoglu
      •  5:20pm- 5:40pm: Eliseo Hernandez
      •  5:40pm- 6:00pm

Grading
You will be graded based on the following criteria
  • The quality and functionality of your protocol and protocol specification.
  • The quality and functionality of your source code implementation including proper handling of error conditions, modular design, and program efficiency.
  • The quality of your project demo
  • The quality of your code walkthrough

Project options

There are two options you may choose from for your project:

Option #1 (Networked Sudoku) : You are to implement a client-server game in which multiple players compete to solve a shared Sudoku puzzle.  Players can either take turns or simultaneously attempt to solve the puzzle.  Scoring may be based on the time elapsed or the number of correct/incorrect guesses a player has provided and is left up to you to provide.

Option #2 (Your own game) : You may implement any other multi-player game of your choice that has equivalent or greater complexity.  If you have doubts as to whether the game you've chosen is sufficient, contact the instructor by the third week of class.

Sample Exams: MidTerm Exam | Final Exam
Evaluation
Midterm exam = 35%
Final Exam = 35%
Homework = 10%
Programming Project = 20%

Course objectives
This course is an introduction to the protocols that make today's Internet work and is intended for students who have programming experience in high-level programming languages.  At the end of the course, students will understand how the Internet's protocols work together to create the networked applications that are in use today.  Specifically, by the end of the course, you will know...