Computer Networks

Computer Networks

527, Fall 2015, Ivan Beschastnikh (bestchai@cs.ubc.ca)

Tues/Thur 3:30-5:00PM, ICCS 206, UBC course page

Course piazza

Office hours by appointment


Course description

Computer networks and protocols are critically important to modern life. They range from the small (set of peripherals in a laptop) to the very large (the world wide web), and are also extremely diverse. Yet, at their core, all computer networks have similar challenges, such as addressing and naming the entities in the network. The focus of this course is to explore the broad diversity of computer networks through a series of research papers. Each week (2 class sessions) will focus on a particular networking topic. The course will especially emphasize re-occurring challenges and approaches that appear across topics.

This course satisfies the PhD "Computer Systems and Design" breadth requirement.

Course-level learning goals

The course will provide an opportunity for participants to
  • understand key principles involved in designing and implementing network architectures and protocols
  • reason about challenges that are inherent to all computer networks
  • develop advanced networked systems

Format

This seminar-style course will be primarily driven through in-class discussion of the readings. Most of the readings will be research papers; there is no textbook for the course. The course will also include an open-ended course project that must be completed as part of a team, and a final take-home exam.

  • The discussion in each class will focus on 1-2 papers
  • The discussion for each paper is led by two students, an advocate and a skeptic
  • Everyone except for the paper advocate and skeptic writes a review of each of the assigned papers, due at 9PM the day before class

Advocate and skeptic are in charge of leading the discussion for a paper. Do not use slides. Instead, give a concise summary of the reading and pose questions to dig deeper into why the paper was written, what can we take away from it, how does the paper relate to the course, why it is or is not the final word on the subject, etc.

Advocate and skeptic need to review any other paper(s) that are discussed on same day, but they do not need to write a review for the paper they are leading.

Schedule (a work in progress)

Sep 10
Thu
Introductions, course overview, and academic paper reading
  1. Keshav. How to Read a Paper.
  2. Roscoe. Writing reviews for systems conferences.
Do not write reviews for these readings.
Sep 15
Tue
Internet architecture
  1. David Clark. The Design Philosophy of the DARPA Internet Protocols. Sigcomm 1988.
  2. Saltzer et al. End to end arguments in system design. TOCS 1984.
A1: Ivan
S1: Peter

A2: Jianing
S2: Sam
Sep 17
Thu
Routing: wired
  1. Khanna and Zinky. The Revised ARPAnet Routing Metric. Sigcomm 1989.
A1: Lynsey
S1: Prithu
Sep 22
Tue
Routing: wired
  1. Balakrishnan. Interdomain routing. (background, no review)
  2. Savage et al. The End-to-End Effects of Internet Path Selection. Sigcomm 1999.
A2: Ritika
S2: Ivan
Sep 24
Thu
Routing: wireless ad hoc
  1. Johnson and Maltz. Dynamic Source Routing in Ad Hoc Networks. Mobile Computing 1996.
A1: Giovanni
S1: Sam
Sep 29
Tue
Transport: congestion control
  1. Jacobson. Congestion Avoidance and Control, Sigcomm 1988 (revised).
  2. Demers, Keshav, and Shenker. Analysis and Simulation of a Fair Queueing Algorithm. Sigcomm 1989.
A1: Sam
S1: Issam

A2: Halldor
S2: Prithu
Oct 1
Thu
Transport: streams
  1. Ford. Structured Streams: a New Transport Abstraction. Sigcomm 2007.
Project proposal drafts due Oct 2.
A1: Peter
S1: Daniel
Oct 6
Tue
Wireless: mobility and hidden terminals
  1. Snoeren and Balakrishnan. An End-to-End Approach to Host Mobility. Mobicom 2000.
  2. Gollakota and Katabi. ZigZag Decoding: Combating Hidden Terminals in Wireless Networks. Sigcomm 2008.
Ivan away. Yanyan Zhuang leading class.
A1: Wali
S1: Ivan

A2: Peter
S2: Ritika
Oct 8
Thu
Wireless: privacy
  1. Pang et al. 802.11 User Fingerprinting. Mobicom 2007.
