If ( Network == Server ) { Magic happens }

Attilla de Groot

Sr. Systems Engineer, HCIE #3494 | Cumulus Networks

1 Cumulus Linux Architecture Space Network Orchestration Automation Monitoring Routing User User Suite switchd Bridging VXLAN Third Party/Customer Applications Switch HAL

ASIC Routing ARP Bridge Ethernet VxLAN Driver Tables Table Table Interfaces Linux Kernel

CPU, RAM, Flash, etc. Switch Silicon

Front Panel Ports 2 Network Orchestration Software defining your network

How to do Orchestration

Linux DevOPS tools § , , , Saltstack

Orchestration § Infrastructure as code § Telemetry data § Continuous integration

3 Who recently made a network change?

4 Did anyone had a change without issues?

5 What is CI / CD

Continuous Integration (CI) Continuous Deployment (CD)

A system where all changes are Built on a CI system where changes automatically tested before being are automatically pushed to production pushed to production or seen by after tests past, often multiple times others per day

Why aren’t you Not for doing this? everyone

6 Infrastructure as Code Build tools

Implementing CI/CD

Build Tool? § The digital duct tape

Common Tools § Gitlab § Jenkins § Travis CI § Atlassian Bamboo GitLab

7 Infrastructure as Code Pipeline

Git change Successful push validation

Infrastructure 1.1

Infrastructure Build tool pipeline 1.0

Infrastructure 1.0

Automated Validation Testing failed 8 Automated testing Testing infrastructure

Traditional networking Cumulus Linux

Testing environment Testing environment § Physical lab § Physical lab? § Virtualization environment? § Cumulus VX DevOPS integration? DevOPS integration! § Proprietary modules § Native modules § Vendor tools § Vagrant, Virtualbox, Libvirt

Infrastructure validation Infrastructure validation § Vendor APIs? § Home grown tools (Python?) § Stackstorm § Cumulus NetQ

9 Automated testing Cumulus VX

Linux network virtualization

Cumulus VX § Linux networking § Familiarizing

Copying production § Virtualbox, VMware, Libvirt § Vagrant § Topology Generator

10 Automated testing Validation

Linting tests Unit and System tests

Code validation Validating the infrastructure § Test Yaml / Jinja § Unit tests are limited § Enfore a style § Combining Unit and System tests § Easy troubleshooting Testing multiple verticals § Does my BGP session work? § Are routes being learned? AND • Is my application redundant? • Does my application still work?

11 Automated testing Cumulus NetQ

Design Provision Automate Validate Troubleshoot Analyze

Day 0 to day 1 Day 2 and on

Cumulus Linux Cumulus NetQ Open Network Operating System Telemetry-Based Fabric validation application

Open OS foundation of network Validate changes flexibility & choice of apps before & during production rollout

Disaggregation of SW & HW Precise fault location alerts supply chain freedom for rapid problem resolution

Speed of provisioning workloads Time-machine diagnosis & troubleshooting with automation at scale

12 Automated testing NetQ Agent

NetQ Agent NetQ Agent Subscribes to Linux Kernel Events § Interface State BGP mLAG VxLAN § MTU § Routes learned § Macs learned § (M)LAG state Linux Kernel Polls routing Information § OSPF, PIM, BGP, EVPN § Neighbor state § Error conditions

13 Automated testing Fabric state testing over time

NetQ Agent New Route Added

OSPF Neighbor Change BGP mLAG VxLAN

MAC Address Removed

Linux Kernel

14 15 Automated testing Gitlab testing

Test results returned

Checks for updates

GitLab

Pulls code update and runs tests git push

Developer Build Server

16 Automated testing Gitlab testing

stages: - staging Gitlab Pipeline - production staging: tags: - staging before_script: Stages, before_script, after_script - cd automation § Stages run in order on success stage: staging script: § *_script run at each stage - 'ansible-playbook deploy.yml' - sleep 25 Script defines testing steps - netq check bgp - netq check mtu § Git repository is cloned on build server - netq check vxlan

§ Each script step is run in environment production: § If step fails, validation fails tags: - production § Simple bash scripts can be added before_script: - cd automation stage: production Before/After stages for setup / when: manual cleanup script: - 'ansible-playbook deploy.yml' § vagrant up / vagrant destroy -f - sleep 10 - netq check bgp 17 CI/CD Demo

18 Join the Linux Networking Revolution

Linux 101 Linux Networking Linux Resource eBook Guides Center

www.cumulusnetworks.com/lp/linux-networking-resources/

QUESTIONS?

19 Join the Cumulus Networks Community!

Get involved in the conversation: § Join the community & share your Cumulus Linux tips and experiences: https://getsatisfaction.cumulusnetworks.com/cumulus § Chat with others on our Slack channel: https://cumulusnetworks.slack.com/ § Keep on learning: https://community.cumulusnetworks.com Download Cumulus VX to work on proofs of concept, test your automation and continue practicing: § https://cumulusnetworks.com/cumulus-vx/ Learn at your own pace with demos using our reference topology: § https://github.com/CumulusNetworks/cldemo-vagrant § https://cumulusnetworks.com/products/cumulus-in-the-cloud/

20 Thank you!

21