基于单线程软件架构的多网管访问功能实现方法转让专利

申请号 : CN200910131338.X

文献号 : CN101521599B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱崇银杨克力

申请人 : 烽火通信科技股份有限公司

摘要 :

本发明涉及远程网络管理,是一种基于单线程软件架构的多网管访问功能实现方法,通过在设备端增加缓存管理模块和拆包合包/压缩解压缩模块,缓存管理模块根据网管标识和命令标识缓存网管数据,并在缓存结束后,将完整的数据净荷下发给下层模块或上传给网管;改变了当前拆包流程,将配置时,首先下发的包数操作去掉,将其改为在包协议中添加总分包数;在网管下发包协议头中添加网管主机标识和总字节数、总拆分包数以及单个压缩包压缩后的总字节数。解决多网管访问拆分大包数据引起公共内存数据冲突的方法,更好地支持多网管对设备的控制访问。

权利要求 :

1.基于单线程软件架构的多网管访问功能实现方法,其特征在于包括多个网管对同一设备进行配置时的互斥配置步骤和多个网管获取同一设备的配置时的获取步骤;

所述互斥配置步骤具体为,

P1、多个网管分别对同一设备依次下发若干对该设备配置的数据分包给Agent,每一个数据分包中携带有该网管标识、分包总数以及总字节数,Agent将每一个数据分包加上该设备的命令ID标识后透传给拆包合包/压缩解压缩模块;

P2、同时,缓存管理模块判断是否有其它的网管正在向该设备发送对其配置的数据分包,如没有,则拆包合包/压缩解压缩模块根据该数据分包的网管标识和命令ID标识进行缓存,并将执行结果返回给Agent,Agent再将该结果返回给该网管;

P3、如果有其它的网管正在向该设备发送对其配置的数据分包,则拆包合包/压缩解压缩模块不保存该数据分包并返回其它网管正在操作该配置错误提示给Agent,Agent再将该结果返回给该网管;

P4、缓存管理模块根据数据分包中的分包总数判断对该设备的配置是否结束,当配置结束时,拆包合包/压缩解压缩模块将缓存中的对该设备的配置的数据净荷进行拆包/合包处理存储至存储模块,并将处理结果返回给Agent,Agent再将该结果返回给该网管;

所述多个网管获取同一设备的配置时的获取步骤具体为:

Q1、多个网管分别下发对同一设备的查询包,查询包中携带有该网管标识 和包索引,Agent将该查询包加上命令ID标识后透传给拆包合包/压缩解压缩模块,缓存管理模块根据该网管标识和命令ID标识分配或识别缓存空间,同时向存储模块索要所有净荷数据在拆包合包/压缩解压缩模块进行内部压缩/分包处理并缓存在相应的缓存内,然后分别依次根据包索引将相应缓存内的数据分包净荷返回给Agent,Agent再依次将该数据分包的净荷返回给该网管;

Q2、当其中一个网管下发第N+1个查询包且Agent返回空包给该网管,此时该网管的获取操作结束,其中N表示缓存分包总数且N≥1。

2.如权利要求1所述的基于单线程软件架构的多网管访问功能实现方法,其特征在于所述拆包合包/压缩解压缩模块中设有第一比较单元,该比较单元中预设有划分数据分包大小的阈值,当数据分包的大小超过该阈值时则对该数据分包进行压缩,如果压缩后仍然超出设定的阈值,则对其进行分包压缩。

3.如权利要求1所述的基于单线程软件架构的多网管访问功能实现方法,其特征在于所述缓存管理模块中设有第二比较单元,该比较单元中预设有缓存老化时间门限,当缓存时间超出该时间门限时释放缓存模块中的内存。

说明书 :

基于单线程软件架构的多网管访问功能实现方法

技术领域

[0001] 本发明涉及远程网络管理,特别涉及一种基于单线程软件架构的多网管访问功能实现方法。

背景技术

