97国际

不必推倒重修 ,老终端也能焕新 丨 97国际教育云电脑老客户升级分享会
预约直播
融合光加速 ,慧联全场景 丨 97国际极简以太彩光5.0 界说万兆园区全场景新范式
预约直播
97国际·(中国区)集团官方网站
产品
< 返回主菜单
产品中心
产品
解决计划
< 返回主菜单
解决计划中心
行业
合作伙伴
返回主菜单
选择区域/语言
97国际·(中国区)集团官方网站

您订阅的产品有更新 ,请实时查阅

审查详情
97国际·(中国区)集团官方网站 97国际·(中国区)集团官方网站

泛论数据中心网络运维自动化

【网络运维自动化】OpenConfig现已成为网络自动化手艺的生长趋势 ,97国际的数据中心交流机支持 Netconf YANG 和 OpenConfig YANG ,可资助企业实现数据中心智能运维。

  • 97国际·(中国区)集团官方网站

    宣布时间:2018-04-19

  • 97国际·(中国区)集团官方网站

    点击量:

  • 97国际·(中国区)集团官方网站

    点赞:

分享至

97国际·(中国区)集团官方网站
97国际·(中国区)集团官方网站
97国际·(中国区)集团官方网站

我想谈论

首先 ,让我们设想一个场景:

由于营业爆发变换 ,需要为一个 POD 内里的几十台交流机修改 QoS 设置。作为网络运维职员 ,应该怎样处置惩罚这项事情呢 ?

若是需要变换的工具是整个数据中心几百台甚至几千台交流机 ,又该怎样处置惩罚这项事情呢 ?

当下 ,互联网行业已经普遍接纳 DevOps 的舷流程� ?咳肆θヒ惶ㄗ氨敢惶ㄗ氨傅母纳柚� ,已经不再是准确的头脑方法。缘故原由不但仅是铺张时间 —— 要知道 ,人若是要长时间坚持注重力集中 ,大脑需要泯灭大宗的能量 ,很难包管不泛起遗漏或者过失。而机械却不会。

因此 ,准确的要领是使用 DevOps 的流程 ,让机械来完成这项事情。例如接纳基于 Python 的 SSH 库 Paramiko 或 Netmiko ,以及 Ansible 或 SaltStack 等自动化工具编写运维剧本。

Netmiko 库和 Ansible 等运维工具虽然可以通过程序化的剧本对网络装备实现批量管理 ,但仍然需要运维工程师对网络装备的 CLI 很熟悉 ,预先在剧本中建设需要被执行的 Command 列表。

 

CLI

CLI 最大的问题就是在差别厂商的装备之间 ,甚至在差别版本之间保存较大差别。好比在某 C 厂商交流机上设置边沿端口 ,差别的 OS 版本下令并不相同:

 

97国际·(中国区)集团官方网站

 

而关于另一些厂商 ,设置下令则差别更大。例如在某 E 品牌 交流机上设置边沿端口的下令为:

 

97国际·(中国区)集团官方网站

 

这意味着:若是装备版本升级 ,就可能需要更改运维剧本的代码。为了阻止厂商绑定 ,网络内通常也会同时保存多个厂商的装备 ,响应地 ,也可能需要准备多种运维剧本或者让运维剧本变得很重大 —— 先判断装备型号和版本号 ,再运行响应的 Command-list。

以是 CLI 并不适适用来作为一种 API。虽然接纳自动化工具处置惩罚 Commands 可以节约网络运维职员的事情量 ,可是手艺门槛和维护本钱都较量高。SNMP 似乎是一种更好的选择。

 

SNMP

97国际·(中国区)集团官方网站

▲ SNMP Overview

 

SNMP 的历史很悠久 ,第 1 个与之相关的 RFC 1065 宣布于 1988 年 ,距今已有 30 年。在 SNMP 架构中 ,一个网络装备以守护历程的方法运行 SNMP Agent ,而 NMS(网络管理系统)和网络运维职员所使用的种种 SNMP 管理工具则称为 SNMP Manager。SNMP Agent 能够响应来自 SNMP Manager 的种种请求信息。

