NETCONF模块设计介绍

来源:互联网 发布:淘宝服装图标 编辑:程序博客网 时间:2024/05/21 09:46


1.NETCONF作用

NETCONF利用基于XML-RPC的通信机制实现配置客户端与配置服务器之间的通信,实现对网络设备的配置和管理。

2.NETCONF的技术规范

NETCONF分为四个层:传输协议层、RPC层、操作层、内容层。


(一)传输协议层

本设计中使用SSH加密,完成数据传输;

(二)RPC层

RPC层流程:

(1)      通过传输协议层模块得到NETCONF的请求报文后,就应交由RPC模块处理如果NETCONF报文经过了压缩或加密的话,先进行解压和解密

(2)      然后将RPC请求报文,用RFC4741的XML Schema文件进行验证

(3)      如果符合NETCONF的报文格式则解析文档中的RPC元素部分,进行RPC元素中message—id和命名空间属性的检查和保存

(4)      然后将内部的操作层元素取出传给操作层模块

(5)      如果操作层模块处理成功,返回正确的报文

(6)      RPC模块再将返回的响应报文进行RPC层的封装,然后发送给对应的客户端。如果中途在某个环节检查错误或操作层模块错误,则统一封装成错误处理报文,发送给客户端

 

 

 

(三)操作层

9种操作

(1)      NETCONF有九种基本操作:get-config、edit-config、copy-config、delete-config、get、lock、unlock、close-session、kill-session.

(2)      这些操作的参数都各不相同,因此每种操作都有自己的处理流程

(3)      以get-config为例说明:

get-config请求报文格式

<?xmlversion="1.0"?>

<rpcmessage-id="100"xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

 <get-config>

   <source>

     <running/>

   </source>

   <filter>

     <top xmlns="http://www.h3c.com/comware:5.0/config/get">

        指定模块,子模块,表名,列名

    </top>

   </filter>

 </get-config>

</rpc>

get-config请求报文解析流程


 

(四)内容层

配置数据库

 

3.NETCONF实现流程


4.NETCONF关键技术实现

关键的环节包括:安全认证、建立加密传输通道、rpc-xml消息收发、rpc-xml文件解析、rpc-reply消息的生成。

(1)安全认证实现

使用ssh密钥认证方法,在Client端生成一对密钥,将公共密钥传给Server相关目录进行备份,借助libssh2函数库的相关函数完成安全认证。

(2)加密通道建立

借助SSHV2本地端口转发功能分别在Client端和Server端建立一个SSH隧道,实现Client端12500端口和Server830端口的数据经过SSH传输。

命令:ssh -2 –N–C –f –L 12500:172.16.15.213:830 (Client端执行)

命令:ssh -2 –N–C –f –L 830:172.16.15.213:12500 (Server端执行)

(3)xml-rpc消息收发

Client端需要将rpc-xml文件转换为内容为rpc请求的xml化的字符,send()到Server,Server端在recv()收到字符之后利用libxml2库函数生成rpc-xml文件的指针,借助xpath搜索原理进行相关数据定位,如果检索到相关操作关键字再调用相关函数生成rpc-reply文件并转换为字符格式send()到Client。

(4)        xml消息的解析

NETCONF中有9种操作每一种操作的元素各不一样,因此要建立很多个流程来处理每一个操作,对rpc-xml请求的合法性以及想要获得的数据等进行定位,这个是RPC层需要实现的核心内容。

(5)        xml消息的生成

原则上需要调用3个配置数据库的相关数据,执行并返回rpc-xml请求的结果。但是我是手动生成的rpc-reply消息,特别的rpc-error需要详细的错误信息,目前还不清楚怎么实现。

0 0