一种用于数据格式转换的管理平台端和数据格式转换方法转让专利

申请号 : CN202011051437.X

文献号 : CN112383408B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙亚雄陈辉

申请人 : 武汉虹信科技发展有限责任公司

摘要 :

本发明实施例提供一种用于数据格式转换的管理平台端和数据格式转换方法,管理平台端包括snmp通信平台层,用于接收管控设备发送的私有数据消息,将私有数据消息传输给业务层;将业务层转换后的snmp数据消息发送给受控设备;业务层,用于将私有数据消息转换为snmp数据消息,将转换后的snmp数据消息传输给snmp通信平台层。本发明实施例作为业务层,不需要了解snmp组包方法,只需要利用通用的结构将私有数据结构体和snmp数据结构体进行映射,即可实现私有数据消息与snmp数据消息之间的转化,底层的snmp通信平台层就可以直接实现pdu包的组装并发送,代码结构清晰,层次分明,可读性和可维护性都较好。

权利要求 :

1.一种用于数据格式转换的管理平台端,其特征在于,包括在所述管理平台端开发的嵌入式开发板,在所述嵌入式开发板上异步搭建的snmp通信平台层和业务层;

所述snmp通信平台层,用于向所述业务层提供注册接口;接收管控设备发送的私有数据消息,将所述私有数据消息传输给业务层;以及将所述业务层转换后的snmp数据消息发送给受控设备;

所述业务层,用于将所述私有数据消息转换为snmp数据消息,将转换后的snmp数据消息传输给所述snmp通信平台层;调用所述注册接口向所述snmp通信平台层注册,由所述snmp通信平台层向所述受控设备创建snmp会话;

所述管控设备不支持snmp协议,所述受控设备为snmp协议的受控设备;

所述业务层还用于:

在业务层上预先建立本地映射表,所述本地映射表存储私有数据消息结构体中的结构数据和snmp数据消息结构体中的结构数据之间的映射关系;

相应的,所述业务层将所述私有数据消息转换为snmp数据消息包括:根据提取的私有数据消息结构体中的结构数据,基于本地映射表,将私有数据结构体中的结构数据映射为snmp数据结构体中的结构数据;

根据映射后的snmp数据结构体中的结构数据,按照snmp数据结构体进行组织,形成snmp数据消息;

所述snmp通信平台层还用于接收受控设备发送的snmp数据消息,传输给业务层;以及将所述业务层传输的转换后的私有数据消息发送给所述管控设备;所述业务层还用于将所述snmp通信平台层传输的snmp数据消息转换为私有数据消息,将转换后的私有数据消息传输给所述snmp通信平台层。

2.一种数据格式转换方法,其特征在于,包括:

snmp通信平台层接收管控设备发送的私有数据消息,将所述私有数据消息传输给业务层;

业务层将所述私有数据消息转换为snmp数据消息,将转换后的snmp数据消息传输给所述snmp通信平台层;

snmp通信平台层将所述业务层转换后的snmp数据消息发送给受控设备;

其中,所述管控设备不支持snmp协议,所述受控设备为snmp协议的受控设备;所述snmp通信平台层和业务层为在嵌入式开发板上异步搭建的,所述嵌入式开发板为在管理平台端开发的;

所述数据格式转换方法,还包括:

所述snmp通信平台层向所述业务层提供注册接口;

调用所述注册接口向所述snmp通信平台层注册,由所述snmp通信平台层向所述受控设备创建snmp会话;

所述私有数据消息为根据管控设备和所述嵌入式开发板协定的私有数据结构体组织的;

所述snmp数据消息为根据嵌入式开发板和受控设备协定的snmp数据结构体组织的;

所述业务层将所述私有数据消息转换为snmp数据消息包括:

业务层从私有数据消息的私有数据结构体中提取结构数据,并将提取的结构数据按照snmp数据结构体进行组织,形成snmp数据消息;

所述业务层将所述私有数据消息转换为snmp数据消息之前还包括:在业务层上预先建立本地映射表,所述本地映射表存储私有数据消息结构体中的结构数据和snmp数据消息结构体中的结构数据之间的映射关系;

