一种snmp的单片机实现方法
【技术领域】
[0001]本发明涉及计算机网络管理技术领域,具体涉及一种snmp的单片机实现方法。
【背景技术】
[0002]简单网络管理协议(SNMP)是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题。
[0003]SNMP 通过定义 get-request、get-next-request、set-request、get-response 和trap五种操作来实现管理进程和代理进程之间的信息交互。在网络正常工作的情况下,SNMP可实现统计、配置和测试等功能;而在网络出现故障的情况下,可实现各种差错检测和恢复功能。
【发明内容】
[0004]本发明要解决的技术问题是:本发明基于SNMP所定义的5种操作,利用单片机来实现数据的组包、发送、接收和解包功能。使用单片机做SNMP数据处理,通过扩展外部RAM完成数据的组包、发送、接收和解包。
[0005]本发明所采用的技术方案为:
一种snmp的单片机实现方法,对象标识符OID自顶部开始以点分隔,所有的MIB变量都从1.3.6.1.2.1标识开始;组包算法将OID和要传送的值value转换成TLV形式进行发送;组包从低地址到高地址,发送时从高地址向低地址进行;其中,在TLV形式中,T为数据类型,L为数据V转换后所占的字节数,V为数据值;在数据接收端,解包算法将OID和值分离出来,解包时先判断同步位、地址和CRC校验是否正确,然后根据长度从前向后按照SNMP数据格式进行分析,并且给相应的变量值赋值。
[0006]所述方法具体实现步骤如下:
1)在组包算法中首先进行数据长度转换,长度表示将数据转化为TLV形式后V所占的字节数,若该值小于128,则用一个字节来表示长度,如果长度大于等于128则需要用多个字节来表示长度;其中第一个字节首位置1,后面7位表示数据所需字节数,随后的字节表示数据的实际长度;
2)系统中所传递的值都以字符形式传送,在响应时直接发送04H字符类型,OlH长度一个字节,再将要发送的值直接发送;
3)对变量绑定部分加上公共SNMP首部和get/set首部,组成SNMP层,在没有差错的情况下,只需一边移动指针,一边将相应的变量值赋给指针所指的地址中,然后将SNMP放入MAC层中,进行CRC校验值的计算,向上位机发送;
4)解包算法将OID和值分离出来,解包时先判断同步位、地址和CRC校验是否正确,然后根据长度从前向后按照SNMP数据格式进行分析,并且给相应的变量值赋值。
[0007]所述SNMP的报文格式包括:版本、共同体、PDU类型、请求标识符、差错状态、差错索引,其中:
版本字段写入所用SNMP的版本-1 ;
共同体是管理进程和代理进程之间的明文口令;
PDU字段根据rou的类型,填入O?4中的一个数字;
请求标识符是由管理进程设置的一个整数值,代理进程在发送get-response报文时也要返回此请求标识符;
差错状态是由代理进程回答时填入对应状态O?5中的一个数字;
差错索引字段是一个整数偏移量,指明当有差错发生时,差错发生在哪个参数。
[0008]本发明的有益效果为:
本发明基于SNMP所定义的5种操作,利用单片机来实现数据的组包、发送、接收和解包功能,使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长,还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题。
【附图说明】
[0009]图1为SNMP报文格式示意图;
图2为系统实现流程图;
图3为解包算法流程图。
【具体实施方式】
[0010]下面参照附图所示,通过【具体实施方式】对本发明进一步说明:
实施例1:
一种snmp的单片机实现方法,对象标识符OID自顶部开始以点分隔,所有的MIB变量都从1.3.6.1.2.1标识开始;组包算法将OID和要传送的值value转换成TLV形式进行发送;组包从低地址到高地址,发送时从高地址向低地址进行;其中,在TLV形式中,T为数据类型,L为数据V转换后所占的字节数,V为数据值;在数据接收端,解包算法将OID和值分离出来,解包时先判断同步位、地址和CRC校验是否正确,然后根据长度从前向后按照SNMP数据格式进行分析,并且给相应的变量值赋值。
[0011]实施例2:
如图2所示,在实施例1的基础上,本实施例所述方法具体实现步骤如下:
1)在组包算法中首先进行数据长度转换,长度表示将数据转化为TLV形式后V所占的字节数,若该值小于128,则用一个字节来表示长度,如果长度大于等于128则需要用多个字节来表示长度;其中第一个字节首位置1,后面7位表示数据所需字节数,随后的字节表示数据的实际长度;
2)系统中所传递的值都以字符形式传送,在响应时直接发送04H字符类型,OlH长度一个字节,再将要发送的值直接发送;
3)对变量绑定部分加上公共SNMP首部和get/set首部,组成SNMP层,在没有差错的情况下,只需一边移动指针,一边将相应的变量值赋给指针所指的地址中,然后将SNMP放入MAC层中,进行CRC校验值的计算,向上位机发送; 4)解包算法将OID和值分离出来,解包时先判断同步位、地址和CRC校验是否正确,然后根据长度从前向后按照SNMP数据格式进行分析,并且给相应的变量值赋值,解包的整个过程如图3所示。
[0012]实施例3:
如图1所示,在实施例1或2的基础上,本实施例所述SNMP的报文格式包括:版本、共同体、PDU类型、请求标识符、差错状态、差错索引,其中:
版本字段写入所用SNMP的版本-1,即对于SNMPvl,则需填入O值;
共同体是管理进程和代理进程之间的明文口令,通常写入“public”;
PDU字段根据rou的类型,填入O?4中的一个数字;
请求标识符是由管理进程设置的一个整数值,代理进程在发送get-response报文时也要返回此请求标识符;
差错状态是由代理进程回答时填入对应状态O?5中的一个数字;
差错索引字段是一个整数偏移量,指明当有差错发生时,差错发生在哪个参数。
[0013]以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
【主权项】
1.一种snmp的单片机实现方法,其特征在于:对象标识符OID自顶部开始以点分隔,所有的MIB变量都从1.3.6.1.2.1标识开始;组包算法将OID和要传送的值value转换成TLV形式进行发送;组包从低地址到高地址,发送时从高地址向低地址进行;在数据接收端,解包算法将OID和值分离出来,解包时先判断同步位、地址和CRC校验是否正确,然后根据长度从前向后按照SNMP数据格式进行分析,并且给相应的变量值赋值。2.根据权利要求1所述的一种snmp的单片机实现方法,其特征在于,所述方法具体实现步骤如下: 1)在组包算法中首先进行数据长度转换,长度若小于128,则用一个字节来表示长度,如果长度大于等于128则需要用多个字节来表示长度;其中第一个字节首位置1,后面7位表示数据所需字节数,随后的字节表示数据的实际长度; 2)系统中所传递的值都以字符形式传送,在响应时直接发送04H字符类型,OlH长度一个字节,再将要发送的值直接发送; 3)对变量绑定部分加上公共SNMP首部和get/set首部,组成SNMP层,在没有差错的情况下,只需一边移动指针,一边将相应的变量值赋给指针所指的地址中,然后将SNMP放入MAC层中,进行CRC校验值的计算,向上位机发送; 4)解包算法将OID和值分离出来,解包时先判断同步位、地址和CRC校验是否正确,然后根据长度从前向后按照SNMP数据格式进行分析,并且给相应的变量值赋值。3.根据权利要求1或2所述的一种snmp的单片机实现方法,其特征在于:所述SNMP的报文格式包括:版本、共同体、PDU类型、请求标识符、差错状态、差错索引,其中: 版本字段写入所用SNMP的版本-1 ; 共同体是管理进程和代理进程之间的明文口令; PDU字段根据rou的类型,填入O?4中的一个数字; 请求标识符是由管理进程设置的一个整数值,代理进程在发送get-response报文时也要返回此请求标识符; 差错状态是由代理进程回答时填入对应状态O?5中的一个数字; 差错索引字段是一个整数偏移量,指明当有差错发生时,差错发生在哪个参数。
【专利摘要】本发明公开了一种snmp的单片机实现方法,对象标识符OID自顶部开始以点分隔,所有的MIB变量都从1.3.6.1.2.1标识开始;组包算法将OID和要传送的值value转换成TLV形式进行发送;组包从低地址到高地址,发送时从高地址向低地址进行;在数据接收端,解包算法将OID和值分离出来,解包时先判断同步位、地址和CRC校验是否正确,然后根据长度从前向后按照SNMP数据格式进行分析,并且给相应的变量值赋值。本发明利用单片机来实现数据的组包、发送、接收和解包功能,使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长,还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题。
【IPC分类】H04L12/24
【公开号】CN105162615
【申请号】CN201510426439
【发明人】马晓光, 吴登勇, 陈乃阔
【申请人】山东超越数控电子有限公司
【公开日】2015年12月16日
【申请日】2015年7月20日