SlideShare a Scribd company logo
Damien Garros, Network Reliability Engineer @ Roblox
Network Device Properties
As Code
NANOG 75, San Francisco
Twitter @damgarros
Github @dgarros
Agenda
1. Introduction / Roblox
2. Network device properties definition
3. How are we managing device properties today ?
4. How to manage Network device properties as code
5. Questions
Introduction /
Roblox
1
What is Roblox ?
● Educational platform for young software developers
● Gaming and Social platform
● Core audience for player is kids ages 9-12
● 2 Million Active developers
● 80+ Million monthly active users
● AS 22697
Rebuilt everything in 2018
201920182017
1 Legacy DC
0 Legacy DC
2 New DCs
12 POPs
Manual
Provisioning
Source Of
Truth
SW and RTR
Automated
LB
Automated
● Couldn’t have done it without a proper Source of Truth
● The Source Of Truth is the Network Property Store
Start with the Source of Truth
Network
Source of
Truth
● Integrate everything with it
● Your Source Of Truth is only
as good as the quality of the
data it contains
Vendors don’t tell you to deploy a Source
of Truth because it introduces
dependencies and requirements.
But it’s the most important part.
Automation Stack @ Roblox
Network
Source of
Truth
Ansible / Jinja
Observium
Influxdb / Grafana
Custom Collector
(REST / Netconf)
Netbox
Extensions
Netbox
Git
Custom
Alert Manager
Network device properties
2
Network device properties
● Name
● IP addresses
● Cabling information / Peer properties
● Vlans
● BGP Peering
● Device specific info (ASN, etc.. )
Each device has a unique set of properties
P5 P6P3 P4
T2
● Unique set of properties
per device
T1
P1 P2
● 1 template per role
Your properties reflect your network design
P5 P6P3 P4
P1 P2Network Design
Naming Convention
Cabling Convention
Datacenter Layout
Vendor Specific Information
People are failing to automate their
network because they simplify the
problem and assume that everything is
homogeneous
Example
Console server
SFO NYC
Be prepared to manage MANY version of your
properties
Network Design
Naming Convention
Cabling Convention
Datacenter Layout
Vendor Specific Information
v1
v2
v2.1
v1.1
v2.2
v2.1
v1.2
v2.4
v2.1
v1
v2
v2.1
v1.1
v2.2
v2.1
v1.2
v2.4
v2.1
For every rule, there is an exception.
So you always follow the rule,
except when there is an exception
In which case you follow a new rule
based on that exception.
Be prepared to manage MANY version of your
properties
Network Design
Naming Convention
Cabling Convention
Datacenter Layout
Vendor Specific Information
v1
v2
v2.1
v1.1
v2.2
v2.1
v1.2
v2.4
v2.1
v1
v2
v2.1
v1.1
v2.2
v2.1
v1.2
v2.4
v2.1
Properties @ Roblox
In 12 months we had to manage
● 1 000 Network Devices
● 26 000 IP addresses
● 4 500 Prefixes
● 42 different design revision just for the network
● Up to 9 versions for a given network device role
We also added
How are organizations managing
Network device properties today ?
3
What are the ways to generate these properties?
By Hand By Script / Code
Pros / Cons with Script / Code approach
Cons
● Hard to support multiple
version of properties
● Need to “Write code” to adapt
the design
● Hard to maintain
Pros
● Can generate large number of
properties quickly
● Very flexible
What are the ways to store these properties?
Source of Truth
Database
Git
All of the above
Network devices
configuration
How to manage network device
properties as Code ?
4
Infrastructure as Code principles
● Idempotent > Always the same results
● Version Control Friendly > Input as text file, peer
review
● Safe & Predictable > Plan everything before,
know what changes will be made before you run it.
High level workflow
Source of Truth
P1
P2
P3
P4
P7
P7
P6P5
v1
Generate
Read
Network
Builder
High level workflow - Plan & Apply
v1
PLAN
Source of Truth
Network
Builder
P3
P4
Read
APPLY
Generate
Diff
Read
Source of Truth
Network
Builderv1
Infrastructure as Code principles
● Idempotent > Always the same results
● Version Control Friendly > Input as text file, peer
review
● Safe & Predictable > Plan everything before,
know what changes will be made before you run it.
How to capture your design for a rack switch ?
Name rsw, id of the cluster, name of the site separated by dashes
Loopback Any IP from the management network of the site
Uplinks
1x100G interface connected to each aggregation device
1 /31 allocated per interface from the /22 block reserved for point
to point links
Console port Any port on the the nearest console server
Server ports A /24 network allocated from the /16 block reserved for server
Network Builder - Building blocks
Create Properties
Manage Diff
Source of Truth
Resource Manager
Network Builder
Resource Manager
Manage all your resources as you manage IPs with DHCP
1. Possible to reserve resource in advance
2. Each resource allocated is associated with an ID
3. Same ID always get the same response.
Resource Manager - Example
asn: [ 65100, 65200 ]
prefixes:
loopback: 10.10.10.0/24
point-to-point:10.128.0.0/22
Site SFO● Create pools of resource
Identifiable with name or roles
● Query resources by defining
○ WHAT type of resource
○ From WHICH pool
○ WHO is requesting Resource
Manager
WHAT : Loopback (/32)
WHICH : Loopback in SFO
WHO : device1
Query
Resp
10.10.10.1/32
Represent a property in a compact way
<LO4::sfo/loopback>
Variable Type
ASN LO4
NET_IP
INT VLAN
Pool Name / Path
Can be different per
Variable Type
WHAT WHICH
WHO is determined based on when this query is invoked
name: "rsw1-1-sfo"
elevation: 30
type: qfx5100
role: rack-switch
ASN: "<ASN::sfo/private>"
network:
lo0.0:
ips:
- addr: "<LO4::sfo/internal-loopbacks>"
- addr: "<LO6::external-loopbacks>"
p2p:
et-0/0/48:
peer: "<DEV_INT::psw1-sfo/rack-switch>"
ips:
- addr: "<NET_IP4::sfo/point-to-point/31>"
et-0/0/49:
peer: "<DEV_INT::psw1-sfo/rack-switch>"
ips:
- addr: "<NET_IP4::sfo/point-to-point/31>"
Define your device properties with variables
name: "rsw1-1-sfo"
elevation: 30
type: qfx5100
role: rack-switch
ASN: 65100
network:
lo0.0:
ips:
- addr: 10.10.10.1/32
- addr: 2020:1234:beef::756/128
p2p:
et-0/0/48:
peer: psw1-sfo::et-0/0/1
ips:
- addr: 10.128.195.124/31
et-0/0/49:
peer: psw2-sfo::et-0/0/1
ips:
- addr: 10.128.195.126/31
Define your device properties with variables
rack_switch_v1:
name: "rsw{{id}}-1-sfo"
elevation: 30
type: qfx5100
role: rack-switch
ASN: "<ASN::sfo/private>"
network:
lo0.0:
ips:
- addr: "<LO4::sfo/internal-loopbacks>"
- addr: "<LO6::external-loopbacks>"
p2p:
et-0/0/48:
peer: "<DEV_INT::psw1-sfo/rack-switch>"
ips:
- addr: "<NET_IP4::sfo/point-to-point/31>"
Create template of design
site: sfo
racks:
101:
racks: rack_switch_v1
id: 1
102:
racks: rack_switch_v1
id: 2
103:
racks: rack_switch_v1
id: 3
Reuse templates across site and rack
site: sfo
racks:
101:
name: rsw1-1-sfo
ASN: 62100
[ .. ]
102:
name: rsw2-1-sfo
ASN: 62101
[ .. ]
103:
name: rsw3-1-sfo
ASN: 62102
[ .. ]
Design is often dependent on the location
● Which Console Server should I connect to ?
● Which Cluster / Pod is this rack part of ?
● Which out-of-band device should I connect to ?
● What is the out-of-band network for this rack ?
● ...
Context Resolution
Input File
text / yaml
Convert
Back to
Txt
extract
Site
and
Rack info
YML
TXT
Import
site:
name: sfo
elevation: 30
pod_id: 1
rack:
console: co1-sfo
mgmt_nwk: 10.0.0.0/16
Calculate / Resolve
Rack Specific info
YMLJinja
name: "rsw{{ id }}-{{rack.pod_id}}-{{site.name}}"
elevation: 30
rack_face: front
type: qfx5100
nb_role: rack-switch
ASN: "<ASN::{{site.name}}/private>"
network:
lo0.0:
ips:
- addr: "<LO4::{{site.name}}/internal-loopbacks>"
- addr: "<LO6::external-loopbacks>"
p2p:
et-0/0/48:
peer: "<DEV_INT::psw1-{{site.name}}/rack-switch>"
ips:
- addr: "<NET_IP4::{{site.name}}/point-to-point/31>"
et-0/0/49:
peer: "<DEV_INT::psw1-{{site.name}}/rack-switch>"
ips:
- addr: "<NET_IP4::{{site.name}}/point-to-point/31>"
Use Jinja to add contextual information
Network Builder - 3 main components
Context Resolution
Pull information specific per
site and rack
Pod and Cluster Info
Console Server
PDU
OOB devices, Ips…
Variables Resolution
Resolve/generate
properties using the
resource manager
Apply / Create
Understand
what already exist
what needs to be created
Apply the diff
PLAN APPLY
Next steps
● Get feedback on this approach
● Open Source the resource manager
● Open Source the network builder
Thank You