相应的,所述业务层将所述私有数据消息转换为snmp数据消息包括:根据提取的私有数据消息结构体中的结构数据,基于本地映射表,将私有数据结构体中的结构数据映射为snmp数据结构体中的结构数据;

根据映射后的snmp数据结构体中的结构数据,按照snmp数据结构体进行组织,形成snmp数据消息。

3.根据权利要求2所述的数据格式转换方法,其特征在于,

所述私有数据结构体中包括每一个操作参数和每一个操作参数的数据类型;

所述snmp数据消息结构体中包括消息的操作类型、消息id、消息体中包括的mib节点个数、每一个mib节点信息,所述每一个mib节点中包括oid对象标识符、oid对象标识符对应的数据类型和具体数据值。

4.根据权利要求3所述的数据格式转换方法,其特征在于,所述在业务层上预先建立本地映射表,所述本地映射表存储私有数据消息结构体中的结构数据和snmp数据消息结构体中的结构数据之间的映射关系包括:在本地映射表中为每一条私有数据消息维护一全局变量数组,所述全局变量数组中包括消息id、消息中的每一个操作参数与oid对象标识符的映射关系、消息需要操作的oid对象标识符的数目、消息的操作类型,其中,一个操作参数对应一个oid对象标识符。

5.根据权利要求4所述的数据格式转换方法,其特征在于,所述根据提取的私有数据消息结构体中的结构数据,基于本地映射表,将私有数据结构体中的数据映射为snmp数据结构体中的结构数据包括:业务层根据私有数据消息,从私有数据结构体中提取出每一个操作参数、每一个操作参数的类型和消息id;

根据消息id,从本地映射表中找到对应的全局变量数组;

并根据每一个操作参数找到对应的oid对象标识符,统计oid对象标识符的数目,其中,一个操作参数对应一个mib节点;

根据管控设备发送的私有数据消息,确定消息操作类型。

6.根据权利要求5所述的数据格式转换方法,其特征在于,所述根据映射后的snmp数据结构体中的结构数据,按照snmp数据结构体进行组织,形成snmp数据消息包括:将映射得到的mib节点数目、每一个mib节点包括的oid对象标识符、oid对象标识符的数目、oid对象标识符对应的数据类型和具体数据值、消息的操作类型填入snmp数据结构体中,生成与所述私有数据消息对应的snmp数。

说明书 :

一种用于数据格式转换的管理平台端和数据格式转换方法

技术领域

[0001] 本发明涉及数据通信技术领域,尤其涉及一种用于数据格式转换的管理平台端和数据格式转换方法。

背景技术

[0002] SNMP(Simple Network Management Protocol)是“简单网络管理协议”,用于网络管理的协议。它运行在TCP/IP协议簇之上,是一种应用层协议。它为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。
[0003] 具体的,SNMP为管理员提供了一个网管平台(NMS),又称为管理站,负责网管命令的发出、数据存储、及数据分析。被监管的设备上运行一个SNMP代理,代理实现设备与管理站的SNMP通信。管理站与代理端通过管理信息库(mib)进行接口统一,MIB定义了设备中被管理的对象。管理站和代理都实现了相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站向代理申请MIB中定义的数据,代理识别后,将管理设备提供的相关状态或参数等数据转换为mib定义的格式,应答给管理站,完成一次管理操作。
[0004] 对于网络管理,需要通过读取和设置来查改设备的配置、参数、状态信息,同时为了及时获取设备重要状态变化,要求设备能够主动的汇报。因此,参见图1,管理端和代理端为了达到上述的信息交互,定义了五种报文,分别是get‑request:从代理处提取一个或多个参数值;get‑next‑request:从代理处提取一个或多个参数的下一个参数值;set‑request:设置代理的一个或者多个参数;get‑response:代理端向管理端返回一个或者多个参数值;trap:代理向管理端主动上报信息。其中前三个操作是管理端向代理端发出的,后两个操作是代理端向管理端发出的,管理端通过Udp端口162与代理端的Udp端口161通信。
[0005] 然而,并不是所有的设备都支持snmp,对于不支持snmp的嵌入式设备,需要移植开源的net‑snmp,调用net‑snmp提供的库函数,来编写相应的程序。使用net‑snmp编写完程序后,接收时需要将snmp数据消息转化为本地需要的私有数据结构消息,发送时需要将本地私有数据消息转化为SNMP格式的消息。无论是收还是发,都涉及到SNMP数据消息与私有数据消息的相互转化。具体表现为解析或填充oid,解析或填充数据类型以及解析或填充数据值。如果对于每一种这样的转化都写一个函数,代码就会显得非常冗余,可读性和可维护性都比较差。

