从SNMP到NETCONF

tl;dr
今天与同事交流,提到了一个特别有意思的问题,有了SNMP(可以做设备配置,而且兼容的厂商还足够多),为什么还需要NETCONF?值得思考,所以整理出这个文章,从发展的历程以及各阶段面临的问题分析原因。

通信协议变迁

SNMP最早由IETF在20世纪80年代晚期(1980s)开发,一直被用来做为网络设备的监控(如告警、性能管理),并不用来做配置。
性能管理后来也不用SNMP了,是因为网络设备的处理数据量越来越大,设备就需要一些更轻量级的的协议来专注于对设备性能进行统计分析,Cisco最早提出的Netflow来解决这个问题,并最终行成标准。

随着网络设备数量的增加,网络管理员也越来越需要批量对设备的管理,这时候主要的手段是CLI Sciprt,因为毕竟这个是人类可以读懂的,方便操作。不像SNMP是BER编码的。而且,核心问题是很多设备厂家提供的SNMP MIB库也不能实现完全的设备配置。

SNMP不能实现完全设备管理,CLI大家也慢慢发现可用性也不太好,因为其不确定性,输出内容可读性、可处理性也不高。这时候急需一套新的配置协议,Juniper最早提出来的基于XML的管理方案,并提交给IETF,并最终推动于2013年5月行成了现在的NETCONF协议。


协议对比-1
从SNMP到NETCONF_第1张图片
协议对比-2

数据编码语言变迁

数据编码语言作用:
Data model: Describes the data, its constraints. A.k.a., Schema E.g., address may consist of street, state, zip within 50 states. 1 Brookings Dr., Saint Louis, MO 63130 is an instance.

SNMP的编码语言(Data Modeling Language)是SMI(Structure of Management Information),SMI是基于ASN.1构建的,主版本是SMIv2。20世纪90年代末,SMIng被提出,用于将编码语言与SNMP协议解耦,让SMIng可以更容易的学习,以及更方便的被Parsor程序读取。但SMIng后来没有在IETF成功发展。
NETCONF协议诞生后,也同样需要一个编码语言,IETF NETMOD小组基于SMIng构建了YANG,使用XML建立数据模型。

YANG全称:Yet Another Next Generation data modeling language

YANG使用XML做为其数据模型,但是我们在写YANG的描述时,是采用一种比较容易读写的方式。在数据传输前,其需要通过转换成YIN Module的XML语言(无损转换),才能被程序开发者广泛的编程调用。


从SNMP到NETCONF_第2张图片
YANG vs. YIN

参考URL:

  1. Wikipedia
  2. https://www.slideshare.net/tailfsystems/netconf-yang-tutorial

你可能感兴趣的:(从SNMP到NETCONF)