Network Programmability and Automation Fundamentals

Book description

Modernize and optimize network management with APIs and automation Legacy network management approaches dont scale adequately and cant be automated well. This guide will help meet tomorrows 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 todays emerging network programmability and automation ecosystem; introduce each leading programmable interface; and review the protocols, tools, techniques, and technologies that underlie network programmability. Youll 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 certificationand 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

Table of contents

  1. Cover Page
  2. About This eBook
  3. Title Page
  4. Copyright Page
  5. Credits
  6. About the Authors
  7. About the Technical Reviewers
  8. Dedication
  9. Acknowledgments
  10. Contents at a Glance
  11. Contents
  12. Icons Used in This Book
  13. Command Syntax Conventions
  14. Introduction
    1. Goals and Methods of This Book
    2. Who This Book Is For
    3. How This Book Is Organized
    4. How This Book Is Structured
  15. Part I: Introduction
    1. Chapter 1. The Network Programmability and Automation Ecosystem
      1. First, a Few Definitions
      2. Your Network Programmability and Automation Toolbox
      3. Software and Network Engineers: The New Era
  16. Part II: Linux
    1. Chapter 2. Linux Fundamentals
      1. The Story of Linux
      2. The Linux Boot Process
      3. A Linux Command Shell Primer
      4. Finding Help in Linux
      5. Files and Directories in Linux
      6. Input and Output Redirection
      7. Archiving Utilities
      8. Linux System Maintenance
      9. Installing and Maintaining Software on Linux
      10. Summary
    2. Chapter 3. Linux Storage, Security, and Networks
      1. Linux Storage
      2. Linux Security
      3. Linux Networking
      4. Summary
    3. Chapter 4. Linux Scripting
      1. Regular Expressions and the grep Utility
      2. The AWK Programming Language
      3. The sed Utility
      4. General Structure of Shell Scripts
      5. Output and Input
      6. Variables
      7. Conditional Statements
      8. Loops
      9. Functions
      10. Expect
      11. Summary
  17. Part III: Python
    1. Chapter 5. Python Fundamentals
      1. Computer Science Concepts
      2. Python Fundamentals
      3. Summary
      4. References
    2. Chapter 6. Python Applications
      1. Organizing the Development Environment
      2. Python Modules
      3. Python Applications
      4. Summary
  18. Part IV: Transport
    1. Chapter 7. HTTP and REST
      1. HTTP Overview
      2. The REST Framework
      3. The HTTP Connection
      4. HTTP Transactions
      5. HTTP Messages
      6. Resource Identification
      7. Postman
      8. HTTP and Bash
      9. HTTP and Python
      10. Summary
    2. Chapter 8. Advanced HTTP
      1. HTTP/1.1 Authentication
      2. Transport Layer Security (TLS) and HTTPS
      3. HTTP/2
      4. Summary
    3. Chapter 9. SSH
      1. SSH Overview
      2. Setting Up SSH
      3. Enabling SSH on Cisco Devices
      4. Secure File Transfer
      5. Summary
      6. References
  19. Part V: Encoding
    1. Chapter 10. XML
      1. XML Overview, History, and Usage
      2. XML Syntax and Components
      3. Making XML Valid
      4. Navigating XML Documents
      5. XML Stylesheet Language Transformations (XSLT)
      6. Processing XML Files with Python
      7. Summary
    2. Chapter 11. JSON
      1. JavaScript Object Notation (JSON)
      2. JSON Schema Definition (JSD)
      3. Summary
    3. Chapter 12. YAML
      1. YAML Structure
      2. Handling YAML Data Using Python
      3. Summary
  20. Part VI: Modeling
    1. Chapter 13. YANG
      1. A Data Modeling Primer
      2. YANG Data Models
      3. Types of YANG Modules
      4. YANG Tools
      5. Summary
  21. Part VII: Protocols
    1. Chapter 14. NETCONF and RESTCONF
      1. NETCONF
      2. RESTCONF
      3. Summary
    2. Chapter 15. gRPC, Protobuf, and gNMI
      1. Requirements for Efficient Transport
      2. History and Principles of gRPC
      3. gRPC as a Transport
      4. The Protocol Buffers Data Format
      5. Working with gRPC and Protobuf in Python
      6. The gNMI Specification
      7. The Anatomy of gNMI
      8. Managing Network Elements with gNMI/gRPC
      9. Summary
    3. Chapter 16. Service Provider Programmability
      1. The SDN Framework for Service Providers
      2. Segment Routing (SR)
      3. BGP Link State (BGP-LS)
      4. Path Computation Element Protocol (PCEP)
      5. Summary
  22. Part VIII: Programmability Applications
    1. Chapter 17. Programming Cisco Platforms
      1. API Classification
      2. Network Platforms
      3. Meraki
      4. DNA Center
      5. Collaboration Platforms
      6. Summary
    2. Chapter 18. Programming Non-Cisco Platforms
      1. General Approaches to Programming Networks
      2. Implementation Examples
      3. Summary
    3. Chapter 19. Ansible
      1. Ansible Basics
      2. Extending Ansible Capabilities
      3. Jinja2 Templates
      4. Using Ansible for Cisco IOS XE
      5. Using Ansible for Cisco IOS XR
      6. Using Ansible for Cisco NX-OS
      7. Using Ansible in Conjunction with NETCONF
      8. Summary
  23. Part IX: Looking Ahead
    1. Chapter 20. Looking Ahead
      1. Some Rules of Thumb
      2. What Do You Study Next?
      3. What Does All This Mean for Your Career?
  24. Index
  25. Code Snippets

Product information

  • Title: Network Programmability and Automation Fundamentals
  • Author(s): Khaled Abuelenain, Jeff Doyle, Anton Karneliuk, Vinit Jain
  • Release date: May 2021
  • Publisher(s): Cisco Press
  • ISBN: 9780135183762