CS625 : Advanced Computer Networks
Concluding Lecture
Main Design Principles
Following are the main principles which should be considered while designing any system -:
Layering : Layering provides a layer of
abstraction for designing a system by breaking the functionalities down into
layers. This abstraction is central to science. Layering is useful for
interface design since it provides independence across interfaces and also for
system design in general.
End-to-End Principle : This principle states
"Implement a function in a layer only if it can be fully and completely
implemented at that layer". It thus acts as a guide for what functionality
should go in what layer. This principle actually extends to other systems
besides networks, for example operating systems.
Caching : The concept of caching should be
implemented for improving performance mainly w.r.t. time of a system.
Hierarchy : This principle, if implemented,
helps in improving scalability of a system.
Level of Indirection : It is usually
beneficial if one part of a system is separated from another in order to
provide a level of indirection between the part accessed by the user and the
one actually manipulated by the system. A ready example of this principle is
the independence between virtual and physical addresses used by an operating
system.
CAP Principle for Distributed Systems : CAP
stands for consistency, availability and partition resilience, all very
important attributes for any distributed system. The principle states that for
designing a system, only 2 of these 3 can be successfully achieved, at the
cost of the third.
Soft-state of a System : In general, the state of a system is expected to be persistent, i.e. it should persist beyond a session. A Soft-state, however, can be lost and regained without losing correctness. This improves the scalability and availability of a system.
Design Mechanisms
Presented earlier were the design principles which should be considered while designing a system. However, separate mechanisms should be used for actually implementing these systems. Following are some design mechanisms which arise out of the use of the above principles -:
State in Packet : This techniques eliminates
the need for the state of a system to be present everywhere. This is a useful
technique, though it involves an overhead. Examples of this technique in
practice are IP traceback, core stateless fair queueing etc.
Core of N/W Kept Different from the Edges :
The core of a network is where the traffic is maximum, and thus has to be
routed the most. By separating the core from the edges, the edges can do more
work because they have to do less per-state work.
Cross-layer Optimization : It helps a layer
in a system to know about the upper and lower layer, since it can manipulate
its functioning in order to improve performance. For example, TCP discovers
the MTU of the upper layer and thus avoids fragmentation.
Add an Additional Layer : An additional layer may be added to a system if the additional functionality is beneficial and cannot be implemented easily in the existing framework. For example, overlay networks have an additional hierarchical routing layer above IP.
Design Techniques
Some important design techniques which are specific to computer networks are the following -:
Various routing protocols, multicast and unicast, for instance
TCP engine
TCP over wireless
Router Scheduling
IP traceback
Bloom filter, a data structure for the representation of a set
These techniques should be made use of when designing a networking system.
Sub-topics In Networking : A Recap of the Course
Following are some sub-topics in networking which were covered to various extents in this course -:
Wireless and Mobile networks
Intra and Inter-domain Routing
Queuing and Scheduling
Router Architecture
TCP
Quality of Service
Traffic Engineering
Multicast
Overlay Networks
Peer-to-Peer Networks
Network Security
Internet Measurement and Modeling
Content Distribution Networks
IPv6
Components of System Design
To aptly conclude the course, following are some important components of system design which must be specified in order to come up with a system with a good performance. The order of these can also be seen as the order in which these steps should be carried out -:
Design Goals
Design Challenges - and also why they are a challenge
Design Principles
Design Mechanisms/Techniques
Evaluation Methodology
Metrics and Parameters for Evaluation