简单网络管理协议中数据包传送的可靠性保证方法

文档序号:7937417阅读:310来源:国知局
专利名称:简单网络管理协议中数据包传送的可靠性保证方法
技术领域
本发明涉及一种网络管理技术,更确切地说是涉及一种在简单网络管理协议(SNMP)中,基于用户数据报协议(UDP)的TRAP包(SNMP五条命令中的一条,由设备发起,主要用于告警信息的主动上报)传送的可靠性保证方法。
背景技术
SNMP TRAP数据包是基于UDP协议进行传送的,而由于UDP协议本身没有检验与重发机制,在传送过程中就会经常发生丢失数据包的现象,即不能保证数据传送的完整性,也就不能保证网管与设备之间TRAP数据的一致性。

发明内容
本发明的目的是设计一种简单网络管理协议中数据包传送的可靠性保证方法,用于实现SNMP TRAP的校验机制,可以保证SNMP TRAP在传送过程中,如果发生丢失现象,能够及时发现并要求重发,从而保证网管与设备之间TRAP数据的一致性。
本发明的技术方案不是保证SNMP TRAP在传送过程中不丢包,而是保证SNMP TRAP在丢包后能够被接收侧及时发现,进而要求发送源设备侧(Agent为使用SNMP协议的设备)进行重发。
实现本发明目的的技术方案是这样的一种简单网络管理协议中数据包传送的可靠性保证方法,其特征在于包括A.发送源端为每一个TRAP数据包按发送顺序进行连续编号,该编号随TRAP数据包一起发送;
B.接收端判断接收TRAP数据包的编号连续性,当TRAP数据包的编号不连续时,要求发送源端重发编号缺少的TRAP数据包。
所述的步骤A进一步包括在网管系统启动时将编号的初始化比较基准参数设置为零;所述的步骤B进一步包括;b1.从接收的TRAP数据包中提取出编号;b2.将提取出的编号与校验缓冲区中的编号进行比较,根据比较结果进行处理,包括;b21.当提取出的编号与校验缓冲区中的编号相等时,作删除校验缓冲区中该编号的操作;b22.当提取出的编号与校验缓冲区中的编号不相等时,进一步判断编号的比较基准参数是否为零;b23.当编号的比较基准参数不为零时,进一步判断编号的比较基准参数加1是否等于当前从TRAP数据包中提取出的编号;b24.当编号的比较基准参数加1不等于当前从TRAP数据包中提取出的编号时,进一步判断当前从TRAP数据包中提取出的编号是否小于编号的比较基准参数;b25.当当前从TRAP数据包中提取出的编号大于编号的比较基准参数时,将编号的比较基准参数与当前从TRAP数据包中提取出的编号之间缺少的编号写入所述的校验缓冲区中;b26.步骤b22、b23中,当编号的比较基准参数为零时,或者编号的比较基准参数不为零但编号的比较基准参数加1等于当前从TRAP数据包中提取出的编号时,或者在执行完步骤b25后,都让编号的比较基准参数等于当前从TRAP数据包中提取出的编号;b27.步骤b24中,当当前从TRAP数据包中提取出的编号小于编号的比较基准参数时,或在执行完步骤b21、b26后,结束校验处理;
b28.网管系统检查所述校验缓冲区中的编号,向发送源端请求发送与编号对应的TRAP数据包。
还包括为所述校验缓冲区中的各编号对应设置定时器;步骤b21中,在删除校验缓冲区中的编号时,同时删除与该编号相对应的定时器;在步骤b25中,将缺少的编号写入校验缓冲区的同时启动与这些编号相对应的定时器;在步骤b28中,所述的网管系统是按预置的时间周期检查校验缓冲区中与各编号对应的定时器,当定时器超过指定时间时,向发送源端请求发送与编号对应的TRAP数据包,同时将该定时器清零,当与编号对应的定时器没有超过指定时间时,只对定时器作加1操作。
所述的连续性编号是流水号,在发送源端每次重新启动时从头开始编号。
所述的流水号是用无符号长整型表示的,以步长1连续编号。
所述的编号插入在TRAP数据包的自定义变量绑定字段中进行传送。
本发明的方法是通过插入在TRAP数据包字段中的编号的连续性来判断SNMPTRAP是否丢失的技术方案;该编号的概念是流水号;网管系统通过处理该流水号的连续性,可以判断出丢失的TRAP数据包,并要求发送源端就丢失的TRAP数据包进行重发。
本发明的技术是为了解决SNMP TRAP数据包在传送过程中的丢包现象而设计的,其基本设计方案是在发送SNMP TRAP时插入简称为流水号的顺序编号,接收端接收到SNMP TRAP数据包后,判断流水号是否连续,如果不连续,则表明缺少的流水号所代表的TRAP数据包在传送过程中丢失,需要发送源端(Agent)重新发送该TRAP。
SNMP TRAP数据包采用UDP协议进行传送,但该协议本身没有检验与重发机制,本发明的方法弥补了这一缺陷,实现了SNMP TRAP的校验机制,可以保证及时发现SNMP TRAP数据包在传送过程中的丢包现象并要求发送源端重发,从而保证了网管与设备之间TRAP数据的一致性。
本发明的方法改变了传统的仅在协议层对发送报文加序号的方法,而是在应用层对发送报文加连续编号的流水号,使报文发送与接收仍可使用UDP协议,且获得传送可靠性保证。


