Devnet
pyATS
9 Compare Network States

Comparing Network States with pyATS Library (Genie) Diff Functionality

The pyATS Library offers powerful functionality for comparing "snapshots" of your network using the Genie diff feature. This allows you to easily detect and identify changes that have occurred in your network, facilitating effective network monitoring and validation.

Overview of Diff Functionality

The diff function in pyATS Library enables the comparison of two sets of Python dictionaries or objects with consistent data structures. By comparing the keys and identifying differences between the snapshots, you can quickly ascertain any changes that have occurred in your network.

Using Diff for Stateful Network Validation

Stateful network validation involves taking snapshots of your network at different points in time and comparing them to detect changes. This process is straightforward:

  1. Take Snapshots: Capture snapshots of your network state before and after making changes or at regular intervals.

  2. Make Changes: Introduce changes to your network configuration or state.

  3. Take Another Snapshot: Capture a new snapshot of the modified network state.

  4. Compare Snapshots: Use the diff function to compare the two snapshots and identify any differences.

Creating Snapshots with the Learn Function for BGP

The learn function in pyATS Library allows you to create snapshots of specific features or protocols on your devices. This function runs multiple show commands to gather data and creates a consistent output structure across devices for the specified feature. Here's how you can create snapshots for BGP:

  • Use the learn function to capture baseline snapshots of the BGP feature on your devices.
  • Store the snapshot data in a directory or variable.
  • Make changes to the BGP configuration on a device.
  • Capture another snapshot using the same procedure but with a different output directory or variable.

Utilizing the Diff Function

Once you have captured snapshots before and after changes, you can use the diff function to compare them. The diff function provides a Linux-style list of additions, deletions, and changes between the two snapshots. This allows you to quickly identify differences in device operational states and pinpoint any issues:

  • Run the diff function to compare the two snapshots.
  • Review the output to identify additions, deletions, and changes.
  • Use the output to understand the impact of changes on your network and take necessary actions to resolve any issues.

Use Case: Maintaining Known-Good Device States

A practical use case for the diff functionality is to maintain a repository of known-good device operational states. When your network experiences issues, you can compare the current snapshot with a known-good snapshot to determine what has changed. This helps in troubleshooting and restoring the network to a stable state.

By leveraging the pyATS Library's diff functionality, you can effectively monitor and validate your network's performance and configuration, ensuring its smooth operation and rapid troubleshooting when issues arise.