What is network architecture? In general, architecture is the art and science of designing and constructing or the discipline of dealing with the principles of design and building. In terms of network architecture, this applies to the art and science in designing and constructing a network. A more specific definition for network architecture is an understanding of the relationships between (architectural) components of the network. Network architecture also guides the technical design of the network through applying sets of high-level design principles. Such high-level design principles act upon the building blocks of the network to develop overall structure and function. We will discuss the nature of these relationships, design principles, and building blocks in this chapter.
Defining the building blocks is essential to the success of network architecture. It is intuitive to consider these to be the physical entities (e.g., routers, switches, multiplexers, servers) in the network, especially since they are readily mapped to network technologies and purchased from vendors.
However, this common view of network architecture constrains the functions of a network (addressing/routing, security, network management, performance) to operate within this physical structure. This forces functions into suboptimal configurations, as when one function decreases or negates the effectiveness of another. For example, security mechanisms colocated with routers or switches, without consideration to routing or performance, can seriously affect those functions.
A different approach is to define the network building blocks as functional instead of physical entities. In doing so, the set of high-level design principles that constitute the network architecture are applied to how the network functions and operates.
This has several advantages over the physical approach. Network functions are closely coupled to users and their applications and devices. This allows user requirements to be directly represented in the network architecture. In fact, the success of a network can be defined by how well user, application, and device requirements are supported through these functions.
In addition, network functions, as well as user, application, and device requirements, often have a common basis in traffic flows. As part of the network architecture, the characterization of traffic flows can indicate when and where network functions will operate on common flows and thus may have an impact on each other and the overall effectiveness of the network. By focusing on functions in the network architecture, you will better understand these interactions. Interactions, both within a function and between functions, are used to optimize the network architecture.
In this chapter we will discuss how to describe, understand, and optimize the functions of a network, their interactions within the network, and how they can be meaningfully combined for that network. In this approach, each network function is developed and optimized as its own component architecture. Component architectures are then combined into a reference architecture by analyzing and optimizing interactions between components.
Since this approach focuses on network functions and their interactions, it is scalable to the largest networks. This process can be applied to the entire network or part of a network, or it can be focused on a particular function. It provides a set of architectural guidelines that can be used to formulate the technical design of a network, consistent with Internet architecture philosophies.
It is easy to confuse architecture and design. They are similar in many ways, and designs are often just more detailed versions of the architecture. There are, however, ways in which they differ. Figure 5.1 compares some of the similarities and differences between architecture and design.
Figure 5.1: Comparisons between architecture and design.
Some of these differences reflect the concept that the design is more detailed. For example, whereas the scope of architecture is typically broad, designs tend to be more focused. Network architecture will show a high-level view of the network, including locations of major or important components, whereas a network design will have details about each portion of the network or focus on a particular section of the network (e.g., storage, servers, and computing). As the design focuses on selected parts of the network, the level of detail about that part increases.
Architecture and design are similar in one important way though: They both attempt to solve multidimensional problems based on the results of the network analysis process. Figure 5.2 shows a solution space that can be made up of many variables (e.g., performance, security, and network management), and network architecture solutions are based on relationships between these variables. We will discuss these relationships throughout the architecture process.
Figure 5.2: Architecture and design solutions are multidimensional.
In terms of what is described, however, the architecture can differ substantially from the design. Network architecture describes relationships, whereas a design usually specifies technologies, protocols, and network devices. So that we can begin to see how the architecture and design complement each other, it is important to understand how various components of the network will work together before actually specifying the equipment to be deployed.
Another way that architecture can differ from design is in knowledge of location information. Although location is important for some parts of the architecture (e.g., external interfaces, locations of existing devices and applications), the relationships between components are generally location independent. In fact, inserting location information into the network architecture can be constraining. For a network design, however, location information is important. The design includes a sufficient amount of detail, so locations play an important part of the decision-making process.
Good network design is a process by which an extremely complex and nonlinear system is conceptualized. Even the most experienced network designer must first conceptualize a big picture and then develop the detailed designs of the components. The network architecture represents that big picture and can be developed only by creating an environment that balances the requirements of the customers with the capabilities of network technologies and the personnel that will run and maintain the system.
Not only is the network architecture necessary for a solid design, but it is also essential to sustaining the required performance over time. Network personnel must grasp the big picture and understand it to be able to make the network perform as designed. To be successful, architecture development must be approached in a systematic manner.
Poor network architecture and design reflects the personality of a "wizard" who opens his or her bag of network tricks and pulls a couple out. Network architecture and design development is no longer simple enough that tricks will work; it must be done in a systematic and reproducible manner. Even if a complex network architecture/ design is "tricked" into existence, it cannot be maintained. Smart customers are beyond the stage at which they would hire a "wizard" to work magic. They have been burned (or heard about being burned) by the unpredictability of this behavior. Now that network services are essential to business, predictable, reliable, high-quality performance is what customers are seeking.