Showing posts with label network automation. Show all posts
Showing posts with label network automation. Show all posts

Thursday, 30 April 2026

Cisco 350 901 Practice Test Demystified Pass It Confidently

A modern digital screen displaying a 'Cisco 350-901 Practice Test' interface with correct answers and a progress bar, set against a background that transitions from chaotic, glowing network data and code to a clear, structured network diagram. The scene symbolizes demystification and confident preparation for the Cisco 350-901 exam through practice tests.

In today's rapidly evolving IT landscape, network automation has become a cornerstone for efficiency, scalability, and agility. Professionals looking to validate their expertise in this critical area often turn to the Cisco 350-901 AUTOCOR exam, a challenging yet highly rewarding certification. This exam, officially known as Cisco Designing, Deploying, and Managing Network Automation Systems, is your gateway to demonstrating proficiency in automating enterprise networks.

While the prospect of taking such a comprehensive exam can seem daunting, with the right preparation, confidence is well within reach. This article serves as your ultimate guide, demystifying the path to success and highlighting how an effective Cisco 350 901 practice test can be your most powerful tool. We'll walk you through the exam's intricacies, share invaluable preparation tips, and show you exactly how to leverage practice exams to pass confidently.

Understanding the Cisco 350-901 AUTOCOR Exam

Before diving into preparation strategies, it's crucial to have a clear understanding of what the Cisco 350-901 AUTOCOR exam entails. This exam is a specialist-level assessment designed to validate a candidate's skills in network automation.

Exam Overview: Cisco Designing, Deploying, and Managing Network Automation Systems

The 350-901 AUTOCOR exam covers a broad spectrum of topics essential for automating modern networks. Here's a quick look at its core details:

  • Exam Name: Cisco Designing, Deploying, and Managing Network Automation Systems
  • Exam Code: 350-901 AUTOCOR
  • Exam Price: $400 USD
  • Duration: 120 minutes
  • Number of Questions: 90-110 (typically a mix of multiple-choice, drag-and-drop, and simlet questions)
  • Passing Score: Variable (approximately 750-850 out of 1000)

Candidates are expected to demonstrate proficiency in various aspects of network automation, from foundational concepts to advanced deployment and management of automated systems. The exam is challenging, requiring both theoretical knowledge and practical understanding.

Who Should Take This Exam?

The Cisco 350-901 exam is ideal for network engineers, software developers, and automation specialists who are involved in designing, deploying, and managing network automation solutions. If you're looking to formalize your expertise in network programmability and automation, or aiming to achieve higher-level Cisco certifications, this exam is a perfect fit. It signifies a strong understanding of modern network architectures and automation tools.

The Cisco Network Automation Certification Path

The 350-901 AUTOCOR exam is a core component of the CCNP Enterprise certification, specifically for the Cisco Certified DevNet Professional track. Passing this exam, along with a core exam like 350-401 ENCOR, leads to the prestigious CCNP Enterprise certification. It also counts towards the Cisco Certified DevNet Professional certification. Understanding the broader landscape of Cisco network automation certifications helps candidates align their study efforts with their long-term career goals.

Why a Cisco 350 901 Practice Test is Your Best Ally

Effective preparation for the Cisco 350-901 exam goes beyond simply studying documentation. The strategic use of a robust Cisco 350 901 practice test is paramount for several compelling reasons. These practice tests are not just about memorizing answers; they are powerful tools designed to optimize your study process and boost your confidence.

To truly understand the depth of knowledge required for this certification, you can explore comprehensive resources that offer valuable Cisco 350-901 sample questions and answers. These examples give you a realistic preview of the question types and complexity you'll face on exam day.

Simulating the Real Exam Environment

One of the primary benefits of a quality Cisco 350 901 practice test is its ability to replicate the actual exam environment. This includes the time constraints, question formats, and overall interface. By regularly exposing yourself to this simulation, you minimize surprises on exam day, allowing you to focus purely on the questions at hand rather than adapting to unfamiliar settings.

Identifying Your Knowledge Gaps

Practice tests are diagnostic tools. They don't just tell you what you know; more importantly, they reveal what you don't know. After taking a Cisco 350 901 practice test, a detailed score report often highlights specific areas where you struggled. This allows you to pinpoint your weak points and allocate your study time more efficiently, ensuring you cover all necessary topics comprehensively.

Building Confidence and Reducing Anxiety

Success in any exam is as much about mental preparedness as it is about knowledge. Consistent performance on a Cisco 350 901 practice test builds significant confidence. As you see your scores improve, your self-assurance grows, which can be a critical factor in mitigating exam anxiety. Feeling prepared and confident allows you to approach the actual exam with a clear and focused mind.

Mastering Time Management

The Cisco 350-901 exam has a strict 120-minute time limit for 90-110 questions, meaning you have roughly a minute per question. This necessitates excellent time management skills. Regular practice with timed tests helps you develop a rhythm, learn to pace yourself, and make informed decisions about when to spend more time on a question and when to move on. This skill is invaluable for ensuring you attempt all questions within the allocated period.

Deconstructing the 350-901 Exam Topics (Syllabus)

To effectively prepare, it's essential to break down the official Cisco Designing, Deploying, and Managing Network Automation Systems exam topics. Understanding the weightage and specifics of each section will guide your study efforts. You can find the detailed blueprint on the Cisco Learning Network for AUTOCOR exam topics.

Network Automation (30%)

This foundational section covers the core concepts and principles of network automation. It includes understanding data models (YANG, JSON), API-based automation (RESTCONF, NETCONF), common automation protocols, and the role of network programmability. You'll need to grasp how to interact with network devices using programmatic interfaces and understand the benefits of automation in network operations. Key topics also involve understanding Python for network automation, especially dealing with libraries and scripts.