SNMP Agent 会维护一个 MIB(管理信息库) ,内里生涯着大宗的 OID (工具标识符)。一个 OID 是一对唯一的 Key-Value ,SNMP Manager 向 SNMP Agent 盘问或修改若干 Key 所对应的 Value ,就可以实现信息收罗或者网络装备的设置修改。

 

97国际·(中国区)集团官方网站

▲ MIB-Example

 

上图是一个 MIB 示例 ,请注重标黄色的部分。OID 1.3.6.1.2.1.2.2.1.5 用来以 bps 为单位评估接口流量 ,它属于 RFC 1213 标准 MIB ,名称为 ifSpeed ,只读。由于这个 MIB 并不是我从正在运行的装备上取下来的 ,以是目今的 Value 为空。

需要注重的是 ,SNMP Manager 侧的 MIB 并不是必需的。若是使用数字 OID 1.3.6.1.2.1.2.2.1.5 ,SNMP Manager 可以直接从 SNMP Agent get 接口流量带宽 ,而不需要装置完整的 MIB。

现在 SNMP 在网络监控领域已经被普遍使用 ,使用 Zabbix、Nagios、Cacti 等开源的 SNMP 管理工具收罗网络装备接口流量带宽和其他装备信息 ,同时也有大宗的基于 Python 的 SNMP 库用来实现运维开发 ,例如 PySNMP、 EasySNMP、 Net-SNMP等等 ,并且它们都可以集成到 Ansible 和 SaltStack 等自动化运维工具上。

看上去还不错 ,但现实上 SNMP 仍然不是一个合适的 API ,由于它保存几个问题:

○远古老 ,并发性能欠好

○基于 UDP 协议传输 ,较量不可靠。虽然在应用层有 Response 机制包管丢包之后的重复 get/ set ,但价钱就是性能和运行时间都受到影响

○致命的问题是 ,各厂商都大宗的使用私有 MIB ,却不保存一个可以自动发明网络装备目今所接纳的 MIB 的机制。网络运维职员必需划分向装备厂商索取网络装备的 MIB ,泯灭大宗的时间整理自己需要的 OID ,再手工导入到自动化运维平台或者剧本当中

以是 SNMP 仍然只适适用来做信息收罗 ,提供告警和可视化报表 ,但自动化运维的 API 则需要思量其他的选项。站在网络运维职员的角度 ,这个 API 应该知足以下要求:

○容易使用 —— Usability 是所有产品的焦点价值

○需要能够清晰地区分“设置数据” ,“装备运行状态数据”和“统计数据”

○需要能够划分从各个网络装备获取上述 3 种数据 ,并且可以利便地比照差别装备的数据

○可以让网络运维职员统一地管理整个网络的所有装备 ,而不是一台一台的单独管理

○对差别厂商的装备都能够使用统一种设置要领

○设置变换对网络营业的影响要尽可能的小

○能够提供一个标准化的 ,对装备 Pulling 和 Pushing 设置文件的流程 ,以知足对装备设置的备份和恢复的营业需求

○能够很利便地 ,一连地 ,检查装备设置文件的一致性

○能够提供基于文本的设置方法 ,并且不会导致设置的乱序 ,例如不可搅乱 ACL 规则的顺序

能够知足这些要求的网络装备的北向 API 接口就是 Netconf。

 

Netconf

Netconf 是 IETF 宣布的标准协议 ,它的全称是 Network Configuration Protocal。从名字就可以看出来 ,Netconf 的作用是基于网络来装置、操作和删除装备的设置。在 Netconf 的架构中 ,网络装备充当 Netconf Server 的角色 ,而运维职员的这一侧则是 Netconf Client。别的 ,和 OSI 标准模子一样 ,Netconf 也是分层结构。

