返回
关于SNMP中OID压缩算法的研究

关于SNMP中OID压缩算法的研究

时间:2009-6-19 23:43:17  [下载该文章]  [会员注册]
关于snmp中oid压缩算法的研究【摘要】snmp协议已经成为事实上的开放网络管理协议,并取得巨大的成功。但是由于snmp协议过度强调了设计的易实现性。而导致其在大数据获取操作和网络带宽利用上的很多不足。本文在介绍业界提出一种压缩snmp消息中oid的算法(oidprefipression),在此基础上并且根据压缩特征提出了另一种算法(oidsubstitutionpression)。关键词简单网络管理协议objectidentifier消息压缩.1.引言snmp(simplenetworkmanagementprotocol)[1]作为业界实际上的开放网络管理标准,取得了巨大成功,几乎所有的现代网络设备都提供了snmp服务。然而,由于追求简单和容易实现导致了snmp协议对大数据获取的低效性和网络带宽的低利用特性,成为snmp协议成为被人诟病的一个主要因素。提出snmp消息压缩算法主要是基于以下考虑:61548同时由于snmp消息报文采用的ber编码在空间特性上的低效导致在获取大数据量的时候的会造成冗余数据的出现,所以有必要提出snmp消息压缩算法。61548同时由于进行消息压缩,可以在进行大数据量获取的请求报文的时候,插入更多的请求对象(oid),从而减少两者的交互,减少网络通信量。61548由于snmp消息本身采用了加密算法,导致其数据变得更加具有随机性,增加了下层网络的压缩的难度[2]。所以在加密之前就直接对snmp消息压缩,有助于避免这种情况的出现。2.snmp协议2.1.协议简述snmp采用了常用的c/s结构,集中式管理信息的方式。在snmp语境中client指的是networkmanager,而server则指的是安装在网络设备上的snmpagent,两者负责不同的功能。snmpagent主要负责收集被管理的设备的数据,存储在本地。而networkmanager则负责从发现snmpagent,轮询snmpagent收集数据,分析整理数据,最终得到整个网络的情况。图表1一个典型snmp通信协议栈图2.2.mib定义mib(managedinformationbase)管理信息库,用来定义snmpmessage中交换的信息。ietf专门为mib定义规定了一系列语法,称为smi(structuremanagedinformation)在文档[2]详细介绍了mib中各种数据结构的定义,以及数据直接之间的关系。在此我们只简要介绍一下objectidentifier变量的定义。对于snmp来说,mib中的每一个变量都有对应着一个objectidentifier,并且所有变量之间是树型关系。在树中每一个节点,我们都给他编号,从根节点开始,按照一定的顺序,最终我们可以使用一组数字来确定和表示mib中定义的一个变量。在图表2中,mgmt:=iso(1).org(3).dod(6).internet(1).mgmt(2),或者我们可以直接用1.3.6.1.2.来表示mgmt变量。2.3.snmp消息格式由于在前期设计snmp协议尽的要求简单,snmp只有设计一共6种数据原语操作,gerrequest,getnetrequest,getbulkrequest,reponserequest,trap,inform。从snmpv2[2]以后,所有的原语采用同一种数据格式来封装。图表2部分mib2树图表3snmpmessage3.objectidentifier压缩算法3.1.oidprefipression(opc)从统计规律上看,大部分variableoid都具有一定的关联性,也就是说都具有相同的前缀,这种特性使得我们可以采用合并前缀的方法来进行oid压缩。根据文档[4],每个变量的oid长度最大不超过128。我们采用将根据以下算来实现oid压缩。首先,选取一个作为锚定的目标不做任何压缩,然后根据以下公式对后续的oid进行压缩。1.选定一个oid作为锚定的oid,对其不做任何压缩处理。2.找到后续oid的中第一个不同第subidentifier,其位置记为sdiv.3.将sdiv拆分成两个subidentifier,s1,s2s1=sdiv/40,s2=sdiv。其中s1isin[0,2],s2isin[0,39].4.s3=后续oid中从从第一个不同的subidentifier后所有的subidentifier。则后续oid压缩成s1.s2.s35.将此oid作为锚定的oid,转到步骤2。举例:原始编码:1.3.6.1.2.1.1.1.0sysuptime.01.3.6.1.2.1.2.2.1.8.1ifoperstatus.11.3.6.1.2.1.2.2.1.8.2ifoperstatus.21.3.6.1.2.1.2.2.1.10.1ifinoctets.11.3.6.1.2.1.2.2.1.10.2ifinoctets.2压缩编码之后:1.3.6.1.2.1.1.1.00.7.2.2.1.8.10.11.20.10.10.10.11.2适用范围从opc算法的特性来看,是不断的将后续的oid与锚定的oid比较,算出出现不同subidentifier的位置来进行压缩,该算法比较适合只适用在以简单的字段作为索引的mibtable中实现列遍历的数据获取操作,比如iftable中获取所有的ifinoctets。如果要对某一行数据进行操作的时候,根据mibtable中oid生成规则,仍然会生成大量的冗余oid编码。比如:1.3.6.1.2.1.4.1.22.1.2.1.192.147.142.35ipnettomediaphysaddress.1.192.147.142.351.3.6.1.2.1.4.1.22.1.4.1.192.147.142.35ipnettomediaphystype.1.192.147.142.35由于两者处于同一行的不同列,而oid生成规则要求将列标识考虑进去,因而造成了从列标识和后面的实例表示都要编码,而造成oid编码冗余,在下面一节我们将提出一种算法来解决这个问题。3.2.oidsubstitutionpression为了弥补opc算法对于行数据操作的低效性,和为了继承opc算法在列遍历上的优势和算法本身的简单性和易实现性,我们提出一种简单的算法oidsubstitutionpression(osc)。和opc一样也是不断通过与前一个oid比较来实现对两者不同的subidentifier进行编码,从而达到压缩oid的目的。61548压缩规则1.一位简单subidentifier替换sofetbercodingoids用一个字节来表示,指明被压缩的oid与前一个oid不同的subidentifier的位置。由于oid长度小于128,所以s的范围是00007f。000表示第一个subidentifier。bercodingoid是在被压缩的oid中与前一个oid不同的subidentifier的ber编码。2.指定范围subidentifiers替换,sofetrlenhbercodingoids表征指明被压缩的oid与前一个oid不同的第一个subidentifier的位置。s的取值范围是0800ff,其中080表示第一位。r表示在被压缩的oid不同的subidentifier的长度,r取值范围是00107f。bercodingoid是在被压缩的oid中与前一个oid不同的一组subidentifiers的ber编码。算法流程图表4dpc编码(左)/解码(右)流程测试用例:1.单个subidentifier替换tcpconnstate.0.0.0.0.21.0.0.0.0.0=listen(2)tcpconnstate.0.0.0.0.22.0.0.0.0.0=listen(2)原始的ber编码压缩后的编码30:1806:13:2b:06:01:02:01:06:0d:01:01:00:00:00:00:15:00:00:00:00:0002:01:0230:1806:13:2b:06:01:02:01:06:0d:01:01:00:00:00:00:16:00:00:00:00:0002:01:0230:1806:13:2b:06:01:02:01:06:0d:01:01:00:00:00:00:15:00:00:00:00:0002:01:0230:072a:02:0e:1602:01:022.指定范围subidentifiers替换。tcpconnstate.134.169.34.190.50054.130.240.64.53.80=closewait(8)tcpconnstate.134.169.34.190.50366.212.185.76.85.80=closewait(8)原始的ber编码压缩后的编码30:1f06:1a:2b:06:01:02:01:06:0d:01:01:81:06:81:29:22:81:3e:83:87:06:81:02:81:70:40:35:5002:01:0830:1f06:1a:2b:06:01:02:01:06:0d:01:01:81:06:81:29:22:81:3e:83:89:3e:81:54:81:39:4c:55:5002:01:0830:1f06:1a:2b:06:01:02:01:06:0d:01:01:81:06:81:29:22:81:3e:83:87:06:81:02:81:70:40:35:5002:01:0830:102a:0b:8e:05:83:89:3e:81:54:81:39:4c:5502:01:08算法比较下面分别去两组样本使用原始编码(ber),和两种压缩算法opc,osc进行编码no:11.3.6.1.2.1.1.1.01.3.6.1.2.1.1.2.01.3.6.1.2.1.1.3.01.3.6.1.2.1.1.4.0no:2tcpconnstate.0.0.0.0.21.0.0.0.0.0tcpconnstate.0.0.0.0.22.0.0.0.0.0tcpconnstate.0.0.0.0.23.0.0.0.0.0tcpconnstate.0.0.0.0.98.0.0.0.0.0样本beropcoscno:140bytes25bytes22bytesno:284bytes48bytes33bytes4.结语由于snmp消息中的oid较高的关联特性,这两种snmp的压缩算法和原始消息比较都有比较高的压缩效率。由于osc算法的灵活性,导致在对mibtable的行操作上,以及在获取相关性不太强的oid对象压缩比例远远高于opc,但同时也由于编码的灵活性,导致实现上也较opc复杂:比如需要判断是否是简单替换,还是某个范围的替换,同时,由于在报文中由于可能同时存在压缩和没有压缩的oid,需要设置一个辩识为来确定该oid是否别压缩。应而我们可以在不同环境下综合使用这两中算法。,参考文献[1]case,j.,fedor,m.,schoftall,m.andj.david,asimplenetworkmanagementprotocol(snmp),std15,rfc1157,may1990.[2]r.presuhn,j.case,m.rose,s.waldbusserversion2oftheprotocoloperationsforthesimplenetworkmanagementprotocol(snmp),std62rfc3416,december2002.[3]d.perkins[4]k.mccloghrie,d.perkins,j.schoenwaelderstructureofmanagementinformationversion2(smiv2)std58,rfc2578,april1999[5]m.daniele,b.wijnen,m.ellison,ed,agentetensibility(agent)protocol,std63rfc2741,january2000[6]shacham,a.,monsour,r.,pereira,r.andm.thomas,ippayloadpressionprotocol,rfc2393,december1999aresearchonoidpressioninsnmpiaozhibinchenweijian(departmentocie,universityofelectronicscienceandtechnologyofchinachengdu610054)abstractsnmphasbecamedefactoopennetworkmanagementprotocol,andgainedgreatsuccess。however,asitecessivelyfocusingonfriendlyimplementationbringsitspoorperformanceonretrievinglargebulkdatndutilizingnetworkbandwidth.thispaperintroducesseveralkindsofoidpressionalgorithm,andproposesasimplebuteffectiveoidpressionalgorithm.keywordssnmpobjectidentifiermessagepression

>

相关推荐