NETCONF+Yang配置TSN

摘要:
您可以使用Yang模式的文本配置网关, 易于使用 配置数据和状态数据之间的区别 面向服务和面向网络的配置管理:作为新一代网络设备的配置管理协议。用户可以使用此机制添加、修改和删除网络设备配置。网络设备可以提供标准化的应用编程接口(API)。

NETCONF用来替换SNMP,是一个网管协议。YANG是NETCONF的数据建模语言,可以使用Yang模式的文本配置网关,从而通过NETCONF协议管理网关。

NETCONF+Yang可用于TSN(实时性网络,time-sensitive network)网络,控制网络实时性。

以下转自:干货铺时间:详解SDN南向协议之NETCONF

背景介绍

  NETCONF起源于IAB(Internet Architecture Board)组织的几次吐槽大会。时间倒退回2001、2002年,网管和协议开发者聚在一起,原本只是打算喝喝茶、聊聊天,没想到却演变成一场“撕逼大战”。网管向协议开发者吐槽当前的网管协议并没有解决他们的问题,特别是在配置管理方面。

  吐槽大会的成果有2个。一个是梳理了当前使用的网管协议及其优缺点,例如SNMP、CLI等;另一个是理清了网管的痛点,也就是他们最想要的功能。

  在当时SNMP已被广泛使用,它的优势在于设备监测;但是不适合大规模应用,例如获取路由信息(数据量大)会很慢。

  网管罗列的痛点包括:

易用性

区分配置数据和状态数据

面向服务和网络进行配置管理,而不是单一的网络设备

…

  吐槽大会的成果详细记录在RFC 3535中,感兴趣的读者可以进一步阅读。

  针对RFC 3535中罗列的网管需求,2003年成立了NETCONF工作组,NETCONF的设计遵循RFC 3535。2006年NETCONF核心RFC 4741发布,2011年更新版的RFC 6241发布(废除RFC 4741)。

  作为新一代的网络设备的配置管理协议,NETCONF使用YANG作为它的数据建模语言。用户可以使用这套机制增加、修改、删除网络设备的配置,获取网络设备的配置和状态信息。通过NETCONF协议,网络设备可以提供规范的应用程序编程接口API(Application Programming Interface),应用程序可以直接使用这些API,向网络设备发送和获取配置。

  我们可以类比SNMP/SMI来理解NETCONF/YANG。对比如下:

NETCONF+Yang配置TSN第1张

  NETCONF协议与SNMP协议相比,NETCONF的优点如下表所示

NETCONF+Yang配置TSN第2张

  特性 SNMP NETCONF

  配置管理 SNMP在进行设备数据操作时,如果多个用户对同一个配置量进行操作,协议没有提供保护锁定机制。 NETCONF提供保护锁定机制,防止多用户操作产生冲突。

  查询 SNMP能够对某个表的一条或多条记录进行操作,查询中需要多次交互才能够完成。 NETCONF针对整个系统的配置数据可直接进行操作,且定义了过滤功能。

  扩展性 扩展性差 扩展性好:

  协议模型采取分层定义,各层之间相互独立,当对协议中的某一层进行扩展时,能够最大限度不影响到其上层协议。

  协议采用了XML编码,使得协议在管理能力上和系统兼容性方面也具有一定的可扩展性。

  安全性 以目前最新的SNMPv3为例,SNMPv3在安全上存在的主要问题是,SNMPv3全部自己定义,未有扩展的余地。 NETCONF利用现有的安全协议提供安全保证,并不与具体的安全协议绑定。在使用中,NETCONF要比SNMP更灵活。

  NETCONF协议采用Client/Server结构。在SDN领域,SDN控制器作为NETCONF客户端(NETCONF Manager),网络设备作为NETCONF服务端(NETCONF Agent)。通过NETCONF,SDN控制器对网络设备进行配置管理。

NETCONF+Yang配置TSN第3张

2协议特点

2.1区分配置数据和状态数据

  为了便于网管识别出配置数据,明确区分配置数据和状态数据是必要的。一些设备将配置数据和状态数据不做区分,网管不得不“人肉”识别它们。NETCONF协议将数据区分为配置数据和状态数据,并分别提供不同的操作进行数据的增删改查。

  配置数据(configuration data)是对网络设备进行配置的数据,例如创建VLAN的数据。配置数据一般是可读写的。

  状态数据(state data)是反映设备状态的数据,例如端口的up/down状态,报文统计等。状态数据一般是只读的。

2.2存在多个配置数据库

  网络设备通常有一个配置数据库,记录设备当前的配置。并且这个配置数据库一般提供持久化操作的指令(例如锐捷交换机的write指令),用于设备重启后的配置恢复。NETCONF协议定义了running配置数据库,保存设备当前的配置;同时扩展支持startup和candidate配置数据库。

  在对设备进行配置时,你可能有过类似的经历,“到底是先配置A还是先配置B”?这种时候你肯定想“要是有个练手的闲置设备就好了” 。有了candidate,就相当于多了一个练手的闲置设备。你可以先在candidate配置数据库上反复操作,直到得到想要的结果。然后用candidate的配置覆盖running配置数据库。

  Startup配置数据库用于设备重启后的配置恢复。