Infrastructure as Code (30%)

Infrastructure as Code (IaC) is a critical paradigm in modern IT, and this section focuses on applying its principles to networking. Topics include using version control systems (like Git) for network configurations, understanding configuration management tools (such as Ansible, Puppet, Chef, SaltStack), and deploying network services through automated workflows. Expect questions on playbooks, modules, and how to define network states using code. A strong grasp of Git operations and common IaC tools is essential here.

Operations (20%)

This section delves into the operational aspects of automated networks. It covers monitoring, logging, and troubleshooting automated systems. You'll need to understand how to collect telemetry data, analyze network events, and implement automated remediation strategies. Concepts like NetFlow, IPFIX, syslog, SNMP, and modern streaming telemetry are crucial. The ability to troubleshoot issues within an automated environment, including debugging automation scripts and identifying root causes in automated deployments, is key.

AI in Automation (20%)

The final section explores the emerging role of Artificial Intelligence (AI) and Machine Learning (ML) in network automation. This includes understanding intent-based networking concepts, how AI can be used for network analytics, predictive maintenance, and optimizing network performance. While it might not require deep AI programming knowledge, understanding the application of AI/ML concepts to enhance network automation and decision-making is vital. This also touches on concepts like network assurance and the use of big data analytics for operational insights.

Crafting Your Cisco 350-901 Study Plan

A well-structured study plan is the backbone of successful exam preparation. Beyond simply taking a Cisco 350 901 practice test, a comprehensive strategy integrates various resources and techniques to ensure you're fully prepared.

Start with the Official Exam Blueprint

Your first and most important step is to thoroughly review the Cisco 350-901 exam blueprint. This document, available on Cisco's official certification page, provides an exhaustive list of all topics and sub-topics you need to master. Treat it as your primary checklist, ensuring every item is covered in your study schedule. The official page for the exam is an invaluable resource: Cisco 350-901 Official Exam Page.

Leveraging the Best Cisco 350-901 Study Guide

Investing in the best Cisco 350-901 study guide is highly recommended. Look for guides that are up-to-date with the latest exam blueprint, offer clear explanations, and include practical examples. Complement this with official Cisco documentation, whitepapers, and relevant RFCs to deepen your understanding. A good study guide will structure the content logically, making complex topics easier to digest.

Hands-on Experience is Key

Network automation is a practical skill. Reading about it isn't enough; you need to do it. Set up a lab environment, whether it's virtual (using EVE-NG, GNS3, or DevNet sandboxes) or physical. Practice deploying configurations, writing automation scripts, and interacting with network devices using APIs. Focus on implementing Cisco 350-901 network automation concepts, tackling Cisco 350-901 network programmability questions, and getting familiar with Cisco 350-901 automation tools exam questions through actual usage. Practical experience solidifies theoretical knowledge.

Incorporating Cisco Designing, Deploying, and Managing Network Automation Systems Training

For some, formal training provides the structured learning environment needed to excel. Consider enrolling in official Cisco Designing, Deploying, and Managing Network Automation Systems training courses. These courses are often taught by certified instructors, offer hands-on labs, and cover the exam topics in depth. While an investment, they can significantly accelerate your learning process and provide valuable insights.

Regular Review and Self-Assessment

Integrate regular review sessions into your study plan. After covering a topic, use flashcards, create summary notes, or discuss it with a study partner. Critically, perform self-assessments using a Cisco 350 901 practice test, sample questions, or quizzes. Look for resources like a Cisco 350-901 sample questions pdf or even a Cisco 350-901 practice exam free version to gauge your readiness and track progress. This iterative process of study, practice, and review is crucial for mastery.

Maximizing Your Preparation with Cisco 350 901 Practice Questions and Answers

Once you have a solid understanding of the exam content, the next crucial step is to engage intensively with Cisco 350 901 practice questions and answers. This focused practice is where theoretical knowledge transforms into exam-ready performance.

The Power of Repetition

Repetition, when done correctly, is a powerful learning tool. Regularly tackling practice questions helps reinforce concepts, improves recall, and familiarizes you with the question styles used in the actual exam. Don't just answer once and move on; revisit questions you struggled with, understand the reasoning, and re-attempt them after further study.

Analyzing Explanations, Not Just Answers

The true value of Cisco 350-901 practice questions and answers lies not merely in getting the correct answer, but in understanding the explanation behind each option. A good practice test will provide detailed rationales for both correct and incorrect answers. Analyze these explanations thoroughly. This process helps you grasp the underlying concepts more deeply and avoids making similar mistakes in the future. It's an essential part of a comprehensive Cisco 350-901 exam review.

Varying Your Sources

While having a primary source for your Cisco 350-901 practice questions and answers is good, try to incorporate questions from various reputable providers. Different sources might phrase questions differently, covering the same topic from slightly varied angles. This broadens your exposure and prevents over-reliance on a single style of questioning. However, ensure all sources align with the official Cisco blueprint to avoid irrelevant study.

Tracking Your Progress

Maintain a log of your practice test scores. Note down the areas where you consistently perform well and those where you struggle. Tracking your progress allows you to visually see your improvement over time, which can be highly motivating. It also helps in identifying persistent weak areas that require additional study or a different approach. Focus on improving your understanding of core concepts like Cisco 350-901 network automation concepts, not just memorizing answers.

Conquering the Exam Day: Tips for Success

All your hard work preparing and using a Cisco 350 901 practice test culminates on exam day. Strategic planning for this day can significantly impact your performance.

Before the Exam

