NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit...

14
NETWORK UNIT TESTING Urs Baumann Network Engineering Bern, 09. November 2017 SwiNOG 32 Nuts (Network Unit Testing System) with SaltStack

Transcript of NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit...

Page 1: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

NETWORK UNIT TESTING

Urs Baumann

Network Engineering

Bern, 09. November 2017

SwiNOG 32

Nuts (Network Unit Testing System) with SaltStack

Page 2: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

Urs Baumann

Urs Baumann, Network Unit Testing, 09.11.2017

2

Urs Baumann

Network Engineer

Python Developer

SDN, Cloud Infrastructure, OpenStack,

Python, Cisco and Brocade Instructor

[email protected]

@ubaumann_ch

http://ins.hsr.ch

@INSHSR

Page 3: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

Agenda

Urs Baumann, Network Unit Testing, 09.11.2017

3

NUTS

NAPALM

SaltStack

Page 4: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

How do you test your network after a change?

Today

ping 8.8.8.8 ✓

facebook.com ✓

youtube.com ✓

e-mail to my private address ✓

print next train connection ✓

Rest of my network life

Nuts (Network Unit Test System)

Urs Baumann, Network Unit Testing, 09.11.2017

4

Testing Network Change

Page 5: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

Urs Baumann, Network Unit Testing, 09.11.2017

5

Nuts (Network Unit Testing System)

nuts

https://github.com/HSRNetwork/Nuts

Page 6: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

Nuts

Command for network devices (= < > not)

connectivity

traceroute

interfacestatus

interfacespeed

arp

checkversion

checkuser

Comming soon

lldp_neighbor

bgp_neighbor

ospf_neighbor

route_to

stp_root

Command for debian systems (= < > not)

connectivity

traceroute

dnscheck

dhcpcheck

webresponse

portresponse

bandwidth

Urs Baumann, Network Unit Testing, 09.11.2017

6

Page 7: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

Network Devices

arp

- name: example_arpcommand: arpdevices: cisco.csr.1000vparameter: [192.168.16.128]operator: '='expected: '00:0C:29:EA:D1:68'

interfacestatus

- name: example_interfacestatuscommand: interfacestatusdevices: cisco.csr.1000vparameter: [GigabitEthernet1]operator: '='expected: True

Urs Baumann, Network Unit Testing, 09.11.2017

7

Page 8: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

Linux Devices

bandwidth

- name: bandwith_pingcommand: bandwidthdevices: srvlnx0001parameter: ['{{ ip[0] }}']operator: '<'expected: 100000000setup:- command: network.ip_addrsdevices: srvlnx0099save: ip

- command: cmd.rundevices: srvlnx0099parameter: ['iperf3 -s -D -1']

teardown:- command: cmd.runparameter: ['pkill iperf3']devices: srvlnx0099

dhcpcheck

- name: dhcp_testcommand: dhcpcheckdevices: srvlnx0014parameter: ['10.10.10.11']operator: '='expected: True

Urs Baumann, Network Unit Testing, 09.11.2017

8

Page 9: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

Network Automation and Programmability Abstraction Layer with Multivendor support

https://napalm.readthedocs.io/

https://napalm-automation.net/

Support matrix

https://napalm.readthedocs.io/en/latest/support/index.html

Rapperswil, 30.10.2017

NAPALM

from napalm import get_network_driver

driver = get_network_driver('ios')device = driver('152.96.9.201', 'cisco', 'cisco')

device.open()arp = device.get_arp_table()device.close()

print(arp)

9

Page 10: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

Urs Baumann, Network Unit Testing, 09.11.2017

10

Support Matrix

Page 11: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

SaltStack

Python

YAML

Jinja2

Easy to extend

API

Event bus

Agent-based / agent-less

Proxy minions

Urs Baumann, Network Unit Testing, 09.11.2017

11

https://docs.salstack.com

Page 12: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

SaltStack and NAPALM

Urs Baumann, Network Unit Testing, 09.11.2017

12

Page 13: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

Urs Baumann, Network Unit Testing, 09.11.2017

13

Use Case

nuts

RESTfull API

Interface checks

ARP Table

OS Version

Connectivity

OS Version

Check local userConnectivity

OS Version

ARP Table

DHCP Check

Bandwidth to server

Open ports on Server

DNS check

Connectivity

Traceroute

Page 14: NETWORK UNIT TESTING - Swiss Network Operators Group€¦ · Urs Baumann Urs Baumann, Network Unit Testing, 09.11.2017 2 Urs Baumann Network Engineer Python Developer SDN, Cloud Infrastructure,

NUTS

https://nuts.readthedocs.io/

https://github.com/HSRNetwork/Nuts/

NAPALM

https://napalm.readthedocs.io/

https://napalm-automation.net/

SaltStack

https://docs.saltstack.com/

Slack https://networktocode.slack.com/

#nuts

#napalm

#saltstack

Urs Baumann, Network Unit Testing, 09.11.2017

14

Summary