18-845: Internet Services
Carnegie Mellon University, Spring 2000

Course Syllabus (ps, pdf) | Intel Cluster | Individual Project | Critiques | Group Project

Instructor:David O'Hallaron, droh@cs.cmu.edu, Wean Hall 8125, (412)268-8199
Course TA: Dapeng (Oliver) Wu, dpwu@cs.cmu.edu, Porter Hall B23, (412)268-7107
Course secretary: Barb Grandillo, bag@cs.cmu.edu, Wean Hall 8212, (412)268-7550

Class times: Tue and Thu, 12:30 - 2:30, Porter Hall A18-C
Web page: www.ece.cmu.edu/~ece845
Newsgroup: cmu.ece.class.ee845
Course directory: /afs/ece/class/ece845

Reference material

There is no required textbook. However, the two volumes by Stevens on network programming are excellent reference sources.

Course schedule

IP: individual project, GP: group project GPP: group project proposal
Class Date Day Topic Projects Presenter(s)
1 01/18 Tue Introduction droh
2 01/20 Thu Internetworking 1 droh
3 01/25 Tue Internetworking 2 IP out droh
4 01/27 Thu Sockets 1 droh
5 02/01 Tue Sockets 2 droh
6 02/03 Thu Multiprocess concurrent servers droh
7 02/08 Tue Multithreaded concurrent servers droh
8 02/10 Thu Thread synchronization droh
9 02/15 Tue Posix IPC droh
10 02/17 Thu System V IPC IP due 12:30pm droh
11 02/22 Tue Measuring server performance Lohia
12 02/24 Thu Improving server performance Jongpairat
13 02/29 Tue Improving server performance Long
14 03/02 Thu HTTP connection scheduling Guest: Mor Harchol-Balter
15 03/07 Tue Resource signals: analysis and prediction Guest: Peter Dinda
16 03/09 Thu OPEN
17 03/14 Tue Clustering GPP due 12:30pm Celibioglu
18 03/16 Thu Clustering Shaffer/Eatedali
19 03/21 Tue Mirroring Oberoi
20 03/23 Thu OPEN
21 04/04 Tue Security Small
22 04/06 Thu Security Ives
23 04/11 Tue Case study: Akamai server Canfield
24 04/13 Thu Web Caching Ali
25 04/18 Tue High-availability Pillai/Stamboli
26 04/20 Thu Streaming Meyer/Lai
27 04/25 Tue Streaming Wong
28 04/27 Thu Project presentations GP due 12:30pm
29 05/02 Tue Project presentations
30 05/04 Thu Project presentations

Class 1: Introductions (Tue 1/18)

Review of the course organization and student/teacher introductions.

Part I: Network programming overview

Class 2: Internetworking 1 (Thu 1/20)

The client-server programming model and how it is used to provide services in distributed systems. The basic notion of internetworking and an analysis of different approaches to interconnecting networks.

Reading: For more info, check any introductory networking text, e.g., A. Tannenbaum, "Computer Networks, Third Edition", Prentice-Hall, 1996. 

Class 3: Internetworking 2 (Tue 1/25)

IP and the architecture of the global IP Internet.

Reading: See any introductory networking text. 

Class 4: Sockets (Thu 1/27)

The sockets API in the context of a simple iterative TCP server.

Reading: Please read the RPI sockets tutorial before class. Also, SNP1: ch. 1-4 (sockets). 

Class 5: Sockets 2 (Tue 2/1)

More discussion on bind, select, the backlog parameter, Unix socket I/O, and using standard I/O functions with Unix I/O. Brief introduction to HTTP and CGI to help students get started on the project.

Reading: SNP1: ch. 1-4 (sockets). 

Class 6: Multi-process concurrent servers (Thu 2/3)

Processes, signals, and signal handling. Multi-process concurrent servers designs.

Reading: SNP1: ch. 5 (processes and signals) and ch. 27 (client-server design alternatives). 

Class 7: Multi-threaded concurrent servers (Tue 2/8)

Basic threads. Multi-theaded concurrent servers designs.

Reading: SNP1: ch. 23 (threads) and ch. 27 (client server design alternatives). 

Class 8: Thread synchronization (Thu 2/10)

Concurrency, mutexes, condition variables, and deadlock.

Reading: SNP1: ch. 23 (threads).

Also, refer to the Spark98 benchmarks for an example of a non-trivial threaded code. Spark98 has the identical sparse matrix-vector product core as my 183.equake benchmark in the SPEC CPU2000 benchmark suite

Class 9: Posix IPC (Tue 2/15)

FIFOs, file locking, shared memory, semaphores.

Reading: SNP2: ch. 4 (FIFOs), ch. 9 (file locks), ch 10 (semaphores), ch 12 (shared memory). 

Class 10: System V IPC (Tue 2/17)

System V shared memory and semaphores.

Reading: SNP2: ch. 11 (semaphores), ch. 14 (shared memory).

Example Linux codes:

Part II: Research issues

Remember: Critiques must be handed in before class.

Class 11: Measuring server performance (Tue 2/22)

To be presented and critiqued: Additional readings:

Class 12: Improving server performance (Thu 2/24)

To be presented and critiqued: Additional readings:

Class 13: Improving server performance (Tue 2/29)

To be presented and critiqued: Additional readings:

Class 14: Improving server performance (Thu 3/2)

To be presented and critiqued: Additional readings:

Class 15: Resource signals: analysis and prediction (Tue 3/7)

To be presented and critiqued: Additional readings:

Class 16: OPEN (Thu 3/9)

Class 17: Clustering (Tue 3/14)

To be presented and critiqued: Additional readings:

Class 18: Clustering (Thu 3/16)

To be presented and critiqued:

Class 19: Mirroring (Tue 3/21)

To be presented and critiqued:

Class 20: OPEN (Thu 3/23)

Class 21: Security (Tue 4/04)

To be presented and critiqued: Additional readings:

Class 22: Security (Thu 4/6)

To be presented and critiqued: Additional readings:

Class 23: Case study: Akamai server (Tue 4/11)

Presenter: Tim Canfield

There are no critiques required for today's talk, but you will need to review SSL and DNS beforehand.

Class 24: Web caching (Thu 4/13)

To be presented and critiqued: Additional readings:

Class 25: High availability (Tue 4/18)

To be presented and critiqued:

Class 26: Streaming (Thu 4/20)

To be presented and critiqued: Additional readings:

Class 27: Streaming (Tue 4/25)

To be presented and critiqued: Additional readings:

Related courses


Dave OHallaron

Last modified: Wed Mar 1 12:39:21 EST 2000