97国际·(中国区)集团官方网站

▲ Netconf 4 Layers

 

它有 4 个条理 ,从下到上依次为:

• 清静传输层

清静传输层在 Netconf Client 和 Netconf Server 之间提供清静的端到端毗连。与 SNMP 接纳非面向毗连的 UDP 协议差别 ,Netconf 接纳面向毗连的 TCP 协议 ,通常是 SSH 协议 ,包管毗连的可靠性和清静性。

• 新闻层

新闻层也称为 RPC(远程历程挪用)层。Netconf Server(网络装备)上面安排了 Netconf 应用 ,Netconf Client 需要挪用 Server 上的应用所提供的函数/要领 ,但由于 Client 和 Server 不在统一个内存空间 ,无法直接挪用 ,以是需要通过网络来表达挪用的语义 ,并转达挪用的数据。这个历程 ,称为 RPC。它提供了一个简朴的 ,与清静传输层无关的机制来封装操作层和内容层的数据:

○RPC 挪用: <rpc> 元素所封装的新闻

○RPC 效果: <rpc-reply> 元素所封装的新闻

○事务通知: <notification> 元素所封装的新闻

• 操作层

操作层界说了如图所示的 9 种基础操作集 ,其中:

    <get>、 <get-config> 用来对装备举行取值操作

    <edit-config>、 <copy-config>、 <delete-config> 用于设置装备参数

    <lock> 和 <unlock> 是在对装备举行操作时 ,为避免并发爆发杂乱的锁行为

    <close-session> 和 <kill-session> 用于竣事一个会话操作

• 内容层

顾名思义 ,内容层就是用来表达设置数据和状态数据 ,网络运维职员只需要关注数据自己 ,而不需要去关注装备的相关下令� ;⊥缱氨冈谀谌莶闼幽傻氖菝猛ǔJ� XML ,但也有厂商的数据名堂接纳了 JSON。

虽然网络运维职员不再需要关注装备的相关下令了 ,但仍然无法直接使用 Netconf 设置装备 ,还需要思量设置结构。

什么叫“设置结构”呢 ?

若是我们现在要将交流机的 10# 端口划入 VLAN 20。97国际交流机需要在物理端口模式下设置:

 

97国际·(中国区)集团官方网站

 

而某 H 品牌交流机却需要在 VLAN 逻辑端口模式下设置:

 

97国际·(中国区)集团官方网站

 

从上面两个设置示例可以发明97国际交流机和 H 品牌交流机的设置结构有显着差别 ,以是无法直接使用 XML 或者 JSON 修改它们的装备设置。

为相识决设置结构的问题 ,需要将 XML 和 JSON 数据名堂笼统成一个统一的标准的模子 ,这就是 YANG。YANG 的全称是 Yet Another Next Generation ,没有适当的中文来翻译它。通俗的讲 ,YANG 是表达 Netconf 所操作的设置数据和状态数据的模板 ,它形貌什么才是切合装备期望的数据。有了 YANG Model ,设置结构就交给它行止置 ,网络运维职员就只需要做一个完形填空即可。

填空的问题或许是这样子的:

 

97国际·(中国区)集团官方网站

 

填空题的谜底或许是这样子的:

 

97国际·(中国区)集团官方网站

 

这个历程在逻辑上 ,与向 SNMP 的 OID 填充/读取 Value 差未几。

Netconf 和 YANG Model 的泛起 ,为网络自动化带来了极大的便当。配合自动化的程序 ,可以实现动态向网络装备下发设置 ,将数据面和控制面疏散 ,组成软件界说的网络。事实上 ,Netconf 也是 OpenDayLight 等开源 SDN Controller 所普遍使用的南向接口之一。 别的 ,Ansible 也集成了 Netconf 的 Module ,并且可以通过 Python 来扩展 ncclient 和 nxpy 等库 ,实现功效扩展。

