写点什么

Facebook 使用 ZTP 扩展网络配置自动化

2018 年 6 月 27 日

Facebook遍布全球的网络是由广域主干网和边缘入网点(PoP,Points-of-Presence)组成的,后者用于支持面向终端用户的请求和内部流量。主干网和PoP 均在快速发展中。为满足对网络配置和维护的需求,Facebook 的网络工程团队构建了一种使用ZTP(零接触配置,Zero Touch Provisioning)方法的工作流框架,称为 VM(Vending Machine)。VM 通过运行代码执行各种类型的网络设备配置。

ZTP 提供的机制支持无需任何人工介入,从设备的出厂默认状态开始配置交换机等网络设备。ZTP 已得到了多家网络设备提供商支持。ZTP 包括在设备启动时发送请求(通常通过DHCP)、获取中央服务器的位置、从中央服务器下载并应用配置等,此外还可添加一些自动化工具,例如Chef 和Puppet 等。网络设备以往通常由运维人员手工使用CLI 配置,现在可以通过ZTP 实现自动配置。鉴于交换机设备厂商已经开始使用DHCP 支持ZTP,Facebook 团队正与IP 路由器和光交换设备厂商一起致力于实现对类似特性的支持。Facebook 团队现已完成重用基于DHCP 的自动配置自动化工作。

Facebook过去曾经构建了一些网络自动化工具,但大部分网络配置是通过MOP(规程做法,Method of Procedure)实现的。MOP 事实上就是文档化,例如 runbooks 等,工程人员必须遵章操作。随着部署需求的日益增加,导致企业需要雇佣更多的工程师运行 MOP,事情变得更为复杂和易于出错。Facebook 最初的配置系统源自于以控制台为基础的系统。但是历经数年的发展,其中已经添加了不少新的角色、路径和平台,这使得基于 MOP 的系统更难以使用。VM(Vending Machine)框架正是应此需求而生。据文章介绍,VM 以“设备角色、定位和平台”为输入,返回“最新配置的网络设备,以及准备好交付的生产流量”为输出。

Facebook 工程师在一次演讲中,介绍了企业构建 VM 的动机:

设备响应 DHCPDISCOVER 消息,之后或是给出一个配置文件,或是提供一个可在网络设备上执行的配置脚本。对于后者而言,脚本如何执行,以及脚本是否适合,取决于不同的设备厂商(目前为止如此)和网络角色。设备通常会在完成自身的配置后重启。现实中,在设备发布到生产环境之前,工程人员通常会有其它事情在做。因此配置不能先于物理安装设备而生成。但是如果配置没有预先生成,那么如何使用配置文件响应 DHCP 请求?这一问题促使我们去开发一个工作流自动化系统,实现对 ZIP 机制的包裹(wrap)。

演讲中指出,Facebook 必须改进其 DHCP 栈。构建 VM 时,Facebook 的 DHCP 栈基于 ISC 的开源 DHCP 服务器的。VM 工作流的起始点是一块特定的 Python 代码,该代码将通过标准 ZTP 方法下载到网络设备上。Python 代理从 VM 服务器下载指令、配置、固件和补丁到网络设备,进行安装,并返回输出日志和退出状态给 VM。

图片来源: https://code.facebook.com/posts/166812063987311/scaling-the-facebook-backbone-through-zero-touch-provisioning/

在 VM 工作流模型中,工程团队可使用一系列运行任何语言代码的标准步骤。任一步骤如果发生失败,将会重新排入到队列中,进而在将来得以重新执行。每一个步骤中可以包括一个单独二进制程序。需要注意的是,各个步骤可以使用任何编程语言编写。团队正逐步从 MOP 中迁移出来,已开发了越来越多的 VM 步骤替代 MOP。通过确定其中可独立的步骤,进而实现这些步骤的并行运行,VM 进一步加速了配置过程。

在 VM 的未来路线图中还包括 VM 任务组的编排、Facebook 全球网络中 Plane 的完全自动化重新构建。VM 是近期在网络中应用DevOps 原则这一浪潮的一个实例。

查看英文原文: Scaling Network Automation at Facebook Using Zero-Touch Provisioning

2018 年 6 月 27 日 03:50783
用户头像

发布了 376 篇内容, 共 93.8 次阅读, 收获喜欢 214 次。

关注

评论

发布
暂无评论
发现更多内容

企业信息化到底重不重要?

代码制造者

低代码 零代码 信息化 编程开发 运营管理

区块链交易所系统开发内容,数字货币交易所搭建

13530558032

交易所合约跟单开发方,数字资产合约跟单系统搭建

13530558032

程序员不愿996,创建6个涉黄平台,涉案5000余万元!

程序员生活志

程序员

浅谈备受开发者好评的.NET core敏捷开发工具,讲讲LEARUN工作流引擎

Learun

工作流 开发工具 计算机程序设计艺术 表单

ARTS 打卡第三周(200525-200531)

老胡爱分享

ARTS 打卡计划

Python处理PPT文件的实用姿势

程一初

Python 自动化 办公

Python处理视频文件的实用姿势

程一初

Python 自动化 办公

非IT行业大企程序员讲述MIS系统开发案例

Philips

Java 企业信息化 .net core 计算机程序设计艺术 企业开发

小米的护城河

石云升

小米 护城河

Python处理音频文件的实用姿势

程一初

Python 自动化 办公

当地铁站都比你更努力

escray

学习 面试 面试现场

Redis追命连环问,你能回答到第几问?(上)Redis简介,数据类型及缓存雪崩缓存击穿缓存穿透

大柚子

Java redis 缓存 面试 后端

基于ALBERT的文本相似度解决方案

华宇法律科技

人工智能 自然语言处理 Pytho

高频面试题——你真的搞懂物理内存与虚拟内存了吗

大柚子

操作系统 内存管理 虚拟内存 物理内存

业务架构是什么?

周金根

BIZBOK 业务架构 IT帮 周金根

Axure导出为PDF

波菠菜

Truncate用法详解

Simon

MySQL

教你用SQL实现统计排名

Simon

MySQL

深圳区块链支付系统开发,USDT支付系统服务商

13530558032

一文讲透布隆过滤器

架构精进之路

布隆过滤器

MySQL如何快速插入数据

Simon

MySQL 数据库

马方业:区块链就是新未来 区块链就是新财富

CECBC区块链专委会

区块链 新未来 新财富

从雕像到肖像画,这位设计师用 GAN 和 PS 复原了他眼中的古罗马皇帝「群像」

程序员生活志

Python处理邮件和机器人的实用姿势

程一初

Python 自动化 办公

巧用SQL拼接语句

Simon

MySQL sql

一个人的精益

escray

学习 面试 面试现场

ARTS 打卡第二周(200518-200524)

老胡爱分享

ARTS 打卡计划

Python处理图像文件的实用姿势

程一初

Python 自动化 办公

定时任务最简单的3种实现方法(超实用)

王磊

Java 定时任务

朱嘉明 算力革命背后是分配制度革命 没有算力就没有未来

CECBC区块链专委会

区块链 数字货币 数字经济

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Facebook使用ZTP扩展网络配置自动化-InfoQ