Ensure you get a good night's sleep before the exam. A well-rested mind performs better. Confirm your exam appointment details, location, and required identification. If taking the exam remotely, test your setup well in advance to avoid technical glitches. Understand the Cisco 350-901 certification cost and ensure all registration fees are settled to avoid any last-minute surprises. Do a light review of your notes, but avoid cramming. Trust the preparation you've already done.

During the Exam

Upon starting, quickly scan through the number of questions and the time remaining to mentally allocate your time. Read each question carefully, paying close attention to keywords and what is being asked. Sometimes, a question might ask for the 'least' or 'most' appropriate answer. If you encounter a difficult question, flag it and move on. Don't get stuck. Answer all questions, even if you have to make an educated guess, as there's typically no penalty for incorrect answers. Keep an eye on the clock and aim to finish with a few minutes to spare for a quick review. While the Cisco 350-901 exam passing score is variable, aim for consistent high scores in your practice tests to build confidence for the real thing. It's good to be aware of the Cisco Designing, Deploying, and Managing Network Automation Systems exam difficulty; it's a challenging exam, so stay focused and calm.

After the Exam

Regardless of the immediate outcome, take time to reflect on your experience. What went well? What could have been better? This feedback is invaluable for future certification endeavors. If you passed, celebrate your achievement! If not, don't be discouraged. Review the score report to identify your weak areas and formulate a revised study plan for your next attempt. Remember that the journey to certification is a learning process.

Your Journey Beyond the 350-901: Network Automation Career Path

Passing the Cisco 350-901 AUTOCOR exam is a significant milestone, opening doors to advanced roles and opportunities in the field of network automation. It validates your expertise in designing, deploying, and managing automated network systems, a skill set highly sought after in the industry.

What's Next After Passing?

For many, the 350-901 exam is a stepping stone. If you passed the 350-901 AUTOCOR, you've completed one of the requirements for both the CCNP Enterprise and Cisco Certified DevNet Professional certifications. Consider pursuing the core exams like 350-401 ENCOR for CCNP Enterprise, or other DevNet specialist exams to round out your professional profile. The knowledge gained from this exam will directly apply to these further certifications, strengthening your overall understanding of modern network architectures.

Impact on Your Career

Certified professionals with expertise in network automation are in high demand. This certification demonstrates your ability to streamline network operations, improve efficiency, and reduce human error, making you an invaluable asset to any organization. It can lead to roles such as Network Automation Engineer, DevOps Engineer, Cloud Network Engineer, or Solution Architect. The skills validated by this exam are directly transferable to real-world scenarios, boosting your employability and earning potential.

Continuous Learning in Network Automation

The field of network automation is constantly evolving. New tools, technologies, and methodologies emerge regularly. Achieving the 350-901 certification is an excellent foundation, but continuous learning is vital to stay relevant. Engage with industry communities, attend webinars, read blogs, and experiment with new automation platforms. Your certification signifies your current expertise, but your commitment to ongoing learning will define your long-term success in this dynamic domain.

Frequently Asked Questions About the Cisco 350-901 Exam

1. What is the Cisco 350-901 AUTOCOR exam about?

The Cisco 350-901 AUTOCOR exam, officially known as Cisco Designing, Deploying, and Managing Network Automation Systems, assesses a candidate's knowledge of implementing network automation solutions, including programmatic interaction with networks, automation tools, and associated technologies like Infrastructure as Code and AI in automation.

2. How much does the Cisco 350-901 certification cost?

The current exam price for the Cisco 350-901 AUTOCOR is $400 USD. This fee covers the cost of taking the exam at a Pearson VUE testing center or through their online proctoring service.

3. What is a good Cisco 350-901 exam passing score?

Cisco exam passing scores are variable and typically range from 750-850 out of 1000. It's important to aim for a thorough understanding of all topics rather than just a minimum score. A consistent score above 800 in your Cisco 350 901 practice test usually indicates readiness.

4. Where can I find a reliable Cisco 350 901 practice test?

Reliable Cisco 350 901 practice test resources can be found from reputable certification training providers. Look for platforms that offer detailed explanations for answers, align with the official exam blueprint, and provide a realistic exam simulation. Often, the best study guides include practice questions, and online learning platforms specialize in comprehensive practice exams.

5. How long should I study for the Cisco 350-901 exam?

The study duration for the Cisco 350-901 exam varies based on your existing knowledge and experience with network automation. On average, candidates dedicate 2-4 months of focused study, including significant hands-on lab time and regular practice with a Cisco 350 901 practice test, to cover all the exam topics comprehensively and be prepared for the Cisco Designing, Deploying, and Managing Network Automation Systems exam difficulty.

Conclusion

The Cisco 350-901 AUTOCOR exam is a formidable challenge, but one that is entirely conquerable with a strategic approach and the right tools. By understanding the exam blueprint, engaging in rigorous hands-on practice, and critically, by leveraging a high-quality Cisco 350 901 practice test, you can significantly enhance your chances of success.

Remember, the goal is not just to pass, but to truly master the concepts of network automation. A robust practice test environment provides the simulation, diagnostic feedback, and confidence boost necessary to excel. So, prepare diligently, practice smartly, and walk into your exam knowing you've done everything to equip yourself for success. Your journey to becoming a certified expert in network automation starts with a confident first step. Explore the full spectrum of Cisco Automation certifications to plan your future career advancements.

Saturday, 10 August 2024

Optimizing AI Workloads with NVIDIA GPUs, Time Slicing, and Karpenter

Maximizing GPU efficiency in your Kubernetes environment


