Web应用程序可以通过集成NETCONF协议库,构建NETCONF客户端并向NETCONF服务端发送RPC消息,其结构图如下所示:
既然NETCONF可以集成在Web应用程序中完成网络设备的配置,那为何又要制定RESTCONF协议呢?Web应用程序是构建在HTTP协议之上的,而NETCONF不满足这一点。所以,Web应用程序如何以一种原生的方式访问网络设备内的配置数据、状态数据、RPC操作和事件通知,就需要一种标准机制来实现。
RESTCONF(https://tools.ietf.org/html/rfc8040)正是这种标准机制,它是一种基于HTTP [RFC7230]的协议,用于配置YANG版本1[RFC6020]中定义的数据或YANG版本1.1[RFC7950],使用网络配置协议(NETCONF)[RFC6241]的数据存储概念。因此,其以HTTP作为传输协议,使用 YANG语言来定义数据结构,并使用NETCONF定义数据存储。
简单地说,RESTCONF是RESTFUL风格的协议,采用统一接口的方式实现网络数据的操作,也就是可以使用GET、DELETE、PATCH、POST和PUT方法来查询和修改资源。消息放在Body体中,格式可以是XML或JSON,具体是XML还是JSON,通过以下方式指定:
一个简单的流表:
table=1,tun_id=100,dl_dst=00:00:00:00:aa:01,actions=output:1对应的北向接口RESTCONF的流表请求下发实例:
① URL地址:
② 请求方法:POST。
③ 请求BODY体:
RESTCONF是一种RESTFUL风格的协议,使用GET、POST、PUT、DELETE等方法实现与NETCONF同等的操作。
RESTCONF不是NETCONF的替代品。RESTCONF提供了Web应用层级的抽象,便于Web应用开发人员实现网络资源的配置。
RESTCONF可以使用JSON和XML两种数据格式,NETCONF完全基于XML的格式,但开发人员更喜欢的是JSON而不是XML。
RESTCONF不提供数据库的加锁操作和数据库备份等功能。NETCONF在复杂功能的场景下,仍发挥重要价值。
在NETCONF和RESTCONF的协议栈下,其网络配置应用程序的粗略图大致上如下图所示:
全部0条评论
快来发表一下你的评论吧 !