《实现大量协议报文的发送方法和装置.pdf》由会员分享,可在线阅读,更多相关《实现大量协议报文的发送方法和装置.pdf(11页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN102347909A43申请公布日20120208CN102347909ACN102347909A21申请号201110372779622申请日20111122H04L12/5620060171申请人迈普通信技术股份有限公司地址610041四川省成都市高新区九兴大道16号迈普大厦72发明人张晓东汤宇浩黄建军74专利代理机构北京德琦知识产权代理有限公司11018代理人杨春香宋志强54发明名称实现大量协议报文的发送方法和装置57摘要本发明提供了一种实现大量协议报文的发送方法和装置。方法包括创建一个全局计数器,为全局计数器赋值为第一设定值;在创建协议实体时,为该协议实体生成一个计数。
2、器,计算全局计数器的当前值与第二设定值的和,将计算结果作为该计数器的当前值,判断计算结果是否大于或等于该协议实体允许的最大计数值,是则将全局计数器的当前值更新为第一设定值,否则将全局计数器的当前值更新为所述计算结果;定期遍历已创建的协议实体,针对遍历到的协议实体,计算该协议实体的计数器的当前值与第三设定值的差,判断该计算结果是否等于第四设定值,如果是,触发该协议实体发送协议报文,并将该协议实体允许的最大计数值作为该协议实体的计数器的当前值。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书5页附图3页CN102347928A1/2页21一种实现大量协议报文的发送。
3、方法,其特征在于,该方法包括创建一个全局计数器,为所述全局计数器赋值为第一设定值;在创建每个协议实体时,先为该协议实体生成一个计数器,并计算全局计数器的当前值与第二设定值的和,将计算结果作为该计数器的当前值,之后判断所述计算结果是否大于或等于该协议实体允许的最大计数值,如果是,将全局计数器的当前值更新为第一设定值,否则,将全局计数器的当前值更新为所述计算结果;定期遍历已创建的所有协议实体,针对遍历到的每一协议实体,计算该协议实体的计数器的当前值与第三设定值的差,判断该计算结果是否等于第四设定值,如果是,触发该协议实体发送协议报文,并将该协议实体允许的最大计数值作为该协议实体的计数器的当前值,否。
4、则,将该计算结果作为该协议实体计数器的当前值。2根据权利要求1所述的方法,其特征在于,当一协议实体允许的最大计数值发生变化时,该方法进一步包括A,比较所述全局计数器的当前值与变化后的最大计数值;B,如果前者小于后者,则计算所述全局计数器的当前值与所述第二设定值的和,将得到的结果作为该协议实体的计数器的当前值;C,如果前者大于或等于后者,将该协议实体的计数器的当前值更新为变化后的最大计数值。3根据权利要求2所述的方法,其特征在于,步骤B在将得到的结果作为该协议实体的计数器的当前值之后,进一步包括如果该得到的结果等于所述变化后的最大计数值,则将全局计数器的当前值更新为所述第一设定值,否则,将全局计。
5、数器的当前值更新为该得到的结果;步骤C进一步包括将全局计数器的当前值更新为所述第一设定值。4根据权利要求2所述的方法,其特征在于,所述协议实体允许的最大计数值依据该协议实体的报文发送间隔时间和设定的单位时间确定;所述协议实体允许的最大计数值发生变化,由该协议实体的报文发送间隔时间和/或设定的单位时间发生变化决定。5根据权利要求1所述的方法,其特征在于,所述定期遍历已创建的所有协议实体通过设置定时器实现,具体为启动所述定时器;在所述定时器的时间内遍历已创建的所有协议实体;当所述定时器超时时,重新启动所述定时器,返回在所述定时器的时间内遍历已创建的所有协议实体的操作。6一种实现大量协议报文的发送装。
6、置,其特征在于,该装置包括创建单元,用于创建一个全局计数器,为所述全局计数器赋值为第一设定值;第一更新单元,用于在创建每个协议实体时,先为该协议实体生成一个计数器,并计算全局计数器的当前值与第二设定值的和,将计算结果作为该计数器的当前值,之后判断所述计算结果是否大于或等于该协议实体允许的最大计数值,如果是,将全局计数器的当前值更新为第一设定值,否则,将全局计数器的当前值更新为所述计算结果;遍历单元,用于定期遍历已创建的所有协议实体,针对遍历到的每一协议实体,计算该权利要求书CN102347909ACN102347928A2/2页3协议实体的计数器的当前值与第三设定值的差,判断该计算结果是否等于。
7、第四设定值,如果是,触发该协议实体发送协议报文,并将该协议实体允许的最大计数值作为该协议实体的计数器的当前值,否则,将该计算结果作为该协议实体计数器的当前值。7根据权利要求6所述的装置,其特征在于,该装置进一步包括比较单元,用于当一协议实体允许的最大计数值发生变化时,比较所述全局计数器的当前值与变化后的最大计数值;计算单元,用于在所述比较单元比较的结果为所述全局计数器的当前值小于变化后的最大计数值时,计算所述全局计数器的当前值与所述第二设定值的和,将得到的结果作为该协议实体的计数器的当前值;第二更新单元,用于在所述比较单元比较的结果为所述全局计数器的当前值大于或等于变化后的最大计数值时,将该协。
8、议实体的计数器的当前值更新为变化后的最大计数值。8根据权利要求7所述的装置,其特征在于,所述计算单元在将得到的结果作为该协议实体的计数器的当前值之后,进一步包括如果该得到的结果等于所述变化后的最大计数值,则将全局计数器的当前值更新为所述第一设定值,否则,将全局计数器的当前值更新为该得到的结果;所述第二更新单元进一步包括将全局计数器的当前值更新为所述第一设定值。9根据权利要求7所述的装置,其特征在于,所述协议实体允许的最大计数值依据该协议实体的报文发送间隔时间和设定的单位时间确定;所述协议实体允许的最大计数值发生变化,由该协议实体的报文发送间隔时间和/或设定的单位时间发生变化决定。10根据权利要。
9、求6所述的装置,其特征在于,所述遍历单元通过设置定时器定期遍历已创建的所有协议实体,具体包括启动所述定时器;在所述定时器的时间内遍历已创建的所有协议实体;当所述定时器超时时,重新启动所述定时器,返回在所述定时器的时间内遍历已创建的所有协议实体的操作。权利要求书CN102347909ACN102347928A1/5页4实现大量协议报文的发送方法和装置技术领域0001本发明涉及数据通信领域,特别涉及实现大量协议报文的发送方法和装置。背景技术0002目前,随着客户业务类型和数量的急剧增加,汇聚设备提供了越来越多的广域网接口,路由协议容量也逐渐增大。目前,广域网接口上应用较多的高级数据链路控制HDLC。
10、HIGHLEVELDATALINKCONTROL和点对点协议PPP定期向对端发送保活报文,以确定与对端的链路状态。当汇聚设备提供的广域网接口数量很大时,众多广域网接口在定时时间到达时发送保活报文,当同时发送大量保活报文时,就会在同一时刻引起突发流量,该流量的数量超过极限后就会丢包,而对端连续几次收不到保活报文就认为链路已经不通,会把链路DOWN掉,当偶尔收到保活报文时,再恢复该被DOWN掉的链路UP,如此,会导致链路一直在UP和DOWN之间振荡,长时间不能稳定。此现象不只在广域网链路协议中存在,还存在于很多动态路由协议中。比如开放式最短路径优先OSPFOPENSHORTESTPATHFIRST。
11、协议通过使路由器定期发送保活报文使其它路由器知道自己的存在,以及接收保活报文知道对方路由器的存在,而当邻居很多时,因为一段时间没有发送或者收到保活报文,邻居关系会超时断开,并且需要重新开始建立邻居关系,即出现了邻居关系在断开和重新建立之间振荡,协议迟迟不能收敛。0003因此,在数据通信领域存在大量协议实体的情况下,在不增加硬件成本和系统开销的情况下如何保证保活报文的顺利发送、且不引起突发流量是亟待解决的技术问题。发明内容0004本发明提供了实现大量协议报文的发送方法和装置,以实现大量协议实体的保活报文顺利发送、且不引起突发流量。0005本发明提供的技术方案包括0006一种实现大量协议报文的发送。
12、方法,包括0007创建一个全局计数器,为所述全局计数器赋值为第一设定值;0008在创建每个协议实体时,先为该协议实体生成一个计数器,并计算全局计数器的当前值与第二设定值的和,将计算结果作为该计数器的当前值,之后判断所述计算结果是否大于或等于该协议实体允许的最大计数值,如果是,将全局计数器的当前值更新为第一设定值,否则,将全局计数器的当前值更新为所述计算结果;0009定期遍历已创建的所有协议实体,针对遍历到的每一协议实体,计算该协议实体的计数器的当前值与第三设定值的差,判断该计算结果是否等于第四设定值,如果是,触发该协议实体发送协议报文,并将该协议实体允许的最大计数值作为该协议实体的计数器的当前。
13、值,否则,将该计算结果作为该协议实体计数器的当前值。0010一种实现大量协议报文的发送装置,包括0011创建单元,用于创建一个全局计数器,为所述全局计数器赋值为第一设定值;说明书CN102347909ACN102347928A2/5页50012第一更新单元,用于在创建每个协议实体时,先为该协议实体生成一个计数器,并计算全局计数器的当前值与第二设定值的和,将计算结果作为该计数器的当前值,之后判断所述计算结果是否大于或等于该协议实体允许的最大计数值,如果是,将全局计数器的当前值更新为第一设定值,否则,将全局计数器的当前值更新为所述计算结果;0013遍历单元,用于定期遍历已创建的所有协议实体,针对遍。
14、历到的每一协议实体,计算该协议实体的计数器的当前值与第三设定值的差,判断该计算结果是否等于第四设定值,如果是,触发该协议实体发送协议报文,并将该协议实体允许的最大计数值作为该协议实体的计数器的当前值,否则,将该计算结果作为该协议实体计数器的当前值。0014由以上技术方案可以看出,本发明中,通过创建一个全局计数器,为所述全局计数器赋值为第一设定值;在创建每个协议实体时,先为该协议实体生成一个计数器,并计算全局计数器的当前值与第二设定值的和,将计算结果作为该计数器的当前值,之后判断所述计算结果是否大于或等于该协议实体允许的最大计数值,如果是,将全局计数器的当前值更新为第一设定值,否则,将全局计数器。
15、的当前值更新为所述计算结果;定期遍历已创建的所有协议实体,针对遍历到的每一协议实体,计算该协议实体的计数器的当前值与第三设定值的差,判断该计算结果是否等于第四设定值,如果是,触发该协议实体发送协议报文,并将该协议实体允许的最大计数值作为该协议实体的计数器的当前值,否则,将该计算结果作为该协议实体计数器的当前值,这样能够将某时刻的所有协议报文分批次发送,达到降低突发流量的效果,在不需要提高硬件性能和增大缓存的情况下减小了协议振荡,加快协议收敛速度。附图说明0015图1为本发明提供的基本流程图;0016图2为本发明提供的实施例流程图;0017图3为本发明提供的实施例示意图;0018图4为本发明实施。
16、例提供的协议实体允许的最大计数值发生变化的流程图;0019图5为本发明实施例提供的装置结构图。具体实施方式0020为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。0021参见图1,图1为本发明提供的基本流程图。如图1所示,该流程可包括以下步骤0022步骤101,创建一个全局计数器,为所述全局计数器赋值为第一设定值。0023步骤102,在创建一协议实体时,先为该协议实体生成一个计数器,并计算全局计数器的当前值与第二设定值的和,将计算结果作为该计数器的当前值,之后判断所述计算结果是否大于或等于该协议实体允许的最大计数值,如果是,将全局计数器的当前值更新为第。
17、一设定值,否则,将全局计数器的当前值更新为所述计算结果。0024步骤103,定期遍历已创建的所有协议实体,针对遍历到的每一协议实体,计算该协议实体的计数器的当前值与第三设定值的差,判断该计算结果是否等于第四设定值,如果是,触发该协议实体发送协议报文,并将该协议实体允许的最大计数值作为该协议实体说明书CN102347909ACN102347928A3/5页6的计数器的当前值,否则,将该计算结果作为该协议实体计数器的当前值。0025至此,完成图1所示的流程。0026在上述步骤103中,定期遍历已创建的所有协议实体可通过设置定时器实现。0027另外,在图1所示的流程中,第一设定值、第二设定值、第三设。
18、定值、以及第四设定值相互之间无关。作为本发明的一种实施例,下面以第一设定值为0,第二设定值为1,第三设定值为1、第四设定值为0为例,其他情况原理类似。0028参见图2,图2为本发明提供的实施例流程图。如图2所示,该流程可包括以下步骤0029步骤201,创建一个全局计数器,为所述全局计数器赋初值为0。0030步骤202,当创建每个协议实体时,先为该协议实体生成一个计数器PCOUNTER,全局计数器自增1,为该计数器赋值为全局计数器的当前值,之后判断全局计数器的当前值是否大于或等于该协议实体允许的最大计数值,如果是,将全局计数器的当前值更新为第一设定值,否则,保持全局计数器的当前值不变。0031其。
19、中,协议实体允许的最大计数值依据该协议实体的报文发送间隔时间和设定的单位时间确定。假如本实施例中,该协议实体需要每隔10S发送一个协议报文比如保活报文来维持和对端的邻居关系,即该协议实体的报文发送间隔时间为10S,如果设定的单位时间为1S,则该协议实体允许的最大计数值为10。0032上述步骤201至步骤202为发送协议报文的初始化阶段。该初始化阶段目的是在保持协议实体的报文发送间隔时间不变的前提下,将同一时间发送的协议报文离散开来,以降低突发流量,具体见步骤203至步骤205。0033通过步骤201和步骤202,能够针对每个协议实体的计数器进行设置。比如,假如某设备上需要创建1000个协议实体。
20、,每个协议实体需要每隔10S每个协议实体的报文发送间隔相同只是一种举例发送一个协议报文比如保活报文来维持和对端的邻居关系,若对端超过3次收不到此保活报文,就会和该协议实体解除邻居关系。基于此,通过步骤201和步骤202,能够针对该1000个协议实体的计数器进行设置,具体如图3所示。在图3中,1000个协议实体被分成10行,每行100个协议实体,每行的协议实体的计数器的值都相等。0034步骤203,启动一个定时器,在所述定时器的时间内遍历已创建的所有协议实体。0035该定时器的时间可根据实际情况设置,但必须保证已创建的所有协议实体能够在该定时器时间内被遍历完。0036步骤204,针对遍历到的每一。
21、协议实体,将该协议实体的计数器的值减1。0037步骤205,判断该协议实体的计数器的值是否为0,如果是,为该计数器复制为该协议实体允许的最大计数值,并触发该协议实体发送协议报文。0038通常,协议实体发送协议报文的流程比较长,因此,建议另起一个任务发送协议报文,而本发明中,定时器的任务只完成遍历协议实体、以及对遍历到的协议实体的计数器执行相关操作。如此,定时器任务中完成的工作就很少,这能提高遍历协议实体、以及对遍历到的协议实体的计数器执行相关操作的效率。0039另外,依据步骤205的描述可以看出,就单个协议实体来看,本发明是通过该协议实体的计数器来控制该协议实体发送协议报文,这能够保证该协议实。
22、体原有的报文发送间隔时间不变;而就所有协议实体来看,由于在步骤202为每个协议实体的计数器分配的值说明书CN102347909ACN102347928A4/5页7不同,是离散开的,因此,每个计数器减到0的时刻也就不同,如此,每个协议实体发送协议报文的时刻就被分开了,并不会集中在某时刻一起发送。以图3为例,在初始阶段,1000个协议实体被分成很多行,每行中协议实体的计数器值相等,依据图2所示的流程,每遍历一次协议实体,协议实体的计数器的值就自减1,当协议实体的计数器的值为0时,协议实体就发送协议报文,并且该协议实体的计数器又被赋值为该协议实体允许的最大计数值,而计数器不为0的协议实体只是把自己的。
23、计数器减1,然后等待下一次遍历。这样,相比于现有技术集中在同一时刻发送协议报文的场景,本发明能够大大减少突发流量,以图3为例,采用本发明,能够将突发流量从1000PPSPPS表示每秒发送的报文个数降低到了100PPS。0040至此,完成图2所示的流程。0041需要说明的是,基于上述协议实体允许的最大计数值依据该协议实体的报文发送间隔时间和设定的单位时间确定,可以知道,当某一协议实体的报文发送间隔时间和/或设定的单位时间发生变化时,该协议实体允许的最大计数值就会发生变化,为保证协议报文发送的离散效果,则需要调整该协议实体的计数器的值,具体如图4所示。0042参见图4,图4为本发明实施例提供的协议。
24、实体允许的最大计数值发生变化的流程图。如图4所示,该流程可包括以下步骤0043步骤401,比较所述全局计数器的当前值与变化后的最大计数值。0044以协议实体的报文发送间隔时间发生变化为例,比如该协议实体的报文发送间隔时间原来为10S,现在变化为20S,单位时间不变,仍然为1秒,如此,该协议实体允许的最大计数值从原来的10变化为20。0045步骤402,如果前者小于后者,则计算所述全局计数器的当前值与所述第二设定值的和,将得到的结果作为该协议实体的计数器的当前值。0046优选地,本步骤402中,在将得到的结果作为该协议实体的计数器的当前值之后,进一步包括如果该得到的结果等于所述变化后的最大计数值。
25、,则将全局计数器的当前值更新为所述第一设定值,否则,将全局计数器的当前值更新为该得到的结果。0047步骤403,如果前者大于或等于后者,将该协议实体的计数器的当前值更新为变化后的最大计数值。0048优选地,本步骤403中,进一步包括将全局计数器的当前值更新为所述第一设定值。0049至此,完成图4所示的流程。0050以上对本发明提供的方法进行了描述,下面对本发明提供的装置进行描述0051参见图5,图5为本发明实施例提供的装置结构图。如图5所示,该装置包括0052创建单元,用于创建一个全局计数器,为所述全局计数器赋值为第一设定值;0053第一更新单元,用于在创建每个协议实体时,先为该协议实体生成一。
26、个计数器,并计算全局计数器的当前值与第二设定值的和,将计算结果作为该计数器的当前值,之后判断所述计算结果是否大于或等于该协议实体允许的最大计数值,如果是,将全局计数器的当前值更新为第一设定值,否则,将全局计数器的当前值更新为所述计算结果;0054遍历单元,用于定期遍历已创建的所有协议实体,针对遍历到的每一协议实体,计算该协议实体的计数器的当前值与第三设定值的差,判断该计算结果是否等于第四设定值,如果是,触发该协议实体发送协议报文,并将该协议实体允许的最大计数值作为该协议说明书CN102347909ACN102347928A5/5页8实体的计数器的当前值,否则,将该计算结果作为该协议实体计数器的。
27、当前值。0055优选地,如图5所示,该装置进一步包括0056比较单元,用于当一协议实体允许的最大计数值发生变化时,比较所述全局计数器的当前值与变化后的最大计数值;0057计算单元,用于在所述比较单元比较的结果为所述全局计数器的当前值小于变化后的最大计数值时,计算所述全局计数器的当前值与所述第二设定值的和,将得到的结果作为该协议实体的计数器的当前值;0058第二更新单元,用于在所述比较单元比较的结果为所述全局计数器的当前值大于或等于变化后的最大计数值时,将该协议实体的计数器的当前值更新为变化后的最大计数值。0059其中,所述计算单元在将得到的结果作为该协议实体的计数器的当前值之后,进一步包括如果。
28、该得到的结果等于所述变化后的最大计数值,则将全局计数器的当前值更新为所述第一设定值,否则,将全局计数器的当前值更新为该得到的结果;0060所述第二更新单元进一步包括将全局计数器的当前值更新为所述第一设定值。0061本发明中,所述协议实体允许的最大计数值依据该协议实体的报文发送间隔时间和设定的单位时间确定;相应地,所述协议实体允许的最大计数值发生变化,由该协议实体的报文发送间隔时间和/或设定的单位时间发生变化决定。0062优选地,本发明中,所述遍历单元通过设置定时器定期遍历已创建的所有协议实体,具体包括0063启动所述定时器;0064在所述定时器的时间内遍历已创建的所有协议实体;0065当所述定。
29、时器超时时,重新启动所述定时器,返回在所述定时器的时间内遍历已创建的所有协议实体的操作。0066至此,完成图5所示的装置描述。0067由以上技术方案可以看出,本发明中,通过创建一个全局计数器,为所述全局计数器赋值为第一设定值;在创建每个协议实体时,先为该协议实体生成一个计数器,并计算全局计数器的当前值与第二设定值的和,将计算结果作为该计数器的当前值,之后判断所述计算结果是否大于或等于该协议实体允许的最大计数值,如果是,将全局计数器的当前值更新为第一设定值,否则,将全局计数器的当前值更新为所述计算结果;定期遍历已创建的所有协议实体,针对遍历到的每一协议实体,计算该协议实体的计数器的当前值与第三设。
30、定值的差,判断该计算结果是否等于第四设定值,如果是,触发该协议实体发送协议报文,并将该协议实体允许的最大计数值作为该协议实体的计数器的当前值,否则,将该计算结果作为该协议实体计数器的当前值,这样能够将某时刻的所有协议报文分批次发送,达到降低突发流量的效果,在不需要提高硬件性能和增大缓存的情况下减小了协议振荡,加快协议收敛速度。尤其在大量协议实体同时运行的情况下,更能体现本发明的优越性,比如,若每一协议实体的报文发送间隔时间为T,使用本发明后,会将突发流量将减小到1/T,同时运行的协议实体越多,突发流量降低越多。0068以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。说明书CN102347909ACN102347928A1/3页9图1说明书附图CN102347909ACN102347928A2/3页10图2图3说明书附图CN102347909ACN102347928A3/3页11图4图5说明书附图CN102347909A。