More Related Content

What's hot

Net Devops Overview
Net Devops OverviewNet Devops Overview
Net Devops Overview
Joel W. King
 
One tool, two fabrics: Ansible and Nexus 9000
One tool, two fabrics: Ansible and Nexus 9000One tool, two fabrics: Ansible and Nexus 9000
One tool, two fabrics: Ansible and Nexus 9000
Joel W. King
 
DockerCon SF 2015: Cultural Change using Docker
DockerCon SF 2015: Cultural Change using Docker DockerCon SF 2015: Cultural Change using Docker
DockerCon SF 2015: Cultural Change using Docker
Docker, Inc.
 
Building your production tech stack for docker container platform
Building your production tech stack for docker container platformBuilding your production tech stack for docker container platform
Building your production tech stack for docker container platform
Docker, Inc.
 
Demystifying container connectivity with kubernetes in docker
Demystifying container connectivity with kubernetes in dockerDemystifying container connectivity with kubernetes in docker
Demystifying container connectivity with kubernetes in docker
Docker, Inc.
 
Configuration Management Tools on NX-OS
Configuration Management Tools on NX-OSConfiguration Management Tools on NX-OS
Configuration Management Tools on NX-OS
Cisco DevNet
 
Introduction to Git for Network Engineers (Lab Guide)
Introduction to Git for Network Engineers (Lab Guide)Introduction to Git for Network Engineers (Lab Guide)
Introduction to Git for Network Engineers (Lab Guide)
Joel W. King
 
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce
 