Ivan away. Yanyan Zhuang leading class.
A1: Prithu
S1: Giovanni
Oct 13
Tue
Naming: cooperative DNS
  1. Ramasubramanian and Sirer. The Design and Implementation of a Next Generation Name Service for the Internet. Sigcomm 2004.
A1: Ivan
S1: Jianing
Oct 15
Thu
Naming: mobile
  1. Adjie-Winoto et al. The design and implementation of an intentional naming system. SOSP 1999.
Project proposals due Oct 16.
A1: Jianing
S1: Wali
Oct 20
Tue
Routing diagnosis
  1. Katz-Bassett et al. Studying black holes in the Internet with Hubble. NSDI 2008.
  2. Katz-Bassett et al. Reverse traceroute. NSDI 2010.
A1: Ivan
S1: Halldor

A2: Prithu
S2: Peter
Oct 22
Thu
Routing failure remediation
  1. Katz-Bassett et al. LIFEGUARD: Practical Repair of Persistent Route Failures. Sigcomm 2012.
A1: Daniel
S1: Lynsey
Oct 27
Tue
Data center network architecture
  1. Greenberg et al. VL2: A Scalable and Flexible Data Center Network. Sigcomm 2009.
A1: Sam
S1: Halldor
Oct 29
Thu
Data center transport
  1. Alizadeh et al. Data center TCP (DCTCP). Sigcomm 2010.
Send email to Ivan to set up meeting about project by Oct 30.
A1: Jianing
S1: Kuba
Nov 3
Tue
Software defined networking
  1. Gude et al. NOX: Towards an Operating System for Networks. Sigcomm CCR 2008.
  2. Koponen et al. Onix: A Distributed Control Platform for Large-scale Production Networks. OSDI 2010.
A1: Daniel
S1: Wali

A2: Lynsey
S2: Giovanni
Nov 5
Thu
More software defined networking
  1. Foster et al. Frenetic: A Network Programming Language. ICFP 2011.
A1: Kuba
S1: Peter
Nov 10
Tue
Middleboxes
  1. Sherry et al. Making middleboxes someone else's problem: network processing as a cloud service. Sigcomm 2012.
Ivan away. Peter Chen leading class.
A1: Halldor
S1: Jianing
Nov 12
Thu
Middleboxes
  1. Sherry et al. Rollback-Recovery for Middleboxes. Sigcomm 2015.
Ivan away. Peter Chen leading class.
A1: Halldor
S1: Wali
Nov 17
Tue
Alternate architectures: active networks
  1. Wetherall. Active network vision and reality: lessons from a capsule-based system. SOSP 1999.
A1: Kuba
S1: Ivan B.
Nov 19
Thu
Alternate architectures: indirection
  1. Stoica et al. Internet Indirection Infrastructure. Sigcomm 2002.
A1: Sam
S1: Daniel
Nov 24
Tue
Security: spam and wireless
  1. Ramachandran and Feamster. Understanding the Network-Level Behavior of Spammers. Sigcomm 2008.
  2. Recommended reading:
    Borisov et al. Intercepting Mobile Communications: The Insecurity of 802.11. Mobicom 2001.

A1: Lynsey
S1: Prithu

Nov 26
Thu
Security: worms
  1. Staniford et al. How to 0wn the Internet in Your Spare Time. USENIX Sec. 2002.
Project code and final reports due Nov 27.
A1: Wali
S1: Ivan B.
Dec 1
Tue
Internet evolution
  1. Clark et al. Tussle in Cyberspace: Defining Tomorrow's Internet. Sigcomm 2002.
  2. Recommended reading:
    Handley. Why the Internet only just works. BT Technology Journal 2006.

A1: Daniel
S1: Lynsey

Dec 3
Thu
In-class project presentations
Dec 7
Mon
Take-home final exam posted to piazza by 5PM
Dec 11
Fri
Final exam solutions due by email at 5PM

Paper reviews

For each of the assigned readings in the schedule above you must compose a review/critique. (The schedule sometimes lists optional readings; you do not need to review these). I should receive your reviews by email to bestchai@cs.ubc.ca by 9PM the day before the class in which they are discussed. Use one email per paper and for these emails use the subject line: CPSC 527 paper review: NAME, DATE where NAME is your name and DATE is the DATE the paper is discussed in the course. I will collect all of the received paper reviews the following morning and post them to Piazza.