图1是在发送SNMP TRAP时,在VB字段中加入流水号的示意图;图2是本发明判断SNMP TRAP数据包是否丢失的流程框图。
具体实施例方式
本发明所涉及的编号即流水号,是发送源端设备(Agent)对顺序发送的每一个Trap数据包所作的唯一性编号。发送源端设备(Agent)在网管系统每次重新启动后从1开始编号,流水号使用一个无符号长整型来表示,以步长1连续编号,例如1,2,3,4....。网管系统的接收端设备在接收到SNMP TRAP数据包后,依靠流水号的连续性来判断是否接收到所有的TRAP数据包,并对不连续编号的部分要求发送源端进行重发。
参见图1,发送源端(Agent)在发送每一个SNMP TRAP数据包时,在变量绑定字段(VBVariable Binding)中加入流水号,如图中将流水号放置在第一个VB字段,该变量绑定字段是自定义字段(TRAP数据报文中有一部分内容是由协议设置好的,其中的VB则可以由用户自定义)。包括流水号,值(Value)和从2开始至n的对象(Object)与值。
网管系统在接收到TRAP数据包后,从VB字段中取出流水号,并且根据流水号的连续性判断TRAP数据包有否丢失,并请求发送源端对丢失的TRAP数据包进行重发。实施时,整个过程可使用两个线程完成。
图2所示是线程1的处理流程。
步骤201,网管系统启动时初始化TRAP校验的参数,将流水号的比较基准参数设置为0(此处的流水号比较基准参数是一个变量,由于在本发明方案中,只要系统最新接收的TRAP的流水号大于该流水号比较基准,就将接收的新的TRAP的流水号赋值给流水号比较基准,因此流水号比较基准总是系统接收到的TRAP的最大流水号);步骤202、203,网管系统对从Agent处接收的SNMP TRAP进行解码,并从Virable Binding(简称VB)中获得其流水号;步骤204,检查校验缓冲区,判断校验缓冲区中是否存在与当前接收到的TRAP数据包的流水号相等的流水号(在本发明的技术方案中,设置校验缓冲区是用于记录不连续的流水号的,即在发现流水号有不连续的情况时,就将不连续的这部分流水号写入校验缓冲区中。因此校验缓冲区是一个队列,如果被校验的TRAP已经上报,则将与之对应的流水号从校验缓冲区中删除,否则这些流水号一直保存在校验缓冲区中);步骤205,如果校验缓冲区中存在有与当前接收到的TRAP数据包流水号相等的流水号,说明接收到的TRAP是通过校验重新上报的内容,则删除校验缓冲区中的这个流水号及其对应的定时器,删除以后就不再对这条TRAP进行校验了(此处的流水号相等是表明新接收到的TRAP是通过校验重新上报的TRAP);步骤206,如果步骤204中判断的校验缓冲区中没有与当前接收到的TRAP数据包流水号相等的流水号,则进一步判断目前流水号的比较基准参数是否为0;步骤207,如果步骤206中判断的校验缓冲区中的流水号比较基准参数为0,表明是网管系统启动后接收到的第一帧SNMP TRAP数据包,因为第一帧数据没有“连续”的概念,也无法通过本发明的方法进行校验,因而不作校验,而是将该TRAP数据包的流水号作为后续比较的基准,即让流水号比较基准参数=当前接收到的TRAP数据包流水号;步骤208,如果步骤206中判断的流水号比较基准参数不为0,则进一步判断流水号比较基准参数+1是否等于当前接收到的TRAP数据包的流水号,如果相等,说明接收到的TRAP数据包的流水号是连续的,TRAP数据包没有丢失,无需进行校验,继续执行步骤207;
步骤209,如果步骤208中判断流水号的比较基准参数+1不等于当前接收到的TRAP数据包流水号,则进一步判断接收到的TRAP流水号是否小于流水号比较基准参数,如果接收到的TRAP流水号小于流水号比较基准参数,说明接收到的TRAP数据包是通过校验重新上报的内容,即以前曾经上报过的内容,属于重复上报的TRAP,是正常的,无需校验,执行步骤211,直接进行后续其他处理;步骤210,如果步骤209中判断接收到的TRAP数据包的流水号大于流水号比较基准参数,则将流水号比较基准参数与当前TRAP数据包流水号之间缺少的流水号写入校验缓冲区,并启动针对这些流水号的定时器,然后执行步骤207,将接收到的该TRAP的流水号作为后续比较的基准。
步骤211,在执行完步骤205、207后,和在执行步骤209时,判断接收到的TRAP流水号小于流水号比较基准参数时,则可进行后续的其它操作,因不属于本发明的技术内容,故不再赘述。
本发明实施例第二线程的处理流程是网管系统周期性地定时(如每秒检查一次)检查校验缓冲区,对于超过指定时间(该指定时间可根据网络的实际情况由用户预先设置)的流水号,向发送源端(Agent)发送要求重新发送与该流水号对应的TRAP数据包的命令,同时将与该流水号对应的定时器清零,而对于没有超时的流水号,则将其对应的计时器作+1处理。如设置的指定时间是3秒,当校验缓冲区中记录的与一流水号对应的计时器小于3秒时,只对该定时器作加1操作;当校验缓冲区中记录的与一流水号对应的计时器大于等于3秒时,则在该检查周期中,向发送源端发送要求重新发送该流水号的TRAP数据包,并同时将与该流水号对应的定时器清零。也即检验缓冲区中只记录没有收到的TRAP数据包的流水号,是丢失的需要重发的TRAP数据包的流水号(由于通过UDP协议发送TRAP不能保证发送的先后顺序,因此agent先发送的TRAP可能后收到,所在判断TRAP是否丢失需要一个延时,不可能发现丢失立即重发)。
图2所示实施例中,如果不要求在一定时间后向发送源端请求发送与校验缓冲区中编号对应的TRAP数据包,则可不为校验缓冲区中编号对应设置定时器,上述步骤205中,无需在删除流水号的同时删除对应的定时器,上述步骤210中,在将缺少的流水号写入校验缓冲区中时,也不必启动定时器。相应地,网管系统检查校验缓冲区时,发现校验缓冲区中有编号,则向发送源端(Agent)发送要求重新发送与该流水号对应的TRAP数据包的命令。
本发明的方法针对SNMP TRAP采用UDP协议进行传送,而UDP协议本身没有校验与重发机制,因此会出现TRAP丢包现象,也即不能保证SNMP TRAP可靠性的问题而设计,可以应用于使用SNMP协议进行通信的设备与网络管理设备中,以保证SNMP TRAP数据报文的可靠传送。
本发明的方法还可用于其它的协议本身没有检验与重发机制的数据包传送中,以保证可靠传送。
权利要求
1.一种简单网络管理协议中数据包传送的可靠性保证方法,其特征在于包括A.发送源端为每一个TRAP数据包按发送顺序进行连续编号,该编号随TRAP数据包一起发送;B.接收端判断接收TRAP数据包的编号连续性,当TRAP数据包的编号不连续时,要求发送源端重发编号缺少的TRAP数据包。
2.根据权利要求1所述的一种简单网络管理协议中数据包传送的可靠性保证方法,其特征在于所述的步骤A进一步包括在网管系统启动时将编号的初始化比较基准参数设置为零;所述的步骤B进一步包括;b1.从接收的TRAP数据包中提取出编号;b2.将提取出的编号与校验缓冲区中的编号进行比较,根据比较结果进行处理,包括;b21.当提取出的编号与校验缓冲区中的编号相等时,作删除校验缓冲区中该编号的操作;b22.当提取出的编号与校验缓冲区中的编号不相等时,进一步判断编号的比较基准参数是否为零;b23.当编号的比较基准参数不为零时,进一步判断编号的比较基准参数加1是否等于当前从TRAP数据包中提取出的编号;b24.当编号的比较基准参数加1不等于当前从TRAP数据包中提取出的编号时,进一步判断当前从TRAP数据包中提取出的编号是否小于编号的比较基准参数;b25.当当前从TRAP数据包中提取出的编号大于编号的比较基准参数时,将编号的比较基准参数与当前从TRAP数据包中提取出的编号之间缺少的编号写入所述的校验缓冲区中;b26.步骤b22、b23中,当编号的比较基准参数为零时,或者编号的比较基准参数不为零但编号的比较基准参数加1等于当前从TRAP数据包中提取出的编号时,或者在执行完步骤b25后,都让编号的比较基准参数等于当前从TRAP数据包中提取出的编号;b27.步骤b24中,当当前从TRAP数据包中提取出的编号小于编号的比较基准参数时,或在执行完步骤b21、b26后,结束校验处理;b28.网管系统检查所述校验缓冲区中的编号,向发送源端请求发送与编号对应的TRAP数据包。
3.根据权利要求2所述的一种简单网络管理协议中数据包传送的可靠性保证方法,其特征在于还包括为所述校验缓冲区中的各编号对应设置定时器;步骤b21中,在删除校验缓冲区中的编号时,同时删除与该编号相对应的定时器;在步骤b25中,将缺少的编号写入校验缓冲区的同时启动与这些编号相对应的定时器;在步骤b28中,所述的网管系统是按预置的时间周期检查校验缓冲区中与各编号对应的定时器,当定时器超过指定时间时,向发送源端请求发送与编号对应的TRAP数据包,同时将该定时器清零,当与编号对应的定时器没有超过指定时间时,只对定时器作加1操作。
4.根据权利要求1所述的一种简单网络管理协议中数据包传送的可靠性保证方法,其特征在于所述的连续性编号是流水号,在发送源端每次重新启动时从头开始编号。
5.根据权利要求4所述的一种简单网络管理协议中数据包传送的可靠性保证方法,其特征在于所述的流水号是用无符号长整型表示的,以步长1连续编号。
6.根据权利要求1所述的一种简单网络管理协议中数据包传送的可靠性保证方法,其特征在于所述的编号插入在TRAP数据包的自定义变量绑定字段中进行传送。
全文摘要
本发明涉及一种简单网络管理协议(SNMP)中TRAP数据包传送的可靠性保证方法。SNMP TRAP数据包是基于UDP协议传送的,由于UDP协议本身没有检验与重发机制,在传送过程中就会经常发生丢失数据包的现象,不能保证数据传送的完整性,即不能保证网管与设备之间TRAP数据的一致性。本发明的方法用于实现SNMP TRAP的校验机制,可以保证SNMP TRAP在传送过程中,能够及时发现TRAP的丢失并要求重发。包括发送源端为每一个TRAP数据包按发送顺序进行连续的流水编号,该流水编号插入在TRAP数据包的VB字段中一起发送;接收端判断接收的TRAP数据包的编号连续性,当TRAP数据包的编号不连续时,要求发送源端重发编号缺少的TRAP数据包。
文档编号H04L29/06GK1503535SQ02149439
公开日2004年6月9日 申请日期2002年11月20日 优先权日2002年11月20日
发明者贺培成, 杜华坤, 梅新华, 吴蒙 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1