Netconf属于软件定义网络的管理和控制协议。
ETCONF协议,由RFC 6241定义,用以替代命令行界面(command line interface, CLI)、简单网络管理协议(Simple Network Management Protocol, SNMP)以及其它专有配置机制。管理软件可以使用NETCONF协议将配置数据写入设备,也可从设备中检索数据。所有数据用可扩展标记语言(Extensible Markup Language, XML)编码,通过SSL或传输层安全这样安全、面向连接的协议,使用远程过程调用(remote procedure calls, RPCs)方式传输。
NETCONF协议定义了多个数据存储,或多套配置数据。正在运行的配置数据存储包含当前设备正在使用的配置信息。一些设备还储存启动配置数据,其中包含设备第一次启动时的配置数据,不过和运行中配置数据分离开来。
除了配置数据,设备还储存状态数据和信息,如包统计数据、运行中设备收集的其他数据。控制软件可以读取这些数据,但是不能写入。
候选配置数据存储是一个可选的设备性能。如果启用,它包含一组配置数据,控制器能用来更新正在运行的数据存储,以及修改设备操作。从备选配置数据中分离出正在运行的配置数据可以消除配置不一样的问题(例如,一系列CLI命令正在更新配置,随着一个个命令相继执行,配置就会处于一个不一致的状态)。
一旦NETCONF会话开始,控制器和设备就会交换一组“特性”。这组“特性”包括一些信息,如NETCONF协议版本支持列表、备选数据是否存在、运行中的数据存储可修改的方式。除此之外,“特性”在NETCONF RFC中定义,开发人员可以通过遵循RFC中描述的规范格式添加额外的“特性”。
NETCONF协议的命令集由读取、修改设备配置数据,以及读取状态数据的一系列命令组成。命令通过RPCs进行沟通,并以RPC回复来应答。一个RPC回复必须响应一个RPC才能返回。一个配置操作必须由一系列RPC组成,每个都有与其对应的应答RPC。
所选择的传输协议必须保证RPC按发送顺序传递给设备,而且应答必须按照发起RPC的顺序被接收。除了从控制器向设备发送命令,设备也可以发出通知来告知控制器设备上的一些事件。
如同ISO/OSI 一样NETCONF协议也采用了分层结构,每个层分别对协议的某一个方面进行包装,并向上层提供相关的服务。分层结构能让每个层只关注协议的一个方面,实现起来更加简单,同时合理的解耦各个层之间的依赖,可以将各层内部实现机制的变更对其它层的影响降低到最低。NETCONF 协议分成四层:内容层、操作层、RPC层、通信协议层。
层次结构如下图所示