一种采用多进程实现Tr069网管的系统及方法
技术领域
本发明涉及计算机应用技术领域,具体地说是一种采用多进程实现Tr069网管的系统及方法。
背景技术
随着现代信息技术的发展,越来越多家庭网络设备,例如网关、路由器、机顶盒,出现在普通家庭中。这些设备无论是最初安装的时候还是后期业务配置变更或者出现故障需要维护的时候,都需要通过管理接口对设备进行配置和维护。目前大部分设备的维护工作都是维护人员上门通过设备上的lan口对设备进行配置变更以及故障诊断。显然这种维护方式不仅效率不高,而且还会占用大量的人力,且随着规模的普及,采用传统的人工方式对大量设备进行维护和管理将成为一个巨大的负担。
Tr069则可以解决这个难题,Tr069作为一种技术规范,并没有标准的实现方法。在Tr069的协议框架中,主要将设备分为两类:自动配置服务器(Auto-ConfigurationServer, ACS)和用户侧设备(Customer Premises Equipment, CPE)。运营商需要管理的设备通过网络和ACS连接,而所有与用户设备相关的配置、诊断、升级等工作均由统一的管理服务器ACS来完成。
Tr069作为一个比较成熟的网络管理协议,并没有一套标准的实现方法。网络上提供了一套开源代码easycwmp实现了Tr069的主要功能,但是该实现方法的数据模型通过脚本进行维护,运行效率较低。
基于此,本发明提供一种采用多进程实现Tr069网管的技术。
发明内容
本发明的技术任务是针对以上不足之处,提供一种采用多进程实现Tr069网管的系统及方法。
一种采用多进程实现Tr069网管的系统,包括三个分层,每个分层都由进程实现Tr069的功能,且三个分层的进程共同实现Tr069的功能,其中三个分层具体为,
网络通信层,完成网络通信和数据分发;
数据模型维护层,完成数据模型维护和数据转发;
功能模块层,完成底层功能实现。
所述功能模块层完成包括重启、设置ip、设置录制时间的功能实现。
Tr069的数据模型包括若干节点,每个节点均以树的形式存在,所述数据模型维护层用于维护Tr069的数据模型中的一棵树,还为树的每个分支,即每个参数设置一个唯一的编号,且每棵树都有与功能模块层对应实现的功能。
所述网络通信层用于完成包括收发信息、信息解析、以及将信息发送到下层的功能。
所述数据模型维护层将网络通信层传过来的数据进行匹配,找到其对应的编号后将数据信息向下发送到对应的进程中,且数据模型维护层中还为每个节点设置一个别名系统,在匹配时,网络通信层发送过来的信息只要满足其中一个,数据模型维护层就会认为这是同一个节点。
每层之间的通信使用开源库thrift进行,且分别配置两个进程间通信接口来实现网络通信层与数据模型维护层之间、数据模型维护层与功能模块层之间的通信。
所述进程间通信接口以client/server模式实现,其中网络通信层与数据模型维护层之间的进程间通信接口中,客户端位于网络通信层中,服务端位于数据模型维护层中;数据模型维护层与功能模块层之间的进程间通信接口中,客户端位于数据模型维护层中,服务端位于功能模块层中。
一种采用多进程实现Tr069网管的方法,其实现过程为:
一、首先网络通信层通过网络接收到Tr069的功能请求,然后发送至数据模型维护层中;
二、数据模型维护层通过xml文件配置每个参数的id以及module id,并且生成一颗树;
三、数据模型维护层接收到数据后,对参数的每个节点进行检查并与自己维护的的树匹配,如果匹配成功则根据module id将信息发往指定的功能模块实现对应的功能。
在步骤一种,网络通信层将参数名称和参数值配置成结构体字符串的形式,将信息通过进程间通信接口发往数据模型维护层中。
本发明的一种采用多进程实现Tr069网管的系统及方法和现有技术相比,具有以下有益效果:
本发明的一种采用多进程实现Tr069网管的系统及方法,根据具体的业务需求使用多个进程完成Tr069的主要功能,实现对网络设备的管理,本说明利用该开源代码的网络通信部分,重新设计数据模型的维护模块,并添加兼容性功能,采用多进程实现Tr069的主要功能;提高该设计对不同业务需求的兼容性,减少代码的维护量,实用性强,适用范围广泛,具有很好的推广应用价值。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
附图1为本发明的实现示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明的方案,下面结合具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如附图1所示,一种采用多进程实现Tr069网管的系统,包括三个分层,每个分层都由进程实现Tr069的功能,且三个分层的进程共同实现Tr069的功能,其中三个分层具体为,
网络通信层,完成网络通信和数据分发;
数据模型维护层,完成数据模型维护和数据转发;
功能模块层,完成底层功能实现。
也就是说,本发明中将Tr069功能分为三个模块实现,网络通信层,通过easycwmp进程实现;数据模型维护层,通过Dmtree进程实现;功能模块层,实现具体功能。前两个模块为单独进程,功能模块则是由处理数据的多个进程的集合。
Easycwmp负责网络通信以及数据分发,主要包括收发信息,信息简单解析,以及将信息发送到下个模块。
Dmtree主要负责数据模型维护和数据转发。Tr069的数据模型都是类似A.B.C.D和A.B.C.E这种形式,Dmtree中维护了一颗树,同时还为树的每个分支(即每个参数)设置一个唯一的编号,树的节点就是A、B、C、D、E。Dmtree将easycwp传过来的数据进行匹配,找到其对应的编号后将数据信息向下发送到对应的进程中。另外Dmtree中还为每个节点设置一个别名系统,也就是说在匹配时,上层发送过来的信息只要满足其中一个Dmtree就会认为这是同一个节点,这样当不同的业务中使用不同数据模型并对应相同功能时,就可以通过该设置提高系统的兼容性。
Easycwmp和Dmtree并不负责功能具体实现,功能实现由更底层的各个功能模块来实现,例如重启、设置ip、设置录制时间等。
通过多个进程协同工作完成Tr069的主要功能,各个进程负责不同层次的工作内容,分工更加明确清晰。
部分进程模块提供兼容方案,提高该设计对不同业务需求的兼容性,减少代码的维护量。
每层之间的通信使用开源库thrift进行,且分别配置两个进程间通信接口来实现网络通信层与数据模型维护层之间、数据模型维护层与功能模块层之间的通信。
所述进程间通信接口以client/server模式实现,其中网络通信层与数据模型维护层之间的进程间通信接口中,客户端位于网络通信层中,服务端位于数据模型维护层中;数据模型维护层与功能模块层之间的进程间通信接口中,客户端位于数据模型维护层中,服务端位于功能模块层中。
一种采用多进程实现Tr069网管的方法,其实现过程为:
一、首先网络通信层通过网络接收到Tr069的功能请求,然后发送至数据模型维护层中;
二、数据模型维护层通过xml文件配置每个参数的id以及module id,并且生成一颗树;
三、数据模型维护层接收到数据后,对参数的每个节点进行检查并与自己维护的的树匹配,如果匹配成功则根据module id将信息发往指定的功能模块实现对应的功能。
在步骤一种,网络通信层将参数名称和参数值配置成结构体字符串的形式,将信息通过进程间通信接口发往数据模型维护层中。
下面以SetParameterValues接口为例,简要介绍该设计的实施方式。
Easycwmp接收到ACS服务器发送的SetParameterValues请求后,将参数名称和参数值以结构体字符串的形式将信息通过进程间通信接口发往Dmtree中。Dmtree通过xml文件配置每个参数的id以及module id,并且生成一颗树。Dmtree接收到数据后,对参数的每个节点进行检查并与自己维护的的树匹配,如果匹配成功则根据module id将信息发往指定的功能模块实现对应的功能。树中的每个节点使用下面的结构体维护,其中别名是为了提高代码的兼容性。
struct btree_node
{
char* name;
int type;
……
char* uni_name; //别名
……
}
进程间通信使用开源库thrift,该开源库具有很好的平台兼容性,适合在linux和android平台上运行。在本设计中需要进行两次进程间通信设计接口,暂时命名为Idms_AIf和Idms_BIf,A接口的client位于Easycwmp中,server端位于Dmtree中,B接口的client位于Dmtree中,server端位于各个功能模块中。各个功能模块中的server的端口号不同,Dmtree通过module id确定不同参数属于哪一个功能模块,功能模块收到信息时通过各个参数的id确定实现的具体功能。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。