NETCONF概念上的东西太多,我们只挑对我们有用的来说,首先为什么什么NETCONF来配置网络设备,主要是用NETCOF有以下优点
- NETCONF协议以XML格式定义消息,运用RPC机制修改配置信息,这样既能方便
- 管理配置信息,又能满足来自不同制造商设备之间的互操作性。
- 可减少由于人工配置错误引起的网络故障。
- 可提高使用配置工具升级系统软件的效率。
- 扩展性好,不同制造商设备可以定义自己的协议操作,以实现独特的管理功能。
- NETCONF提供了认证、鉴权等安全机制,保证了消息传递的安全。
NETCONF协议分层
- 内容层由配置数据和通知数据组成。
- 操作层定义一组基本协议操作来检索和编辑配置数据。
- Messages层提供了编码远程过程调用(RPC)和通知的机制。
- 安全传输层在客户端和服务器之间提供安全可靠的消息传输。
RPC模式
NETCONF协议使用RPC通信模式,采用XML编码的<rpc>和<rpc-reply>元素提供
独立于传输层协议的请求和回应消息框架。一些基本的RPC元素如表所示。
能力集(Capability)
NETCONF能力集是补充基本NETCONF规范的一组功能。 该能力由统一资源标识
符(URI)标识。
能力集扩展了设备的基本操作,描述了附加操作和操作中允许的内容。客户端可
以发现服务器的功能,并使用由这些能力集定义的任何其他操作,参数和内容。
能力集定义可以命名一个或多个依赖的能力集。 为了支持一种能力集,服务器必
须支持它所依赖的任何能力集。
配置数据集
所谓配置数据集是关于设备的一套完整的配置参数的集合。
NETCONF会话建议和关闭的基本流程如下
- SSH建立连接,进行认证与授权
- NETCONF会话建立与能力协商
- NETCONF RPC交互(鉴权)
- NETCONF会话关闭
- SSH连接关闭
基本操作
NETCONF协议提供一组基本操作,管理设备的配置数据,以及查询设备的配置和状态信息。
能力协商
能力协商是在会话建立阶段,每个对等体通过发送消息给对方来通告能力的。当
NETCONF会话打开,每个对等体(包括Client和server)必须发送一个包含自身能力集
列表的<hello> 元素。每个对等体至少要发送基本的NETCONF能力"urn:ietf:params:netconf:base:1.0"在交换过Hello消息后,Server等待Client发送<rpc>请求。Server为每个<rpc>请求回应<rpc-reply>。
能力
除了基本功能,NETCONF协议还允许客户端发现服务器端支持的协议扩展集,这种特性称为能力(capabilities)。
查看交换机支持的能力信息dis netconf capability
以下是CE5855EI V100R005C10SPC200交换机展示的内容。
<testare4>dis netconf capability
----------------------------------
Capability Scope Version
----------------------------------
Base public 1.0
Writable-Running public 1.0
Candidate public 1.0
Confirmed Commit public 1.0
Distinct Startup public 1.0
Rollback on Error public 1.0
Sync private 1.0
Sync private 1.1
Sync private 1.2
Exchange private 1.0
Exchange private 1.1
Active private 1.0
Action private 1.0
Discard Commit private 1.0
Execute CLI private 1.0
Update private 1.0
Commit-Description private 1.0
Notification public 1.0
Interleave public 1.0
----------------------------------
描述
Capability表示NETCONF支持的能力。
•Base:表示NETCONF具备执行一系列基本操作时所需要的基本能力。NETCONF支持的一些基本操作包括:◾get-config:用来从<running/>、<candidate/>和<startup/>配置数据库中获取全部或指定的一部分配置数据。(具体看基本能力)
•Writable-Running:此能力指明设备支持对<running/>配置数据库的访问能力,即设备支持对运行的配置进行<edit-config>和<copy-config>操作。
•Candidate:此能力指明设备支持<candidate/>配置数据库。Candidate Configuration能力被用来在不影响当前配置的情况下,对设备的配置数据进行操作。
•Confirmed Commit:此能力指明在用户配置的时间<confirm-timeout>内,如果确认提交,则更新到最新配置运行的数据。
•Distinct Startup:此能力指明设备具备独立启动的能力。NETCONF Agent对参数进行可用性与一致性检查。
•Rollback on Error:此能力指明设备具备错误回滚能力。如果一个错误的条件发生并产生一个错误元素<rpc-error>,服务器将会停止处理<edit-config>操作,并把指定的配置恢复至开始执行<edit-config>操作时的完整状态。
•Sync:此能力指明设备具备同步能力。NETCONF Manager发送request消息给NETCONF Agent来更新NETCONF Manager的本地数据集,同时采用文件传输协议将NETCONF Agent数据同步到目的目录。
•Exchange:此能力指明设备具备交换能力。如果NETCONF会话具备交换能力,就支持<get-next>操作。
•Active:此能力指明设备具备激活的能力。如果NETCONF会话具备激活的能力,当NETCONF Manager在处理需要花费很长时间的操作期间,可以接收激活消息。
•Action:此能力指明设备具备行为的能力。NETCONF Agent支持行为能力以提供新的操作。NETCONF Manager使用这个操作并以XML格式来发送任何可执行的要求给CFG。CFG执行要求的操作然后再以XML格式给NETCONF Manager发送响应。
•Discard Commit:此能力用来取消或终止正在执行的confirmed-commit操作。
•Execute CLI: 此能力指明设备在处理请求过程中,能与发送端进行交互。只有具备交互能力的设备可以支持此操作。通过NETCONF, 此操作可以用来执行命令行。一条rpc请求最多可包含60条命令。
•Update:此能力指明设备具备更新能力。在提交过程中出现冲突时,通过<update>操作可将当前<candidate/>配置数据库中的数据更新到最新运行的数据。
•Commit-Description:<candidate/>配置数据库中存放的数据变为<running/>配置数据库的数据时,配置提交携带的描述信息。
•Notification:表示支持将设备产生的告警或事件通过notification消息有序的通知网管。
•Interleave:表示设备支持NETCONF会话多功能重用。用户可在同一个NETCONF会话上同时对设备进行维护操作和告警、事件管理。
Scope
表示NETCONF支持的能力范围,支持如下:
•public:NETCONF协议定义的标准能力。
•private:华为公司定义的私有能力。
Version
表示NETCONF支持的能力版本号。
附:华为netconf API查询