Note: This article has been initially appeared on LinkedIn. I have been asked this question a lot lately by students who are confused about the terms. Perhaps, because the IT industry uses the terms interchangeably in many ways. I have been teaching Network Design for about 17 years and for… Read more »
Batfish is an open source network configuration validation and verification software. The article reviews and demonstrates some major features of the software by using it to analyze configuration files of three small networks.
Professionals in any discipline need a common language to convey messages and exchange ideas. This language may be in verbal, written, and/or visual form. Engineers, for example, use technical drawings to describe a product or a component. The purpose of these drawings is to convey all information necessary to fully… Read more »
Keep it simple, stupid (KISS) is a design principle that requires a system’s design to be as simple as possible. Complex design may be expensive to build and maintain. Also, unnecessary features or components increase the potential for failures. From a management perspective, network designs should be simple enough for… Read more »
Scalability is the measure of a system’s ability to increase or decrease in performance in response to changes in demands. For networks, this means change in the number of users, number of end nodes, the amount of bandwidth, or the demand on any service provided by the network. Networks need… Read more »
Redundancy is a primary tool to create resilience in communications networks. It eliminates the single point of failure by relying on the probability that it is rare that two network components fail at the same time. Redundancy can be classified into [Lidwell]: Diverse redundancy Diverse redundancy uses multiple components of… Read more »
Designers in many fields (architecture, software, and engineering, for example) rarely approach a design problem by re-inventing the wheel. Instead, designers topically apply design patterns. Design patterns are typical solutions to common problems in design. A pattern is a standard blueprint that can be used to solve a particular design… Read more »
Modularity is one of the common design principles. In networks, the general architecture can be divided into multiple modules, with each module serving a specific function in the network. The individual modules may serve different functions, such as enterprise LAN, WAN, or data centre, or they can replicate the same… Read more »
The hierarchy of needs principle is inspired by Maslow’s Hierarchy of Needs. The principle specifies that a design must serve the low-level needs before the higher level needs. Good designs follow the hierarchy of needs principle rather than trying to satisfy requirements irrespective of their relation to each other [Lidwell]…. Read more »
Flexible systems have the ability to perform more functions, but they perform these functions less efficiently than specialized systems. As the flexibility of a designed system increases, its usability decreases. Flexibility also comes at the expense of more complexity in the design and higher cost; therefore, a tradeoff between flexibility… Read more »