In this article, we will explore how to deploy GPU-based workloads in an EKS cluster using the Nvidia Device Plugin, and ensuring efficient GPU utilization through features like Time Slicing. We will also discuss setting up node-level autoscaling to optimize GPU resources with solutions like Karpenter. By implementing these strategies, you can maximize GPU efficiency and scalability in your Kubernetes environment.

Additionally, we will delve into practical configurations for integrating Karpenter with an EKS cluster, and discuss best practices for balancing GPU workloads. This approach will help in dynamically adjusting resources based on demand, leading to cost-effective and high-performance GPU management. The diagram below illustrates an EKS cluster with CPU and GPU-based node groups, along with the implementation of Time Slicing and Karpenter functionalities. Let’s discuss each item in detail.

Optimizing AI Workloads with NVIDIA GPUs, Time Slicing, and Karpenter

Basics of GPU and LLM


A Graphics Processing Unit (GPU) was originally designed to accelerate image processing tasks. However, due to its parallel processing capabilities, it can handle numerous tasks concurrently. This versatility has expanded its use beyond graphics, making it highly effective for applications in Machine Learning and Artificial Intelligence.

Optimizing AI Workloads with NVIDIA GPUs, Time Slicing, and Karpenter

When a process is launched on GPU-based instances these are the steps involved at the OS and hardware level:

  • Shell interprets the command and creates a new process using fork (create new process) and exec (Replace the process’s memory space with a new program) system calls.
  • Allocate memory for the input data and the results using cudaMalloc(memory is allocated in the GPU’s VRAM)
  • Process interacts with GPU Driver to initialize the GPU context here GPU driver manages resources including memory, compute units and scheduling
  • Data is transferred from CPU memory to GPU memory
  • Then the process instructs GPU to start computations using CUDA kernels and the GPU schedular manages the execution of the tasks
  • CPU waits for the GPU to finish its task, and the results are transferred back to the CPU for further processing or output.
  • GPU memory is freed, and GPU context gets destroyed and all resources are released. The process exits as well, and the OS reclaims the resource

Compared to a CPU which executes instructions in sequence, GPUs process the instructions simultaneously. GPUs are also more optimized for high performance computing because they don’t have the overhead a CPU has, like handling interrupts and virtual memory that is necessary to run an operating system. GPUs were never designed to run an OS, and thus their processing is more specialized and faster.

Optimizing AI Workloads with NVIDIA GPUs, Time Slicing, and Karpenter

Large Language Models


A Large Language Model refers to:

  • “Large”: Large Refers to the model’s extensive parameters and data volume with which it is trained on
  • “Language”: Model can understand and generate human language
  • “Model”: Model refers to neural networks

Optimizing AI Workloads with NVIDIA GPUs, Time Slicing, and Karpenter

Run LLM Model


Ollama is the tool to run open-source Large Language Models and can be download here https://ollama.com/download

Pull the example model llama3:8b using ollama cli

ollama -h
Large language model runner
Usage:
  ollama [flags]
  ollama [command]
Available Commands:
  serve Start ollama
  create Create a model from a Modelfile
  show Show information for a model
  run Run a model
  pull Pull a model from a registry
  push Push a model to a registry
  list List models
  ps List running models
  cp Copy a model
  rm Remove a model
  help Help about any command
Flags:
  -h, --help help for ollama
  -v, --version Show version information
Use "ollama [command] --help" for more information about a command.

ollama pull llama3:8b: Pull the model


ollama pull llama3:8b
pulling manifest 
pulling 6a0746a1ec1a... 100% ▕██████████████████████████████████████████████████████████████████ 4.7 GB 
pulling 4fa551d4f938... 100% ▕██████████████████████████████████████████████████████████████████ 12 KB 
pulling 8ab4849b038c... 100% ▕██████████████████████████████████████████████████████████████████ 254 B 
pulling 577073ffcc6c... 100% ▕██████████████████████████████████████████████████████████████████ 110 B 
pulling 3f8eb4da87fa... 100% ▕██████████████████████████████████████████████████████████████████ 485 B 
verifying sha256 digest 
writing manifest 
removing any unused layers 
success

ollama list: List the models


developer:src > ollama show llama3:8b
  Model 
        arch llama 
        parameters 8.0B 
        quantization Q4_0 
        context length 8192 
        embedding length 4096 

  Parameters 
        num_keep 24 
        stop "<|start_header_id|>" 
        stop "<|end_header_id|>" 
        stop "<|eot_id|>" 

  License 
        META LLAMA 3 COMMUNITY LICENSE AGREEMENT 
        Meta Llama 3 Version Release Date: April 18, 2024

ollama run llama3:8b: Run the model


developer:src > ollama run llama3:8b
>>> print all primes between 1 and n
Here is a Python solution that prints all prime numbers between 1 and `n`:
```Python
def print_primes(n):
    for possiblePrime in range(2, n + 1):
        # Assume number is prime until shown it is not. 
        isPrime = True
        for num in range(2, int(possiblePrime ** 0.5) + 1):
            if possiblePrime % num == 0:
                isPrime = False
                break
        if isPrime:
            print(possiblePrime)
n = int(input("Enter the number: "))
print_primes(n)
```
In this code, we loop through all numbers from `2` to `n`. For each number, we assume it's prime and then check if it has any 
divisors other than `1` and itself. If it does, then it's not a prime number. If it doesn't have any divisors, then it is a 
prime number.
The reason why we only need to check up to the square root of the number is because a larger factor of the number would be a 
multiple of smaller factor that has already been checked.
Please note that this code might take some time for large values of `n` because it's not very efficient. There are more 
efficient algorithms to find prime numbers, but they are also more complex.

Source: cisco.com

Saturday, 8 June 2024

Cisco AI Assistant for Managing Firewall Policies Is Now Available

