Computer Networks

COS 461, Princeton University Spring 2015

This course studies computer networks and the services built on top of them. Topics include packet switching, routing and flow control, congestion control and quality-of-service, Internet protocols (IP, TCP, BGP), network security, network management, software defined networking, and the design of network services (multimedia, file and web servers).

Logistics

Contact:
Prof. Nick Feamster
310 Sherrerd Hall
<my last name>@cs.princeton.edu

Lead Instructor:
Sandra Batista

TAs:
Muhammad Shahbaz (Head TA)

Lab TAs:
Aaron Doll
Shaheed Chagani
Cody Wilson

Class Location and Time:
Mondays and Wednesdays, 10:00 am-10:50 am, CS 104
Friday Precepts: 10:00a (Friend 008), 11:00a (Friend 006), 1:30p (Friend 008)

Office Hours (subject to change; check Piazza for updates):
Nick: After each lecture in 310 Sherrerd.
Sandra: Wednesdays, 9-9:50 a.m., 12-1 p.m.; Thursdays 11-1 p.m. in Friend 010.
Shahbaz: Wednesdays, 5-6 p.m. in Sherrerd Hall (3rd Floor Lounge).
Aaron: Wednesday 2/11 6-8 pm in Friend 010.
Shaheed: Thursday 2/12 6-8 pm in Friend 010.
Cody: Tuesday 2/10 4:30-6:30 pm in Friend 010.

Course Format

The course will meet twice a week for 50-minute lectures. Additionally, there will be one precept per week.

Assignments for the course will be lab-based programming assignments.

Recommended Background

Prerequisite: COS 217. Although not required, taking either COS 318 or 333 before COS 461 is helpful for the programming assignments.

Grading

Grading is based on:

  • a midterm (20%)
  • a final exam (25%)
  • four programming assignments (12% each)
  • preparation for precepts (7%)

Late Policy

We understand that sometimes life events occur and that it's not always possible to meet every deadline. As such, we are willing to accept late assignments according to the following policy:

  • You start the term with a grace period "balance" of 96 hours.
  • Each assignment will be due at 11:59 p.m. (Princeton Local Time) on the due date.
  • For each assignment, every hour late (or fraction thereof) that you turn in the assignment will subtract one hour from your grace-period balance. For example, if you turn in your assignment at 1:02 a.m. on the date after the due date, we will count this as two hours against your grace period.
  • As long as your grace period balance is positive, you can turn in any assignment late without penalty.
  • Once your grace period balance reaches zero, you will receive half credit for any assignment that you turn in, as long as you turn it in within one week of the due date. If your grace period balance is zero and you turn in an assignment more than one week late, you will receive no credit for the assignment. Important: You must still turn in all assignments to pass the course, even if you receive zero points on an assignment. Turning in all assignments is a necessary condition for passing.
Excuses with medical documentation are a legitimate exception and will not count against your late period. Any other reasons for lateness---including but not limited to interviews, conferences, etc.---are not legitimate excuses and any resulting lateness will count against your grace period.

Honor Code

Students are expected to abide by the Princeton University Honor Code. Honest and ethical behavior is expected at all times. All incidents of suspected dishonesty will be reported to and handled by the office of student affairs. You are to do all assignments yourself, unless explicitly told otherwise. You may discuss the assignments with your classmates, but you may not copy any solution (or part of a solution) from a classmate.

Reading and Videos

Required videos: Prof. Feamster's Networking Videos. These videos are organized in a playlist that matches the syllabus topic schedule. Please watch the appropriate videos before lecture.

Required textbook: Computer Networks: A Systems Approach (5th edition), by Larry Peterson and Bruce Davie

Recommended Books: Other recommended textbooks for reference include:

Purchasing these books is not necessary; they will be on reserve in the engineering library, and online resources will be made available.

This schedule and syllabus is preliminary and subject to change. Reading assignments refer to the Peterson/Davie book (5th edition), unless otherwise specified.

Videos: In addition to the readings, you should watch the corresponding videos from the YouTube Playlist, before lecture. (Note: Some of the videos in the playlist will not be covered in the course. You are only responsible for the videos that are explicitly listed in the schedule. If you have a question about whether something is required, ask on Piazza, and we will clarify/update the syllabus below if there are mistakes.)

Where applicable, please watch all videos and read book sections before class.

Slides: All slides will be posted in this directory before lecture.

