Preface |
|
xvii | |
1 The Motivations for a New Network Architecture |
|
1 | (18) |
|
The Application-Network Shuffle |
|
|
1 | (4) |
|
The Network Design from the Turn of the Century |
|
|
5 | (8) |
|
|
6 | (3) |
|
Building Scalable Bridging Networks |
|
|
9 | (4) |
|
The Trouble with the Access-Aggregation-Core Network Design |
|
|
13 | (4) |
|
|
13 | (1) |
|
|
14 | (1) |
|
|
15 | (1) |
|
|
16 | (1) |
|
|
16 | (1) |
|
|
17 | (1) |
|
|
17 | (1) |
|
|
18 | (1) |
2 Clos: Network Topology for a New World |
|
19 | (20) |
|
Introducing the Clos Topology |
|
|
20 | (2) |
|
A Deeper Dive into the Clos Topology |
|
|
22 | (7) |
|
Use of Homogeneous Equipment |
|
|
22 | (1) |
|
Routing as the Fundamental Interconnect Model |
|
|
22 | (2) |
|
Oversubscription in a Clos Topology |
|
|
24 | (1) |
|
|
25 | (1) |
|
|
26 | (2) |
|
Fine-Grained Failure Domain |
|
|
28 | (1) |
|
Scaling the Clos Topology |
|
|
29 | (2) |
|
Comparing the Two Three- Tier Models |
|
|
31 | (1) |
|
|
31 | (1) |
|
|
31 | (1) |
|
Implications of the Clos Topology |
|
|
32 | (1) |
|
Rethinking Failures and Troubleshooting |
|
|
32 | (1) |
|
|
33 | (1) |
|
Simplified Inventory Management |
|
|
33 | (1) |
|
|
33 | (1) |
|
Some Best Practices for a Clos Network |
|
|
33 | (3) |
|
Use of Multiple Links Between Switches |
|
|
33 | (1) |
|
Use of Spines as Only a Connector |
|
|
34 | (1) |
|
Use of Chassis as a Spine Switch |
|
|
35 | (1) |
|
|
36 | (1) |
|
|
37 | (1) |
|
|
38 | (1) |
3 Network Disaggregation |
|
39 | (14) |
|
What Is Network Disaggregation? |
|
|
39 | (3) |
|
Why Is Network Disaggregation Important? |
|
|
42 | (1) |
|
|
42 | (1) |
|
|
43 | (1) |
|
Standardization of Features |
|
|
43 | (1) |
|
What Made Network Disaggregation Possible Now? |
|
|
43 | (1) |
|
Difference in Network Operations with Disaggregation |
|
|
44 | (2) |
|
|
44 | (1) |
|
|
45 | (1) |
|
Open Network Installer Environment |
|
|
46 | (2) |
|
|
47 | (1) |
|
The Players in Network Disaggregation: Hardware |
|
|
48 | (2) |
|
|
48 | (1) |
|
|
49 | (1) |
|
|
49 | (1) |
|
|
49 | (1) |
|
Common Myths About Network Disaggregation |
|
|
50 | (1) |
|
Some Best Practices for Engaging with Network Disaggregation |
|
|
51 | (1) |
|
|
52 | (1) |
|
|
52 | (1) |
4 Network Operating System Choices |
|
53 | (28) |
|
Requirements of a Network Device |
|
|
54 | (1) |
|
The Rise of Software-Defined Networking and OpenFlow |
|
|
55 | (7) |
|
More Details About SDN and OpenFlow |
|
|
56 | (2) |
|
The Trouble with OpenFlow |
|
|
58 | (2) |
|
|
60 | (1) |
|
The Effect of SDN and OpenFlow on Network Disaggregation |
|
|
61 | (1) |
|
|
62 | (10) |
|
Location of Switch Network State |
|
|
64 | (2) |
|
Programming the Switching Silicon |
|
|
66 | (4) |
|
|
70 | (1) |
|
The Reasons Behind the Different Answers |
|
|
70 | (2) |
|
|
72 | (1) |
|
Comparing the NOS Models with Cloud Native NOS Requirements |
|
|
73 | (5) |
|
Illustrating the Models with an Example |
|
|
73 | (5) |
|
What Else Is Left for a NOS to Do? |
|
|
78 | (1) |
|
|
78 | (1) |
|
|
79 | (2) |
5 Routing Protocol Choices |
|
81 | (30) |
|
|
82 | (8) |
|
How Routing Table Lookups Work |
|
|
83 | (2) |
|
|
85 | (1) |
|
Types of Routing Table Entries |
|
|
86 | (1) |
|
|
87 | (3) |
|
Routing Protocols Overview |
|
|
90 | (1) |
|
Distance Vector Protocols Versus Link-State Protocols |
|
|
91 | (4) |
|
Distance Vector Dissected |
|
|
91 | (2) |
|
|
93 | (2) |
|
Summarizing Distance Vector Versus Link-State Route Exchange |
|
|
95 | (1) |
|
Comparing Distance Vector and Link-State Protocols |
|
|
95 | (7) |
|
Scaling in Link-State and Distance Vector Protocols |
|
|
95 | (1) |
|
Multipathing in Distance Vector and Link-State Protocols |
|
|
96 | (1) |
|
|
97 | (1) |
|
Propagation Delay in Link-State and Distance Vector Protocols |
|
|
97 | (1) |
|
|
98 | (1) |
|
|
98 | (2) |
|
Routing Configuration Complexity |
|
|
100 | (2) |
|
Routing Protocols in Clos Networks |
|
|
102 | (5) |
|
Link-State Versus Distance Vector When Links or Nodes Fail |
|
|
102 | (3) |
|
Route Summarization in Clos Networks |
|
|
105 | (1) |
|
|
106 | (1) |
|
Bidirectional Forwarding Detection |
|
|
107 | (1) |
|
Requirements of a Routing Protocol in the Data Center |
|
|
108 | (1) |
|
|
108 | (1) |
|
|
108 | (1) |
|
Rare or Futuristic Requirements |
|
|
109 | (1) |
|
Choosing the Routing Protocol for Your Network |
|
|
109 | (1) |
|
|
110 | (1) |
|
|
110 | (1) |
6 Network Virtualization |
|
111 | (30) |
|
What Is Network Virtualization? |
|
|
112 | (1) |
|
Uses of Network Virtualization in the Data Center |
|
|
113 | (2) |
|
Forcing Traffic to Take a Certain Path |
|
|
113 | (1) |
|
Applications That Require L2 Adjacency |
|
|
114 | (1) |
|
|
115 | (1) |
|
Separating Switch Management Network from Data Traffic |
|
|
115 | (1) |
|
Network Virtualization Models |
|
|
115 | (3) |
|
Service Abstraction: L2 or L3 |
|
|
116 | (1) |
|
Inline Versus Overlay Virtual Networks |
|
|
117 | (1) |
|
Network Tunnels: The Fundamental Overlay Construct |
|
|
118 | (5) |
|
Benefits of Network Tunnels |
|
|
120 | (1) |
|
The Drawbacks of Network Tunnels |
|
|
121 | (2) |
|
Network Virtualization Solutions for the Data Center |
|
|
123 | (2) |
|
|
123 | (1) |
|
|
123 | (1) |
|
|
123 | (2) |
|
Other Network Virtualization Solutions |
|
|
125 | (1) |
|
Practical Limits on the Number of Virtual Networks |
|
|
125 | (3) |
|
Size of Virtual Network ID in Packet Header |
|
|
126 | (1) |
|
|
126 | (1) |
|
Scalability of Control Plane and Software |
|
|
126 | (1) |
|
|
127 | (1) |
|
Control Protocols for Network Virtualization |
|
|
128 | (2) |
|
Relationship of Virtual and Physical Control Plane |
|
|
128 | (1) |
|
The Centralized Control Model |
|
|
129 | (1) |
|
The Protocol-Based Control Model |
|
|
129 | (1) |
|
Vendor Support for Network Virtualization |
|
|
130 | (1) |
|
|
130 | (1) |
|
|
130 | (1) |
|
|
130 | (1) |
|
Illustrating VXLAN Bridging and Routing |
|
|
131 | (9) |
|
VXLAN Bridging Example: H1 to H5 |
|
|
133 | (3) |
|
VXLAN and Routing: H1 to H6 |
|
|
136 | (3) |
|
Summarizing VXLAN Bridging and Routing |
|
|
139 | (1) |
|
|
140 | (1) |
7 Container Networking |
|
141 | (20) |
|
Introduction to Containers |
|
|
142 | (1) |
|
|
143 | (3) |
|
|
144 | (2) |
|
Virtual Ethernet Interfaces |
|
|
146 | (2) |
|
Container Networking: Diving In |
|
|
148 | (10) |
|
Single-Host Container Networking |
|
|
148 | (6) |
|
Multihost Container Networking |
|
|
154 | (4) |
|
Comparing Different Container Network Solutions |
|
|
158 | (1) |
|
|
159 | (1) |
|
|
160 | (1) |
8 Multicast Routing |
|
161 | (22) |
|
Multicast Routing: Overview |
|
|
162 | (2) |
|
The Uses of Multicast Routing |
|
|
163 | (1) |
|
Problems to Solve in Multicast Routing |
|
|
164 | (4) |
|
Building a Multicast Tree |
|
|
164 | (1) |
|
Multicast Routing Protocol |
|
|
165 | (3) |
|
|
168 | (12) |
|
|
168 | (1) |
|
Building a Multicast Distribution Tree |
|
|
168 | (11) |
|
|
179 | (1) |
|
PIM-SM in the Data Center |
|
|
180 | (2) |
|
|
182 | (1) |
|
|
182 | (1) |
9 Life on the Edge of the Data Center |
|
183 | (12) |
|
|
183 | (1) |
|
|
184 | (6) |
|
Why Connect to the External World? |
|
|
184 | (1) |
|
Bandwidth Requirements for External Connectivity |
|
|
184 | (1) |
|
Connecting the Clos Topology to the External World |
|
|
185 | (2) |
|
|
187 | (1) |
|
|
188 | (2) |
|
Hybrid Cloud Connectivity |
|
|
190 | (3) |
|
|
193 | (2) |
10 Network Automation |
|
195 | (38) |
|
What Is Network Automation? |
|
|
196 | (1) |
|
Who Needs Network Automation? |
|
|
197 | (1) |
|
Does Network Automation Mean Learning Programming? |
|
|
198 | (1) |
|
Why Is Network Automation Difficult? |
|
|
199 | (5) |
|
The Trouble with IP Addresses and Interfaces |
|
|
201 | (1) |
|
|
201 | (1) |
|
Network Protocol Configuration Complexity |
|
|
202 | (1) |
|
Lack of Programmatic Access |
|
|
203 | (1) |
|
Traditional Network OS Limitations |
|
|
203 | (1) |
|
What Can Network Developers Do to Help Network Automation? |
|
|
204 | (1) |
|
Tools for Network Automation |
|
|
204 | (3) |
|
Automation Best Practices |
|
|
207 | (1) |
|
|
208 | (11) |
|
|
210 | (2) |
|
|
212 | (4) |
|
|
216 | (1) |
|
|
217 | (2) |
|
A Typical Automation Journey |
|
|
219 | (9) |
|
|
219 | (2) |
|
Automate the Configuration That Was Not Device Specific |
|
|
221 | (1) |
|
Template the Routing and Interface Configuration |
|
|
222 | (1) |
|
More Templating and Roles |
|
|
223 | (3) |
|
Some Observations from Fellow Journeymen |
|
|
226 | (2) |
|
Validating the Configuration |
|
|
228 | (4) |
|
|
228 | (1) |
|
Commit/Rollback in the Age of Automation |
|
|
228 | (2) |
|
Vagrant and Network Testing |
|
|
230 | (1) |
|
|
231 | (1) |
|
|
232 | (1) |
|
|
232 | (1) |
11 Network Observability |
|
233 | (14) |
|
|
234 | (1) |
|
The Current State of Network Observability |
|
|
235 | (3) |
|
The Disenchantments of SNMP |
|
|
235 | (2) |
|
Box-by-Box Approach to Network Observability |
|
|
237 | (1) |
|
Why Is Observability Difficult with Networking? |
|
|
238 | (1) |
|
Observability in Data Center Networks: Special Characteristics |
|
|
238 | (2) |
|
Decomposing Observability |
|
|
240 | (1) |
|
The Mechanics of Telemetry |
|
|
240 | (4) |
|
|
240 | (2) |
|
|
242 | (1) |
|
|
243 | (1) |
|
|
243 | (1) |
|
The Uses for Multiple Data Sources |
|
|
244 | (1) |
|
|
245 | (1) |
|
|
246 | (1) |
|
|
246 | (1) |
12 Rethinking Network Design |
|
247 | (10) |
|
Standard, Simple Building Blocks |
|
|
248 | (2) |
|
|
249 | (1) |
|
Failure: Missing the Forest for the Trees |
|
|
250 | (2) |
|
L2 Failure Model Versus L3 Failure Model |
|
|
250 | (1) |
|
Simple Versus Complex Failures |
|
|
251 | (1) |
|
|
251 | (1) |
|
|
252 | (2) |
|
How the Right Architecture Helps |
|
|
253 | (1) |
|
|
253 | (1) |
|
Constraints on the Cloud Native Network Design Principles |
|
|
254 | (1) |
|
|
255 | (2) |
13 Deploying OSPF |
|
257 | (30) |
|
|
258 | (1) |
|
The Problems to Be Addressed |
|
|
259 | (4) |
|
Determining Link-State Flooding Domains |
|
|
260 | (1) |
|
Numbered Versus Unnumbered OSPF |
|
|
261 | (1) |
|
|
261 | (1) |
|
|
262 | (1) |
|
Requirements for Running OSPF on Servers |
|
|
262 | (1) |
|
|
263 | (3) |
|
The Messiness of Stubbiness |
|
|
265 | (1) |
|
|
266 | (2) |
|
Dissecting an OSPF Configuration |
|
|
268 | (17) |
|
Configuration for Leaf-Spine in a Two- Tier Clos Topology: IPv4 |
|
|
268 | (9) |
|
Configuration for Leaf-Spine in a Two- Tier Clos Topology: IPv6 |
|
|
277 | (2) |
|
Configuration with Three- Tier Clos Running OSPF |
|
|
279 | (1) |
|
Configuration with Servers Running OSPF: IPv4 |
|
|
280 | (4) |
|
Summarizing Routes in OSPF |
|
|
284 | (1) |
|
|
284 | (1) |
|
|
285 | (1) |
|
|
286 | (1) |
14 BGP in the Data Center |
|
287 | (14) |
|
|
288 | (7) |
|
|
288 | (1) |
|
|
289 | (1) |
|
|
290 | (1) |
|
|
290 | (1) |
|
|
291 | (1) |
|
BGP Attributes, Communities, Extended Communities |
|
|
291 | (1) |
|
BGP Best-Path Computation |
|
|
292 | (1) |
|
Support for Multiple Protocols |
|
|
293 | (1) |
|
|
293 | (2) |
|
Adapting BGP to the Data Center |
|
|
295 | (5) |
|
|
295 | (1) |
|
|
296 | (1) |
|
|
296 | (1) |
|
BGP's ASN Numbering Scheme |
|
|
296 | (2) |
|
|
298 | (1) |
|
Fixing BGP's Convergence Time |
|
|
299 | (1) |
|
|
300 | (1) |
15 Deploying BGP |
|
301 | (34) |
|
Core BGP Configuration Concepts |
|
|
301 | (2) |
|
Traditional Configuration for a Two- Tier Clos Topology: IPv4 |
|
|
303 | (4) |
|
|
307 | (1) |
|
|
308 | (6) |
|
Route Maps: Implementation of Routing Policy |
|
|
310 | (4) |
|
Providing Sane Defaults for the Data Center |
|
|
314 | (2) |
|
BGP Unnumbered: Eliminating Pesky Interface IP Addresses |
|
|
316 | (9) |
|
|
317 | (1) |
|
How Unnumbered Interfaces Work with BGP |
|
|
318 | (6) |
|
Final Observations on BGP Configuration in FRR |
|
|
324 | (1) |
|
Unnumbered BGP Support in Routing Stacks |
|
|
325 | (1) |
|
|
325 | (1) |
|
|
325 | (1) |
|
|
326 | (2) |
|
Peering with BGP Speakers on the Host |
|
|
328 | (3) |
|
|
330 | (1) |
|
|
331 | (2) |
|
|
331 | (1) |
|
GRACEFUL_SHU TDOWN Community |
|
|
332 | (1) |
|
|
332 | (1) |
|
|
333 | (1) |
|
|
333 | (2) |
16 EVPN in the Data Center |
|
335 | (32) |
|
|
336 | (1) |
|
The Problems a Network Virtualization Control Plane Must Address |
|
|
336 | (1) |
|
Where Does a V TEP Reside? |
|
|
337 | (1) |
|
One Protocol to Rule Them All, Or...? |
|
|
338 | (3) |
|
|
338 | (2) |
|
Separate Underlay and Overlay Protocols |
|
|
340 | (1) |
|
|
341 | (1) |
|
BGP Constructs to Support Virtual Network Routes |
|
|
341 | (5) |
|
|
342 | (1) |
|
|
343 | (1) |
|
|
344 | (1) |
|
|
344 | (1) |
|
Communicating Choice of BUM Handling |
|
|
345 | (1) |
|
|
346 | (8) |
|
EVPN Bridging with Ingress Replication |
|
|
347 | (2) |
|
EVPN Bridging with Routed Multicast Underlay |
|
|
349 | (4) |
|
|
353 | (1) |
|
Support for Dual-Attached Hosts |
|
|
354 | (5) |
|
Host-Switch Interconnect Model |
|
|
355 | (1) |
|
VXLAN Model for Dual-Attached Hosts |
|
|
356 | (1) |
|
|
357 | (1) |
|
|
358 | (1) |
|
Avoiding Duplicate Multidestination Frames |
|
|
359 | (1) |
|
|
359 | (2) |
|
|
361 | (3) |
|
Centralized Versus Distributed Routing |
|
|
361 | (1) |
|
Symmetric Versus Asymmetric Routing |
|
|
362 | (1) |
|
|
363 | (1) |
|
|
363 | (1) |
|
Deploying EVPN in Large Networks |
|
|
364 | (1) |
|
|
365 | (2) |
17 Deploying Network Virtualization |
|
367 | (24) |
|
The Configuration Scenarios |
|
|
367 | (2) |
|
Device-Local Configuration |
|
|
369 | (3) |
|
|
372 | (8) |
|
OSPF Underlay, iBGP Overlay |
|
|
380 | (9) |
|
allowas-in Versus Separate ASN |
|
|
385 | (1) |
|
|
386 | (3) |
|
|
389 | (1) |
|
|
389 | (1) |
|
|
390 | (1) |
18 Validating Network Configuration |
|
391 | (48) |
|
Validating the Network State |
|
|
393 | (1) |
|
|
393 | (3) |
|
|
396 | (6) |
|
Using Ansible to Validate Cabling |
|
|
399 | (3) |
|
Interface Configuration Validation |
|
|
402 | (4) |
|
Automating Interface Configuration Validation |
|
|
405 | (1) |
|
Routing Configuration Validation |
|
|
406 | (22) |
|
Validating an OSPF Configuration |
|
|
407 | (7) |
|
Validating a BGP Configuration |
|
|
414 | (9) |
|
Stripping the Private ASNs |
|
|
423 | (5) |
|
Validating Network Virtualization |
|
|
428 | (6) |
|
Application's Network Validation |
|
|
434 | (2) |
|
|
436 | (1) |
|
|
437 | (2) |
19 Coda |
|
439 | (2) |
Glossary |
|
441 | (6) |
Index |
|
447 | |