本发明涉及网络传输领域,更具体地说,涉及一种测量链路实时丢包率的方法和系统。
背景技术:
丢包率(packetlossrate)是指测试中所丢失数据包数量占所发送数据组的比率。计算方法是:“[(输入报文-输出报文)/输入报文]*100%”。衡量一条链路的性能指标中,一般通过三种基准指标衡量,分别是丢包率、时延和带宽。链路之间的丢包率是随着时间而不断变化的,为了达到较好的传输效果,实际应用中经常需要根据链路的实时丢包率,动态调整传输策略,例如增加数据包的冗余度,或者改变数据包的路由等。
在因特网应用中,链路是非对称的,两个节点之间去程和回程的丢包率常常会不一样,如果能够准确地测量链路的实时丢包率,就能更好地对优化传输策略,从而改善整个传输系统的性能。在一个由多个节点组成的多跳转发网络中,业务数据从源节点输入,中间经过若干转发节点,最后到达目的节点。数据发往哪一个转发节点的重要依据就是该转发节点的接收丢包率。每个节点都需要实时获得其相邻的转发节点接收本节点数据包的情况,用以决定业务数据的流向。
现有技术中常在通信系统的发送端发送探测包进行丢包率的计算,发送端以固定间隔发送探测包,接收端收到每个探测包都往发送端发送一个响应包。接收端周期性记录发送的探测包数量和接收到的响应包数量,其差值就是丢包的数量,丢包总数占探测包总数地百分比就是该周期内的丢包率。该方法得到的丢包率是来回双向的总体丢包率,无法准确知道是探测包丢失,还是响应包丢失。另外,如果要得到准确的丢包率,需要往链路中注入大量的探测包,容易对业务造成影响。
中国专利申请iub接口丢包率监测方法和装置,申请号cn200710002725.4,授权公告日2010年5月19日,公开了一种iub接口丢包率监测方法,包括以下步骤:在iub接口的帧内标识报文序号;以及根据接收的报文序号来统计丢包率。本发明还提供了一种iub接口丢包率监测装置。通过本发明,可以实现实时地监测每个业务报文的丢包情况,该发明通过控制器分别计算上行和下行的丢包率,只有控制器rnc能得到全部的丢包率,不便于节点之间根据丢包率实时进行数据包发送的调控,且若链路之间没有业务数据时将无法获得丢包率。
技术实现要素:
1.要解决的技术问题
针对现有技术中存在的链路中无法准确得到丢包率的问题,本发明提供了一种测量链路实时丢包率的方法和系统,它可以实时计算系统丢包率,探测包根据传输状态自适应调整,无论链路中是否有业务数据传输,都可以准确地得到链路的丢包率,本发明使用网状拓扑结构,所有节点都是平等的,每个节点均可获得链路上发送方向和接收方向的丢包率。
2.技术方案
本发明的目的通过以下技术方案实现。
一种测量链路实时丢包率的方法,在数据包的包头填充序列号sn,每发送一次数据包,序列号sn增加1,接收到数据包后将包头中的序列号sn按顺序记录到序列号sn列表中,通过序列号sn列表中实际收包总数除以预期收包的总数得到丢包率。
更进一步的,所述数据包为携带业务数据的业务包或不携带业务数据的探测包。业务包内包括传输的业务数据,业务数据的类型不限,业务包可以为各种数据类型,如信令、媒体包、音频、视频等;探测包仅作丢包率计算使用,探测包内无业务数据。
更进一步的,数据包接收端复用为数据包发送端,数据包接收端计算得到的丢包率在作为数据包发送端时添加到探测包中发送。丢包率在链路另一端的节点计算,再通过探测包反馈回来,这样得到的是准确的单向丢包率。接收端记录收到的数据包,根据数据包编号周期性计算出实时丢包率,并通过探测包将丢包率反馈给发送端。
更进一步的,探测包以固定间隔发送,当业务包发送频率大于探测包发送频率时,增加探测包发送间隔;当业务包发送频率小于探测包发送频率时,减小探测包发送间隔。本发明使用自适应探测的机制。当节点有业务流量时,由于业务包也携带序列号sn,则增加探测包发送间隔,减少探测包发送频率,减少探测包带来的带宽损耗;当节点无业务流量时,业务包数量少,此时减小探测包发送间隔,增加探测包频率,在无业务包数据传输时,也能保证丢包率的计算精度。
更进一步的,接收到的探测包中没有丢包率时,增加业务包的发送数量或减小探测包的发送间隔。节点接收到其它节点的探测包时,若探测包中没有丢包率反馈,表示数据包数量不足,丢包率尚未计算出来,此时节点主动减小探测包的发送间隔增加探测包的发送数量,或增加业务包的发送,加快丢包率计算。
更进一步的,探测包的发送间隔设定阈值,保证丢包率通过探测包实时反馈到数据发送端。若业务流量很大,业务包的传输已满足丢包率计算精度,系统仍以最大间隔发送探测包,保证节点获得丢包率反馈。
更进一步的,固定间隔初始设定为25ms,发送间隔设定阈值为250ms。
更进一步的,业务包和探测包统一编号。丢包率的计算精度由预期收包总数确定。如丢包率的计算精度要求1%,则预期收包总数为100,若丢包率的计算精度要求0.1%,则预期收包总数为1000。
一种测量链路实时丢包率的系统,使用所述的一种测量链路实时丢包率的方法。
更进一步的,系统包括x个节点,x为大于2的自然数,节点两两相连,每个节点既是数据发送端也是数据接收端。本发明所述方案网络拓扑是网状结构,所有节点都是平等的,每个节点均可获得链路上发送方向和接收方向的丢包率。
3.有益效果
相比于现有技术,本发明的优点在于:
本发明在数据传输过程中将探测包和数据包统一编号,减少了探测包数量,且当业务数据包越多时,探测结果越准确;本发明所述方案的丢包率是在接收端计算,得到的是去程的丢包率,不受回程丢包影响,更为准确。同时,本发明所述方案发送的探测包可以根据链路传输情况动态调整,尽可能少的减少探测包消耗的带宽,避免对业务数据传输造成影响;本发明还设置自适应探测的机制,当节点有业务流量的时候,减少探测包数量,节点无业务流量时,增加探测包数量,达到无业务数据传输时,也能保证探测的丢包率精度的效果。
附图说明
图1为本发明通信系统不同网络节点两两之间的通信链路示意图;
图2为本发明通信系统节点发送数据包流程图;
图3为本发明通信系统节点接收数据包流程图。
具体实施方式
下面结合说明书附图和具体的实施例,对本发明作详细描述。
实施例
本发明涉及的系统包含若干网络节点,以及节点两两之间的通信链路。如图1所示,为本发明通信系统不同网络节点两两之间的通信链路示意图;每个节点同时发送和接收数据包,其工作逻辑是相同的。
实时测量丢包率时,先在连接第一节点和第二节点的通信链路维护一个单调递增的序列号sn,所有数据包均使用同一个sn序列号,从第一节点发给第二节点的每个数据包的包头均填充序列号sn,且每发送一个数据包,序列号sn增加1;在实现过程中,序列号sn是递增循环使用的,如当序列号sn的阈值设置为1000时,序列号sn随着数据包的发送递增,当序列号sn为1000时,下一个序列号sn从1重新开始。传输时数据包类型为探测包或业务包,业务包中包括链路上传输的业务数据,探测包仅用于链路中丢包率计算使用。
在每个数据周期内,第二节点不停的从链路上接收来自第一节点的数据包,将数据包的包头中的序列号sn按顺序记录到序列号sn列表中,当数据周期结束,或者达到预期收包的总数时,开始计算本周期的丢包率。数据周期为预先设定的丢包率计算周期,如每1s需得到1个丢包率数值,则数据周期为1s。预期收包的总数为序列号sn列表中最大值和最小值之差,实际收包的总数为序列号sn列表中记录的序列号sn的个数。实际收包的总数与预期收包的总数两者相除即得到本数据周期内第一节点至第二节点之间链路的丢包率plr1,plr是丢包率packetlossrate的缩写。
预期收包的总数由丢包率需求的精度确定,如丢包率的精度需求为1%,则预期收包的总数为100,若丢包率的精度需求为0.1%,则预期收包的总数为1000,一般来说,丢包率的精度设置为0.5%以下。另外预期收包的总数进一步限定序列号sn的设定,考虑到数据传输期间会有丢包的可能性以及预期收包的总数为序列号sn列表中最大值和最小值之差的计算方式,因此序列号sn的阈值设置需大于预期收包的总数。比如丢包率的精度设置为0.5%时,对应一次计算周期内预期收包的总数为200,,则序列号sn的阈值设置需大于200,如sn的阈值设置可以为1000,序列号sn递增循环使用的,当sn从0递增至200时,达到预期收包的总数,则可开始计算本周期的丢包率。
在每个数据周期内,第一节点以固定间隔发送探测包给第二节点,如果发送探测包时链路的丢包率已计算完成,则探测包中需要携带计算得到的丢包率,携带实时的丢包率反馈给另一端的节点,让接收端知道发送端的数据包被接收的情况。
由于每个节点同时发送和接收数据包,工作逻辑相同,第一节点也不停接收来自第二节点的数据包,当节点丢包率已计算出来,节点发送探测包时携带已计算出丢包率,故第一节点可以得到第一节点到第二节点链路的丢包率plr1,第二节点可以得到第二节点至第一节点链路的丢包率plr2。第一节点发送数据包,第二节点接收数据包,第二节点计算得到第一节点至第二节点的丢包率,第二节点将该丢包率附带在探测包数据中发送给第一节点,此时第一节点得到第一节点发送到第二节点的丢包率,据此可以采用增加发送冗余度、业务包避开第二节点等策略。
探测包发送间隔根据本周期发送的业务包的总数进行调整,初始状态默认业务包和数据包间隔发送,当计算周期内业务包数量增加,业务包数量大于探测包数量时,由于业务包也填充有序列号sn,可以替代探测包进行丢包率计算,当业务包发送频率大于探测包发送频率时,增大探测包的发送间隔,减少探测包的数量。此时虽减少探测包发送数量,但不会影响丢包率计算精度。
本发明对丢包率进行实时探测并反馈,一般来说,要求系统在一秒内对数据丢包做出反应,防止丢包现象,一秒钟至少发送四个数据包,四个数据包的时间间隔为250ms。探测包的发送间隔与业务包发送数量以及丢包率计算精度相关,逻辑上是线性变化的,丢包率精度要求不变时,当业务包发送数量增加,探测包发送间隔增加;业务包发送数量不变时,丢包率精度要求高,探测包发送频率增加,探测包发送间隔减少。目前在实际应用中,为了防止丢包以及带宽问题,探测包的发送间隔初始值为25ms,每秒约发送40个探测包;当业务包传输达到每秒50个时,探测包的发送间隔为50ms,即每秒发送20个探测包;当业务包传输达到每秒100个时,探测包的发送间隔为100ms,即每秒发送10个探测包。最大值设定为250ms,即探测包的发送间隔最大不超过250ms。
第一节点收到的数据包的类型如果是探测包,且其中未包含丢包率,则表示数据包数据不足以计算出丢包率,此时为了尽快算出丢包率,实时了解系统的传输性能,一种方法是第一节点需要多发数据包,数据包类型可以是业务包也可以是探测包,当有足够数量的业务包时,第一节点发送业务包;当业务包数量不足,第一节点则提高探测包发送频率,多发探测包,用以加快丢包率计算,一般情况下实际应用中在一秒左右即要求得到链路的实时丢包率。另一种方法是应用滑动窗口的技巧用以加快丢包率计算,当丢包率的发送间隔更新而数据周期内序列号sn数量不足时,会使用滑动窗口的方式对序列号sn进行处理,例如序列号sn第一次为[0,200],第二次为[50,250],第三次为[100,300],以此去掉老的序列号sn。以上两种加快丢包率计算的方法可单独使用,也可同时使用。
根据上述方法,链路两端的节点互相发送探测包,并分别从对方的探测包中得到本节点到对端点之间链路的丢包率。
以节点a和节点b之间的链路为例,在节点a和节点b的通信链路维护一个单调递增的序列号sn,从节点a发送给节点b的每个数据包的包头均填充序列号sn,且每发送一个数据包,序列号sn增加1,数据包类型为探测包或业务包,业务包和探测包统一编号,一起参与丢包率统计。本实施例中丢包率的预设精度为0.5%,则预计收包总数为200,序列号sn的阈值设定为1000,序列号sn的范围是0至1000。
1、发送数据包时:
当节点a发送数据包时,发包流程如图2所示,节点a先以每25ms为间隔向节点b发送数据包,发送时判断数据包是否是业务包:若节点a发送的数据包是业务包,节点a记录发往节点b的业务包的数据,计算每秒的发包频率,并根据发包频率调整探测包发送间隔,当业务包发送频率大于探测包发送频率时,由于业务包中也填充有序列号sn,此时增大探测包发送间隔,减少探测包的带宽消耗;若业务包发送频率小于探测包发送频率,或此时链路的丢包率尚未计算得到,减小探测包的发送间隔,增大探测包的发送数量。
为了更稳定、快速、实时的获得链路上的传输性能,探测包频率自适应调整,根据调整的频率更新探测包发送间隔数据,业务包发包频率越大,探测包发送间隔也越大,为了准确的计算链路传输性能且能够将探测包中携带的丢包率准确传输到下一个节点,本实施例中探测包发送间隔最大不超过250ms。若节点a发送的数据包为探测包,发送时节点a填充其作为接收端时的丢包率plr(ba),探测包还填充递增的标识序列号sn,探测包填充相关数据后发送到节点b,每个节点既是发送节点也是接收节点,既有作为发送端的丢包率也有作为接收端的丢包率。这样可以使得探测包中携带节点a作为接收端时计算得到的丢包率plr(ba),将丢包率实时反馈给作为节点b,让节点b实时获得其发送端节点a的传输性能,实时调整数据传输的线路。
2、接收数据包时:
当节点a接收数据包时,收包流程如图3所示,节点a不停的从链路上接收来自节点b的数据包,将数据包的包头中的序列号sn按顺序记录到序列号sn列表中,此时判断节点a是否接收到足够数量的数据包,当节点a接收到的数据包达到预期收包的总数时或者当前数据周期结束,即默认已接收到足够数量的数据包,此时根据接收到的数据包计算接收丢包率,丢包率=实际收包总数/预期收包的总数,其中,实际收包总数为通信系统中序列号sn列表中记录的序列号sn的个数,由于序列化sn是以1递增,预期收包的总数为序列号sn列表中最大值和最小值之差。
若没有接收到足够的数据包无法计算接收丢包率,即当节点a接收到的数据包未达到预期收包的总数时或者当前数据周期还未结束时,此时只读取数据包内容,若接收到的数据包是业务包,读取业务包中数据或进行下一步传输;若接收到的数据包为探测包,节点a读取探测包数据,实时获得节点b发送的探测包中携带的节点a到节点b的发送丢包率plr(ab)。根据plr(ab)节点a可以实时获得当前链路的传输性能,实时调整数据传输的线路。
本发明基于因特网应用层,应用场景多样,业务包和探测包统一编号,一起参与丢包率的统计,在本发明通信系统中,包含若干个节点,每个节点同时发送和接收数据包,节点之间的工作逻辑相同,任意两个节点之间均可使用上述方法,得到每条链路上自身发包的丢包率,与现有技术丢包率计算中分别计算上行和下行通道的丢包率,只有rnc设备能得到全部的丢包率不同,本发明网络拓扑是网状结构,所有节点都是平等的,每个节点均可获得链路上发送方向的丢包率和接收方向的丢包率。
同时本发明设置了自适应探测机制,发送数据包为业务包时,发送节点记录每秒的发包频率,并根据发包频率调整固定发包间隔,当节点有业务流量的时候,业务发包频率增大,增大探测包发送间隔,减少探测包发送数量,减少探测包的带宽占用。探测包发送间隔最大设定阈值,保证链路中持续有探测包的发送,便于节点通过探测包获得其作为发送端的实时丢包率;当节点间无业务流量时,业务发包频率减少,增加探测包数量,探测包发送间隔缩短,确保在无业务数据传输时,也能保证丢包率的计算精度。
本发明传输的业务包不预设业务数据类型,业务包可以为各种数据类型,如信令、媒体包、音频、视频等;实际传输过程中不同种类的业务数据统一在业务包中进行传输。每个节点精确实时的获得丢包率,便于更好的优化传输策略,从而改善整个传输系统的性能。在数据传输过程中,数据发往哪一个转发节点的重要依据就是该转发节点的接收丢包率,通过节点获得的自身不同链路的发包丢包率,选择丢包率小的链路进行数据的传输,决定业务数据的流向。
以上示意性地对本发明创造及其实施方式进行了描述,该描述没有限制性,在不背离本发明的精神或者基本特征的情况下,能够以其他的具体形式实现本发明。附图中所示的也只是本发明创造的实施方式之一,实际的结构并不局限于此,权利要求中的任何附图标记不应限制所涉及的权利要求。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本专利的保护范围。此外,“包括”一词不排除其他元件或步骤,在元件前的“一个”一词不排除包括“多个”该元件。产品权利要求中陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
1.一种测量链路实时丢包率的方法,其特征在于,在数据包的包头填充序列号sn,每发送一次数据包,序列号sn增加1,接收到数据包后将包头中的序列号sn按顺序记录到序列号sn列表中,通过序列号sn列表中实际收包总数除以预期收包的总数得到丢包率。
2.根据权利要求1所述的一种测量链路实时丢包率的方法,其特征在于,所述数据包为携带业务数据的业务包或不携带业务数据的探测包。
3.根据权利要求2所述的一种测量链路实时丢包率的方法,其特征在于,数据包接收端复用为数据包发送端,数据包接收端计算得到的丢包率在作为数据包发送端时添加到探测包中发送。
4.根据权利要求3所述的一种测量链路实时丢包率的方法,其特征在于,探测包以固定间隔发送,当业务包发送频率大于探测包发送频率时,增加探测包发送间隔;当业务包发送频率小于探测包发送频率时,减小探测包发送间隔。
5.根据权利要求4所述的一种测量链路实时丢包率的方法,其特征在于,接收到的探测包中没有丢包率时,增加探测包的发送数量或减小探测包的发送间隔。
6.根据权利要求4所述的一种测量链路实时丢包率的方法,其特征在于,探测包的发送间隔设定阈值,保证丢包率通过探测包实时反馈到数据发送端。
7.根据权利要求6所述的一种测量链路实时丢包率的方法,其特征在于,固定间隔初始设定为25ms,发送间隔设定阈值为250ms。
8.根据权利要求2所述的一种测量链路实时丢包率的方法,其特征在于,业务包和探测包统一编号。
9.一种测量链路实时丢包率的系统,其特征在于,使用如权利要求1-8所述的一种测量链路实时丢包率的方法。
10.根据权利要求9所述的一种测量链路实时丢包率的系统,其特征在于,系统包括x个节点,x为大于2的自然数,节点两两相连,每个节点既是数据发送端也是数据接收端。
技术总结