一种提高snmp数据传输效率的方法

文档序号:7871349阅读:370来源:国知局
专利名称:一种提高snmp数据传输效率的方法
技术领域
本发明所属网络中SNMP (Simple Network Management Protocol,简单网络管理协议)数据传输效率的提高方法。
背景技术
SNMP作为业界实际上的开放网络管理标准,取得了巨大的成功,几乎所有的现代网络设备都提供了 SNMP服务。然而,由于追求简单和容易实现导致了 SNMP协议对大数据获取的低效和网络带宽的低利用特性,成为SNMP协议被人诟病的一个主要因素。

发明内容
本发明所要解决的技术问题是:提供一种提高SNMP数据传输效率的方法,该方法对于使用SNMP协议管理大量设备,尤其是对大数据量的访问和配置提供了一种简洁高效的方法。本发明所采用的技术方案是:一种提高SNMP数据传输效率的方法,其包括:SI)首先对网管系统中需要绑定的对象进行分类;S2)按照分类将复数个对象名合并成一个拼接后的对象名;S3)将拼接前对象名的相应对象值按照合并顺序拼接在一起;S4)返回步骤S2,直至拼接完所有的对象名和对象值;S5)将上述拼接后的名值对组装到SNMP报文中进行传输。所述的方法,在步骤S3中,对拼接后的对象值还采用ZLIB法进行压缩。所述的方法,在步骤S3中,拼接之后去掉对象值的类型、长度标识符。所述的方法,步骤S3拼接时,若对象值为简单变量类型,则按照预定的顺序直接组合各对象值。所述的方法,步骤S3拼接时,若对象值为表变量,则各对象值按照各对象值的表列数直接逐行拼接在一起,并在拼接后的对象值中设置一个行数目标识。本发明的优点:采用了合并数据对象和值的方法,缩减了大量的请求对象和值对象TLV结构中TL,同时对有效载荷使用了压缩算法,提高了数据的传输效率。


