Network Programmability and Automation Fundamentals

; Anton Karneliuk ; Vinit Jain ; Jeff Doyle

Modernize and optimize network management with APIs and automation

Legacy network management approaches don’t scale adequately and can’t be automated well. This guide will help meet tomorrow’s challenges by adopting network programmability based on Application Programming Interfaces (APIs). Les mer
Vår pris

(Paperback) Fri frakt!
Leveringstid: Usikker levering*
*Vi bestiller varen fra forlag i utlandet. Dersom varen finnes, sender vi den så snart vi får den til lager

Legg i
Legg i
Vår pris: 1013,-

(Paperback) Fri frakt!
Leveringstid: Usikker levering*
*Vi bestiller varen fra forlag i utlandet. Dersom varen finnes, sender vi den så snart vi får den til lager

Om boka

Modernize and optimize network management with APIs and automation

Legacy network management approaches don’t scale adequately and can’t be automated well. This guide will help meet tomorrow’s challenges by adopting network programmability based on Application Programming Interfaces (APIs). Using these techniques, you can improve efficiency, reliability, and flexibility; simplify implementation of high-value technologies; automate routine administrative and security tasks; and deploy services far more rapidly.

Four expert authors help you transition from a legacy mindset to one based on solving problems with software. They explore today’s emerging network programmability and automation ecosystem; introduce each leading programmable interface; and review the protocols, tools, techniques, and technologies that underlie network programmability. You’ll master key concepts through hands-on examples you can run using Linux, Python, Cisco DevNet sandboxes, and other easily accessible tools.

This guide is for all network architects, engineers, operations, and software professionals who want to integrate programmability into their networks. It offers valuable background for Cisco DevNet certification—and skills you can use with any platform, whether you have software development experience or not.

Master core concepts and explore the network programmability stack
Manage network software and run automation scripts in Linux environments
Solve real problems with Python and its Napalm and Nornir automation frameworks
Make the most of the HTTP protocol, REST architectural framework, and SSH
Encode your data with XML, JSON, or YAML
Understand and build data models using YANG that offer a foundation for model-based network programming
Leverage modern network management protocols, from gRPC and gNMI to NETCONF and RESTCONF
Meet stringent service provider KPIs in large-scale, fast-changing networks
Program Cisco devices running IOS XE, IOS XR, and NX-OS as well as Meraki, DNA Center, and Webex platforms
Program non-Cisco platforms such as Cumulus Linux and Arista EOS
Go from “zero to hero” with Ansible network automation
Plan your next steps with more advanced tools and technologies



    Introduction xxix
Part I Introduction
Chapter 1 The Network Programmability and Automation Ecosystem 1
    First, a Few Definitions 2
    Your Network Programmability and Automation Toolbox 14
    Software and Network Engineers: The New Era 19
Part II Linux
Chapter 2 Linux Fundamentals 21
    The Story of Linux 21
    The Linux Boot Process 26
    A Linux Command Shell Primer 28
    Finding Help in Linux 31
    Files and Directories in Linux 35
    Input and Output Redirection 57
    Archiving Utilities 67
    Linux System Maintenance 73
    Installing and Maintaining Software on Linux 94
    Summary 118
Chapter 3 Linux Storage, Security, and Networks 119
    Linux Storage 119
    Linux Security 135
    Linux Networking 158
    Summary 181
Chapter 4 Linux Scripting 183
    Regular Expressions and the grep Utility 184
    The AWK Programming Language 193
    The sed Utility 196
    General Structure of Shell Scripts 203
    Output and Input 207
    Variables 215
    Conditional Statements 223
    Loops 232
    The until-do Loop 237
    Functions 238
    Expect 242
    Summary 246
Part III Python
Chapter 5 Python Fundamentals 249
    Scripting Languages Versus Programming Languages 250
    Network Programmability 253
    Computer Science Concepts 255
    Python Fundamentals 260
    Summary 309
    References 310
Chapter 6 Python Applications 311
    Organizing the Development Environment 311
    The virtualenv Tool 331
    Python Modules 333
    Python Applications 336
    Summary 385
Part IV Transport
Chapter 7 HTTP and REST 387
    HTTP Overview 387
    The REST Framework 392
    The HTTP Connection 394
    HTTP Transactions 397
    HTTP Messages 415
    Resource Identification 431
    Postman 436
    HTTP and Bash 447
    HTTP and Python 455
    Summary 467
Chapter 8 Advanced HTTP 469
    HTTP/1.1 Authentication 469
    Transport Layer Security (TLS) and HTTPS 487
    HTTP/2 503
    Summary 508
Chapter 9 SSH 509
    SSH Overview 509
    Setting Up SSH 521
    Enabling SSH on Cisco Devices 526
    Secure File Transfer 540
    Summary 551
    References 551
Part V Encoding
Chapter 10 XML 553
    XML Overview, History, and Usage 553
    XML Syntax and Components 554
    Making XML Valid 562
    Navigating XML Documents 574
    XML Stylesheet Language Transformations (XSLT) 578
    Processing XML Files with Python 580
    Summary 588
Chapter 11 JSON 591
    JavaScript Object Notation (JSON) 591
    JSON Schema Definition (JSD) 595
    Summary 614
Chapter 12 YAML 615
    YAML Structure 616
    Handling YAML Data Using Python 626
    Summary 637
Part VI Modeling
Chapter 13 YANG 639
    A Data Modeling Primer 639
    YANG Data Models 642
    Types of YANG Modules 663
    YANG Tools 673
    Summary 688