Netflix Open Source: Building a Distributed and Automated Open Source Program
Netflix Open Source:  Building a Distributed and Automated Open Source ProgramNetflix Open Source:  Building a Distributed and Automated Open Source Program
Netflix Open Source: Building a Distributed and Automated Open Source Program
aspyker
 
Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)
dev2ops
 
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
DCEU 18: 5 Patterns for Success in Application Transformation
DCEU 18: 5 Patterns for Success in Application TransformationDCEU 18: 5 Patterns for Success in Application Transformation
DCEU 18: 5 Patterns for Success in Application Transformation
Docker, Inc.
 
Introduction of eBPF - 時下最夯的Linux Technology
Introduction of eBPF - 時下最夯的Linux Technology Introduction of eBPF - 時下最夯的Linux Technology
Introduction of eBPF - 時下最夯的Linux Technology
Jace Liang
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Red Hat Developers
 
Ansible- Durham Meetup: Using Ansible for Cisco ACI deployment
Ansible- Durham Meetup: Using Ansible for Cisco ACI deploymentAnsible- Durham Meetup: Using Ansible for Cisco ACI deployment
Ansible- Durham Meetup: Using Ansible for Cisco ACI deployment
Joel W. King
 
Zero to Serverless - OpenFaaS at the Open Source Summit
Zero to Serverless - OpenFaaS at the Open Source SummitZero to Serverless - OpenFaaS at the Open Source Summit
Zero to Serverless - OpenFaaS at the Open Source Summit
Alex Ellis
 
Opinionated containers and the future of game servers by Brendan Fosberry
Opinionated containers and the future of game servers by Brendan FosberryOpinionated containers and the future of game servers by Brendan Fosberry
Opinionated containers and the future of game servers by Brendan Fosberry
Docker, Inc.
 
Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014
Andreas Rehn
 
DCSF 19 Modernizing Insurance with Docker Enterprise: The Physicians Mutual ...
DCSF 19 Modernizing Insurance with Docker Enterprise:  The Physicians Mutual ...DCSF 19 Modernizing Insurance with Docker Enterprise:  The Physicians Mutual ...
DCSF 19 Modernizing Insurance with Docker Enterprise: The Physicians Mutual ...
Docker, Inc.
 
Uncover the mysteries of infrastructure as code (iac)!
Uncover the mysteries of infrastructure as code (iac)!Uncover the mysteries of infrastructure as code (iac)!
Uncover the mysteries of infrastructure as code (iac)!
Prashant Kalkar
 

What's hot (20)

Net Devops Overview
Net Devops OverviewNet Devops Overview
Net Devops Overview
 
One tool, two fabrics: Ansible and Nexus 9000
One tool, two fabrics: Ansible and Nexus 9000One tool, two fabrics: Ansible and Nexus 9000
One tool, two fabrics: Ansible and Nexus 9000
 
DockerCon SF 2015: Cultural Change using Docker
DockerCon SF 2015: Cultural Change using Docker DockerCon SF 2015: Cultural Change using Docker
DockerCon SF 2015: Cultural Change using Docker
 
Building your production tech stack for docker container platform
Building your production tech stack for docker container platformBuilding your production tech stack for docker container platform
Building your production tech stack for docker container platform
 
Demystifying container connectivity with kubernetes in docker
Demystifying container connectivity with kubernetes in dockerDemystifying container connectivity with kubernetes in docker
Demystifying container connectivity with kubernetes in docker
 
Configuration Management Tools on NX-OS
Configuration Management Tools on NX-OSConfiguration Management Tools on NX-OS
Configuration Management Tools on NX-OS
 
Introduction to Git for Network Engineers (Lab Guide)
Introduction to Git for Network Engineers (Lab Guide)Introduction to Git for Network Engineers (Lab Guide)
Introduction to Git for Network Engineers (Lab Guide)
 
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco StudiosPerforce Helix Never Dies: DevOps at Bandai Namco Studios
Perforce Helix Never Dies: DevOps at Bandai Namco Studios
 
Netflix Open Source: Building a Distributed and Automated Open Source Program
Netflix Open Source:  Building a Distributed and Automated Open Source ProgramNetflix Open Source:  Building a Distributed and Automated Open Source Program
Netflix Open Source: Building a Distributed and Automated Open Source Program
 
Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)Rundeck + Nexus (from Nexus Live on June 5, 2014)
Rundeck + Nexus (from Nexus Live on June 5, 2014)
 
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
JavaCro'14 - Continuous delivery of Java EE applications with Jenkins and Doc...
 