[0002] 近些年来,接入网的用户规模不断扩大,网络的运营、维护和管理的工作量也逐步上升,于是,越来越多的运营商开始采用网络远程管理技术以降低运行和维护成本,提升用户满意度。而管理器和管理代理在通过网络进行通信时,必须遵循特定的协议,其中,简单网络管理协议(SNMP,Simple NetworkManagement Protocol)以其简单易实现的优势得到广泛运用。
[0003] SNMP协议是专门设计用于在IP网络中管理网络节点(服务器、工作站、路由器、交换机等)的一种标准协议,它是一种应用层协议。SNMP使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长,网络管理系统通过SNMP接收随机消息(及事件报告)而获知网络出现的问题。
[0004] SNMP管理的网络有四个关键元素是管理工作站(NMS,在后简称管理站)、管理代理(Agent)、管理信息库(MIB)和SNMP协议。图1说明了这四个元素之间的关系。管理代理对来自管理站的信息查询和动作执行请求做出响应,同时还可以异步地向管理站发送重要的意外事件。网络管理站与网络管理代理之间是通过SNMP网络管理协议连接实现通信的。
[0005] 单线程软件架构下的多网管系统访问功能是指由设备提供不同的管理IP 来支持用户通过不同的网管服务器来管理同一台设备。该功能中Agent会跟不同的网管进行交互,如图2,图3所示,目前的系统中,网管下发打包配置时,首先下发一个需要拆分的包数给设备,然后下发带包索引的包净荷,设备根据网管下发的包净荷中的包索引以及包总个数来判断网管下发的包是否完整。网管获取时,首先通过下发包索引为1的MIB节点获取,然后通过下发包索引为2的MIB节点获取,直到设备上报的静荷数据为空时为止。图4所示为两个网管,网管A和网管B对同一设备下发同一种配置的流程:
[0006] S1:网管B首先下发该配置要拆分的包的个数给Agent,Agent将设置结果返回给网管B;
[0007] S2:网管B下发该配置要拆分的第一个包给Agent,,Agent直接将该包的净荷加上包索引和包个数传给分包解包模块,分包解包模块初始化其内存空间,并将第一个包静荷拷入该内存空间中,分包解包模块将结果返回给Agent,Agent再将结果返回给网管B; [0008] S3:网管B下发该配置要拆分的第二个包给Agent,Agent直接将包净荷加上包索引和包个数传给分包解包模块,分包解包模块将第二个包静荷拷入该内存空间中,分包解包模块将结果返回给Agent,Agent再将结果返回给网管B;
[0009] S4:网管A向Agent下发该配置要拆分的包个数,Agent直接将设置结果返回给网管A;
[0010] S5:网管B下发该配置要拆分的第三个包给Agent,Agent直接将包净荷加上包索引和网管A下发的包个数给分包解包模块,分包解包模块将第三个包静荷拷入该内存空间中,分包解包模块将结果返回给Agent,Agent再将结果返回给网管B;
[0011] S6:网管A下发该配置要拆分的第一个包给Agent,Agent直接将包净荷加上包索引和包个数传给分包解包模块,分包解包模块初始化该片配置的内存空间,并将第一个包静荷拷入该内存空间中,分包解包模块将结果返回给Agent,Agent再将结果返回给网管A; [0012] S7:网管B下发该配置要拆分的第N个包给Agent,Agent直接将包净荷加上包索引和网管A下发的包个数给分包解包模块,分包解包模块将第N个包静荷拷入该内存空间中,分包解包模块将结果返回给Agent,Agent再将结果返回给网管B;
[0013] S8:网管A下发该配置要拆分的第二个包给Agent,Agent直接将包净荷加上包索引和包个数传给分包解包模块,分包解包模块将第二个包静荷拷入该内存空间中,分包解包模块将结果返回给Agent,Agent再将结果返回给网管A;
[0014] S9:网管A下发该配置要拆分的第三个包给Agent,Agent直接将包净荷加上包索引和网管A下发的包个数给分包解包模块,分包解包模块将第三个包静荷拷入该内存空间中,分包解包模块将结果返回给Agent,Agent再将结果返回给网管A;
[0015] S10:网管A下发该配置要拆分的第N个包给Agent,Agent直接将包净荷加上包索引和网管A下发的包个数给分包解包模块,分包解包模块将第N个包静荷拷入该内存空间中,分包解包模块将结果返回给Agent,Agent再将结果返回给网管A。
[0016] 如上所述,在执行步骤S4时,网管A更新了网管B下发总包数,会导致分包解包模块判断包是否完整错误;同样在执行步骤S6时,网管A下发第一个配置包时,会导致分包解包模块重新初始化内存空间,从而导致网管下发数 据与设备缓存中的数据不一致。同理,对于多网管下发对于组播的不同配置时,也会出现公共内存空间中的数据变化导致网管最终的数据不合法的问题。

发明内容

