CS625 : Advanced Computer
A brief review of key topics discussed during the course was presented in the concluding lecture. The key topics summarized in this lecture were:-
Main Design Principles
Components of System Design
Main Design Principles
Layering is the technique used for breaking the functionalities of a system into more simple layers in a way so that the interface across layers is well defined and they work independent of each other. Therefore, Layering technique is useful for abstracting the complexity of any system and in implementing each if its component, independent to other
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". Therefore, it provides a guideline for selecting the functionalities that should be implemented in a particular layer. In actual design process, it could get violated because of two reasons--
A functionality could be more efficiently implemented in some lower layer
If many of the upper layer need the functionality to be present in layer, but the lower layer does not have sufficient information to do so then it is possible that system designer make the information available to the lower layer from pre-determined upper layer and then the functionality is implemented.
System Design Techniques and Networking : Three main system design techniques used in yhe field of networks are:-
Caching : The data that has good probability of being used in near future is cached at special place (memory) from which it can be recovered much faster than from its original source. This technique improves efficiency of the system with respect to time.
Hierarchy : A hierarchical system design is useful for scalable implementation. It is because, in a hierarchical design, further improvements can be done or more features can be added selectively at a particular level or by adding a new level.
Level of Indirection : It is used to achieve independence between two entities. E.g. Use of page file in OS leads to independence between Virtual and Physical address space of the program. This leads to independence from repeated linking needed if program were to state actual physical address in their machine code (rather than virtual addresses)
CAP principle of Distributed systems:
CAP stands for consistency, availability and partition resilience. The principle states that for designing a system, only 2 of these 3 can be successfully achieved, at the cost of the third. Therefore, during the design of any distributed system (like any networking system), the tradeoff must be decided based of requirements.
A system has two types of states:
Persistent State : This is the state that must always be kept in memory for correctness. For example, in a banking system, the total money in transaction is a persistent state of the system. If this state is lost or gets corrupted, it can not be recovered and also leads to inaccuracy.
Soft State : As against Persistent State, a soft state refers to states that can be reconstructed when needed but precomputed values leads to efficiency improvements. Therefore, if such states are lost, they can be recomputed at the cost of computational time but they can not lead inaccuracy. For example, In a database record of banks, set of person name and account number(s) that they hold could be stored. But also, a record of inverse relation (ie account number and associated person) could be stored. Given the first relation, the other is a soft state but leads to improvement in certain query time.
Following are some of the design mechanisms that were discussed in the course in context of specific design techniques for a particular network system:-
Putting States in packets : This techniques eliminates the need of the states being known to all nodes on the network. each node that receives the packet can extract the required information fro the packet itself. IP traceback, core stateless fair queuing are some of the networking system that uses this technique.
In many of the networking system, the core of the network is treated differently from the edge. It is because, the core has large amount of traffic and therefore the prime necessity is to minimize computation per packet. While the flow is not too much on edges and therefore a little more computation can be done on edges for improvement in performance (decision making by the algorithm). E.g Many of the routing protocols use this technique.
Cross-layer Optimization : In many cases, a feature that should be implemented at an upper layer can be efficiently implemented at lower layer if the lower layer is given extra information from upper layer (which is obviously offending to idea of independence of layers). But still, to allow such optimisation, information is shared across layers. E.g, TCP discovers MTU of network from underlying IP layer to avoid fragmentation at IP layer.
Following are few design techniques that are used frequently in design of networking systems :-
TCP over wireless
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
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
Internet Measurement and Modeling
Content Distribution Networks
Components of System Design
Key points that must be figured out, before beginning of actual design process of any networking system are the following:-
Design Challenges - and also why they are a challenge
Metrics and Parameters for Evaluation