DCEU 18: 5 Patterns for Success in Application Transformation
DCEU 18: 5 Patterns for Success in Application TransformationDCEU 18: 5 Patterns for Success in Application Transformation
DCEU 18: 5 Patterns for Success in Application Transformation
 
Introduction of eBPF - 時下最夯的Linux Technology
Introduction of eBPF - 時下最夯的Linux Technology Introduction of eBPF - 時下最夯的Linux Technology
Introduction of eBPF - 時下最夯的Linux Technology
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
 
Ansible- Durham Meetup: Using Ansible for Cisco ACI deployment
Ansible- Durham Meetup: Using Ansible for Cisco ACI deploymentAnsible- Durham Meetup: Using Ansible for Cisco ACI deployment
Ansible- Durham Meetup: Using Ansible for Cisco ACI deployment
 
Zero to Serverless - OpenFaaS at the Open Source Summit
Zero to Serverless - OpenFaaS at the Open Source SummitZero to Serverless - OpenFaaS at the Open Source Summit
Zero to Serverless - OpenFaaS at the Open Source Summit
 
Opinionated containers and the future of game servers by Brendan Fosberry
Opinionated containers and the future of game servers by Brendan FosberryOpinionated containers and the future of game servers by Brendan Fosberry
Opinionated containers and the future of game servers by Brendan Fosberry
 
Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014
 
DCSF 19 Modernizing Insurance with Docker Enterprise: The Physicians Mutual ...
DCSF 19 Modernizing Insurance with Docker Enterprise:  The Physicians Mutual ...DCSF 19 Modernizing Insurance with Docker Enterprise:  The Physicians Mutual ...
DCSF 19 Modernizing Insurance with Docker Enterprise: The Physicians Mutual ...
 
Uncover the mysteries of infrastructure as code (iac)!
Uncover the mysteries of infrastructure as code (iac)!Uncover the mysteries of infrastructure as code (iac)!
Uncover the mysteries of infrastructure as code (iac)!
 

Similar to Nanog75, Network Device Property as Code

Architecting the Future: Abstractions and Metadata - All Things Open
Architecting the Future: Abstractions and Metadata - All Things OpenArchitecting the Future: Abstractions and Metadata - All Things Open
Architecting the Future: Abstractions and Metadata - All Things Open
Daniel Barker
 
Innovation in SDN Tools and Platforms
Innovation in SDN Tools and PlatformsInnovation in SDN Tools and Platforms
Innovation in SDN Tools and Platforms
Umesh Krishnaswamy
 
Simplify Networking for Containers
Simplify Networking for ContainersSimplify Networking for Containers
Simplify Networking for Containers
LinuxCon ContainerCon CloudOpen China
 
Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk
Eran Gampel
 
Scaling OpenStack Networking Beyond 4000 Nodes with Dragonflow - Eshed Gal-Or...
Scaling OpenStack Networking Beyond 4000 Nodes with Dragonflow - Eshed Gal-Or...Scaling OpenStack Networking Beyond 4000 Nodes with Dragonflow - Eshed Gal-Or...
Scaling OpenStack Networking Beyond 4000 Nodes with Dragonflow - Eshed Gal-Or...
Cloud Native Day Tel Aviv
 
The Juniper SDN Landscape
The Juniper SDN LandscapeThe Juniper SDN Landscape
The Juniper SDN Landscape
Chris Jones
 
OWASP Appsec USA 2014 Talk "Pwning the Pawns with Wihawk" Santhosh Kumar
OWASP Appsec USA 2014 Talk "Pwning the Pawns with Wihawk" Santhosh Kumar OWASP Appsec USA 2014 Talk "Pwning the Pawns with Wihawk" Santhosh Kumar
OWASP Appsec USA 2014 Talk "Pwning the Pawns with Wihawk" Santhosh Kumar
Santhosh Kumar
 
Docker at Flux7
Docker at Flux7Docker at Flux7
Docker at Flux7
Aater Suleman
 
Introduzione a Software Define Networking
Introduzione a Software Define NetworkingIntroduzione a Software Define Networking
Introduzione a Software Define Networking
festival ICT 2016
 
DCUS17 : Docker networking deep dive
DCUS17 : Docker networking deep diveDCUS17 : Docker networking deep dive
DCUS17 : Docker networking deep dive
Madhu Venugopal
 
FreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceFreeSWITCH as a Microservice
FreeSWITCH as a Microservice
Evan McGee
 
Become a Cloud Security Ninja
Become a Cloud Security NinjaBecome a Cloud Security Ninja
Become a Cloud Security Ninja
Amazon Web Services
 
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
Naoto Gohko
 
DEVNET-1166 Open SDN Controller APIs
DEVNET-1166	Open SDN Controller APIsDEVNET-1166	Open SDN Controller APIs
DEVNET-1166 Open SDN Controller APIs
Cisco DevNet
 
