• NETCONF+Yang配置TSN


    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协议与SNMP协议相比,NETCONF的优点如下表所示

      特性 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控制器对网络设备进行配置管理。

    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配置数据库用于设备重启后的配置恢复。

    2.3分层模型

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

      第一层:传输层

      传输层为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 Agent将返回“OK”应答。

      交互过程如下图所示。

    3小结

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

  • 相关阅读:
    XML WebService完全实例详细解析
    List (Java 2 Platform SE 5.0)
    frameset
    关于在outlook2007里面编辑签名的问题
    关于javax.servlet.Http.*;不能被引用的问题
    select标签HTML,刚做地。
    UIButton中setTitleEdgeInsets和setImageEdgeInsets的使用
    玩转UICollectionViewLayout
    常用公共方法
    cell嵌套UIWebView遇到的几个问题
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/10414890.html
Copyright © 2020-2023  润新知