Each paper review must be in the body of the email, in plain text and not as an attachment, and must include (1) a paper summary, and (2) a review of the paper. Aim for a 1-2 paragraph summary and a 3-4 paragraph review. Reviews should engage with the reading at a deep level. Write your review with an eye towards contributing something interesting to the discussion in class the following day (see advice below).

The summary portion of the review is required, but it will not be graded. The review portion of the paper review will be graded using the following scale:

  • 3 : the review engages with the reading in great depth
  • 2 : the review engages with the reading in some depth
  • 1 : the review is shallow, for example it is a summary of the reading
  • 0 : no review was posted, or the review is unreadable, off topic, or offers no insight into the reading and/or is a simple re-statement of some text in the reading (e.g., the abstract).

Late reviews will lose 1 point for every 12 hour period that the review is late.


Paper reviews advice

Reviews should engage with the reading at a deep level. Write you review with an eye towards contributing something interesting to the discussion in class the following day.

List of questions to help you write you review.
  • Why was the paper written? What problem does it solve? Does it completely solve the problem; under what circumstances? Why is the problem interesting/important?
  • How is the paper topic relevant to us today?
  • What question would you want to ask the authors, and why?
  • Why are we reading this paper? What can we take away from the paper? How did the paper change your perspective on computer networks?
  • Is the paper the final word on the subject? What are some questions that it brings up?