Docker meetup talk - chicago March 2014
Docker meetup talk - chicago March 2014Docker meetup talk - chicago March 2014
Docker meetup talk - chicago March 2014
Ryan Koop
 
Software Defined Networking: Primer
Software Defined Networking: Primer Software Defined Networking: Primer
Software Defined Networking: Primer
Bangladesh Network Operators Group
 
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
Cloud Native Day Tel Aviv
 
Architecting the Future: Abstractions and Metadata - KCDC
Architecting the Future: Abstractions and Metadata - KCDCArchitecting the Future: Abstractions and Metadata - KCDC
Architecting the Future: Abstractions and Metadata - KCDC
Daniel Barker
 
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack NetworkingONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
markmcclain
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Red Hat Developers
 

Similar to Nanog75, Network Device Property as Code (20)

Architecting the Future: Abstractions and Metadata - All Things Open
Architecting the Future: Abstractions and Metadata - All Things OpenArchitecting the Future: Abstractions and Metadata - All Things Open
Architecting the Future: Abstractions and Metadata - All Things Open
 
Innovation in SDN Tools and Platforms
Innovation in SDN Tools and PlatformsInnovation in SDN Tools and Platforms
Innovation in SDN Tools and Platforms
 
Simplify Networking for Containers
Simplify Networking for ContainersSimplify Networking for Containers
Simplify Networking for Containers
 
Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk
 
Scaling OpenStack Networking Beyond 4000 Nodes with Dragonflow - Eshed Gal-Or...
Scaling OpenStack Networking Beyond 4000 Nodes with Dragonflow - Eshed Gal-Or...Scaling OpenStack Networking Beyond 4000 Nodes with Dragonflow - Eshed Gal-Or...
Scaling OpenStack Networking Beyond 4000 Nodes with Dragonflow - Eshed Gal-Or...
 
The Juniper SDN Landscape
The Juniper SDN LandscapeThe Juniper SDN Landscape
The Juniper SDN Landscape
 
OWASP Appsec USA 2014 Talk "Pwning the Pawns with Wihawk" Santhosh Kumar
OWASP Appsec USA 2014 Talk "Pwning the Pawns with Wihawk" Santhosh Kumar OWASP Appsec USA 2014 Talk "Pwning the Pawns with Wihawk" Santhosh Kumar
OWASP Appsec USA 2014 Talk "Pwning the Pawns with Wihawk" Santhosh Kumar
 
Docker at Flux7
Docker at Flux7Docker at Flux7
Docker at Flux7
 
Introduzione a Software Define Networking
Introduzione a Software Define NetworkingIntroduzione a Software Define Networking
Introduzione a Software Define Networking
 
DCUS17 : Docker networking deep dive
DCUS17 : Docker networking deep diveDCUS17 : Docker networking deep dive
DCUS17 : Docker networking deep dive
 
FreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceFreeSWITCH as a Microservice
FreeSWITCH as a Microservice
 
Become a Cloud Security Ninja
Become a Cloud Security NinjaBecome a Cloud Security Ninja
Become a Cloud Security Ninja
 
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
 
DEVNET-1166 Open SDN Controller APIs
DEVNET-1166	Open SDN Controller APIsDEVNET-1166	Open SDN Controller APIs
DEVNET-1166 Open SDN Controller APIs
 
Docker meetup talk - chicago March 2014
Docker meetup talk - chicago March 2014Docker meetup talk - chicago March 2014
Docker meetup talk - chicago March 2014
 
Software Defined Networking: Primer
Software Defined Networking: Primer Software Defined Networking: Primer
Software Defined Networking: Primer
 
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
 
Architecting the Future: Abstractions and Metadata - KCDC
Architecting the Future: Abstractions and Metadata - KCDCArchitecting the Future: Abstractions and Metadata - KCDC
Architecting the Future: Abstractions and Metadata - KCDC
 
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack NetworkingONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 

Recently uploaded

Hematology Analyzer Machine - Complete Blood Count
Hematology Analyzer Machine - Complete Blood CountHematology Analyzer Machine - Complete Blood Count
Hematology Analyzer Machine - Complete Blood Count
shahdabdulbaset
 
Computational Engineering IITH Presentation
Computational Engineering IITH PresentationComputational Engineering IITH Presentation
Computational Engineering IITH Presentation
co23btech11018
 
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsKuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
Victor Morales
 
Properties Railway Sleepers and Test.pptx
Properties Railway Sleepers and Test.pptxProperties Railway Sleepers and Test.pptx
Properties Railway Sleepers and Test.pptx
MDSABBIROJJAMANPAYEL
 
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
ecqow
 
LLM Fine Tuning with QLoRA Cassandra Lunch 4, presented by Anant
LLM Fine Tuning with QLoRA Cassandra Lunch 4, presented by AnantLLM Fine Tuning with QLoRA Cassandra Lunch 4, presented by Anant
LLM Fine Tuning with QLoRA Cassandra Lunch 4, presented by Anant
Anant Corporation
 
Seminar on Distillation study-mafia.pptx
Seminar on Distillation study-mafia.pptxSeminar on Distillation study-mafia.pptx
Seminar on Distillation study-mafia.pptx
Madan Karki
 