NETCONF+Yang配置TSN第4张

2.3分层模型

  在系统或协议的设计中,关注点分离(separation of concern)原则无所不在。我们也经常听到“模块化”、“分层”、“解耦”等名词,这些都是关注点分离原则的具体实践。NETCONF协议使用了“分层”的方法实现关注点分离,分层给予了NETCONF强大的易用性、维护性和扩展性。NETCONF在逻辑上可以划分为4层。

NETCONF+Yang配置TSN第5张

  第一层:传输层

  传输层为NETCONF Manager和NETCONF Agent之间交互提供安全的通信路径。当前,锐捷交换机设备使用SSH协议作为NETCONF协议的承载协议。

  第二层:消息层

  消息层提供了一种简单的、不依赖于传输协议的RPC和通告封装机制。client采用<rpc>元素封装操作请求信息,并通过一个安全的、面向连接的会话将请求发送给服务器,而服务器将采用<rpc-reply>元素封装RPC请求的响应信息(即操作层和内容层的内容),然后将此响应信息发送给请求者。另外,服务器可以采用notification向客户端通告事件。

  第三层:操作层

  操作层定义了一系列在RPC中应用的基本操作(增删改查),这些操作组成了NETCONF基本能力。

  第四层:内容层

  内容层描述了网络管理所涉及的配置数据,使用YANG语言进行建模。

2.4YANG

  YANG是一种数据建模语言,是专门为NETCONF内容层建模而设计的。你可能在想什么是数据模型?数据模型准确定义了数据的结构、语法和语义。例如,我们用的手机中通讯录的模板,可以看做是联系人的数据模型。新增联系人时,需要根据模板的定义填入相关信息。同理,YANG定义了网络设备配置数据的模板。例如我们对网络设备上的接口建模后,通过NETCONF下发到网络设备的数据要符合YANG模型的定义。

  YANG具有以下特点:

  可读性好,易学习

  层级树形结构

  可扩展

  可复用

  可以直接映射到XML

2.5创建接口

  了解了NETCONF和YANG的基本概念后,我们来使用它们进行一次接口创建的操作。

  NETCONF Manager向NETCONF Agent发送一个RPC请求。RPC请求中使用edit-config操作配置running数据库,edit-config缺省的operation是merge(如果接口存在则更新;如果不存在则创建)。配置数据包括接口名称、接口描述和接口类型。

NETCONF+Yang配置TSN第6张

  如果操作成功,NETCONF Agent将返回“OK”应答。

NETCONF+Yang配置TSN第7张

  交互过程如下图所示。

NETCONF+Yang配置TSN第8张

3小结

  相较其他配置管理协议,NETCONF因其良好的功能性和扩展性,随着SDN的逐步落地被广泛使用。目前主流设备厂商均提供NETCONF支持,OF-CONFIG也是直接使用NETCONF实现。NETCONF现在是南向协议中当之无愧的“红人”。希望本文对你了解这位“红人”有所帮助。

免责声明:文章转载自《NETCONF+Yang配置TSN》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇妙用python之编码转换通过设置代理解决AndroidStudio无法下载gradle问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Beaglebone Back学习六(Can总线测试)

Can总线测试 1 Can总线   控制器局域网 (Controller Area Network, 简称 CAN 或 CANbus)是一种通信协议,其特点是允许网络上的设备直接互相通信,网络上不需要主机(Host)控制通信。是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。CAN总线原理是通过CAN总线、...

看懂Oracle执行计划

—>  根据需要配置要显示在执行计划中的列       执行计划的常用列字段解释:       基数(Rows):Oracle估计的当前操作的返回结果集行数       字节(Bytes):执行该步骤后返回的字节数       耗费(COST)、CPU耗费:Oracle估计的该步骤的执行成本,用于说明SQL执行的代价,理论上越小越好(该值可能与实际有...

前端vue使用stomp.js、sock.js完成websocket

前端vue使用stomp.js、sock.js完成websocket Sock.js Sock.js 是一个JavaScript库,为了应对很多浏览器不支持websocket协议问题。SockJ会自动对应websocket,如果websocket不可用,就会自动降为轮训的方式。 Stomp.js STOMP-Simple Text Oriented Mes...

《转》事务对数据库的重要性

所谓事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。   事务的开始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由DBMS按缺省规定自动划分事务。在SQL语言中,定义事务的语句有三条:    BEGIN TRANSACTION    COMMIT    ROLLBACK   事务通常是以BEGIN TRAN...

Oracle 分析函数(转载)

  实际应用我们在做项目中常遇到类似这样的统计需求 , 列出一些数据列表,最后来一个合计的功能,类似如下:              姓名 工资 SMITH 800 ALLEN 1600 WARD 1250 JONES 2975 MARTIN 1250 BLAKE 2850 CLARK 2450 SCOTT 3000...

jdbc 连接数据库

1.什么是jdbc? 答:jdbc是java data base connection 的简写,即java与数据库的连接,是java与数据库之间进行数据交互的工具,书上解释为java访问数据库的API。jdbc是一个轻量级的连接封装,适用于多种数据库,如:oracle、sql server,mysql等等。hibernate则是对jdbc的再封装。 2、j...