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 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