Certificates - Mahmoud Mohamed Moursi Ahmed
Certificates - Mahmoud Mohamed Moursi AhmedCertificates - Mahmoud Mohamed Moursi Ahmed
Certificates - Mahmoud Mohamed Moursi Ahmed
Mahmoud Morsy
 
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
shadow0702a
 
CEC 352 - SATELLITE COMMUNICATION UNIT 1
CEC 352 - SATELLITE COMMUNICATION UNIT 1CEC 352 - SATELLITE COMMUNICATION UNIT 1
CEC 352 - SATELLITE COMMUNICATION UNIT 1
PKavitha10
 
The Python for beginners. This is an advance computer language.
The Python for beginners. This is an advance computer language.The Python for beginners. This is an advance computer language.
The Python for beginners. This is an advance computer language.
sachin chaurasia
 
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURSCompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
RamonNovais6
 
AI assisted telemedicine KIOSK for Rural India.pptx
AI assisted telemedicine KIOSK for Rural India.pptxAI assisted telemedicine KIOSK for Rural India.pptx
AI assisted telemedicine KIOSK for Rural India.pptx
architagupta876
 
Curve Fitting in Numerical Methods Regression
Curve Fitting in Numerical Methods RegressionCurve Fitting in Numerical Methods Regression
Curve Fitting in Numerical Methods Regression
Nada Hikmah
 
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
Yasser Mahgoub
 
132/33KV substation case study Presentation
132/33KV substation case study Presentation132/33KV substation case study Presentation
132/33KV substation case study Presentation
kandramariana6
 
Mechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdfMechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdf
21UME003TUSHARDEB
 
Engineering Drawings Lecture Detail Drawings 2014.pdf
Engineering Drawings Lecture Detail Drawings 2014.pdfEngineering Drawings Lecture Detail Drawings 2014.pdf
Engineering Drawings Lecture Detail Drawings 2014.pdf
abbyasa1014
 
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Sinan KOZAK
 
Redefining brain tumor segmentation: a cutting-edge convolutional neural netw...
Redefining brain tumor segmentation: a cutting-edge convolutional neural netw...Redefining brain tumor segmentation: a cutting-edge convolutional neural netw...
Redefining brain tumor segmentation: a cutting-edge convolutional neural netw...
IJECEIAES
 

Recently uploaded (20)

Hematology Analyzer Machine - Complete Blood Count
Hematology Analyzer Machine - Complete Blood CountHematology Analyzer Machine - Complete Blood Count
Hematology Analyzer Machine - Complete Blood Count
 
Computational Engineering IITH Presentation
Computational Engineering IITH PresentationComputational Engineering IITH Presentation
Computational Engineering IITH Presentation
 
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsKuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
 
Properties Railway Sleepers and Test.pptx
Properties Railway Sleepers and Test.pptxProperties Railway Sleepers and Test.pptx
Properties Railway Sleepers and Test.pptx
 
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
一比一原版(CalArts毕业证)加利福尼亚艺术学院毕业证如何办理
 
LLM Fine Tuning with QLoRA Cassandra Lunch 4, presented by Anant
LLM Fine Tuning with QLoRA Cassandra Lunch 4, presented by AnantLLM Fine Tuning with QLoRA Cassandra Lunch 4, presented by Anant
LLM Fine Tuning with QLoRA Cassandra Lunch 4, presented by Anant
 
Seminar on Distillation study-mafia.pptx
Seminar on Distillation study-mafia.pptxSeminar on Distillation study-mafia.pptx
Seminar on Distillation study-mafia.pptx
 
Certificates - Mahmoud Mohamed Moursi Ahmed
Certificates - Mahmoud Mohamed Moursi AhmedCertificates - Mahmoud Mohamed Moursi Ahmed
Certificates - Mahmoud Mohamed Moursi Ahmed
 
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...
 
CEC 352 - SATELLITE COMMUNICATION UNIT 1
CEC 352 - SATELLITE COMMUNICATION UNIT 1CEC 352 - SATELLITE COMMUNICATION UNIT 1
CEC 352 - SATELLITE COMMUNICATION UNIT 1
 
The Python for beginners. This is an advance computer language.
The Python for beginners. This is an advance computer language.The Python for beginners. This is an advance computer language.
The Python for beginners. This is an advance computer language.
 
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURSCompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
CompEx~Manual~1210 (2).pdf COMPEX GAS AND VAPOURS
 
AI assisted telemedicine KIOSK for Rural India.pptx
AI assisted telemedicine KIOSK for Rural India.pptxAI assisted telemedicine KIOSK for Rural India.pptx
AI assisted telemedicine KIOSK for Rural India.pptx
 
Curve Fitting in Numerical Methods Regression
Curve Fitting in Numerical Methods RegressionCurve Fitting in Numerical Methods Regression
Curve Fitting in Numerical Methods Regression
 
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
2008 BUILDING CONSTRUCTION Illustrated - Ching Chapter 02 The Building.pdf
 
132/33KV substation case study Presentation
132/33KV substation case study Presentation132/33KV substation case study Presentation
132/33KV substation case study Presentation
 
Mechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdfMechanical Engineering on AAI Summer Training Report-003.pdf
Mechanical Engineering on AAI Summer Training Report-003.pdf
 
Engineering Drawings Lecture Detail Drawings 2014.pdf
Engineering Drawings Lecture Detail Drawings 2014.pdfEngineering Drawings Lecture Detail Drawings 2014.pdf
Engineering Drawings Lecture Detail Drawings 2014.pdf
 
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
Optimizing Gradle Builds - Gradle DPE Tour Berlin 2024
 
Redefining brain tumor segmentation: a cutting-edge convolutional neural netw...
Redefining brain tumor segmentation: a cutting-edge convolutional neural netw...Redefining brain tumor segmentation: a cutting-edge convolutional neural netw...
Redefining brain tumor segmentation: a cutting-edge convolutional neural netw...
 

Nanog75, Network Device Property as Code

  • 1. Damien Garros, Network Reliability Engineer @ Roblox Network Device Properties As Code NANOG 75, San Francisco Twitter @damgarros Github @dgarros
  • 2. Agenda 1. Introduction / Roblox 2. Network device properties definition 3. How are we managing device properties today ? 4. How to manage Network device properties as code 5. Questions
  • 4. What is Roblox ? ● Educational platform for young software developers ● Gaming and Social platform ● Core audience for player is kids ages 9-12 ● 2 Million Active developers ● 80+ Million monthly active users ● AS 22697
  • 5. Rebuilt everything in 2018 201920182017 1 Legacy DC 0 Legacy DC 2 New DCs 12 POPs Manual Provisioning Source Of Truth SW and RTR Automated LB Automated ● Couldn’t have done it without a proper Source of Truth ● The Source Of Truth is the Network Property Store
  • 6. Start with the Source of Truth Network Source of Truth ● Integrate everything with it ● Your Source Of Truth is only as good as the quality of the data it contains
  • 7. Vendors don’t tell you to deploy a Source of Truth because it introduces dependencies and requirements. But it’s the most important part.
  • 8. Automation Stack @ Roblox Network Source of Truth Ansible / Jinja Observium Influxdb / Grafana Custom Collector (REST / Netconf) Netbox Extensions Netbox Git Custom Alert Manager
  • 10. Network device properties ● Name ● IP addresses ● Cabling information / Peer properties ● Vlans ● BGP Peering ● Device specific info (ASN, etc.. )
  • 11. Each device has a unique set of properties P5 P6P3 P4 T2 ● Unique set of properties per device T1 P1 P2 ● 1 template per role
  • 12. Your properties reflect your network design P5 P6P3 P4 P1 P2Network Design Naming Convention Cabling Convention Datacenter Layout Vendor Specific Information
  • 13. People are failing to automate their network because they simplify the problem and assume that everything is homogeneous
  • 15. Be prepared to manage MANY version of your properties Network Design Naming Convention Cabling Convention Datacenter Layout Vendor Specific Information v1 v2 v2.1 v1.1 v2.2 v2.1 v1.2 v2.4 v2.1 v1 v2 v2.1 v1.1 v2.2 v2.1 v1.2 v2.4 v2.1
  • 16. For every rule, there is an exception. So you always follow the rule, except when there is an exception In which case you follow a new rule based on that exception.
  • 17. Be prepared to manage MANY version of your properties Network Design Naming Convention Cabling Convention Datacenter Layout Vendor Specific Information v1 v2 v2.1 v1.1 v2.2 v2.1 v1.2 v2.4 v2.1 v1 v2 v2.1 v1.1 v2.2 v2.1 v1.2 v2.4 v2.1
  • 18. Properties @ Roblox In 12 months we had to manage ● 1 000 Network Devices ● 26 000 IP addresses ● 4 500 Prefixes ● 42 different design revision just for the network ● Up to 9 versions for a given network device role We also added
  • 19. How are organizations managing Network device properties today ? 3
  • 20. What are the ways to generate these properties? By Hand By Script / Code
  • 21. Pros / Cons with Script / Code approach Cons ● Hard to support multiple version of properties ● Need to “Write code” to adapt the design ● Hard to maintain Pros ● Can generate large number of properties quickly ● Very flexible
  • 22. What are the ways to store these properties? Source of Truth Database Git All of the above Network devices configuration
  • 23. How to manage network device properties as Code ? 4
  • 24. Infrastructure as Code principles ● Idempotent > Always the same results ● Version Control Friendly > Input as text file, peer review ● Safe & Predictable > Plan everything before, know what changes will be made before you run it.
  • 25. High level workflow Source of Truth P1 P2 P3 P4 P7 P7 P6P5 v1 Generate Read Network Builder
  • 26. High level workflow - Plan & Apply v1 PLAN Source of Truth Network Builder P3 P4 Read APPLY Generate Diff Read Source of Truth Network Builderv1
  • 27. Infrastructure as Code principles ● Idempotent > Always the same results ● Version Control Friendly > Input as text file, peer review ● Safe & Predictable > Plan everything before, know what changes will be made before you run it.
  • 28. How to capture your design for a rack switch ? Name rsw, id of the cluster, name of the site separated by dashes Loopback Any IP from the management network of the site Uplinks 1x100G interface connected to each aggregation device 1 /31 allocated per interface from the /22 block reserved for point to point links Console port Any port on the the nearest console server Server ports A /24 network allocated from the /16 block reserved for server
  • 29. Network Builder - Building blocks Create Properties Manage Diff Source of Truth Resource Manager Network Builder
  • 30. Resource Manager Manage all your resources as you manage IPs with DHCP 1. Possible to reserve resource in advance 2. Each resource allocated is associated with an ID 3. Same ID always get the same response.
  • 31. Resource Manager - Example asn: [ 65100, 65200 ] prefixes: loopback: 10.10.10.0/24 point-to-point:10.128.0.0/22 Site SFO● Create pools of resource Identifiable with name or roles ● Query resources by defining ○ WHAT type of resource ○ From WHICH pool ○ WHO is requesting Resource Manager WHAT : Loopback (/32) WHICH : Loopback in SFO WHO : device1 Query Resp 10.10.10.1/32
  • 32. Represent a property in a compact way <LO4::sfo/loopback> Variable Type ASN LO4 NET_IP INT VLAN Pool Name / Path Can be different per Variable Type WHAT WHICH WHO is determined based on when this query is invoked
  • 33. name: "rsw1-1-sfo" elevation: 30 type: qfx5100 role: rack-switch ASN: "<ASN::sfo/private>" network: lo0.0: ips: - addr: "<LO4::sfo/internal-loopbacks>" - addr: "<LO6::external-loopbacks>" p2p: et-0/0/48: peer: "<DEV_INT::psw1-sfo/rack-switch>" ips: - addr: "<NET_IP4::sfo/point-to-point/31>" et-0/0/49: peer: "<DEV_INT::psw1-sfo/rack-switch>" ips: - addr: "<NET_IP4::sfo/point-to-point/31>" Define your device properties with variables
  • 34. name: "rsw1-1-sfo" elevation: 30 type: qfx5100 role: rack-switch ASN: 65100 network: lo0.0: ips: - addr: 10.10.10.1/32 - addr: 2020:1234:beef::756/128 p2p: et-0/0/48: peer: psw1-sfo::et-0/0/1 ips: - addr: 10.128.195.124/31 et-0/0/49: peer: psw2-sfo::et-0/0/1 ips: - addr: 10.128.195.126/31 Define your device properties with variables
  • 35. rack_switch_v1: name: "rsw{{id}}-1-sfo" elevation: 30 type: qfx5100 role: rack-switch ASN: "<ASN::sfo/private>" network: lo0.0: ips: - addr: "<LO4::sfo/internal-loopbacks>" - addr: "<LO6::external-loopbacks>" p2p: et-0/0/48: peer: "<DEV_INT::psw1-sfo/rack-switch>" ips: - addr: "<NET_IP4::sfo/point-to-point/31>" Create template of design
  • 36. site: sfo racks: 101: racks: rack_switch_v1 id: 1 102: racks: rack_switch_v1 id: 2 103: racks: rack_switch_v1 id: 3 Reuse templates across site and rack site: sfo racks: 101: name: rsw1-1-sfo ASN: 62100 [ .. ] 102: name: rsw2-1-sfo ASN: 62101 [ .. ] 103: name: rsw3-1-sfo ASN: 62102 [ .. ]
  • 37. Design is often dependent on the location ● Which Console Server should I connect to ? ● Which Cluster / Pod is this rack part of ? ● Which out-of-band device should I connect to ? ● What is the out-of-band network for this rack ? ● ...
  • 38. Context Resolution Input File text / yaml Convert Back to Txt extract Site and Rack info YML TXT Import site: name: sfo elevation: 30 pod_id: 1 rack: console: co1-sfo mgmt_nwk: 10.0.0.0/16 Calculate / Resolve Rack Specific info YMLJinja
  • 39. name: "rsw{{ id }}-{{rack.pod_id}}-{{site.name}}" elevation: 30 rack_face: front type: qfx5100 nb_role: rack-switch ASN: "<ASN::{{site.name}}/private>" network: lo0.0: ips: - addr: "<LO4::{{site.name}}/internal-loopbacks>" - addr: "<LO6::external-loopbacks>" p2p: et-0/0/48: peer: "<DEV_INT::psw1-{{site.name}}/rack-switch>" ips: - addr: "<NET_IP4::{{site.name}}/point-to-point/31>" et-0/0/49: peer: "<DEV_INT::psw1-{{site.name}}/rack-switch>" ips: - addr: "<NET_IP4::{{site.name}}/point-to-point/31>" Use Jinja to add contextual information
  • 40. Network Builder - 3 main components Context Resolution Pull information specific per site and rack Pod and Cluster Info Console Server PDU OOB devices, Ips… Variables Resolution Resolve/generate properties using the resource manager Apply / Create Understand what already exist what needs to be created Apply the diff PLAN APPLY
  • 41. Next steps ● Get feedback on this approach ● Open Source the resource manager ● Open Source the network builder