Date Modules Readings Assignment
February 2
  • Course Overview
  • History of the Internet
  • 1.3
  • Videos: 1

February 4
  • Architectural Principles
    • Packet Switching
    • End-to-End Principle
  • Videos: 2-19

February 6
  • Socket Programming

Programming Assignment 0 (Sockets)
February 9
  • Link Layer
    • Switching and Bridging
    • ARP, Hubs, Switches
    • Spanning Trees
  • 3.1.1, 3.1.4, 3.2.6
  • Videos: 20-28

February 11
  • IP Addressing
    • Classful Addressing
    • Allocation
    • CIDR
    • Longest Prefix Match
  • 3.2.1-3.2.5
  • Videos: 39-46
    (Optional: 47-56, 58)

February 13
  • HTTP
  • 9.1.2
  • Videos: 168-173

Programming Assignment 1 (HTTP Proxy)
February 16
  • Internet Routing Oveview
  • Intradomain Routing
    • Topology
    • Distance Vector
    • Link State
  • 3.3, 4.1
  • Videos: 64-71

February 18
  • Interdomain Routing
    • Route Attributes
    • Route Selection
  • 4.1.2
  • Videos: 72-77, 79
    (Optional: 78, 80)

February 20
  • Mininet and PoX

Mininet/POX Setup
February 23
  • Catch Up
  • Router design
    • Router architectures
    • Crossbar switching
  • 3.4


February 25
  • Queuing and Scheduling
    • FIFO
    • Fair Queueing
  • 6.2, 6.5
  • Videos: 88-92

February 27
  • Queuing and Scheduling
  • Bufferbloat
  • Videos: 208-210
Review of Routing
March 2
  • TCP and UDP
    • Reliable delivery
    • Connections
  • 5.1, 5.2



March 4
  • Congestion Control
    • Congestion Collapse
    • TCP Congestion Control
  • 6.3, 6.4
  • Videos: 34-38

March 6
  • Congestion Control

TCP Review
Programming Assignment 2 (Router)
March 9
  • DNS
    • Resolution
    • Nameserver hierarchy
    • Record types
  • 9.3.1
  • Videos: 59-63

March 11
  • Scaling Techniques
    • NAT
    • IPv6
  • 4.1.3
  • Videos: 43-44

March 13
Midterm

Midterm
March 23
  • Network Management Overview
    • Traffic Engineering
    • (Security)
  • Videos: 93-99, 57

March 25
  • Traffic Management
    • Classification
    • Shaping


March 27
  • Traffic Shaping Mechanisms
    • Token Bucket
    • Leaky Bucket

Bufferbloat and Congestion Activities
March 30
  • Software Defined Networking
    • Control-Data Separation
    • History of SDN

April 1
  • SDN Continued
    • OpenFlow
    • Match-Action Tables

April 3
  • SDN Controllers
  • Videos: 116-117
Scheduling and Shaping
April 6
  • Denial of Service Attacks
    • Overview
    • DDoS
    • Defenses
Programming Assignment 3 (Router)
April 8
  • Routing Security
    • Route Hijacks
    • BGPSEC



April 10
  • OpenFlow and SDN 

SDN Firewall Activity
April 13
  • Special Guests: NSA and Princeton IT Security: Internet Security in the Wild


April 15
  • DNS and Naming Security
    • Cache Poisoning
    • Amplification Attacks
    • DNSSEC

April 17
  • Router Design

Router Design
(Makeup of Feb 23)
April 20
  • Botnets and Application-Layer Attacks
    • Viruses and Worms
    • Spam, Phishing
    • Botnets
  • Cole: Chapter 19
  • Videos: 158-164

April 22
  • Network Virtualization
  • Videos: 123-127

April 24
  • Network Measurement
  • 9.4.1

Measurement
  • Videos: 108-112



April 27
  • Data Center Networking
    • Topologies
    • Routing
  • Barroso: Chapter 1, 3.3
  • Videos: 182-185, 189-190(Optional: 186-188)

April 29
  • Overlay Networks
  • Peer-to-Peer Networking
  • Content Distribution Networks
  • 9.4.1, 9.4.2, 9.4.3
  • Videos: 104-112, 174-181
Programming Assignment 4 (Measurement)
May 1
  • Course Review Session

Course Review/Practice Problems

Course Resources

Software Resources

Going Further (Optional)