Lecture 34
Date: 13 Nov 2003

The final class was a concluding lecture that also summarized the key topics included.
The salient aspects covered were :
- Main Design Principles
- Design Mechanisms
- Design Techniques
- Networking sub-topics (not mentioned in detail in this scribe)

1. Main Design Principles
-Layering -
Layering underlies the concept of abstraction. Layering is central to networks and provides a way to encapsulate different functionalities. Layers communicate using an interface. This ensures independenace across layers as long as interface is known. This leads to software reuse and modularity.

-End To end Principle -
Guides what functionaliy goes into which layer. Essentially a functionality is put in the layer where it can be implemented completely and correctly.

3 main ideas that are used across networking and COmputer Science:
- Caching -
Used for performance improvement

- Hierarchy -
Used for scaling

- Level of indirection -
Used to achieve independence between two entities
e.g. : Paging in OS used to achieve independence between Virtual Address and Physical Address

-CAP principle of Distributesd systems:
CAP stands for Consistency Availability and Resileince to partition. At a time only two of these demands can be satisfied. The two demands chosen have great implications on the sytem being designed.

-System States :
A system can have two types of states:
- Persistent State : When a state has to persist beyond some granularity. E.g amount of money in a bank account transaction systems. Any loss of this state leads to loss of corrctness.

- Soft State : Can be lost and rebuild without losing correctness. Soft state based design can lead to loss of performance but not to loss of availabilty and reliability.

2. Design Mechanisms:
We discuss some generic mechanisms thast have more than one context. They arise due to use of design priniciples.
Some of then (mostly relavant to networking) are:
- Putting states in a packet
e.g. IP traceback, core stateless fair queuing. This eliminates the need for the state of being present somewhere else.

- Treat core of network diffrrently fro mthe edges of the network

- Cross layer optimization: Comprimising layering level abstraction by letting a layer to know about other layers for achieving certain functionality. e.g. Snoop implemented in IP layer knows a lot about TCP packet sequence numbers etc.

- Adding extra layers for achieving functionality e.g Overlay, MPLS etc

3. Design Techniques:
Some good design techniques were used. They were included in: -Various routing policies
- TCP engine
- TCP over wireless
- Router Scheduling
- IP traceback
- Bloom Filter

Key points involved in system Design:
- Design goals
- Design Challenges - What is new/challenging ni the system being designed
- Design Priniciples
- Design mechanism and techniques - The fat part
- Design evaluation methology - Important for establishing credibiltiy of your design
- Metrics and parameters for evaluation