February 6, 2020

329 words 2 mins read

Scaling the Facebook backbone through Zero Touch Provisioning (ZTP)

Scaling the Facebook backbone through Zero Touch Provisioning (ZTP)

Zero Touch Provisioning is a method of configuring network devices through DHCP from a factory-blank state. In response to a DHCP-DISCOVER, a device is given eithe …

Talk Title Scaling the Facebook backbone through Zero Touch Provisioning (ZTP)
Speakers Brandon Bennett, Facebook, David Swafford, Facebook
Conference NANOG73
Conf Tag
Location Denver, CO
Date Jun 25 2018 - Jun 27 2018
URL Talk Page
Slides Talk Slides
Video Talk Video

Zero Touch Provisioning is a method of configuring network devices through DHCP from a factory-blank state. In response to a DHCP-DISCOVER, a device is given either a configuration file or a configuration script to execute on the network device. For the scripted option, how the script executes and what it’s capable of varies by each vendor (so far) and by network role. After configuring itself, the device will typically reboot and voila, FIN! But, no, in real life we have other things to do before releasing a device to production. We also have had interesting problems of not being able to generate configuration prior to physically installing a device - so if you don’t have configuration pre-generated, how do you respond to a DHCP request with a configuration file? This problem led us to develop a workflow automation system wrapped around ZTP whereby ZTP is a step in the early portion of a workflow but not necessarily the beginning. By wrapping other automation steps before, during, and after, we were able to bring end-to-end automation to the provisioning space while greatly reducing errors and failures. In this talk, I am going to focus on how we provision our backbone devices using ZTP, dive deep into the workflow automation built to rid ourselves of endless MOPs (procedural documents executed by human technicians), briefly show the changes we made on our DHCP stack (ISC’s open-source DHCP server) to parse and respond to our various vendors with a per-device specific Python agent, and dive into our use of a Python agent running on-box.

comments powered by Disqus