[0017] 本发明所要解决的技术问题是解决基于单线程软件架构多网管访问同一设备时会产生网管下发数据与设备缓存中的数据不一致或多网管下发对于组播的不同配置时出现公共内存空间中的数据变化导致网管最终的数据不合法的问题。
[0018] 为了解决上述技术问题,本发明所采用的技术方案是提供一种基于单线程软件架构的多网管访问功能实现方法,包括多个网管对同一设备配置时的互斥配置步骤和多个网管获取同一设备的配置时的获取步骤;
[0019] 所述互斥配置步骤具体为,
[0020] P1、多个网管分别对同一设备依次下发若干对该设备配置的数据分包给Agent,每一个数据分包中携带有该网管标识、分包总数以及总字节数,Agent将每一个数据分包加上该设备的命令ID标识后透传给拆包合包/压缩解压缩模块;
[0021] P2、同时,缓存管理模块判断是否有其它的网管正在向该设备发送对其配置的数据分包,如没有,则拆包合包/压缩解压缩模块根据该数据分包的网管标识和命令ID标识进行缓存,并将执行结果返回给Agent,Agent再将该结果返回给该网管; [0022] P3、如果有其它的网管正在向该设备发送对其配置的数据分包,则拆包合包/压缩解压缩模块不保存该数据分包并返回其它网管正在操作该配置错误提示给Agent,Agent再将该结果返回给该网管;
[0023] P4、缓存管理模块根据数据分包中的分包总数判断对该设备的配置是否结束,当配置结束时,拆包合包/压缩解压缩模块将缓存中的对该设备的配置的数据净荷进行拆包/合包处理存储至存储模块,并将处理结果返回给Agent,Agent再将该结果返回给该网管;否则返回步骤A1;
[0024] 所述多个网管获取同一设备的配置时的获取步骤具体为:
[0025] Q1、多个网管分别下发对同一设备的查询包,查询包中携带有该网管标识、操作模式和包索引,Agent将该查询包加上命令ID标识后透传给拆包合包/压缩解压缩模块,缓存管理模块根据该网管标识和命令ID标识分配或识别缓存空间,同时向存储模块索要所有净荷数据在拆包合包/压缩解压缩模块进行内部压缩/分包处理并缓存在相应的缓存内,然后分别依次根据包索引将相应缓存内的数据分包净荷返回给Agent,Agent再依次将该数据分包的净荷返回给该网管;
[0026] Q2、当其中一个网管下发第N+1个查询包且Agent返回空包给该网管,此时该网管的获取操作结束,其中N表示缓存分包总数且N≥l。
[0027] 在上述方案中,
[0028] 所述拆包合包/压缩解压缩模块中设有第一比较单元,该比较单元中预设有划分数据分包大小的阈值,当数据分包的大小超过该阈值时则对该数据分包进行压缩,如果压缩后仍然超出设定的阈值,则对其进行分包压缩。
[0029] 所述缓存管理模块中设有第二比较单元,该比较单元中预设有缓存老化时间门限,当缓存时间超出该时间门限时释放缓存模块中的内存。
[0030] 本发明,通过在设备端增加缓存管理模块和拆包合包/压缩解压缩模块,缓存管理模块根据网管标识和命令标识缓存网管数据,并在缓存结束后,将完 整的数据净荷下发给下层模块或上传给网管;改变了当前拆包流程,将配置时,首先下发的包数操作去掉,将其改为在包协议中添加总分包数;在网管下发包协议头中添加网管主机标识和总字节数、总拆分包数以及单个压缩包压缩后的总字节数。解决多网管访问拆分打包数据引起公共内存数据冲突的方法,更好地支持多网管对设备的控制访问。

附图说明

[0031] 图1是SNMP协议网络管理元素之间的关系图;
[0032] 图2是打包配置时网管与Agent的交互图;
[0033] 图3是打包获取时网管与Agent的交互图;
[0034] 图4是多网管和Agent之间的配置交互图;
[0035] 图5设备端结构示意结构;
[0036] 图6多管理网管下的互斥配置图;
[0037] 图7多管理Manger下,对同一配置的获取图。

具体实施方式