Cisco AI Assistant is now available for Cisco XDR and Cisco Defense Orchestrator


Managing firewall policies and locating relevant documentation can be daunting for firewall administrators. However, the AI Assistant integrated with the Cisco Defense Orchestrator (CDO) and the cloud-delivered Firewall Management Center simplifies these processes. With this powerful combination, administrators can effortlessly manage firewall devices, configure policies, and access reference materials whenever required, streamlining their workflow and boosting overall efficiency.

Prerequisites


Administrators need to ensure they have met the following prerequisites to use the AI Assistant:

User roles:

● CDO and cloud-delivered Firewall Management Center – Super Admin or Admin
● On-Prem FMC – Global Domain Admin

Upon successful login into your tenant, you will notice an AI Assistant button positioned in the top menu bar of the dashboard.

Cisco AI Assistant for Managing Firewall Policies Is Now Available

Click the AI Assistant button on the CDO or cloud-delivered Firewall Management Center home page to access the AI Assistant.

The Cisco AI Assistant interface contains the following components: Text Input Box, New Chat, Chat History, Expand View, and Feedback.

Cisco AI Assistant for Managing Firewall Policies Is Now Available

Cisco AI Assistant interface following the best Generative AI assistant practices.

AI Assistant interaction


AI Assistant completion with the prompt “Can you provide me with the distinct IP addresses that are currently blocked by our firewall policies?”

Cisco AI Assistant for Managing Firewall Policies Is Now Available

AI Assistant completion with the prompt “What access control rules are disabled?”

Cisco AI Assistant for Managing Firewall Policies Is Now Available

If you think that response is wrong, please click the thumbs-down button below for the related completion and fill out and submit the form.

Cisco AI Assistant for Managing Firewall Policies Is Now Available

AI Assistant can’t proceed with some prompts and questions. In this case, you can see the following completion:

Cisco AI Assistant for Managing Firewall Policies Is Now Available

It looks like the engineering team decided not to display answers if there is insufficient data to correct them or in cases where the model can hallucinate.

Source: cisco.com

Thursday, 7 March 2024

Using the Power of Artificial Intelligence to Augment Network Automation

Talking to your Network


Embarking on my journey as a network engineer nearly two decades ago, I was among the early adopters who recognized the transformative potential of network automation. In 2015, after attending Cisco Live in San Diego, I gained a new appreciation of the realm of the possible. Leveraging tools like Ansible and Cisco pyATS, I began to streamline processes and enhance efficiencies within network operations, setting a foundation for what would become a career-long pursuit of innovation. This initial foray into automation was not just about simplifying repetitive tasks; it was about envisioning a future where networks could be more resilient, adaptable, and intelligent. As I navigated through the complexities of network systems, these technologies became indispensable allies, helping me to not only manage but also to anticipate the needs of increasingly sophisticated networks.

Using the Power of Artificial Intelligence to Augment Network Automation

In recent years, my exploration has taken a pivotal turn with the advent of generative AI, marking a new chapter in the story of network automation. The integration of artificial intelligence into network operations has opened up unprecedented possibilities, allowing for even greater levels of efficiency, predictive analysis, and decision-making capabilities. This blog, accompanying the CiscoU Tutorial, delves into the cutting-edge intersection of AI and network automation, highlighting my experiences with Docker, LangChain, Streamlit, and, of course, Cisco pyATS. It’s a reflection on how the landscape of network engineering is being reshaped by AI, transforming not just how we manage networks, but how we envision their growth and potential in the digital age. Through this narrative, I aim to share insights and practical knowledge on harnessing the power of AI to augment the capabilities of network automation, offering a glimpse into the future of network operations.

In the spirit of modern software deployment practices, the solution I architected is encapsulated within Docker, a platform that packages an application and all its dependencies in a virtual container that can run on any Linux server. This encapsulation ensures that it works seamlessly in different computing environments. The heart of this dockerized solution lies within three key files: the Dockerfile, the startup script, and the docker-compose.yml.

The Dockerfile serves as the blueprint for building the application’s Docker image. It starts with a base image, ubuntu:latest, ensuring that all the operations have a solid foundation. From there, it outlines a series of commands that prepare the environment:

FROM ubuntu:latest

# Set the noninteractive frontend (useful for automated builds)
ARG DEBIAN_FRONTEND=noninteractive

# A series of RUN commands to install necessary packages
RUN apt-get update && apt-get install -y wget sudo ...

# Python, pip, and essential tools are installed
RUN apt-get install python3 -y && apt-get install python3-pip -y ...

# Specific Python packages are installed, including pyATS[full]
RUN pip install pyats[full]

# Other utilities like dos2unix for script compatibility adjustments
RUN sudo apt-get install dos2unix -y

# Installation of LangChain and related packages
RUN pip install -U langchain-openai langchain-community ...

# Install Streamlit, the web framework
RUN pip install streamlit

Each command is preceded by an echo statement that prints out the action being taken, which is incredibly helpful for debugging and understanding the build process as it happens.

The startup.sh script is a simple yet crucial component that dictates what happens when the Docker container starts:

cd streamlit_langchain_pyats
streamlit run chat_with_routing_table.py

It navigates into the directory containing the Streamlit app and starts the app using streamlit run. This is the command that actually gets our app up and running within the container.

Lastly, the docker-compose.yml file orchestrates the deployment of our Dockerized application. It defines the services, volumes, and networks to run our containerized application:

version: '3'
services:
 streamlit_langchain_pyats:
  image: [Docker Hub image]
  container_name: streamlit_langchain_pyats
  restart: always
  build:
   context: ./
   dockerfile: ./Dockerfile
  ports:
   - "8501:8501"