但 Netconf 就是我们在寻找的理想的 API 吗 ?

站在网络运维者的角度 ,谜底却是否定的。

缘故原由在于许多厂商虽然支持 Netconf ,但有一些 Key-Value 却保存差别。好比为了表达“端口” ,有些厂商用 intf 作为 Key ,但另外一些厂商却用 interface 作为 Key。另一个例子就是 Uptime ,装备运行时间 ,各家厂商的装备返回的时间名堂更是五花八门。这为网络运维职员处置惩罚数据的事情造成了很大的贫困 ,不得不泯灭大宗的时间和精神去阅读装备厂商的 Netconf 文档 ,去编写大宗的正则表达式。

尚有 ,虽然主流的 SDN Controller 的南向接口都支持 Netconf ,可是在现实安排时 ,却无法用简单的 Controller 去控制多厂商的网络装备。通常都是各个厂商使用自己的 SDN Controller 控制自己的装备 ,然后再用 REST API 与用户的 SDN Controller 对接。

97国际·(中国区)集团官方网站

▲ 多控制器架构

 

上文所提到的网络运维职员所体贴的 9 大问题 ,Netconf 险些都能知足 ,但距离完全知足尚有一些差别。

有一个解决步伐 ,就是使用 NAPALM。

 

NAPALM

NAPALM 是一个 Python 库 ,它的全称是 Network Automation and Programmability Abstraction Layer with Multivendor support ,多厂商支持的网络自动化和可编程笼统层。

现在 Ansible 集成了 3 个 NAPALM � ?� ,划分是:

○napalm_parse_yang:用于从装备或文件中剖析设置/状态数据

○napalm_diff_yang:用于较量 2 个 YANG 工具的差别

○napalm_translate_yang:用于将 YANG 工具转译成装备原始的设置

从装备取出原始设置数据/状态数据之后 ,可以使用 NAPALM 将其翻译成标准名堂的 NAPALM 数据。反之 ,也可以将标准名堂的 NAPALM 数据翻译成装备原始设置数据 ,并 Push 到网络装备内里 ,以修改装备的设置文件。

97国际·(中国区)集团官方网站

▲ Netconf & NAPALM

 

读到这里 ,也许您已经猜到我将要说什么了……

是的 ,NAPALM 照旧不可彻底解决网络自动化所面临的问题。

由于各厂商 Netconf 的数据表达保存许多差别 ,以是 NAPALM 必需要依赖第三方的 Module 来完成原始数据的剖析和翻译。若是要剖析厂商 A 的某个 OS 系统的设置 ,就需要一个 OSA_Module ;若是要剖析厂商 B 的某个 OS 系统的设置 ,则需要 OSB_Module。以是现在 NAPALM 支持的 OS 类型还较量少 ,仅限于某几个外洋品牌厂商的 OS 系统。

纵然是这几个外洋品牌厂商 ,NAPALM 现在也无法实现完整的功效集。以是 Google 等网络装备的大用户一直在致力于推广一个能够替换 Netconf 的标准化接口: OpenConfig。

 

OpenConfig

IETF 已经为 Netconf 和 YANG Model 宣布了许多 RFC ,从 2006 年的 Netconf RFC 4741 ,2010 年的 YANG Model RFC 6020 ,到现在已经凌驾 10 年。而最新的一个 RFC 在什么时间呢 ?就在几天之前的 2018 年 4 月 3 日 ,3 家装备厂商团结提交了一个 OSPF YANG Model 的草案 —— 标准化的希望太慢了。

也许 ,这就是问题所在 —— Netconf 标准是由网络装备厂商推动的 ,内讧太大。各个装备厂商都希望在软件界说网络的时代继续坚持硬件装备的主要性 ,并且能够体现自己公司产品的差别化优势。