发明内容

[0006] 本发明实施例提供一种用于数据格式转换的管理平台端和数据格式转换方法,用以解决现有技术中支持私有格式的管控设备与支持snmp协议的受控设备无法通信的缺陷,实现私有格式与snmp格式之间的转换。
[0007] 本发明实施例提供一种用于数据格式转换的管理平台端,包括在所述管理平台端开发的嵌入式开发板,在所述嵌入式开发板上异步搭建的snmp通信平台层和业务层;
[0008] 所述snmp通信平台层,用于接收管控设备发送的私有数据消息,将所述私有数据消息传输给业务层;以及将所述业务层转换后的snmp数据消息发送给受控设备;
[0009] 所述业务层,用于将所述私有数据消息转换为snmp数据消息,将转换后的snmp数据消息传输给所述snmp通信平台层。
[0010] 在上述技术方案的基础上,本发明实施例还可以作出如下改进。
[0011] 可选的,所述业务层还用于:
[0012] 在业务层上预先建立本地映射表,所述本地映射表存储私有数据消息结构体中的结构数据和snmp数据消息结构体中的结构数据之间的映射关系;
[0013] 相应的,所述业务层将所述私有数据消息转换为snmp数据消息包括:
[0014] 根据提取的私有数据消息结构体中的结构数据,基于本地映射表,将私有数据结构体中的数据映射为snmp数据结构体中的结构数据;
[0015] 根据映射后的snmp数据结构体中的结构数据,按照snmp数据结构体进行组织,形成snmp数据消息。
[0016] 可选的,所述snmp通信平台层还用于接收受控设备发送的snmp数据消息,传输给业务层;以及将所述业务层传输的转换后的私有数据消息发送给所述管控设备;所述管控设备不支持snmp协议,所述受控设备为snmp协议的受控设备;
[0017] 所述业务层还用于将所述snmp通信平台层传输的snmp数据消息转换为私有数据消息,将转换后的私有数据消息传输给所述snmp通信平台层。
[0018] 本发明实施例还提供了一种数据格式转换方法,包括:
[0019] S1,snmp通信平台层接收管控设备发送的私有数据消息,将所述私有数据消息传输给业务层;
[0020] S2,业务层将所述私有数据消息转换为snmp数据消息,将转换后的snmp数据消息传输给所述snmp通信平台层;
[0021] S3,snmp通信平台层将所述业务层转换后的snmp数据消息发送给受控设备;
[0022] 其中,所述管控设备不支持snmp协议,所述受控设备为snmp协议的受控设备;所述snmp通信平台层和业务层为在嵌入式开发板上异步搭建的,所述嵌入式开发板为在管理平台端开发的。
[0023] 可选的,所述私有数据消息为根据管控设备和所述嵌入式开发板协定的私有数据结构体组织的;
[0024] 所述snmp数据消息为根据嵌入式开发板和受控设备协定的snmp数据结构体组织的;
[0025] 所述业务层将所述私有数据消息转换为snmp数据消息包括:
[0026] 业务层从私有数据消息的私有数据结构体中提取结构数据,并将提取的结构数据按照snmp数据结构体进行组织,形成snmp数据消息。
[0027] 可选的,所述业务层将所述私有数据消息转换为snmp数据消息之前还包括:
[0028] 在业务层上预先建立本地映射表,所述本地映射表存储私有数据消息结构体中的结构数据和snmp数据消息结构体中的结构数据之间的映射关系;
[0029] 相应的,所述业务层将所述私有数据消息转换为snmp数据消息包括:
[0030] 根据提取的私有数据消息结构体中的结构数据,基于本地映射表,将私有数据结构体中的结构数据映射为snmp数据结构体中的数据;
[0031] 根据映射后的snmp数据结构体中的结构数据,按照snmp数据结构体进行组织,形成snmp数据消息。
[0032] 可选的,所述私有数据结构体中包括每一个操作参数和每一个操作参数的数据类型;
[0033] 所述snmp数据消息结构体中包括消息的操作类型、消息id、消息体中包括的mib节点个数、每一个mib节点信息,所述每一个mib节点中包括oid对象标识符、oid对象标识符对应的数据类型和具体数据值。
[0034] 可选的,所述在业务层上预先建立本地映射表,所述本地映射表存储私有数据消息结构体中的结构数据和snmp数据消息结构体中的结构数据之间的映射关系包括:
[0035] 在本地映射表中为每一条私有数据消息维护一全局变量数组,所述全局变量数组中包括消息id、消息中的每一个操作参数与oid对象标识符的映射关系、消息需要操作的oid对象标识符的数目、消息的操作类型,其中,一个操作参数对应一个oid对象标识符。
[0036] 可选的,所述根据提取的私有数据消息结构体中的结构数据,基于本地映射表,将私有数据结构体中的结构数据映射为snmp数据结构体中的数据包括:
[0037] 业务层根据私有数据消息,从私有数据结构体中提取出每一个操作参数、每一个操作参数的类型和消息id;
[0038] 根据消息id,从本地映射表中找到对应的全局变量数组;
[0039] 并根据每一个操作参数找到对应的oid对象标识符,统计oid对象标识符的数目,其中,一个操作参数对应一个mib节点;
[0040] 根据管控设备发送的私有数据消息,确定消息操作类型。
[0041] 可选的,所述根据映射后的snmp数据结构体中的数据,按照snmp数据结构体进行组织,形成snmp数据消息包括:
[0042] 将映射得到的mib节点数目、每一个mib节点包括的oid对象标识符、oid对象标识符的数目、oid对象标识符对应的数据类型和具体数据值、消息的操作类型填入snmp数据结构体中,生成与所述私有数据消息对应的snmp数据消息。
[0043] 本发明实施例提供的数据格式转换的管理平台端和数据格式转换方法,作为业务层应用,不需要了解snmp的组包方法,只需要将私有的数据结构体和snmp操作类型以及操作的oid维护成一个本地映射表,通过填充私有的结构体,调用通用的转化函数,然后调用发送接口。底层的snmp通信平台就可以直接实现pdu包的组装并发送。接收的时候也只用接收snmp通信平台发过来的消息,利用通用结构将snmp消息转化成本地私有数据结构的消息。代码结构清晰,层次分明,可读性和可维护性都较好。