This docker-compose.yml file makes it incredibly easy to manage the application lifecycle, from starting and stopping to rebuilding the application. It binds the host’s port 8501 to the container’s port 8501, which is the default port for Streamlit applications.

Together, these files create a robust framework that ensures the Streamlit application — enhanced with the AI capabilities of LangChain and the powerful testing features of Cisco pyATS — is containerized, making deployment and scaling consistent and efficient.

The journey into the realm of automated testing begins with the creation of the testbed.yaml file. This YAML file is not just a configuration file; it’s the cornerstone of our automated testing strategy. It contains all the essential information about the devices in our network: hostnames, IP addresses, device types, and credentials. But why is it so crucial? The testbed.yaml file serves as the single source of truth for the pyATS framework to understand the network it will be interacting with. It’s the map that guides the automation tools to the right devices, ensuring that our scripts don’t get lost in the vast sea of the network topology.

Sample testbed.yaml


---
devices:
  cat8000v:
    alias: "Sandbox Router"
    type: "router"
    os: "iosxe"
    platform: Cat8000v
    credentials:
      default:
        username: developer
        password: C1sco12345
    connections:
      cli:
        protocol: ssh
        ip: 10.10.20.48
        port: 22
        arguments:
        connection_timeout: 360

With our testbed defined, we then turn our attention to the _job file. This is the conductor of our automation orchestra, the control file that orchestrates the entire testing process. It loads the testbed and the Python test script into the pyATS framework, setting the stage for the execution of our automated tests. It tells pyATS not only what devices to test but also how to test them, and in what order. This level of control is indispensable for running complex test sequences across a range of network devices.

Sample _job.py pyATS Job


import os
from genie.testbed import load

def main(runtime):

    # ----------------
    # Load the testbed
    # ----------------
    if not runtime.testbed:
        # If no testbed is provided, load the default one.
        # Load default location of Testbed
        testbedfile = os.path.join('testbed.yaml')
        testbed = load(testbedfile)
    else:
        # Use the one provided
        testbed = runtime.testbed

    # Find the location of the script in relation to the job file
    testscript = os.path.join(os.path.dirname(__file__), 'show_ip_route_langchain.py')

    # run script
    runtime.tasks.run(testscript=testscript, testbed=testbed)

Then comes the pièce de résistance, the Python test script — let’s call it capture_routing_table.py. This script embodies the intelligence of our automated testing process. It’s where we’ve distilled our network expertise into a series of commands and parsers that interact with the Cisco IOS XE devices to retrieve the routing table information. But it doesn’t stop there; this script is designed to capture the output and elegantly transform it into a JSON structure. Why JSON, you ask? Because JSON is the lingua franca for data interchange, making the output from our devices readily available for any number of downstream applications or interfaces that might need to consume it. In doing so, we’re not just automating a task; we’re future-proofing it.

Excerpt from the pyATS script


    @aetest.test
    def get_raw_config(self):
        raw_json = self.device.parse("show ip route")

        self.parsed_json = {"info": raw_json}

    @aetest.test
    def create_file(self):
        with open('Show_IP_Route.json', 'w') as f:
            f.write(json.dumps(self.parsed_json, indent=4, sort_keys=True))

By focusing solely on pyATS in this phase, we lay a strong foundation for network automation. The testbed.yaml file ensures that our script knows where to go, the _job file gives it the instructions on what to do, and the capture_routing_table.py script does the heavy lifting, turning raw data into structured knowledge. This approach streamlines our processes, making it possible to conduct comprehensive, repeatable, and reliable network testing at scale.

Using the Power of Artificial Intelligence to Augment Network Automation

Enhancing AI Conversational Models with RAG and Network JSON: A Guide


In the ever-evolving field of AI, conversational models have come a long way. From simple rule-based systems to advanced neural networks, these models can now mimic human-like conversations with a remarkable degree of fluency. However, despite the leaps in generative capabilities, AI can sometimes stumble, providing answers that are nonsensical or “hallucinated” — a term used when AI produces information that isn’t grounded in reality. One way to mitigate this is by integrating Retrieval-Augmented Generation (RAG) into the AI pipeline, especially in conjunction with structured data sources like network JSON.

What is Retrieval-Augmented Generation (RAG)?


Retrieval-Augmented Generation is a cutting-edge technique in AI language processing that combines the best of two worlds: the generative power of models like GPT (Generative Pre-trained Transformer) and the precision of retrieval-based systems. Essentially, RAG enhances a language model’s responses by first consulting a database of information. The model retrieves relevant documents or data and then uses this context to inform its generated output.

The RAG Process


The process typically involves several key steps:

  • Retrieval: When the model receives a query, it searches through a database to find relevant information.
  • Augmentation: The retrieved information is then fed into the generative model as additional context.
  • Generation: Armed with this context, the model generates a response that’s not only fluent but also factually grounded in the retrieved data.

The Role of Network JSON in RAG


Network JSON refers to structured data in the JSON (JavaScript Object Notation) format, often used in network communications. Integrating network JSON with RAG serves as a bridge between the generative model and the vast amounts of structured data available on networks. This integration can be critical for several reasons:
  • Data-Driven Responses: By pulling in network JSON data, the AI can ground its responses in real, up-to-date information, reducing the risk of “hallucinations.”
  • Enhanced Accuracy: Access to a wide array of structured data means the AI’s answers can be more accurate and informative.
  • Contextual Relevance: RAG can use network JSON to understand the context better, leading to more relevant and precise answers.

Why Use RAG with Network JSON?


