SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Design your networks to successfully manage their growing complexity
Network professionals have often been told that today’s modern control planes would simplify their networks. The opposite has happened: Technologies like SDN and NFV, although immensely valuable, are exacerbating complexity instead of solving it. Navigating Network Complexity is the first comprehensive guide to managing this complexity in both deployment and day-to-day operations.
Russ White and Jeff Tantsura introduce modern complexity theory from the standpoint of the working network engineer, helping you apply it to the practical problems you face every day. Avoiding complex mathematical models, they show how to characterize network complexity, so you can understand it and control it.
The authors examine specific techniques and technologies associated with network control planes, including SDNs, fast reroute, segment routing, service chaining, and cloud computing. They reveal how each of these affects network design and complexity and help you anticipate causes of failure in highly complex systems.
Next, they turn to modern control planes, examining the fundamental operating principles of SDNs, such as OpenFlow and I2RS, network and other service function virtualization, content distribution networks, Layer 2 fabrics, and service chaining solutions. You’ll learn how each of these might both resolve and increase complexity in network design and operations and what you can do about it.
Coverage includes:
From start to finish, Navigating Network Complexity helps you assess the true impact of new network technologies, so they can capture more value with fewer problems.
Introduction . . . . . . . . . . . . xvii
How This Book Is Organized . . . . . . . xvii
Chapter 1: Defining Complexity . . . . . . . . . 1
What Is Complexity? . . . . . . . . . 3
Anything I Don’t Understand . . . . . . 3
Anything with a Lot of Parts . . . . . . . 5
Anything for Which There Is More State Than Required to
Achieve a Goal . . . . . . . . . 9
Unintended Consequences . . . . . . 11
Why So Much Complexity? . . . . . . . . 13
Future Extensions versus New Protocols . . . . 16
Unexpected Errors . . . . . . . . 17
Why Not Build Infinitely Complex Systems? . . . . . 18
Quick, Cheap, and High Quality: Choose Two . . . 20
Consistency, Availability, and Partition Tolerance:
Choose Two . . . . . . . . . 21
Journey into the Center of Complexity . . . . . . 22
Chapter 2: Components of Complexity . . . . . . . 25
Network Convergence . . . . . . . . . 26
Path Vector: A BGP Example . . . . . . 26
Distance Vector: An EIGRP Example . . . . . 28
Link State: OSPF and IS-IS Convergence . . . . 30
State . . . . . . . . . . . . 31
Amount of Information . . . . . . . 32
An Example of State Failure in the Real World . . . 33
Final Thoughts on State . . . . . . . 34
Speed . . . . . . . . . . . . 35
The Network That Never Converges . . . . . 35
The Flapping Link . . . . . . . . 37
Final Thoughts on Speed . . . . . . . 38
Surface . . . . . . . . . . . . 38
The Hourglass Model . . . . . . . . . 41
Optimization . . . . . . . . . . . 44
A Final Thought . . . . . . . . . . 46
Chapter 3: Measuring Network Complexity . . . . . . 47
Some Measures of Network Complexity . . . . . 49
Network Complexity Index . . . . . . 49
Modeling Design Complexity . . . . . . 51
NetComplex . . . . . . . . . 53
Organized Complexity . . . . . . . . . 55
Is This a Waste of Time? . . . . . . . . . 58
A Final Thought . . . . . . . . . . 58
Chapter 4: Operational Complexity . . . . . . . . 61
Exploring the Problem Space . . . . . . . . 61
The Cost of Human Interaction with the System . . . 61
Policy Dispersion versus Optimal Traffic Handling . . 66
Solving the Management Complexity Problem . . . . 69
Automation as a Solution to Management Complexity . 69
Modularity as a Solution to Management Complexity . 72
Protocol Complexity versus Management Complexity . 74
A Final Thought . . . . . . . . . . 77
Chapter 5: Design Complexity . . . . . . . . . 79
Control Plane State versus Stretch . . . . . . . 81
Aggregation versus Stretch . . . . . . . 83
Traffic Engineering . . . . . . . . 85
State versus Stretch: Some Final Thoughts . . . . 87
Topology versus Speed of Convergence . . . . . . 88
Ring Topology Convergence . . . . . . 88
Redundancy versus Resilience . . . . . . 90
Topology versus Speed of Convergence:
Some Final Thoughts . . . . . . . 93
Fast Convergence versus Complexity . . . . . . 94
Improving Convergence with Intelligent Timers: Talk Faster . . . . . . . . . 96
Removing Timers from Convergence: Precompute . . 99
Working around Topology: Tunneling to the Loop-Free
Alternate . . . . . . . . . 101
Some Final Thoughts on Fast Convergence . . . 104
Virtualization versus Design Complexity . . . . . 106
Functional Separation . . . . . . . 108
Forwarding Plane Complexity . . . . . . 109
Control Plane Complexity . . . . . . 109
Shared Fate Risk Groups . . . . . . . 111
A Final Thought . . . . . . . . . . 111
Chapter 6: Managing Design Complexity . . . . . . 113
Modularity . . . . . . . . . . . 113
Uniformity . . . . . . . . . 114
Interchangeable Modules . . . . . . . 120
How Modularity Attacks the Complexity Problem . . 121
Information Hiding . . . . . . . . . 122
Aggregation . . . . . . . . . 122
Failure Domains and Information Hiding . . . . 126
Final Thoughts on Information Hiding . . . . 128
Models . . . . . . . . . . . 129
Waterfall . . . . . . . . . . 129
Places in the Network . . . . . . . 131
Hierarchical . . . . . . . . . 132
UML . . . . . . . . . . . 134
A Final Thought . . . . . . . . . . 136
Chapter 7: Protocol Complexity . . . . . . . . 137
Flexibility versus Complexity: OSPF versus IS-IS . . . . 138
Layering versus Protocol Complexity . . . . . . 141
The Seven-Layer Model . . . . . . . 143
The Four-Layer Model . . . . . . . 146
The Iterative Model . . . . . . . . 147
Protocol Stacks and Design . . . . . . 148
Protocol Complexity versus Design Complexity . . . . 149
Microloops and Fast Reroute . . . . . . 149
EIGRP and the Design Conundrum . . . . . 158
Final Thoughts on Protocol Complexity . . . . . 162
Chapter 8: How Complex Systems Fail . . . . . . . 163
Feedback Loops . . . . . . . . . . 164
Positive Feedback Loops in Network Engineering . . 169
Speed, State, and Surface: Stability in the
Network Control Plane . . . . . . . 174
Shared Fate . . . . . . . . . . . 177
Virtual Circuits . . . . . . . . . 177
TCP Synchronization as a Shared Fate Problem . . 179
A Final Thought . . . . . . . . . . 181
Thoughts on Root Cause Analysis . . . . . 181
Engineering Skills and Failure Management . . . 182
Chapter 9: Programmable Networks . . . . . . . 185
Drivers and Definition . . . . . . . . . 186
Business Drivers . . . . . . . . 186
The Ebb and Flow of Centralization . . . . . 188
Defining Network Programmability . . . . . 191
Use Cases for Programmable Networks . . . . . 193
Bandwidth Calendaring . . . . . . . 193
Software-Defined Perimeter . . . . . . 196
Programmable Network Interfaces . . . . . . 200
The Programmable Network Landscape . . . . . 201
OpenFlow . . . . . . . . . . 202
YANG . . . . . . . . . . 204
Path Computation Element Protocol . . . . . 207
Interface to the Routing System . . . . . 210
A Final Thought . . . . . . . . . . 212
Chapter 10: Programmable Network Complexity . . . . . 215
The Subsidiarity Principle . . . . . . . . 216
Policy Management . . . . . . . . . 217
Policy Dispersion . . . . . . . . 220
Policy Consistency . . . . . . . . 222
Policy Complexity . . . . . . . . 223
Surface and the Programmable Network . . . . . 224
Impact on Failure Domains . . . . . . . . 226
Wide Area Failure Domains . . . . . . 227
Data Center Failure Domains . . . . . . 228
Application to Control Plane Failure Domain . . . 229
Controller to Controller Failure Domain . . . . 229
Final Thoughts on Failure Domains . . . . . 229
A Final Thought . . . . . . . . . . 230
Chapter 11: Service Virtualization and Service Chaining . . . . 233
Network Function Virtualization . . . . . . . 234
NFV: A Use Case . . . . . . . . 236
Service Chaining . . . . . . . . . . 242
Service Function Chaining . . . . . . 243
Segment Routing . . . . . . . . 245
A Final Thought . . . . . . . . . . 248
Chapter 12: Virtualization and Complexity . . . . . . 249
Policy Dispersion and Network Virtualization . . . . 250
State and Service Chaining . . . . . . 253
State and Optimization . . . . . . . 254
Surface and Policy Interaction . . . . . . 255
Surface and Policy Proxies . . . . . . 255
Other Design Considerations . . . . . . . 256
Coupling and Failure Domains . . . . . . 257
Troubleshooting . . . . . . . . 260
The Orchestration Effect . . . . . . . . 262
Managing Complexity . . . . . . . . . 264
A Final Thought . . . . . . . . . . 266
Chapter 13: Complexity and the Cloud . . . . . . . 267
Where Does the Complexity Live? . . . . . . 268
Cloud Centric . . . . . . . . . 269
Vendor Centric . . . . . . . . . 270
Network Centric . . . . . . . . 271
Is There a “Right Way?” . . . . . . . 271
Centralize What? . . . . . . . . . . 272
Cloudy Complications . . . . . . . . . 273
Security . . . . . . . . . . 273
Data Portability . . . . . . . . 276
A Final Thought . . . . . . . . . . 277
Chapter 14: A Simple Ending . . . . . . . . . 279
Defining Complexity . . . . . . . . . 279
Difficult to Understand . . . . . . . 280
Unintended Consequences . . . . . . 280
Large Numbers of Interacting Parts . . . . . 280
What Makes Something “Too Complex”? . . . 281
Complexity Is a Tradeoff . . . . . . . . 282
Modeling Complexity . . . . . . . . . 284
Managing Complexity in the Real World . . . . . 286
Don’t Ignore Complexity . . . . . . . 286
Find a Model to Contain the Complexity . . . . 287
A Final Thought . . . . . . . . 288
TOC, 9780133989359, 10/28/2015