附图说明

[0044] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0045] 图1为现有技术中的管理端与代理端信息交互示意图;
[0046] 图2为本发明实施例提供的一种数据格式转换的管理平台端结构示意图;
[0047] 图3为本发明实施例提供的一种数据格式转换方法流程图;
[0048] 图4为本发明实施例提供的一种数据格式转换方法整体流程图。

具体实施方式

[0049] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050] 参见图2,提供了一种用于数据格式转换的管理平台端,包括在管理平台端开发的嵌入式开发板,在所述嵌入式开发板上异步搭建的snmp通信平台层和业务层。
[0051] 其中,snmp通信平台层,用于接收管控设备发送的私有数据消息,将所述私有数据消息传输给业务层;以及将所述业务层转换后的snmp数据消息发送给受控设备;业务层,用于将所述私有数据消息转换为snmp数据消息,将转换后的snmp数据消息传输给所述snmp通信平台层。
[0052] 可以理解的是,基于背景技术中的缺陷,本发明实施例的应用场景为,管控设备为手机端,不支持snmp协议,受控端支持snmp协议。便于管控设备和受控设备之间的通信,本发明实施例提供了管理平台端,在管理平台端开发嵌入式开发板,在嵌入式开发板上异步搭建snmp通信平台层和业务层。
[0053] 其中,对于嵌入式开发板,如果需要支持snmp协议,可以移植开源的net‑snmp到嵌入式开发板中。利用net‑snmp提供的库函数,在嵌入式开发板上搭建异步snmp通信平台层,snmp通信平台层向业务层提供注册接口,并且传递收发的snmp消息。当业务层调用注册接口向snmp通信平台层注册,由snmp通信平台层向代理端创建snmp会话。其中,在每一个受控设备上创建一个代理端。
[0054] snmp通信平台层接收管控设备发送的私有数据消息,将私有数据消息传输给业务层,在业务层上将私有数据消息转换为snmp数据消息,将转换后的snmp数据消息传输给snmp通信平台层,由snmp通信平台层将转换后的snmp数据消息发送给受控设备,完成从管控设备到受控设备的信息传输过程。
[0055] 作为一种可能的实施方式,业务层还用于:在业务层上预先建立本地映射表,所述本地映射表存储私有数据结构体中的结构数据和snmp数据消息结构体中的结构数据之间的映射关系。相应的,业务层将所述私有数据消息转换为snmp数据消息包括:根据提取的私有数据消息结构体中的结构数据,基于本地映射表,将私有数据结构体中的结构数据映射为snmp数据结构体中的结构数据;根据映射后的snmp数据结构体中的结构数据,按照snmp数据结构体进行组织,形成snmp数据消息。
[0056] 可以理解的是,为了实现管控设备与受控设备之间消息的数据格式的转换,在业务层上建立本地映射表,本地映射表中存储了私有数据结构体中的各项数据与snmp数据结构体中的各项数据之间的映射关系。
[0057] 当业务层接收到管控设备发送的私有数据消息时,提取私有数据结构体中的各项数据,将私有数据结构体中的各项数据通过本地映射表映射为snmp数据结构体中的各项数据,将映射后的各项数据填入定义的snmp数据结构体中,生成snmp数据消息,然后通过消息队列发送给的snmp通信平台层,由snmp通信平台层将snmp数据消息来组成pdu(Protocol Data Unit,协议数据单元)包,并向受控设备发送。
[0058] 作为一种可能的实施方式,snmp通信平台层还用于接收受控设备发送的snmp数据消息,传输给业务层;以及将业务层传输的转换后的私有数据消息发送给所述管控设备;管控设备不支持snmp协议,受控设备为snmp协议的受控设备;业务层还用于将snmp通信平台层传输的snmp数据消息转换为私有数据消息,将转换后的私有数据消息传输给所述snmp通信平台层。
[0059] 可以理解的是,本发明实施例为当受控设备向管控设备发送返回消息时,业务层需要将snmp数据消息转换为私有数据消息,转换的过程与前述将私有数据消息转换为snmp数据消息的转换过程正好相反,将snmp数据消息转换为私有数据消息的过程可参考前述将私有数据消息转换为snmp数据消息的过程,在此不再赘述。
[0060] 本发明实施例中,业务层不用关心snmp的消息格式,只需要支持自己的私有协议,通过调用转化接口,将消息结构体发送给snmp通信平台层,由snmp通信平台层来进行snmp消息包的收发。
[0061] 参见图3,提供了本发明实施例的一种数据格式转换方法,包括:S1,snmp通信平台层接收管控设备发送的私有数据消息,将所述私有数据消息传输给业务层;S2,业务层将私有数据消息转换为snmp数据消息,将转换后的snmp数据消息传输给所述snmp通信平台层;S3,snmp通信平台层将所述业务层转换后的snmp数据消息发送给受控设备;其中,管控设备不支持snmp协议,受控设备为snmp协议的受控设备;所述snmp通信平台层和业务层为在嵌入式开发板上异步搭建的,嵌入式开发板为在管理平台端开发的。
[0062] 可以理解的是,本发明实施例的应用场景为,管控设备为手机端,不支持snmp协议,受控端支持snmp协议。便于管控设备和受控设备之间的通信,本发明实施例提供了管理平台端,在管理平台端开发嵌入式开发板,对于嵌入式开发板,如果需要支持snmp协议,可以移植开源的net‑snmp到嵌入式开发板中。利用net‑snmp提供的库函数,在嵌入式开发板上搭建异步snmp通信平台层,snmp通信平台层向业务层提供注册接口,并且传递收发的snmp消息。当业务层调用注册接口向snmp通信平台层注册,由snmp通信平台层向代理端创建snmp会话。其中,在每一个受控设备上创建一个代理端。
[0063] snmp通信平台层接收管控设备发送的私有数据消息,将私有数据消息传输给业务层,在业务层上将私有数据消息转换为snmp数据消息,将转换后的snmp数据消息传输给snmp通信平台层,由snmp通信平台层将转换后的snmp数据消息发送给受控设备,完成从管控设备到受控设备的信息传输过程。
[0064] 作为一种可能的实施方式,私有数据消息为根据管控设备和嵌入式开发板协定的私有数据结构体组织的;snmp数据消息为根据嵌入式开发板和受控设备协定的snmp数据结构体组织的。业务层将私有数据消息转换为snmp数据消息包括:业务层从私有数据消息的私有数据结构体中提取数据,并将提取的数据按照snmp数据结构体进行组织,形成snmp数据消息。
[0065] 可以理解的是,其中,私有数据结构体是由管控设备和嵌入式开发板协定的,snmp数据结构体是由嵌入式设备和受控设备协定的。业务层在将私有数据消息转换为snmp数据消息时,提取私有数据消息中的各项数据,并将提取的各项数据映射为snmp数据结构体的各项数据,并将映射的各项数据填入snmp数据结构体中,生成snmp数据消息。
[0066] 作为一种可能的实施方式,业务层将私有数据消息转换为snmp数据消息之前还包括:在业务层上预先建立本地映射表,所述本地映射表存储私有数据消息结构体中的数据和snmp数据消息结构体中的数据之间的映射关系。相应的,业务层将所述私有数据消息转换为snmp数据消息包括:根据提取的私有数据消息结构体中的数据,基于本地映射表,将私有数据结构体中的数据映射为snmp数据结构体中的数据;根据映射后的snmp数据结构体中的数据,按照snmp数据结构体进行组织,形成snmp数据消息。
[0067] 可以理解的是,为了实现管控设备与受控设备之间消息的数据格式的转换,在业务层上建立本地映射表,本地映射表中存储了私有数据结构体中的各项数据与snmp数据结构体中的各项数据之间的映射关系。
[0068] 当业务层接收到管控设备发送的私有数据消息时,提取私有数据结构体中的各项数据,将私有数据结构体中的各项数据通过本地映射表映射为snmp数据结构体中的各项数据,将映射后的各项数据填入定义的snmp数据结构体中,生成snmp数据消息,然后通过消息队列发送给的snmp通信平台层,由snmp通信平台层将snmp数据消息来组成PDU包,并向受控设备发送。
[0069] 作为一种可能的实施方式,在业务层上预先建立本地映射表,本地映射表存储私有数据消息结构体中的数据和snmp数据消息结构体中的数据之间的映射关系包括:在本地映射表中为每一条私有数据消息维护一全局变量数组,全局变量数组中包括消息id、消息中的每一个操作参数与oid对象标识符的映射关系、消息需要操作的oid对象标识符的数目、消息的操作类型,其中,一个操作参数对应一个oid对象标识符。
[0070] 可以理解的是,在业务层的本地映射表中为每一条私有数据消息维护一个全局变量数组,全局变量数组中定义了snmp数据结构体需要填入的各项数据,以及每一项数据与私有数据结构体中的每一项数据的映射关系。
[0071] 作为一种可能的实施方式,私有数据结构体中包括每一个操作参数和每一个操作参数的数据类型;snmp数据消息结构体中包括消息的操作类型、消息id、消息体中包括的mib节点个数、每一个mib节点信息,每一个mib节点中包括oid对象标识符、oid对象标识符对应的数据类型和具体数据值。
[0072] 可以理解的是,具体定义了私有数据结构体中的各项数据和定义了snmp数据结构体中的各项数据。私有数据结构体中的各项数据通过本地映射表可以映射为snmp数据结构体中的各项数据;同样的,snmp数据结构体中的各项数据也可以通过本地映射表映射为私有数据结构体中的各项数据。
[0073] 作为一种可能的实施方式,根据提取的私有数据结构体中的数据,基于本地映射表,将私有数据结构体中的数据映射为snmp数据结构体中的数据包括:业务层根据私有数据消息,从私有数据结构体中提取出每一个操作参数、每一个操作参数的类型和消息id;根据消息id,从本地映射表中找到对应的全局变量数组;并根据每一个操作参数找到对应的oid对象标识符,统计oid对象标识符的数目,其中,一个操作参数对应一个mib节点;根据管控设备发送的私有数据消息,确定消息操作类型。
[0074] 将将映射得到的mib节点数目、每一个mib节点包括的oid对象标识符、oid对象标识符的数目、oid对象标识符对应的数据类型和具体数据值、消息的操作类型填入snmp数据结构体中,生成与所述私有数据消息对应的snmp数据消息。
[0075] 可以理解的是,私有数据结构体中主要包括需要操作的参数(称为操作参数)以及每一个操作参数的数据类型。基于本地映射表,根据从私有数据结构体中提取的各项数据,映射为snmp数据结构体的各项数据。具体的,根据从私有数据结构体中提取的每一个操作参数,确定mib节点的数目,一个操作参数对应一个mib节点。一个操作参数对应一个oid对象标识符,oid对象标识符对应的数据类型和具体数据值即为操作参数的数据类型和具体数据值。消息的操作类型由管控设备向受控设备发送时确定的,比如,消息的操作类型可以是操作参数的查询。
[0076] 将映射后的这些数据填入定义的snmp数据结构体中,生成snmp数据消息,将生成的snmp数据消息传输给snmp通信平台端,由snmp通信平台端组成PDU包,发送给受控设备。
[0077] 下面对本发明实施例提供的用于数据格式转换方法的整个流程,可参见图4,主要包括以下步骤:
[0078] 步骤1:移植开源的net‑snmp到嵌入式开发板,通过交叉编译工具链编译源代码,并拷贝需要使用到的库文件和头文件到开发板中,以备程序运行使用。
[0079] 步骤2:在嵌入式开发板上运行一个多线程的转换程序,该转换程序主要分为业务层和snmp通信平台层。snmp通信平台层主要负责所有消息的收发,包括与管控设备的tcp消息以及与受控设备的snmp消息;业务层主要负责将私有数据消息转换为snmp数据消息以及将snmp数据消息转换为私有数据消息的处理。
[0080] 步骤3:管控设备通过连接嵌入式板上的wifi模块出的无线信号,作为客户端连接转换程序所在的嵌入式板,该嵌入式板同时通过网线连接需要受控的snmp设备。业务层通过snmp通信平台层的注册接口,在snmp通信平台层建立一个TCP服务器,用以接收和发送管控设备的私有数据;同时在snmp通信平台层建立一个snmp管理端,用以接收和发送snmp消息。
[0081] 步骤4:管控设备与嵌入式开发板以私有数据结构通过tcp进行通信。首先定义一个固定的通信消息头结构体,消息头中包含消息体的长度信息。业务层接收到管控设备发送的私有数据消息时,首先解析消息头,得到消息长度,然后再收取消息体。各种私有消息依赖于各种业务需求。这里为了更好的说明,假设某条业务私有数据消息体定义为STRUCT_OAM_MSG,其定义如下:
[0082] typedef struct STRUCT_OAM_MSG
[0083] {
[0084] u32 test1;
[0085] s32 test2;
[0086] s16 test3;
[0087] u16 test4;
[0088] }__attribute__((__packed__))ST_OAM_MSG;
[0089] 其中,test1,test2,test3,test4为私有数据结构体中的操作参数,u32,s32,s16,u16分别为test1,test2,test3,test4的数据类型。
[0090] 步骤5:业务层与snmp通信平台层通过snmp数据结构体STRUCT_SNMP_MSG通信,用于存放接收和发送的数据。该snmp数据结构体主要包括:操作类型:get、get‑next、set、get_respone、trap;该条消息的消息id;错误指示(只用于接收时判断接收消息是否正常);该消息体中包含的mib节点个数;每个mib节点信息,包括oid对象标识符,oid对应的数据类型以及数据具体的值。
[0091] 业务层将从私有数据结构体中提取的各项数据通过本地映射映射为snmp数据结构体中需要的各项数据,将映射后的各项数据填入STRUCT_SNMP_MSG结构体中,生成snmp数据消息。通过消息队列发送给snmp通信平台层,snmp通信平台层解析该结构体对象,然后组成snmp的pdu包,通过net‑snmp提供的库函数异步发送snmp消息。同时,snmp通信平台层通过select监控其上所有注册的snmp会话,一旦收到snmp会话消息,解析是get‑response(代理端向管理端返回一个或者多个参数值)还是trap消息(代理向管理端主动上报信息),然后填入STRUCT_SNMP_MSG结构体对象,通过消息队列回复给业务层。
[0092] 其中,业务层设计本地映射表。维护全局变量数组g_msg_def_t,包括:1、消息请求id;2、消息回应id;3、oid与参数映射结构体指针;4、该条消息需要操作的oid数目;5、该条操作类型,是get,set,或者是get‑next等等。其中oid与参数映射结构体表征STRUCT_OAM_MSG的参数与oid的映射关系,例如针对参数test2,需要存入其对应oid,假设此处是1.3.6.1.4.1.2;存入test2在结构体中的偏移,此处从该结构体第四个字节开始;存入test2类型字符串,此处为“s32”;存入test2所占字节数,此处为四个字节。一个参数对应一条oid,一个g_msg_def_t数组中的变量对应一条业务消息,所有需要转换的消息都要维护在g_msg_def_t数组中。
[0093] 步骤6:当转换程序收到管控设备发送来的私有数据消息,由业务层先解析私有STRUCT_OAM_MSG结构体,并将STRUCT_OAM_MSG结构体数据转化为STRUCT_SNMP_MSG结构体数据。例如,需要将其中的参数test2和test4下发到snmp设备,首先在本地g_msg_def_t数组中查询该条oam消息的记录,取出请求id;判断其操作类型,是get,set,或者是get‑next等等;然后在本地映射表中取出test2和test4分别需要操作的Oid以及对应的数据类型和数据值。最后填充STRUCT_SNMP_MSG结构体对象,将该条snmp消息发送出去。
[0094] 步骤7:当转换程序收到snmp设备上报的消息,由snmp通信平台层首先收到消息,判断是trap消息还是get‑response消息。如果是get‑response消息,回复给业务层的STRUCT_SNMP_MSG结构体中需要带上原始私有数据消息的消息id。然后业务层通过该消息id,将STRUCT_SNMP_MSG结构体数据转化为STRUCT_OAM_MSG结构体数据。例如,收到步骤5下发的snmp消息的响应消息,通过消息id查找本地映射表可知,是操作参数test2和test4的响应。那么从snmp数据消息中取出相应的数据填充到STRUCT_OAM_MSG结构体对象中,由业务层通过tcp传输再回复给管控设备。
[0095] 至此,转换程序完成消息转发流程,当管控设备向转换程序发送私有数据消息时,转换程序根据本地映射表,通过本文的消息转化方法,转化成snmp消息发送给snmp设备。Snmp设备回应的消息也通过本文的消息转化方法,转化成私有格式的消息,通过主控发送给手机app。手机app无需支持snmp相关协议,即可完成对snmp设备的管控操作。
[0096] 本发明实施例提供的数据格式转换的管理平台端和数据格式转换方法,作为业务层应用,不需要了解snmp的组包方法,只需要将私有的数据结构体和snmp操作类型以及操作的oid维护成一个本地映射表,通过填充私有的结构体,调用通用的转化函数,然后调用发送接口。底层的snmp通信平台就可以直接实现pdu包的组装并发送。接收的时候也只用接收snmp通信平台发过来的消息,利用通用结构将snmp消息转化成本地私有数据结构的消息。代码结构清晰,层次分明,可读性和可维护性都较好。
[0097] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0098] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。