Let’s explore why one might choose to use RAG in tandem with network JSON through a simplified example using Python code:

  • Source and Load: The AI model begins by sourcing data, which could be network JSON files containing information from various databases or the internet.
  • Transform: The data might undergo a transformation to make it suitable for the AI to process — for example, splitting a large document into manageable chunks.
  • Embed: Next, the system converts the transformed data into embeddings, which are numerical representations that encapsulate the semantic meaning of the text.
  • Store: These embeddings are then stored in a retrievable format.
  • Retrieve: When a new query arrives, the AI uses RAG to retrieve the most relevant embeddings to inform its response, thus ensuring that the answer is grounded in factual data.

By following these steps, the AI model can drastically improve the quality of the output, providing responses that are not only coherent but also factually correct and highly relevant to the user’s query.

class ChatWithRoutingTable:
    def __init__(self):
        self.conversation_history = []
        self.load_text()
        self.split_into_chunks()
        self.store_in_chroma()
        self.setup_conversation_memory()
        self.setup_conversation_retrieval_chain()

    def load_text(self):
        self.loader = JSONLoader(
            file_path='Show_IP_Route.json',
            jq_schema=".info[]",
            text_content=False
        )
        self.pages = self.loader.load_and_split()

    def split_into_chunks(self):
        # Create a text splitter
        self.text_splitter = RecursiveCharacterTextSplitter(
            chunk_size=1000,
            chunk_overlap=100,
            length_function=len,
        )
        self.docs = self.text_splitter.split_documents(self.pages)

    def store_in_chroma(self):
        embeddings = OpenAIEmbeddings()
        self.vectordb = Chroma.from_documents(self.docs, embedding=embeddings)
        self.vectordb.persist()

    def setup_conversation_memory(self):
        self.memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

    def setup_conversation_retrieval_chain(self):
        self.qa = ConversationalRetrievalChain.from_llm(llm, self.vectordb.as_retriever(search_kwargs={"k": 10}), memory=self.memory)

    def chat(self, question):
        # Format the user's prompt and add it to the conversation history
        user_prompt = f"User: {question}"
        self.conversation_history.append({"text": user_prompt, "sender": "user"})

        # Format the entire conversation history for context, excluding the current prompt
        conversation_context = self.format_conversation_history(include_current=False)

        # Concatenate the current question with conversation context
        combined_input = f"Context: {conversation_context}\nQuestion: {question}"

        # Generate a response using the ConversationalRetrievalChain
response = self.qa.invoke(combined_input)

        # Extract the answer from the response
answer = response.get('answer', 'No answer found.')

        # Format the AI's response
        ai_response = f"Cisco IOS XE: {answer}"
        self.conversation_history.append({"text": ai_response, "sender": "bot"})

        # Update the Streamlit session state by appending new history with both user prompt and AI response
        st.session_state['conversation_history'] += f"\n{user_prompt}\n{ai_response}"

        # Return the formatted AI response for immediate display
        return ai_response

Conclusion

The integration of RAG with network JSON is a powerful way to supercharge conversational AI. It leads to more accurate, reliable, and contextually aware interactions that users can trust. By leveraging the vast amounts of available structured data, AI models can step beyond the limitations of pure generation and towards a more informed and intelligent conversational experience.

Source: cisco.com

Saturday, 25 June 2022

Our future network: insights and automation

Insights and automation will power our future network. Think of it as a circular process: collect data from network infrastructure. Analyze it for insights. Share those insights with teams to help them improve service. Use the insights to automatically reprogram infrastructure where possible. Repeat. The aim is to quickly adapt to whatever the future brings—including new traffic patterns, new user habits, and new security threats.

Cisco Certification, Cisco Learning, Cisco Preparation, Cisco Jobs, Cisco Tutorial and Material, Cisco Automation

Now I’ll dive into more detail on each block in the diagram.

Insights


Data foundation. Good insights can only happen with good data. We collect four types of data:

◉ Inventory data for compliance reporting and lifecycle management
◉ Configuration data for audits and to find out about configuration “drift”
◉ Operational data for network service health monitoring
◉ Threat data to see what parts of our infrastructure might be under attack—e.g., a DDoS attack on the DMZ, or a botnet attack on an authentication server

Today, some network data is duplicated, missing (e.g., who authorized a change), or irrelevant. To prepare for our future network, we’re working to improve data quality and store it in centralized repositories such as our configuration management database.

Analytics. With a trusted data foundation, we’ll be able to convert data to actionable insights. We’re starting by visualizing data—think color-coded dials—to make it easier to track key performance indicators (KPIs) and spot trends. Examples of what we track include latency and jitter for home VPN users, and bandwidth and capacity for hybrid cloud connections. We’re also investing in analytics for decision support. One plan is tracking the number of support tickets for different services so we can prioritize the work with the biggest impact. Another is monitoring load and capacity on our DNS infrastructure so that we can automatically scale up or down in different regions based on demand. Currently, we respond to performance issues manually—for instance, by re-routing traffic to avoid congestion. In our future network we’ll automate changes in response to analytics. Which leads me to our next topic: automation.

Automation


Policy and orchestration. February 2022 marked a turning point: we now fulfill more change requests via automation than we do manually. As shown in the figure, we automatically fulfilled more than 7,500 change requests in May 2022, up from fewer than 5,000 just six months earlier. Examples include automated OS upgrades with Cisco DNA Center Software Image Management (SWIM), compliance audits with an internally developed tool, and daily configuration audits with an internal tool we’re about to swap out for Cisco Network Services Orchestrator. We have strong incentives to automate more and more tasks. Manual activities slow things down, and there’s also the risk that a typo or overlooked step will affect performance or security.