Other bits to keep in mind.

  • Your review mark depends primarily on the content in the detailed review field, not the summary field.
  • The summary of the paper should go into the summary field. The review should go into the review field. Avoid reviews that are summaries of the paper. In your review I want to see that you thought critically about the paper and what the paper has to offer.
  • I am interested in reading about what you think, not what the authors think. Therefore, a successful review would primarily revolve around your ideas/thoughts about the paper.
  • Make your words count. A longer review is not necessarily a better review.
  • Focus on a few specific, technical, aspects of the paper. Avoid making general claims/comments about the paper.
  • Spend the time to thoroughly discuss the issues/ideas that you do raise. It is better to have 1 interesting well-discussed idea, rather than 5 short and fragmented bullets. Aim for a cohesive narrative.
  • Avoid meta comments (e.g., "paper needs more figures"). If you want to make a meta comment/question about the reading, then make it as specific as possible and interesting to the rest of us.
  • When critiquing an aspect of the paper (e.g., no message loss/FIFO queues/etc are unrealistic) consider why the authors ignored these issues (perhaps these are not fundamental to the problem that they are solving?). It also helps to think about how you would overcome these issues (again, I'm much more interested in your thoughts/solutions, then blanket criticisms).
  • Every paper has shortcomings, so if you do bring up a shortcoming, then make sure that your detailed review discusses/reflects on the shortcoming in a non-trivial manner. For example, simply stating that "it was not clear how 30s delay was computed" is not sufficient. You need to talk about why you think the authors decided not to solve this problem, why this problem is worth solving, what are the implications of not solving this problem in this specific system, etc. Finally, when you do bring up shortcomings, make sure to bring up shortcomings that are fundamental, and not those that can be easily remedied.

Project

The project must address a non-trivial problem relevant to computer networks and must be done in a team of 2 or 3 students.

There are four project deliverables:

  • Project proposal: a paper detailing the problem, your proposed approach/solution, and a realistic timeline for your team. See more proposal advice below.
  • Prototype implementation: must involve substantial development effort. The final prototype must be shared with the instructor (at the end of the term), preferably as an hg or git repository.
  • Project presentation: a 10-15 minute presentation describing your project. Plan the presentation so that each team member talks for 5 minutes. The presentation will be followed by a 5 minute Q/A period. I encourage you to demo your project during the presentation.
  • Project report: a paper detailing the problem, your approach/solution, your prototype, and an evaluation of the prototype. The final report (due at the end of the term) should be no longer than 10 pages and should resemble a research paper.

The project is structured as a series of regularly occurring deadlines, listed in the schedule above and below. Do not miss these! The deadline deliverable must be submitted by email to the instructor by 9PM of the day of the deadline.

  • Oct 2 : Project proposal drafts
  • Oct 16 : Project proposals
  • Oct 30 : Each team must send email by 9PM to schedule a private meeting with instructor to discuss project status.
  • Nov 27 : Project code and final reports


Project proposal advice

A project proposal details the problem, your proposed approach/solution, and a realistic timeline for your team. The proposal must be no longer than 5 pages and must include at least the following sections: introduction/motivation, background, proposed approach/solution, evaluation methodology, timeline.

  • The timeline must include dates and milestones/deliverables. It must be sufficiently refined to include milestones that are specific to your project. Do not simply list the deadlines for the course without listing the internal project deadlines. The timeline is there to get you to think about your time and to loosely commit to a schedule.
  • This is a computer networks course, so make sure that your proposal is focused on issues/challenges/objectives relevant to this topic.
  • The bulk of a proposal must be dedicated to design: what will your system/approach look like, what properties will it have, what features will it include/omit. Who are the users/clients of your system (wireless phones, or people, or network routers)? How will clients interact with your system, etc. This section is more critical than related work, or introduction/motivation. Writing this section well is difficult; spend the time to do a good job on it.
  • It is important to omit content that is irrelevant to your proposal. Before including text, consider whether or not it plays a purpose in explaining your proposed system and its objectives. If not, then it can probably be cut.
  • Consider giving your project/system a name. This way you can easily refer to it in your proposal.
  • Your project can re-use external code/algorithms/ideas that you find online. Leverage prior work and build on it to avoid re-inventing the wheel and to get to interesting ideas quicker.
  • Make sure to define non-standard/specialized terms, include examples, and intuition -- anything to help get your ideas across. This work will pay off in the long term: (1) it will get you think more deeply about your work, and (2) you can re-used it in the project write-up and project presentation.
  • Make sure there is logical flow to your proposal. Define terms before you use them, motivate particular perspectives before launching into details, discuss prior work necessary to understand your proposal before you rely on it for your descriptions. Your proposal has to be self-sufficient, with citations to back-up your arguments. However, do not rely on related work to explain concepts that are critical to your proposal.
  • Consider including info-graphics/figures to explain your design. Sometimes it is easier to explain a complex idea with a picture. Likewise, don't hesitate to include formalism/math to explain your ideas (though, be careful with including formalism for formalism sake -- make sure it helps to explain rather than confuse the topic).
  • A well thought-out and detailed proposal will only benefit your group in the long run -- you'll have a more clear idea of what to work on!


Final report advice

The 10 pages should include title page and appendixes. I prefer that you style your paper in ACM latex format.

  • Your report should have all of the essential sections that a research paper has: title/authors/abstract/introduction/methodology-evaluation/related work/conclusion/references.
  • The report may have other, optional sections, that we've seen in research papers: motivation/design/implications/discussion/future work/etc
  • The report must properly motivate the research problem you have attempted to answer. Spend at least 1-2 pages motivating the problem (just look at any of the paper we have read this term). You should do this in the introduction, though many papers also have a separate "motivation" section or similar to motivate/introduce the problem in more detail.
  • The report must motivate/introduce a problem that you actually solve. Make sure you are not motivating a different problem than what you solved (a common mistake). It helps to connect the problem to a broader context from the very start (see last bullet below).
  • You must somehow argue that you have solved the problem. There are many ways to do this. If your problem was algorithmic/theoretical then you may have a proof. If your problem was empirical (e.g., what fraction of traffic on campus is due to BitTorrent) then you should have measurement study/results. If your problem requires a new system, then you should have built a system and demonstrated that it is the right system. Etc.
  • Any empirical evaluation results must have a proper methodology to introduce the results. What was the goal of the evaluation? How did you translate the research question into evaluation questions -- why did you measure what you measured? How did you select the subject programs/networks/people/devices/etc and why? Typically, the more information you provide to describe the experiments, the better. But, it requires careful judgment to report just the important details.
  • You must have some related work. The project for this class does not need to be a novel research project. But, it helps to position your work in the context of existing research. What is the closest work to your project? How is your work different? I don't expect you to do an exhaustive literature survey, but I would like to see at least half a page of related work discussion. Aim for maximum a page of related work.
  • I recommend that you find 1-2 papers that we read that tackle a similar problem or use similar methodology. Then, consider how these papers structured the motivation and the presentation of the solution/argument. Don't hesitate to adopt/copy their structure/form.
  • A good project report usually, at some point, takes a step back from the low-level details of the work and considers the broader context. It would be great if you can do this in your work. Show me that you can think more broadly, beyond your project and that you can identify implications of your work for other networking technologies/contexts/problems. Think of it this way: if the reader is generally interested in networks and not in the concrete problem that you solved, then what can they take away from your work? Typically this kind of discussion starts in the introduction, may appear in brief snippets throughout the paper (to connect the low-level details to a larger focus), and then picks up again in the discussion or the implications section.

Final presentation advice

Project presentations are 5% of your course grade. Considering the short length of the presentation (just 5 minutes per person!) it is easy to assume that this is an easy 5% to attain. This is a mistake -- good presentations, and especially short presentations, are difficult to create and require substantial effort. Below I list some suggestions on how you can improve your presentation on Dec 3rd:

  • Follow general research talk presentation advice. There is a lot of advice on the web. Here are some good links to get your started: [1] [2] [3] [4]
  • You have just 5 minutes, I expect those 5 minutes to be polished:
    • Practice your talk. Many, many times. After all, it's so short!
    • You should be engaging; staying engaging for 5 minutes is not that difficult.
    • Stay within the time limit
    • You should not search for words -- you don't have time for that!
  • Your group's talk should be coherent:
    • Each person has 5 minutes, but the overall talk needs to make sense and flow naturally
    • Divide the content in a way that makes sense: don't present parts of the project you don't know
    • Make sure the talk has a small number of points that you want the audience to take-away/learn
    • Be consistent in your message from one presenter to the next

Final exam

Download: practice final, actual final.

Exam tips

  • Almost any topic can go with any paper. But, you have to think deeply about how their relate.
  • Check that the topic is not explicitly handled in the paper before you go too far.
  • Don't extend the topic too much (e.g., censorship is not the same thing as security).
  • The topics on their own are topics, not problems. The technical issue must relate to the topic, but it's not going to simply emerge from the topic or the paper. The issue will emerge from the intersection of the two.
  • Yes, choosing the right issue to write about is a difficult part of the final. It is worth it to spend the time to do this well.

Grading

Final course mark will be based off of:

  • Class participation: 20%
  • Paper reviews: 30%
  • Project: 35%
    • Proposal: 5% (team)
    • Presentation: 2.5% (team) + 2.5% (individual)
    • Final report: 25% (team)
  • Final exam: 15%

Note that the project must be a team effort. The team's mark for the proposal and final report is the same for all team members. For project presentations each team member will receive a team mark and an individual mark.

The mark for class participation is based on three factors:

  • Regular course attendance
  • Regular participation in the in-class paper discussions
  • Leading of discussion for advocate/skeptic assignments

How to do well in this course

Be prepared to participate in in-class discussion. This is a seminar-style course, which means that most of the class time will be devoted to discussion. The best way to prepare for class is to read the assigned paper(s), write a thoughtful review, and then read and carefully consider the reviews submitted by your peers. Periodically re-read the readings from the first day of class and work to improve your paper reading and reviewing abilities.

Plan you reading time. The readings will likely challenge you. I recommend allocating an explicit time slot each week for reading the papers and for thinking about the papers. Note that some readings will be more difficult than others. Jump ahead and note the readings that are particularly long, theoretical, or may be especially challenging to you.

Invest time into the project. Do not underestimate the importance of a thorough (and interesting!) project proposal. Proposal write-ups that are vague or are incomplete will not be accepted. Put in consistent and weekly effort into the project. Rehearse and polish your presentation, and make sure your final report is well-written and conveys its ideas clearly.

Reach out for success. There are no explicit office hours for this course. Email and schedule a time to meet with the instructor to discuss the course, the project, etc. University students often encounter setbacks from time to time that can impact academic performance. Discuss your situation with your instructor or an academic advisor. Learn about how you can plan for success at: www.students.ubc.ca. For help addressing mental or physical health concerns, including seeing a UBC counselor or doctor, visit: www.students.ubc.ca/livewelllearnwell.

Academic honesty and collaboration guidelines

The department has a detailed policy regarding collaboration and plagiarism. You must familiarize yourself with this policy.