图1是SNMP消息格式。图2是TLV结构。图3是get变量绑定。图4 是 get-response 变量绑定。图5是简单变量对象绑定。图6是表变量绑定。 图7是压缩后的数据包格式。
图8是修改后的变量绑定PDU格式。图2中的Class表示类别、Format表示形式、Number表示类别编号;图5的Message表示报文信息,Version表示版本,Community表示团体名。
具体实施例方式为了提高SNMP数据传输效率,本文提出一种解决方法。 数据压缩由于SNMP消息报文采用的BER(Basic Encoding Rules,基本编码规则)编码在空间特性上的低效导致获取大数据量的时候会造成冗余数据的出现,所以有必要对SNMP消息进行压缩; 合并请求对象在进行大数据量获取的请求报文时,可以将多个相关请求对象合并到一个请求对象中,从而减少设备和管理程序间的交互次数,减少网络通信量,提高数据传输效率。SNMP报文由版本号,SNMP共同体名和协议数据单元(PDU)组成。协议数据单元则根据PDU类型不同而略有差异。但协议数 据单元中变量绑定列表中携带的数据是有效的载荷。变量绑定表是一个名值对列表,即每个变量名之后便是该变量名的值,一一对应。SNMP报文格式如图1所示。图中:GetRequestPDU操作:从代理进程处提取一个或多个参数值;GetNextPDU操作:从代理进程处提取紧跟当前参数值的下一个参数值;SetRequestPDU操作:设置代理进程的一个或多个参数值;GetResponsePDU操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。SNMP协议采用了 BER编码,基于TLV (Type-Length-Value,类型-长度-数据值)的结构方法(见下图2)。对于协议数据单元中的变量绑定部分,每个变量名和相应的值都需要有TLV的结构,针对各种不同的数据类型Tag (Type)均有不同定义。例如查询一个对象(1.3.6.1.2.1.1.5.0)的字符串值(6字节),在get (从代理进程处提取一个或多个参数值)/get-response (返回的一个或多个参数值)数据包中按照TLV方法,get/get-response数据包中数据绑定部分格式分别如图3、4所示。从上述变量绑定的数据格式中可以看出,在传输get/getresponse/set (设置代理进程的一个或多个参数值)/set_response (返回的一个或多个设置结果)数据包时,TLV格式中的Tag/Length字段和变量名字段占有效载荷的数据量比较大,真正查询的结果只占据了 6个字节,而整个载荷数据达到了 18个字节。当查询大批数据时,这样的效率非常低。一般系统定义变量时已经可以明确变量值的类型及范围,鉴于以上的原因,修改变量绑定中名值对,直接将多个对象合并成一个对象,相应的值也拼接到一起,这样节省了多个变量名的数据,同时也节省了大部分值TLV结构中的TL部分。改善的方法分两种情况,简单变量对象和表变量对象。1.简单变量对象:将属性相近的简单变量组合到一起,按照预定的顺序组织成数据包。修改后的请求报文格式如图5所示。
将多个简单变量对象的请求合并成对单个简单变量的请求,返回的值直接按照简单变量对象的顺序拼接成字符串的值,在管理程序和SNMP代理分别负责按照顺序来解析多个简单变量的值。在这里变量名的数据格式还是TLV格式,所有拼接在一起的值作为变量名的值,因此只有一个TL的前缀。按照SNMP协议多个变量绑定的PDU格式,如图1的变量绑定表所示,其中每个名字和值都是TLV的格式,即每个名字和值都是一个TLV结构。修改后的变量绑定PDU格式如图5所示,修改后,这里只有一对名和值,即指包含两个TLV的结构,名字为TLV结构,值I到值η为另一个TLV结构,其中值I到值η的长度和顺序需设备和管理侧定义,设备和管理侧均按照定义的长度和顺序进行拼接和解析数据。2.表变量:将表中变量名合并成一个,值按照行/列的形式拼接成一个值。修改后的报文格式如图6所示。将所有表变量对象的请求合并成对个简单变量的请求,值直接按照表变量值的顺序(按行顺序,每行按列顺利)拼接成字符串的值,在拼接值的头部添加行数目标识。在管理程序和SNMP代理分别负责按照顺序来解析多行多列表变量的值。在这里变量名的数据格式还是TLV格式,所有拼接在一起的值作为变量名的值,因此只有一个TL的前缀。按照SNMP协议多个变量绑定的PDU格式,如图1的变量绑定表所示,其中每个名字和值都是TLV的格式,即每个名字和值都是一个TLV结构。修改后的变量绑定PDU格式如图8所示,修改后,这里只有一对名和值,即指包含两个TLV的结构,名字为TLV结构;行数量,以及行I值I 一直到行η值η为另一个TLV结构,这里行条目数定义了后面的数据中包含了多少行的数据,行I值I到行I值η则定义了一行的数据结构,数据的长度和顺序需设备`和管理侧定义,设备和管理侧均按照定义的长度和顺序进行拼接和解析数据。从上述两种形式上看,假设查询或者设置所有变量名使用的字节数为Α,值所占的字节数为V,同时合并的变量名数量为η,那么在使用标准SNMP报文是变量绑定表所需字节数为:(1+1+Α) *n+(l+l+V)*n修改后所使用的字节数:(1+1+A)+(1+1+V*n)两者比较,修改后可以少用字节数量为:(A+4)*(n_l)如下表I所示,假定A=10,V=2,那么当随着η增大时,对比两者使用的字节数,不难可以看出,当合并的变量名越多,节省的空间百分比越大。表I
权利要求
1.一种提高SNMP数据传输效率的方法,其特征在于包括: 51)首先对网管系统中需要绑定的对象进行分类; 52)按照分类将复数个对象名合并成一个拼接后的对象名; 53)将拼接前对象名的相应对象值按照合并顺序拼接在一起; 54)返回步骤S2,直至拼接完所有的对象名和对象值; 55)将上述拼接后的名值对组装到SNMP报文中进行传输。
2.根据权利要求1所述的方法,其特征在于:在步骤S3中,对拼接后的对象值还采用ZLIB法进行压缩。
3.根据权利要求1所述的方法,其特征在于:在步骤S3中,拼接之后去掉对象值的类型、长度标识符。
4.根据权利要求1所述的方法,其特征在于:步骤S3拼接时,若对象值为简单变量类型,则按照预定的顺序直接组合各对象值。
5.根据权利要求1所述的方法,其特征在于:步骤S3拼接时,若对象值为表变量,则各对象值按照各对象值的表列数直接逐行拼接在一起,并在拼接后的对象值中设置一个行数目标识。
全文摘要
本发明提供了一种提高SNMP数据传输效率的方法,其包括S1)首先对网管系统中需要绑定的对象进行分类;S2)按照分类将复数个对象名合并成一个拼接后的对象名;S3)将拼接前对象名的相应对象值按照合并顺序拼接在一起;S4)返回步骤S2,直至拼接完所有的对象名和对象值;S5)将上述拼接后的名值对组装到SNMP报文中进行传输。该方法对于使用SNMP协议管理大量设备,尤其是对大数据量的访问和配置提供了一种简洁高效的方法。
文档编号H04L12/24GK103117872SQ201210594570
公开日2013年5月22日 申请日期2012年12月31日 优先权日2012年12月31日
发明者顾春荣 申请人:广东东研网络科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1