Cisco Certification, Cisco Learning, Cisco Preparation, Cisco Jobs, Cisco Tutorial and Material, Cisco Automation
In our future network, automation will make infrastructure changes faster and more accurate. Our ultimate goal is a hands-off, AIOps approach. We’re building the foundation today with an orchestrator that can coordinate top-level business processes and drive change into all our domains. We are working closely with the Cisco Customer Experience (CX) group to deploy Business Process Automation solution. We’re developing workflows that save time for staff by automating pre- and post-validation and configuration management. The workflows integrate with IT Service Management, helping us make sure that change requests comply with Cisco IT policy.

Release management. In the past, when someone submitted a change request one or more people manually validated that the change complied with policy and then tested the new configuration before putting it into production. This takes time, and errors can affect performance or security. Now we’re moving to automated release pipelines based on modern software development principles. We’re treating infrastructure as code (IaC), pulling device configurations from a single source of truth. We’ve already automated access control list (ACL) management and configuration audits. When someone submits a change to the source of truth (typically Git), the pipeline automatically checks for policy compliance and performs tests before handing off the change for deployment.

The Road Ahead


To sum up, in our future network, the only road to production is through an automated pipeline. Automation helps us adapt more quickly to unexpected change, keeps network configuration consistent worldwide, and reduces the risk of errors. We can’t anticipate what changes our business will face between now and 2025—but with insights and automation, we’ll be able to adapt quickly.

Source: cisco.com

Saturday, 14 August 2021

How To Simplify Cisco ACI Management with Smartsheet

Cisco ACI Management, Cisco Exam Prep, Cisco Learning, Cisco Tutorial and Material, Cisco Guides, Cisco Learning

Have you ever gotten lost in the APIC GUI while trying to configure a feature? Or maybe you are tired of going over the same steps again and again when changing an ACI filter or a contract? Or maybe you have always asked yourself how you can integrate APIC with other systems such as an IT ticketing or monitoring system to improve workflows and making your ACI fabric management life easier. Whatever the case may be, if you are interested in finding out how to create your own GUI for ACI, streamline and simplify APIC GUI configuration steps using smartsheets, and see how extensible and programmable an ACI fabric is, then read on.

Innovations that came with ACI

I have always been a fan of Cisco ACI (Application Centric Infrastructure). Coming from a routing and switching background, my mind was blown when I started learning about ACI. The SDN implementation for data centers from Cisco, ACI, took almost everything I thought I knew about networking and threw it out the window. I was in awe at the innovations that came with ACI: OpFlex, declarative control, End-Point Groups (EPGs), application policies, fabric auto discovery, and so many more.

The holy grail of networking

It felt to me like a natural evolution of classical networking from VLANs and mapped layer-3 subnets into bridge domains and subnets and VRFs. It took a bit of time to wrap my head around these concepts and building underlays and overlays but once you understand how all these technologies come together it almost feels like magic. The holy grail of networking is at this point within reach: centrally defining a set of generic rules and policies and letting the network do all the magic and enforce those policies all throughout the fabric at all times no matter where and how the clients and end points are connecting to the fabric. This is the premise that ACI was built on.

Automating common ACI management activities

So you can imagine when my colleague, Jason Davis (@snmpguy) came up with a proposal to migrate several ACI use cases from Action Orchestrator to full blown Python code I was up for the challenge. Jason and several AO folks have worked closely with Cisco customers to automate and simplify common ACI management workflows. We decided to focus on eight use cases for the first release of our application:

◉ Deploy an application

◉ Create static path bindings

◉ Configure filters

◉ Configure contracts

◉ Associate EPGs to contracts

◉ Configure policy groups

◉ Configure switch and interface profiles

◉ Associate interfaces to policy groups

Using the online smartsheet REST API

You might recognize these as being common ACI fabric management activities that a data center administrator would perform day in and day out. As the main user interface for gathering data we decided to use online smartsheets. Similar to ACI APIC, the online smartsheet platform provides an extensive REST API interface that is just ripe for integrations.

The plan was pretty straight forward:

1. Use smartsheets with a bit of JavaScript and CSS as the front-end components of our application

2. Develop a Python back end that would listen for smartsheet webhooks triggered whenever there are saved Smartsheet changes

3. Process this input data based on this data create, and trigger Ansible playbooks that would perform the configuration changes corresponding to each use case

4. Provide a pass/fail status back to the user.

Cisco ACI Management, Cisco Exam Prep, Cisco Learning, Cisco Tutorial and Material, Cisco Guides, Cisco Learning
The “ACI Provisioning Start Point” screen allows the ACI administrator to select the
Site or APIC controller that needs to be configured.

Cisco ACI Management, Cisco Exam Prep, Cisco Learning, Cisco Tutorial and Material, Cisco Guides, Cisco Learning
Once the APIC controller is selected, a drop down menu displays a list of all the use
cases supported. Select to which tenant the configuration changes will be applied,
and fill out the ACI configuration information in the smartsheet.

Cisco ACI Management, Cisco Exam Prep, Cisco Learning, Cisco Tutorial and Material, Cisco Guides, Cisco Learning
Selecting the checkbox for Ready to Deploy, and saving the smartsheet, will trigger a webhook event that will be intercepted by the backend code and the Ansible configuration playbook will be run.

A big advantage to using Smartsheets compared to the ACI APIC GUI is that several configuration changes can be performed in parallel. In this example, several static path bindings are created at the same time.

Find the details on DevNet Automation Exchange



You can also find hundreds of similar use case examples in the DevNet Automation Exchange covering all Cisco technologies and verticals and all difficulty levels.

Drop me a message in the comments section if you have any questions or suggestions about this automation exchange use case.

Source: cisco.com