[0038] 本发明针对多网管访问拆分打包数据引起公共内存数据冲突的问题,提供了一种基于单线程软件架构的多网管访问功能实现方法,解决了多网管访问拆分/打包数据引起公共内存数据冲突的方法,更好地支持多网管对设备的控制访问。
[0039] 下面结合具体实施方式进行详细的说明。
[0040] 图5为设备端结构示意结构,如图5所示,这个设备端共有四个层次:硬件层,执行层,服务代理层和远程用户界面层。其中,硬件层用于提供业务数据和管理数据的物理通道,执行层用于提供命令的解释和执行接口,包括BSP 及操作系统和底层驱动(GSW),服务代理层用于提供管理对象的操作接口,远程用户界面层用于提供图形化用户操作界面(图中未显示),服务代理层中设有SNMP代理、缓存管理模块、拆包合包/压缩解压缩模块、功能配置解析模块、存储模块和功能管理模块。
[0041] 本发明包括多个网管对同一设备进行配置时的互斥配置步骤和多个网管获取同一设备的配置时的获取步骤;
[0042] 图6为多网管下的互斥配置示意图,具体来说,互斥配置采用下述步骤完成: [0043] A1、网管A首先下发第一个配置数据分包给Agent,该数据分包中需要携带有网管A标识、分包总数以及总字节数,考虑到下发数据分包的长度问题,在缓存管理模块中设置一阈值,超过阈值的数据分包首先压缩,如果仍然超出阈值则进行再分包;Agent将该数据分包加上命令ID标识后透传给拆包合包/压缩解压缩模块,由于设备的缓存有限,故设置了拆包合包/压缩解压缩模块将收到的压缩数据包缓存起来,并返回执行结果给Agent,Agent再将结果返回给网管,对于缓存模块,由于实际物理条件的限制,需要定期释放内存,由此还设定了缓存老化门限时间,以此来解决可能引起的内存紧张问题。 [0044] A2、网管B首先下发第一个配置的数据分包给Agent,该数据分包中需要携带有网管B标识、分包总数以及总字节数,Agent将该数据分包加上命令ID标识后透传给拆包合包/压缩解压缩模块,拆包合包/压缩解压缩模块判断当前配置是否合法,即是否有其他网管正在对该设备进行配置,如果有其他网管正在对该设备进行配置返回其它网管正在操作该配置错误提示给Agent,Agent再将结果返回给网管B。
[0045] A3、网管A下发下一个配置的数据分包给Agent,,该数据分包中需要携带有网管A标识、分包总数以及总字节数,Agent将该数据分包加上命令ID标识后透传给拆包合包/压缩解压缩模块,拆包合包/压缩解压缩模块判断当前配置是否已结束,如果结束,则拆包合包/压缩解压缩模块将数据净荷交给分包解包模块处理,分包解包模块处理完成之后,将处理结果返回给拆包合包/压缩解压缩模块;否则重复步骤A3。
[0046] A4、网管B下发下一个配置的数据分包给Agent,,该数据分包中需要携带有网管B标识、分包总数以及总字节数,Agent将该数据分包加上命令ID标识后透传给拆包合包/压缩解压缩模块,拆包合包/压缩解压缩模块判断当前配置是否已结束,如果结束,则拆包合包/压缩解压缩模块将数据净荷交给分包解包模块处理,分包解包模块处理完成之后,将处理结果返回给拆包合包/压缩解压缩模块;否则重复步骤A4。
[0047] 图7为多网管获取同一设备配置的示意图,具体来说,多网管获取同一设备的配置时采用下述步骤完成:
[0048] R1、网管A通过Set包下发第一个查询包,包中需要携带有网管A标识、操作模式、包索引,Agent将包加上命令ID标识后透传给拆包合包/压缩解压缩模块,拆包合包/压缩解压缩模块分配内存空间,同时根据包索引向存储模块要所有净荷数据并进行内部压缩/分包处理,然后给Agent返回第一个包的净荷,Agent将第一个包的净荷直接返回给网管A;
[0049] R2、网管B通过Set包下发第一个查询包,包中需要携带有网管B标识、操作模式,包索引,Agent将包加上命令ID标识后透传给拆包合包/压缩解压缩模块,拆包合包/压缩解压缩模块分配内存空间,同时根据包索引向存储模 块索要所有净荷数据并进行内部压缩/分包处理,然后给Agent返回第一个包的净荷,Agent将第一个包的净荷直接返回给网管B;
[0050] R3、网管A通过Set包下发第二个查询包,包中需要携带有网管A标识、操作模式和包索引,Agent将包加上命令ID标识后透传给拆包合包/压缩解压缩模块,拆包合包/压缩解压缩模块根据网管A标识+命令ID识别缓存空间,然后根据包索引给Agent返回缓存空间中第二个包的净荷,Agent将第二个包的净荷直接返回给网管A;
[0051] R4、网管A通过Set包下发第三个查询包,包中需要携带有网管A标识、操作模式和包索引,Agent将包加上命令ID标识后透传给拆包合包/压缩解压缩模块,拆包合包/压缩解压缩模块根据网管A标识+命令ID识别缓存空间,然后根据包索引给Agent返回缓存空间中第二个包的净荷空包,Agent给网管返回空包,网管A获取操作结束; [0052] R5、网管B通过Set包下发第二个查询包,包中需要携带有网管B标识、操作模式和包索引,Agent将包加上命令ID标识后透传给拆包合包/压缩解压缩模块,拆包合包/压缩解压缩模块根据网管B标识+命令ID识别缓存空间,然后根据包索引给Agent返回缓存空间中第二个包的净荷,Agent将第二个包的净荷直接返回给网管B;
[0053] R6、网管B通过Set包下发第三个查询包,包中需要携带有网管B标识、操作模式和包索引,Agent将包加上命令ID标识后透传给拆包合包/压缩解压缩模块,拆包合包/压缩解压缩模块根据网管B标识+命令ID识别缓存空间,然后根据包索引给Agent返回缓存空间中第二个包的净荷空包,Agent给网管返回空包,网管B获取操作结束。 [0054] 至此,网管A和网管B都正确地完成了对设备的获取操作。
[0055] 本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。