Part VII Protocols
Chapter 14 NETCONF and RESTCONF 689
    NETCONF 689
    RESTCONF 739
    Summary 779
Chapter 15 gRPC, Protobuf, and gNMI 781
    Requirements for Efficient Transport 781
    History and Principles of gRPC 782
    gRPC as a Transport 784
    The Protocol Buffers Data Format 786
    Working with gRPC and Protobuf in Python 790
    The gNMI Specification 798
    The Anatomy of gNMI 799
    Managing Network Elements with gNMI/gRPC 814
    Summary 818
Chapter 16 Service Provider Programmability 819
    The SDN Framework for Service Providers 819
    Segment Routing (SR) 823
    BGP Link State (BGP-LS) 843
    Path Computation Element Protocol (PCEP) 859
    Summary 880
Part VIII Programmability Applications
Chapter 17 Programming Cisco Platforms 881
    API Classification 882
    Network Platforms 883
    Meraki 922
    DNA Center 931
    Collaboration Platforms 942
    Summary 954
Chapter 18 Programming Non-Cisco Platforms 957
    General Approaches to Programming Networks 957
    Implementation Examples 962
    Summary 987
Chapter 19 Ansible 989
    Ansible Basics 989
    Extending Ansible Capabilities 1003
    Jinja2 Templates 1034
    Using Ansible for Cisco IOS XE 1055
    Using Ansible for Cisco IOS XR 1073
    Using Ansible for Cisco NX-OS 1084
    Using Ansible in Conjunction with NETCONF 1095
    Summary 1108
Part IX Looking Ahead
Chapter 20 Looking Ahead 1109
    Some Rules of Thumb 1109
    What Does All This Mean for Your Career? 1118

9781587145148, TOC, 4/1/2021

Om forfatteren

Khaled Abuelenain, CCIE No. 27401 (R&S, SP), is currently the Consulting Director at Acuative, a Cisco Managed Services Master Partner. Khaled has spent the past 18 years designing, implementing, operating, and automating networks and clouds. He specializes in service provider technologies, SD-WAN, data center technologies, programmability, automation, and cloud architectures. Khaled is especially interested in Linux and OpenStack.
Khaled is a contributing author of the best-selling Cisco Press book Routing TCP/IP, Volume II, 2nd edition, by Jeff Doyle. He also blogs frequently on network programmability and automation on Khaled is also a member of the DevNet500 group, being one of the first 500 individuals in the world to become DevNet certified. Khaled lives in Riyadh, Saudi Arabia, and when not working or writing, he likes to run marathons and skydive. He can be reached at, on Twitter at @kabuelenain or on LinkedIn at
Jeff Doyle, CCIE No. 1919, is a Member of Technical Staff at Apstra. Specializing in IP routing protocols, complex BGP policy, SDN/NFV, data center fabrics, IBN, EVPN, MPLS, and IPv6, Jeff has designed or assisted in the design of large-scale IP and IPv6 service provider networks in 26 countries over 6 continents.
Jeff is the author of CCIE Professional Development: Routing TCP/IP, Volumes I and II and OSPF and IS-IS: Choosing an IGP for Large-Scale Networks; a co-author of Software-Defined Networking: Anatomy of OpenFlow; and an editor and contributing author of Juniper Networks Routers: The Complete Reference. Jeff is currently writing CCIE Professional Development: Switching TCP/IP. He also writes for Forbes and blogs for both Network World and Network Computing. Jeff is one of the founders of the Rocky Mountain IPv6 Task Force, is an IPv6 Forum Fellow, and serves on the executive board of the Colorado chapter of the Internet Society (ISOC).
Anton Karneliuk, CCIE No. 49412 (R&S, SP), is a Network Engineer and Manager at THG Hosting, responsible for the development, operation, and automation of networks in numerous data centers across the globe and the international backbone. Prior to joining THG, Anton was a team lead in Vodafone Group Network Engineering and Delivery, focusing on introduction of SDN and NFV projects in Germany. Anton has 15 years of extensive experience in design, rollout, operation, and optimization of large-scale service providers and converged networks, focusing on IP/MPLS, BGP, network security, and data center Clos fabrics built using EVPN/VXLAN. He also has several years of full-stack software development experience for network management and automation. 
Anton holds a B.S. in telecommunications and an M.S. in information security from Belarusian State University of Informatics and Radio Electronics. You can find him actively blogging about network automation and running online training at Karneliuk. com. Anton lives with his wife in London.
Vinit Jain, CCIE No. 22854 (R&S, SP, Security & DC), is a Network Development Engineer at Amazon, managing the Amazon network backbone operations team. Previously, he worked as a technical leader with the Cisco Technical Assistance Center (TAC), providing escalation support in routing and data center technologies. Vinit is a speaker at various networking forums, including Cisco Live! events. He has co-authored several Cisco Press titles, such as Troubleshooting BGP, and Troubleshooting Cisco Nexus Switches and NX-OS, LISP Network Deployment and Troubleshooting, and has authored and co-authored several video courses, including BGP Troubleshooting, the CCNP DCCOR Complete Video Course, and the CCNP ENCOR Complete Video Course. In addition to his CCIEs, Vinit holds multiple certifications related to programming and databases. Vinit graduated from Delhi University in mathematics and earned a master’s in information technology from Kuvempu University in India. Vinit can be found on Twitter as @VinuGenie.