可是从网络运维者的角度思量 ,这显然不对理 ,由于装备厂商所推动的 Netconf 标准并不是他们真正想要的。以是 Google ,AT&T ,British Telecom ,Facebook ,Apple ,Microsoft 等互联网服务提供商建设了 OpenConfig 事情组 ,希望提供一其中立于装备厂商的标准 API。现在海内的腾讯、百度和阿里等互联网服务提供商也已经加入了 OpenConfig 事情组。

OpenConfig 沿用了 Netconf 的协议框架 ,可是它不太关注底层的数据传输 ,而是更关注上层的数据表达和数据建模。这意味着:不管是 A 厂照旧 B 厂 ,所有的数据都必需切合 OpenConfig YANG Model ,并且 Key-Value 都必需是 OpenConfig 所划定的标准名堂!

OpenConfig 的另外一个焦点要点是:虽然网络装备可能支持富厚的功效特征 ,甚至是装备厂商私有的功效特征 ,可是 OpenConfig 只体贴与互联网行业用户通用的运维事情和网络设计事情相关的功效 ,例如 BGP、OpenFlow、Telemetry 等等。OpenConfig 不会为装备厂商的私有特征界说 YANG Model ,也不会为装备厂商所特有的 Key-Value 做界说 ,以是不会泛起不兼容的情形。

但反过来讲 ,OpenConfig 也不会为了兼容某些装备厂商而让 YANG Model 过于简朴 ,以是装备厂商需要让自己的功效知足 OpenConfig YANG Model 的要求 ,具备 Model 所界说的所有的 Key ,并且能够为所有的 Key 提供对应的 Value。

在 Key-Value 名堂牢靠之后 ,网络运维职员对数据的剖析事情就很是利便了。只要网络装备支持标准的 OpenConfig YANG ,NAPALM 就可以对原始数据举行剖析 ,不再依赖第三方 Module 就可以管理多厂商多 OS 的网络 ,进而实现真正的网络自动化。

97国际·(中国区)集团官方网站

▲ OpenConfig & NAPALM

 

使用 OpenConfig 的另一个利益就是可以简化 SDN 网络架构 ,用户使用一个控制器集群就可以同时控制多个厂商的网络装备 ,不再需要使用装备厂商的商用控制器做中继。

97国际·(中国区)集团官方网站

▲ 单控制器架构

 

OpenConfig 事情组在 2015 年已经向 IETF 提交了 2 个 YANG 标准草案 ,虽然现在还没有标准的 RFC 宣布 ,可是它现已成为网络自动化手艺的生长趋势 ,因此各大网络装备厂商都最先了 OpenConfig 的开发事情。97国际的数据中心交流机支持 Netconf YANG 和 OpenConfig YANG ,现在正在海内配合公有云提供商举行标准化 SDN 的测试事情。

 

本期作者:陈程

97国际网络互联网系统部行业咨询

97国际·(中国区)集团官方网站

 

往期精彩回首 

●【第一期】浅谈物联网手艺之通讯协议的纷争

●【第二期】怎样通过网络遥测(Network Telemetry)手艺实现细腻化网络运维 ?

更多手艺博文

任何需要 ,请联系97国际

97国际·(中国区)集团官方网站

返回顶部

收起
97国际·(中国区)集团官方网站 文档AI助手
97国际·(中国区)集团官方网站 文档评价
资料内容是否对您有资助 ?
您对目今页面的知足度怎样 ?
不咋滴
很是好
您知足的缘故原由是(多�。� ?
您对文档是否尚有其它的问题或建议 ?
为尽快解决问题 ,请您留下联系方法以便回复
邮箱
手机号
谢谢您的反�。�
97国际·(中国区)集团官方网站
97国际·(中国区)集团官方网站
97国际·(中国区)集团官方网站
请选择服务项目
关闭咨询页
售前咨询 售前咨询
售前咨询
售后服务 售后服务
售后服务
意见反响 意见反响
意见反响
更多联系方法
网站地图