CS 519: Computer Networks


B17 Upson Hall; MW 2:55 – 4:10

Spring, 2004

Professor Paul Francis

Assignment and regrades using CMS:  http://cms2.csuglab.cornell.edu/

Course discussion and announcements on Netnews at cornell.class.cs519 (see http://adm/Newuser/newsgroups.htm, or https://www.cs.cornell.edu/techsupport)

Professor Paul Francis

5-9223, Upson 4108
Office hours: Mon 4:15-5:30, Fri 3:00 – 4:00

TA: Manpreet Singh

426 Rhodes Hall
Office hours:  TR 2:30 - 3:30 (426 Rhodes)

TA:  Hitesh Ballani      hitesh@cs.cornell.edu

5132 Upson Hall
Office hours:  WF 1:30 - 2:30 (UPSON 5132)

TA:  Mehmet  Fidanboylu mehmet@cs.cornell.edu

492 Rhodes Hall
Office hours:  M 5:30 – 7:30 (Rhodes 492)

Undergrad TAs:  Rohan Murty (rnm5@cornell.edu) and Joe Hoegler (jdh46@cornell.edu)

Course Text:  Larry Peterson, Bruce Davie 

Computer Networks:  A Systems Approach, 3rd Ed.

Course Lab:  CSUG Lab and a Linux server cluster for simulations (donated by Intel®)


Course Description

My goals for you in this course are:

·        To have a deep understanding for the basic architectural principles of computer networking

·        To understand good network and networked application design:  simplicity, scalability, performance, and the end-to-end principle

·        To understand specifically how the Internet works today, and where it is going in the near future

In addition to lectures, textbook reading, homework assignments, and exams, this course will have several hands-on project assignments.  These will consist of networks measurements (using Ethereal, ping, and traceroute), network simulations (using the NS2 simulator on a Linux server cluster donated by Intel®), and network application programming.  The network simulations will require TCL scripting and some C++.  I’m not assigning a single large project, but rather a number of small projects assigned throughout the semester.  You will be expected to complete these “class-defined” projects individually (not in teams), though consultation with fellow students is allowed.

As an alternative to the “class-defined” projects above, students may do a “self-defined” project of their choosing, as long as it is approved by the instructor.  This project may be done in teams of up to three, and may be taken for combined MEng (CS790) and CS519 credit.  This project does not have to be decided upon at the start of class.  You may decide to start a self-defined project even after completing some of the class-defined projects, as long as the self-defined project requires about the same amount of effort as the remaining class-defined projects.

There will be two exams: a midterm and a final, both in-class, open-book, open-notes.  However, the only book you will be allowed to bring into class is the assigned text.  Notes will be limited to a single binder.  There will also be written homework assignments most weeks.  The answers to these will be discussed in the class after the due date.

The course lectures will fairly closely follow the contents of the textbook.  Though this list is subject to minor revision, I plan to cover the following topics:

·        Architecture:  Packetization, Protocol layers and services, End-to-end principle, Internet structure, Naming, Addressing, and Routing, Reliability, Queuing, Tunneling

·        IP:  Addressing (Realms, subnets, hierarchy, NAT), Routing (Link state/Distance Vector, RIP, OSPF, BGP), Packet handling (fragmentation, ICMP), IPv6, tunneling, multicast, anycast, mobile IP

·        Network Services:  DNS, NTP (Network Time Protocol), Authentication (RADIUS, and PPP), Address assignment (DHCP and PPP), Address resolution (ARP)

·        Transport:  Ports, TCP (sequencing, handshake, state machine, windowing, congestion, fairness, various flavors), UDP, SCTP

·        Socket programming:  socket model, options, performance

·        Network management and provisioning:  SNMP, Netflow, tools

·        Applications and overlays:  Email, HTTP, Netnews, Internet Relay Chat (IRC),

·        Overlays:  Gnutella/Kazaa, overlay multicast, RONs (Reliable Overlay Network), I3, DHTs (Pastry/Chord/Kademlia)

·        Security:  Authentication, Encryption, Denial-of-Service, Firewalls, VPN (Virtual Private Networks)

·        Traffic:  Queuing models, packet dropping models, workloads

·        Switch architecture:  routers and switches

·        Link and Access technologies:  Wireless LANs (access, security), LANs, DSL, subscriber aggregation

Important Dates:

·        Midterm Exam:  Wednesday March 17, during normal class hours

·        Project 3 due date:  April 16  Changed to April 23, midnight

·        Project 4 due date:  May 7  Canceled!

·        Project speed test due date:  May 7

·        Both extra credit projects (RIP and TCP) due date:  May 7

·        Final Exam: 

CS 519



Olin 255


MEng Extra Projects:


I am offering two extra projects that can be done for MEng credits.  The TCP project (updated version!) can be done for 4 CS790 credits, and the RIP routing project (updated version!) can be done for 3 CS790 credits (both single person).  Both of these descriptions are preliminary.  But both provide enough so that you can get started.  In a few weeks I will provide details as to the testing and so on.


Lectures, reading, homework assignments, and project descriptions



Required Reading

Additional Reading


Intro to the Course (1spp): Logistics of the course itself




Introduction to Computer Networking (part 1) (1spp):  Networks, Circuit versus Packet, Latency, Dropping, and Jitter, Packets and protocols, protocols stacks

Sections 1.1 – 1.3



Introduction to Computer Networking (part 2) (1spp):  Note that the lecture posted 1/25 has now been split, and some material added to each part.

Sections 1.5 – 1.6



Internet Protocol (IP):  (1spp):  End-to-end argument, IP design goals, IP header, ICMP

Sections 4.1.1-4.1.3

Original E2E Argument

2/4, 2/11

Internet Protocol (IP) Part 2 (1 slide per page):  Subnet address resolution, structure of the Internet, structure of IP addresses

The rest of section 4.1, 4.3.1, and 4.3.2


Homework assignment 1:  Due midnight 2/8/04.  You will need to submit your answers via CMS.  I’m only assigning this via the webpage for the convenience of those of you who still don’t have CMS access.  Normally homework will not be posted on the website.  (Answer to homework 1)  (1spp)


Sockets Programming (1 slide per page):  Everything you need to know to do the first programming project!

Section 1.4



IP forwarding (part 1, revised, part 2) (1spp, 1spp):  Structure of the IP forwarding table (hierarchical best match first)

Sections 2.1 – 2.4



IP routing (part 1) (1spp):  IP routing architecture

4.3.3, 4.3.4


Project 2 Description:  UPDATED!  Project 2 will be due midnight Friday March 12.  RFC 768 (UDP) and RFC 791 (IP) are the definitive specs.  You can use other texts as well (Stevens, for instance).  The test code is here (fast) and here (slow).  The command for executing the test code is:

 ./test2r_slow ip_address port

(likewise for test2r_fast).


IP routing (part 2) (1spp):  Graphs and trees, distance vector and path vector routing

4.2.1, 4.2.2



IP routing (part 3) (1spp):  Link state routing




IP routing (part 4) (1spp):  OSPF




IP routing (part 5) (1spp):  BGP


BGP overview (optional)


Transport (part 1) (1spp):  Port numbers and muxing, stop-and-wait and sliding window flow control algorithms

Sections 2.5, 5.1, and 5.2



Transport (part 2) (1spp):  TCP mechanics:  sockets use, connection state machine, flow control




Transport (part 3) (1spp):  TCP performance:  header compression, silly windows, RTT estimation, fast retransmit




Transport (part 4) (1spp):  TCP congestion control:  slow start, AIMD (Additive Increase Multiplicative Decrease), fast recovery, RED, ECN

Sections 6.1 – 6.4


Project 3 Description (4/9):  This project description is no longer “preliminary”.  I have added a figure showing what the test is trying to emulate.  (Just to be clear, the test box will not send mal-formed packets, nor fragmented packets.)

This is a zip of the test box binaries for all versions:  online-binaries.zip (4/13)  

The logging function on version5 is now enabled (4/15)

n      All five versions of test box are running on the same machine snoopy.csuglab.cornell.edu (address
-- The port numbers for version1, through version5 are 10002, 10004, 10006, 10008, and 10010 respectively.
-- The five versions are in increasing order of difficulty. So, start with version1, then version2 and then version3, etc.

n      Version5 is expected to be the final version.  Your grade for this project will depend on the highest version number you pass.

3/31, 4/3, 4/5

QoS (part 5) (1spp):  QoS and Queuing.  Fair Queuing, Intserv, Diffserv, Equation-based congestion control.

Sections 6.5 – 6.6


4/7, 4/12

Naming (1spp):  Names, addresses and routes.  DNS

Section 9.1


UPDATE (4/24/04):  Speed test available now.  Description is updated::  spasgn1.pdf     Binary is also updated:   http://www.cs.cornell.edu/~mehmet/speedtest


Firewalls and NATs (1spp):  First of the security lectures.  Covers Firewalls and NAT boxes (though the latter isn’t really security…it just runs in the same box).

Sections 8.2, 8.4


4/26, 4/28

VPNs (1spp):  All about VPNs.  Along the way, we’ll discuss IPsec, MPLS, and VLANs

Sections 8.3, 8.5, 4.5, 4.6



Guest lecture from Dan Eckstrom, CIT




Introduction to Media over Internet (1spp):  E2E aspects of running media over the Internet.  Real Time Protocol (RTP), Session Initiation Protocol

Section 9.3




About the Instructor

Prof. Francis has nearly 20 years experience in Internet research, mainly in industry labs (MITRE, Bellcore, NTT Labs, ACIRI).  He has recently spent several years in startups (Fast Forward Networks and Tahoe Network).  He has a dozen national and international patents, and has served on several standardization committees (IETF and OSI).  As such, Prof. Francis brings a good blend of research and practical experience into the course.  Dr. Francis is the inventor of a number of key Internet technologies and ideas, many of which that have been deployed, including:  Network Address Translation (NAT), which is the primary technology responsible for extending the IP address space beyond its 32-bit limitation and allowing continued growth of the Internet.  Internet Distance Maps (IDMaps), which was the first infrastructure system allowing end-hosts to discover their network proximity to each other.  End-system overlay multicast, in the form of an operational system called Yoid.  The multiple-addresses approach to multi-homing, which is the basis for scalable routing in IPv6.  Shared-tree multicast, which was the basis for the IETF PIM-SM IP multicast standard.  Shortcut routing, which was the basis for the IETF routing over large non-broadcast subnetworks (i.e. ATM) standards.  Landmark routing, a novel approach to self-configuring routing hierarchies.  Variations of this approach are proposed for ad hoc mobile networks today.




Last modified 5/4/2004