Foreword |
|
xxv | |
Introduction |
|
xxvii | |
|
Part I Virtualization and Containers |
|
|
|
Chapter 1 Introduction to Virtualization |
|
|
1 | (22) |
|
History of Computer Evolution |
|
|
1 | (1) |
|
History of Virtualization |
|
|
2 | (4) |
|
Motivation and Business Drivers for Virtualization |
|
|
3 | (1) |
|
|
4 | (1) |
|
|
5 | (1) |
|
Simplicity and Cost Optimization |
|
|
5 | (1) |
|
Virtualization---Architecture Definition and Types |
|
|
6 | (8) |
|
Architecture and Components |
|
|
6 | (2) |
|
|
8 | (1) |
|
|
8 | (2) |
|
|
10 | (2) |
|
|
12 | (1) |
|
Connecting the Dots with Cloud Computing |
|
|
13 | (1) |
|
Computing Virtualization Elements and Techniques |
|
|
14 | (4) |
|
|
14 | (1) |
|
|
15 | (2) |
|
|
17 | (1) |
|
Virtualization Scale and Design Consideration |
|
|
18 | (1) |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
Multitenancy in Virtualization |
|
|
19 | (1) |
|
|
20 | (1) |
|
References in This Chapter |
|
|
21 | (2) |
|
Chapter 2 Virtualization and Cisco |
|
|
23 | (38) |
|
History of Virtualization in Cisco |
|
|
23 | (7) |
|
Network Infrastructure Virtualization |
|
|
23 | (3) |
|
Network Device Virtualization |
|
|
26 | (4) |
|
Virtualization in Enterprise and Service Provider Environments |
|
|
30 | (2) |
|
|
30 | (1) |
|
|
31 | (1) |
|
The Era of Software-Defined Networking |
|
|
32 | (1) |
|
|
33 | (1) |
|
Control Plane Virtualization |
|
|
33 | (25) |
|
|
34 | (1) |
|
|
34 | (1) |
|
|
35 | (1) |
|
|
36 | (1) |
|
|
36 | (2) |
|
|
38 | (4) |
|
Cisco Proprietary SDN Controllers |
|
|
42 | (1) |
|
|
42 | (2) |
|
|
44 | (1) |
|
|
45 | (2) |
|
Modern Network Design with SDN and NFV |
|
|
47 | (1) |
|
Elements in Network Function Virtualization |
|
|
48 | (1) |
|
Orchestration and Deployment of Virtual Network Services |
|
|
48 | (3) |
|
Technology Trends Built on SDN |
|
|
51 | (1) |
|
|
51 | (1) |
|
Cisco's IoT Platform for Industries |
|
|
52 | (1) |
|
The Cisco IoT Platform for Service Providers |
|
|
53 | (2) |
|
A Use Case for IoT with SDN: Manufacturing |
|
|
55 | (2) |
|
Intent-Based Networking (IBN) |
|
|
57 | (1) |
|
|
58 | (1) |
|
References in This Chapter |
|
|
59 | (2) |
|
Chapter 3 Container Orchestration and Management |
|
|
61 | (36) |
|
Introduction to the Cloud-Native Reference Model |
|
|
61 | (2) |
|
Application Development Framework |
|
|
62 | (1) |
|
Automated Orchestration and Management |
|
|
62 | (1) |
|
Container Runtime and Provisioning |
|
|
63 | (1) |
|
The Journey from Virtual Network Function (VNF) to Cloud Native Function (CNF) |
|
|
63 | (2) |
|
Container Deployment and Orchestration Overview |
|
|
65 | (16) |
|
|
66 | (1) |
|
|
67 | (2) |
|
Cisco Application Hosting Framework |
|
|
69 | (1) |
|
|
70 | (1) |
|
Cisco Open Agent Containers |
|
|
71 | (4) |
|
|
75 | (4) |
|
|
79 | (2) |
|
Container Deployment and Orchestration |
|
|
81 | (14) |
|
Orchestrating and Managing Containers Using LXC |
|
|
81 | (3) |
|
Orchestrating and Managing Containers Using Docker |
|
|
84 | (1) |
|
Docker Daemon Status Verification |
|
|
85 | (1) |
|
|
86 | (1) |
|
|
87 | (2) |
|
|
89 | (2) |
|
Orchestrating and Managing Containers Using Kubernetes |
|
|
91 | (1) |
|
|
91 | (1) |
|
Enabling Kubernetes Master |
|
|
92 | (1) |
|
Enabling Nexus 9000 Switch as Kubernetes Worker Node |
|
|
93 | (1) |
|
Deploying Workload Using Kubernetes |
|
|
94 | (1) |
|
|
95 | (1) |
|
|
95 | (2) |
|
Chapter 4 Container Networking Concepts |
|
|
97 | (42) |
|
Container Networking---Introduction and Essentials |
|
|
97 | (2) |
|
|
98 | (1) |
|
Application to Application |
|
|
98 | (1) |
|
Application to External Network |
|
|
98 | (1) |
|
|
99 | (6) |
|
Namespace to External Network |
|
|
100 | (2) |
|
|
102 | (2) |
|
|
104 | (1) |
|
Container Network Models and Interfaces |
|
|
105 | (10) |
|
Cisco Native App Hosting Network Model |
|
|
106 | (1) |
|
|
106 | (2) |
|
|
108 | (3) |
|
Docker Networking---Container Network Model |
|
|
111 | (2) |
|
|
113 | (1) |
|
|
113 | (1) |
|
|
114 | (1) |
|
|
114 | (1) |
|
|
114 | (1) |
|
Kubernetes Container Network Interface (CNI) Model |
|
|
114 | (1) |
|
Setting Up Container Networking |
|
|
115 | (21) |
|
Native App Hosting---Shared Networking Configuration |
|
|
115 | (1) |
|
Cisco IOS-XE Configuration |
|
|
115 | (2) |
|
Cisco IOS-XR Configuration |
|
|
117 | (5) |
|
Cisco Nexus OS Configuration |
|
|
122 | (3) |
|
|
125 | (1) |
|
Native App Hosting---Dedicated Networking Configuration |
|
|
125 | (1) |
|
Cisco IOS XE Configuration |
|
|
125 | (1) |
|
|
126 | (2) |
|
Routing Mode---Unnumbered |
|
|
128 | (1) |
|
|
129 | (2) |
|
Cisco IOS XR and Nexus OS |
|
|
131 | (1) |
|
Docker Network Configuration |
|
|
131 | (1) |
|
|
131 | (1) |
|
|
132 | (2) |
|
|
134 | (2) |
|
|
136 | (1) |
|
|
136 | (1) |
|
|
137 | (2) |
|
Part II Container Deployment and Operation in Cisco Products |
|
|
|
Chapter 5 Container Orchestration in Cisco IOS-XE Platforms |
|
|
139 | (50) |
|
Cisco IOS-XE Architecture |
|
|
139 | (7) |
|
|
140 | (1) |
|
Architecture Components and Functions |
|
|
141 | (1) |
|
|
142 | (2) |
|
|
144 | (2) |
|
IOS-XE Architecture: Application Hosting |
|
|
146 | (3) |
|
Libvirt and Virtualization Manager |
|
|
146 | (2) |
|
|
148 | (1) |
|
|
149 | (8) |
|
|
150 | (3) |
|
|
153 | (1) |
|
Memory and Storage Requirements |
|
|
153 | (1) |
|
|
154 | (1) |
|
|
155 | (1) |
|
Application Deployment Workflow and Operation States |
|
|
156 | (1) |
|
Developing and Hosting Applications |
|
|
157 | (28) |
|
LXC-Based Guest Shell Container |
|
|
157 | (1) |
|
|
157 | (1) |
|
Setting Up Network Configuration |
|
|
157 | (2) |
|
Activating the Guest Shell Container |
|
|
159 | (2) |
|
Developing PaaS-Style Applications and Hosting |
|
|
161 | (1) |
|
|
161 | (1) |
|
Setting Up the Development Environment |
|
|
161 | (1) |
|
Developing a Python Application |
|
|
161 | (1) |
|
|
162 | (1) |
|
Creating an IOx Package Using YAML |
|
|
162 | (3) |
|
Installing, Activating, and Running the Application |
|
|
165 | (1) |
|
Developing Virtual Machine--Based Application and Hosting |
|
|
166 | (1) |
|
Setting Up an Application Development Environment |
|
|
167 | (2) |
|
Building the Virtual Machine File System |
|
|
169 | (1) |
|
Build an IOx Package Using YAML |
|
|
170 | (2) |
|
Installing, Activating, and Running the Application |
|
|
172 | (3) |
|
Developing and Hosting a Docker-Style Application |
|
|
175 | (1) |
|
Setting Up Docker Toolchain |
|
|
175 | (1) |
|
|
176 | (1) |
|
|
177 | (1) |
|
Images and Package Repository |
|
|
177 | (1) |
|
Develop Python Application |
|
|
178 | (1) |
|
|
179 | (1) |
|
Building an IOx Application Package Using YAML |
|
|
180 | (2) |
|
Installing, Activating, and Running the Application |
|
|
182 | (1) |
|
Native Docker Application Hosting in Catalyst 9300 |
|
|
182 | (1) |
|
Workflow 1 Building and Exporting a Docker Image |
|
|
182 | (2) |
|
Workflow 2 Performing a Docker Pull and Export |
|
|
184 | (1) |
|
Deploying Native Docker Applications |
|
|
184 | (1) |
|
Docker Container Networking |
|
|
185 | (1) |
|
|
185 | (1) |
|
|
186 | (1) |
|
|
187 | (2) |
|
Chapter 6 Container Orchestration in Cisco IOS-XR Platforms |
|
|
189 | (46) |
|
Cisco IOS-XR Architecture |
|
|
189 | (3) |
|
Architecture and Software Evolution |
|
|
190 | (2) |
|
Application Hosting Architecture |
|
|
192 | (6) |
|
Kernel Interface Module (KIM) |
|
|
193 | (2) |
|
|
195 | (1) |
|
Docker Hosting Architecture |
|
|
196 | (2) |
|
Hosting Environment Readiness |
|
|
198 | (3) |
|
|
198 | (1) |
|
|
199 | (1) |
|
|
200 | (1) |
|
Types of Application Hosting in Cisco XR Platform |
|
|
201 | (15) |
|
Native Application Hosting |
|
|
201 | (1) |
|
Native Hosting from an Existing RPM File |
|
|
202 | (4) |
|
Building an RPM File for Native Hosting |
|
|
206 | (3) |
|
LXC-Based Application Hosting |
|
|
209 | (7) |
|
Network Configuration and Verification |
|
|
216 | (2) |
|
Docker-Based Application Hosting |
|
|
217 | (1) |
|
Docker Images and Registry |
|
|
218 | (6) |
|
Loading from Public Registry |
|
|
218 | (2) |
|
Loading from Local Registry |
|
|
220 | (2) |
|
Loading Manually to Local Store |
|
|
222 | (1) |
|
Container Deployment Workflow |
|
|
223 | (1) |
|
Network Configuration and Verification |
|
|
224 | (2) |
|
Network Reachability Configuration |
|
|
224 | (1) |
|
Name Resolution Configuration |
|
|
224 | (1) |
|
Network Proxy Configuration |
|
|
225 | (1) |
|
Application Hosting in VRF Namespace |
|
|
226 | (6) |
|
|
226 | (3) |
|
Application Hosting in VRF Namespace Using LXC |
|
|
229 | (3) |
|
|
232 | (2) |
|
Persistent Application Deployment |
|
|
232 | (2) |
|
|
234 | (1) |
|
|
234 | (1) |
|
Chapter 7 Container Orchestration in Cisco NX-OS Platforms |
|
|
235 | (56) |
|
Cisco NX-OS Software Architecture |
|
|
235 | (4) |
|
|
235 | (1) |
|
NX-OS Modular Software Architecture |
|
|
236 | (1) |
|
Fault Detection and Recovery |
|
|
237 | (1) |
|
|
238 | (1) |
|
Hosting Environment Readiness |
|
|
239 | (3) |
|
|
239 | (1) |
|
|
239 | (1) |
|
Platform Resource Requirements |
|
|
240 | (1) |
|
|
240 | (1) |
|
LXC-based Open Agent Container (OAC) |
|
|
240 | (1) |
|
|
241 | (1) |
|
Platform Resource Requirements |
|
|
241 | (1) |
|
Container Infrastructure Configuration and Instantiation |
|
|
242 | (14) |
|
|
242 | (1) |
|
|
242 | (1) |
|
Deployment Model and Workflow |
|
|
243 | (2) |
|
|
245 | (1) |
|
Accessing Guest Shell via SSH |
|
|
246 | (2) |
|
Guest Shell Networking Setup and Verification |
|
|
248 | (5) |
|
Installation and Verification of Applications |
|
|
253 | (1) |
|
Custom Python Application |
|
|
253 | (1) |
|
Python API--Based Application |
|
|
254 | (2) |
|
|
256 | (32) |
|
|
256 | (1) |
|
Accessing Bash from NX-OS |
|
|
257 | (1) |
|
|
258 | (2) |
|
|
260 | (1) |
|
|
261 | (1) |
|
|
261 | (2) |
|
|
263 | (1) |
|
Instantiating a Docker Container with Alpine Image |
|
|
263 | (3) |
|
Managing Docker Container |
|
|
266 | (2) |
|
Orchestrating Docker Containers Using Kubernetes |
|
|
268 | (5) |
|
Orchestrating Docker Containers in a Node from the K8s Master |
|
|
273 | (3) |
|
Open Agent Container (OAC) |
|
|
276 | (1) |
|
OAC Deployment Model and Workflow |
|
|
277 | (3) |
|
Accessing OAC via the Console |
|
|
280 | (1) |
|
OAC Networking Setup and Verification |
|
|
280 | (4) |
|
Management and Orchestration of OAC |
|
|
284 | (1) |
|
Installation and Verification of Applications |
|
|
285 | (1) |
|
Custom Python Application |
|
|
285 | (2) |
|
Application Using Python APIs |
|
|
287 | (1) |
|
|
288 | (1) |
|
|
288 | (1) |
|
|
289 | (2) |
|
Chapter 8 Application Developers' Tools and Resources |
|
|
291 | (70) |
|
Cisco Development Tool Kits and Resources |
|
|
291 | (45) |
|
Nexus Software Development Kit (NX-SDK) |
|
|
291 | (1) |
|
|
292 | (1) |
|
|
293 | (1) |
|
NX-SDK Installation and Activation |
|
|
293 | (4) |
|
Python APIs---IOS-XE / NX-OS |
|
|
297 | (1) |
|
|
297 | (5) |
|
|
302 | (3) |
|
|
305 | (1) |
|
|
306 | (1) |
|
|
306 | (1) |
|
|
306 | (1) |
|
|
306 | (3) |
|
Data Management Engine and Managed Objects |
|
|
309 | (1) |
|
|
310 | (8) |
|
RESTCONF, NETCONF, and YANG |
|
|
318 | (2) |
|
Enabling RESTCONF Agent in IOS-XE |
|
|
320 | (1) |
|
Using a RESTCONF Agent in IOS-XE |
|
|
321 | (2) |
|
Enabling RESTCONF Agent in NX-OS |
|
|
323 | (2) |
|
Using the RESTCONF Agent in NX-OS |
|
|
325 | (2) |
|
Enabling NETCONF Agent in IOS-XE |
|
|
327 | (2) |
|
Using the NETCONF Agent in IOS-XE |
|
|
329 | (2) |
|
Enabling NETCONF Agent in IOS-XR |
|
|
331 | (1) |
|
Using NETCONF Agent in IOS-XR |
|
|
332 | (1) |
|
Enabling the NETCONF Agent in NX-OS |
|
|
333 | (1) |
|
Using NETCONF Agent in NX-OS |
|
|
333 | (3) |
|
Open-Source and Commercial Tools |
|
|
336 | (5) |
|
|
336 | (1) |
|
|
337 | (1) |
|
|
337 | (1) |
|
|
338 | (1) |
|
|
338 | (1) |
|
|
339 | (1) |
|
|
339 | (1) |
|
|
340 | (1) |
|
|
340 | (1) |
|
|
341 | (1) |
|
Building and Deploying Container Images |
|
|
341 | (4) |
|
|
341 | (1) |
|
|
342 | (1) |
|
|
343 | (1) |
|
|
343 | (1) |
|
Publish Docker Images---Docker Hub |
|
|
344 | (1) |
|
|
344 | (1) |
|
|
344 | (1) |
|
|
344 | (1) |
|
|
345 | (1) |
|
|
345 | (1) |
|
Configuration and Application Management Tools |
|
|
345 | (12) |
|
|
346 | (1) |
|
|
346 | (1) |
|
|
346 | (1) |
|
|
347 | (1) |
|
|
347 | (1) |
|
|
348 | (1) |
|
|
348 | (1) |
|
|
349 | (1) |
|
NETCONF Operations with Ansible |
|
|
350 | (1) |
|
|
351 | (1) |
|
Installing and Activating the Puppet Agent |
|
|
351 | (2) |
|
|
353 | (1) |
|
|
354 | (1) |
|
Creating a Chef Cookbook with Recipes |
|
|
354 | (1) |
|
Installing and Activating Chef Client |
|
|
355 | (2) |
|
|
357 | (1) |
|
|
357 | (4) |
|
Chapter 9 Container Deployment Use Cases |
|
|
361 | (44) |
|
General Use Cases for Enterprise, Service Provider, and Data Center Networks |
|
|
362 | (22) |
|
|
362 | (1) |
|
Hardware and Software Stability Check |
|
|
362 | (1) |
|
Control Plane Health Check |
|
|
362 | (1) |
|
Resource Usage and Scalability Check |
|
|
362 | (1) |
|
Configuration Consistency Check |
|
|
362 | (1) |
|
Traffic Profiling and Top Talkers |
|
|
363 | (1) |
|
Monitor Operational Data to Detect Failures |
|
|
363 | (1) |
|
Build Infrastructure for Proof-of-Concept and Testing Purposes |
|
|
363 | (1) |
|
Create and Deploy DHCP Docker Container |
|
|
363 | (1) |
|
Configure the Catalyst Switch for Application Hosting |
|
|
363 | (2) |
|
|
365 | (3) |
|
Install and Activate DHCP Docker Container in Catalyst 9000 |
|
|
368 | (1) |
|
Create and Deploy DNS Docker Container |
|
|
369 | (1) |
|
Prepare to Create DNS Docker Container |
|
|
370 | (3) |
|
Create DNS Docker Containers |
|
|
373 | (1) |
|
Install and Activate DNS Docker Container in Catalyst 9000 |
|
|
374 | (1) |
|
Create HAProxy and Node Containers |
|
|
375 | (1) |
|
|
375 | (1) |
|
|
376 | (1) |
|
|
377 | (1) |
|
Deploy, Install, and Activate Web Server Docker Containers |
|
|
378 | (2) |
|
HAProxy Load Balancer Setup |
|
|
380 | (1) |
|
|
381 | (1) |
|
Install, Activate, and Run HAProxy Docker Containers |
|
|
382 | (2) |
|
IOS-XR Use Case: Disaggregated Seamless BFD as a Virtual Network Function for Rapid Failure Detection |
|
|
384 | (1) |
|
|
385 | (2) |
|
|
386 | (1) |
|
|
386 | (1) |
|
Creating and Hosting S-BFD as a Virtual Network Function |
|
|
387 | (4) |
|
|
388 | (1) |
|
Hosting the S-BFD Reflectorbase on the XR Device |
|
|
388 | (2) |
|
Hosting the S-BFD Client on the Server |
|
|
390 | (1) |
|
NX-OS Use Case: Control Plane Health Check Using an Anomaly Detector |
|
|
391 | (7) |
|
Objective of the Application |
|
|
391 | (1) |
|
Build and Host the Anomaly Detector Application in Docker---High-Level Procedure |
|
|
392 | (1) |
|
|
392 | (2) |
|
|
394 | (1) |
|
Classifying Expected and Unexpected Control Plane Traffic |
|
|
395 | (1) |
|
|
396 | (2) |
|
NX-OS Use Case: NX-OS Docker Health Check |
|
|
398 | (6) |
|
Objective of the Application |
|
|
398 | (1) |
|
Build and Host the Application in Docker---High-Level Procedure |
|
|
398 | (1) |
|
NX-OS Docker Health Check Application |
|
|
399 | (1) |
|
|
399 | (2) |
|
|
401 | (3) |
|
|
404 | (1) |
|
Chapter 10 Current NFV Offering and Future Trends in Containers |
|
|
405 | (20) |
|
|
405 | (6) |
|
|
406 | (1) |
|
Two-Way Active Measurement Protocol (TWAMP) |
|
|
407 | (1) |
|
|
407 | (1) |
|
|
408 | (1) |
|
|
408 | (1) |
|
|
409 | (1) |
|
|
409 | (1) |
|
|
410 | (1) |
|
|
411 | (7) |
|
|
412 | (1) |
|
Cisco Unified Computing Servers (UCS) |
|
|
412 | (1) |
|
|
412 | (2) |
|
Virtual Routers and Switches |
|
|
414 | (1) |
|
Cisco Ultra Service Platform |
|
|
415 | (1) |
|
Cisco Container Platforms |
|
|
416 | (1) |
|
|
417 | (1) |
|
Containers and Service Chaining |
|
|
418 | (3) |
|
|
419 | (1) |
|
|
420 | (1) |
|
Serverless Computing and Network Functions |
|
|
421 | (2) |
|
|
423 | (1) |
|
|
423 | (2) |
Index |
|
425 | |