一种减少可靠组播传输中数据包重传次数的方法及装置与流程

文档序号:12375393阅读:487来源:国知局
一种减少可靠组播传输中数据包重传次数的方法及装置与流程

本发明属于数据传输领域,尤其涉及一种减少可靠组播传输中数据包重传次数的方法及装置。



背景技术:

随着IP监控技术、互联网的推广普及,互联网接入越来越方便,跨地区部门分支机构、商业集团全球分布越来越多地需要远程互联网视频监控。网络丢包、乱序、延时会带来视频图像的卡顿、花屏等严重后果,影响用户的体验。而广域网或者无线网络下丢包乱序基本无法避免的。

组播技术解决了数据包的单点发送、多点接收的问题,实现了数据包在IP网络中点到多点的高效传送,能够大量节约网络带宽、降低网络负载。组播技术虽然有上述诸多优点,但由于组播采用UDP协议进行传输,而UDP协议为非可靠传输协议,因此组播数据包在传输过程中会出现丢包问题。

为了解决UDP组播数据包在传输过程中的丢包问题,现有技术采用了可靠UDP传输方式来进行组播数据包的可靠传输。具体为:组播源在发送组播数据包时,同时将发送的组播数据包保存在缓存区中,组播接收设备在接收到组播数据包后检查是否出现丢包,如果发现有丢包,则通过单播方式将包含丢失数据包序列号的重传请求发送给组播源,请求重传丢失的数据包,组播源根据接收到的重传请求中的数据包序列号从缓存区中取出丢失的数据包,重传给组播接收设备。

上述现有技术虽然解决了组播数据包在传输过程中的丢包问题,但是当多个组播接收设备在接收组播数据流时,出现丢失相同的组播数据包的情况下,每个组播接收设备都会发送重传请求给组播源,而此时请求重传的组播数据包为相同的组播数据包,组播源需要多次重传相同的组播数据包,导致组播源和组播传输网络的负荷增加,尤其在网络质量不好的情况下,对组播源和组播传输网络的影响非常大。



技术实现要素:

本发明的目的是提供一种减少可靠组播传输中数据包重传次数的方法及装置,以解决现有技术中当多个组播接收设备在接收组播数据流时,出现丢失相同的组播数据包的情况下,每个组播接收设备都会发送重传请求给组播源,导致组播源和组播传输网络的负荷增加的问题。

为了实现上述目的,本发明技术方案如下:

一种减少可靠组播传输中数据包重传次数的方法,应用于组播接收设备,所述减少可靠组播传输中数据包重传次数的方法,包括:

检测到所接收的组播数据出现丢包后,获取丢失数据包的序列号;

接收其它组播接收设备发送的重传请求消息,如果在预设的延迟发送时间内没有收到其它组播接收设备发送的重传请求消息,则以组播方式发送携带有所述丢失数据包的序列号的重传请求消息,如果在预设的延迟发送时间内收到了其它组播接收设备发送的重传请求消息,则以组播方式发送携带有未在其它组播接收设备发送的重传请求消息中包含的丢失数据包的序列号的重传请求消息。

进一步地,所述重传请求消息的目的MAC地址为组播MAC地址,源MAC地址为本组播接收设备的MAC地址,目的IP地址为所接收的组播源发送组播数据包的组播地址,源IP地址为本组播接收设备的IP地址。

进一步地,所述减少可靠组播传输中数据包重传次数的方法,还包括:

在接收到的重传请求消息中丢失数据包的序列号与本组播接收设备丢失的数据包序列号完全重复时,则本组播接收设备不发送重传请求消息。

本发明还提出了一种减少可靠组播传输中数据包重传次数的方法,应用于组播接收设备对应的网关路由器,所述减少可靠组播传输中数据包重传次数的方法,包括:

接收到组播接收设备以组播方式发送的重传请求消息后,按照正常的组播转发流程将重传请求消息转发给其他路由器,使其它路由器将重传请求消息转发给跨三层网络的其它组播接收设备;

判断本设备所在的组播树是最短路径树还是共享树,如果是最短路径树,则将重传请求消息的目的IP地址修改为相应组播源的IP后发送给组播源,如果是共享树,则将重传请求消息的源IP地址修改为该重传请求消息的目的IP地址,将重传请求消息的目的IP地址修改为共享树的汇聚点的IP地址,将修改后的重传请求消息发送给共享树的汇聚点,使共享树的汇聚点将接收到的重传请求消息的目的IP地址修改为相应组播源的IP地址后发送给组播源。

进一步地,所述将重传请求消息的目的IP地址修改为相应组播源的IP后发送给组播源,包括:

根据重传请求消息中的组播地址,查询本设备组播路由表的转发表项,得到该组播地址对应的组播源的IP地址,将重传请求消息的目的IP地址修改为该组播源的IP地址后发送给组播源。

本发明还提出了一种减少可靠组播传输中数据包重传次数的装置,应用于组播接收设备,所述减少可靠组播传输中数据包重传次数的装置,包括:

丢包检测模块,用于检测到所接收的组播数据出现丢包后,获取丢失数据包的序列号;

重传请求模块,用于接收其它组播接收设备发送的重传请求消息,如果在预设的延迟发送时间内没有收到其它组播接收设备发送的重传请求消息,则以组播方式发送携带有所述丢失数据包的序列号的重传请求消息,如果在预设的延迟发送时间内收到了其它组播接收设备发送的重传请求消息,则以组播方式发送携带有未在其它组播接收设备发送的重传请求消息中包含的丢失数据包的序列号的重传请求消息。

进一步地,所述重传请求消息的目的MAC地址为组播MAC地址,源MAC地址为本组播接收设备的MAC地址,目的IP地址为所接收的组播源发送组播数据包的组播地址,源IP地址为本组播接收设备的IP地址。

进一步地,所述重传请求模块,还用于在接收到的重传请求消息中丢失数据包的序列号与本组播接收设备丢失的数据包序列号完全重复时,则本组播接收设备不发送重传请求消息。

本发明还提出了一种减少可靠组播传输中数据包重传次数的装置,应用于组播接收设备对应的网关路由器,所述减少可靠组播传输中数据包重传次数的装置,包括:

组播转发模块,用于接收到组播接收设备以组播方式发送的重传请求消息后,按照正常的组播转发流程将重传请求消息转发给其他路由器,使其它路由器将重传请求消息转发给跨三层网络的其它组播接收设备;

组播修改模块,用于判断本设备所在的组播树是最短路径树还是共享树,如果是最短路径树,则将重传请求消息的目的IP地址修改为相应组播源的IP后发送给组播源,如果是共享树,则将重传请求消息的源IP地址修改为该重传请求消息的目的IP地址,将重传请求消息的目的IP地址修改为共享树的汇聚点的IP地址,将修改后的重传请求消息发送给共享树的汇聚点,使共享树的汇聚点将接收到的重传请求消息的目的IP地址修改为相应组播源的IP地址后发送给组播源。

进一步地,所述组播修改模块将重传请求消息的目的IP地址修改为相应组播源的IP后发送给组播源,执行如下操作:

组播修改模块根据重传请求消息中的组播地址,查询本设备组播路由表的转发表项,得到该组播地址对应的组播源的IP地址,将重传请求消息的目的IP地址修改为该组播源的IP地址后发送给组播源。

本发明提出了一种减少可靠组播传输中数据包重传次数的方法及装置,组播接收设备在检测到可靠组播传输出现丢包后,以组播方式将重传请求消息发送给其它组播接收设备和组播源,使所有组播接收设备发送的重传请求消息中丢失数据包的序列号不会出现重复,避免了组播源多次重传相同的数据包,从而极大地减少了可靠组播传输中数据包重传次数,减轻了组播源和组播传输设备的负荷。通过采用随机生成的延迟发送时间,避免组播接收设备同时发送重传请求消息。

附图说明

图1为本实施例可靠组播传输网络的结构图;

图2为本发明实施例一减少可靠组播传输中数据包重传次数的方法的流程图;

图3为本发明实施例二减少可靠组播传输中数据包重传次数的方法的流程图;

图4为本发明实施例一减少可靠组播传输中数据包重传次数的装置的结构图;

图5为本发明实施例二减少可靠组播传输中数据包重传次数的装置的结构图。

具体实施方式

下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。

在组播网络中,从组播源发出的组播数据包会沿着组播树传送到组播接收设备,根据组播网络中配置的组播路由协议的不同,组播树分为共享树RPT和最短路径树SPT,两者的区别为:在通过共享树发送组播的组播网络中,组播数据包先由组播源发送到共享树的汇聚点RP,再由汇聚点RP将组播数据包沿着共享树RPT发送给组播接收设备,共享树RPT中的所有路由器都知道RP的IP地址,但不知道组播源的IP地址;在通过最短路径树SPT发送组播的组播网络中,组播源发送的组播数据包直接通过最短路径树SPT发送给组播接收设备,最短路径树SPT中的所有路由器都知道组播源的IP地址。

本实施例可靠组播传输网络的结构图,如图1所示,其中,IPC1为组播源,IPC1的IP地址为1.1.1.2,IPC1通过组播地址224.100.1.2发送组播数据包;视频客户端1、视频客户端2和视频客户端3为组播接收设备,例如DC解码器、电脑终端等;IPC和视频客户端之间通过可靠UDP进行组播数据传输。所有路由器中配置的组播路由协议为PIM-SM,路由器4为共享树RPT的汇聚点RP。

实施例一:

本实施例一种减少可靠组播传输中数据包重传次数的方法,应用于组播接收设备,如图2所示,包括:

检测到所接收的组播数据出现丢包后,获取丢失数据包的序列号;

接收其它组播接收设备发送的重传请求消息,如果在预设的延迟发送时间内没有收到其它组播接收设备发送的重传请求消息,则以组播方式发送携带有所述丢失数据包的序列号的重传请求消息,如果在预设的延迟发送时间内收到了其它组播接收设备发送的重传请求消息,则以组播方式发送携带有未在其它组播接收设备发送的重传请求消息中包含的丢失数据包的序列号的重传请求消息。

本实施例组播源和组播接收设备之间通过可靠UDP进行组播数据传输。可靠UDP的原理如下:视频发送端和接收端根据流量的码率特点,自适应的开辟专用的发送缓存和接收缓存。接收端内置乱序和丢包处理模块,在一定算法控制下,接收端在恰当的时刻向发送端请求发送缓存中的特定报文,同时发送缓存在算法控制下实时更新数据。简要步骤如下:

1、编码端的可靠的数据备份机制为支持基于时间的媒体数据备份:

当备份的媒体数据超过指定时间(如T1)则丢弃该数据;

如果备份数据的重传次数超过预设值(N),也丢弃该数据。

2、解码端的缓存机制为:

解码端根据收到的媒体数据包的序列号是否连续来判断是否丢包,当检测到丢包后,立即向编码端,根据序列号匹配发送重传请求;

同时开启定时器(T2),将后续收到的数据缓存。待收到上述数据的重传后,再让解码端进行解码。如果超过上述T2时间后,解码端仍未收到步骤a对应请求的重传数据,则直接将缓存中的数据发送给解码端(XP或解码器),进行解码。

3、编码端收到解码端可靠UDP的重传请求后,如果指定数据不存在备份(即超时已被清除),则不进行任何处理。如果该数据存在备份,则查看该备份数据的标记,处理如下:

如果“重传次数”超过预设值(N),则不进行重传,同时将该数据从缓存中清除;

如果“最后重传时间”与当前时间差小于预设的最小重传间隔(Tm),也不进行重传。

解码端收到重传数据后(或者发送重传后超过T2时间没收到重传数据),开始把缓存中的数据发送给解码端(XP或解码器)进行解码。

本实施例组播接收设备通过检查接收到的组播数据包的序列号是否连续来判断是否出现丢包,如果当前接收到的组播数据包的序列号不等于前一个接收到的组播数据包的序列号加1,则判断接收到的组播数据出现了丢包。

本实施例组播接收设备在判断接收到的组播数据出现丢包后,在预设的延迟发送时间范围内生成一个随机的延迟发送时间,用于使多个组播接收设备检测到丢包后不会在同一时间同时发送重传请求。通常不同组播接收设备随机生成的延迟发送时间不同,因此多个组播接收设备检测到丢包后不会在同一时间同时发送重传请求,延迟发送时间长的组播接收设备会在发送重发请求消息前,先接收到其他组播接收设备(延迟时间较短)发送的重传请求消息。为了确保组播接收设备的延迟发送时间不同,还可以通过指定的方式来人为设置不同的延迟发送时间,这里不再赘述。

如果组播接收设备在延迟发送时间内没有收到其它组播接收设备发送的重传请求消息,则通过组播数据包将包含所有丢失数据包序列号的重传请求消息发送出去。如果组播接收设备在延迟发送时间内收到了其它组播接收设备发送的重传请求消息,则检查接收到的重传请求消息中丢失数据包的序列号与本组播接收设备丢失的数据包序列号中是否有相同的序列号,如果有相同的序列号,则从本组播接收设备丢失的数据包序列号中剔除相同的序列号,将包含剩余丢失数据包序列号的重传请求消息通过组播数据包发送出去。特别地,如果接收到的重传请求消息中丢失数据包的序列号与本组播接收设备丢失的数据包序列号完全重复,则本组播接收设备不发送重传请求消息。

例如,本实施例视频客户端1、视频客户端2、视频客户端3在接收IPC1发送的组播视频数据流时,视频客户端1检测到序列号为10001、10002、10003、10004、10005的数据包丢失,视频客户端2检测到序列号为10001、10003、10005的数据包丢失,视频客户端3检测到序列号为10003、10004、10005的数据包丢失。预置的延迟发送时间范围为0~10ms,视频客户端1、视频客户端2、视频客户端3随机生成的延迟发送时间分别为8ms、5ms、3ms。视频客户端3在3ms的延迟发送时间内不会收到视频客户端1和视频客户端2发送的重传请求消息,视频客户端3通过组播数据包将包含所有丢失数据包的序列号10003、10004、10005的重传请求消息发送出去。视频客户端2在5ms的延迟发送时间内收到了视频客户端3发送的重传请求消息,从视频客户端3发送的重传请求消息解析出的序列号为10003、10004、10005,通过比对发现视频客户端3发送的重传请求消息中的序列号10003、10005与本视频客户端2丢失的数据包中的序列号相同,因此视频客户端2将只包含序列号10001的重传请求消息发送出去。视频客户端1在8ms的延迟发送时间内收到了视频客户端2和视频客户端3发送的重传请求消息,通过比对发现视频客户端3发送的重传请求消息中的序列号10003、10004、10005与本视频客户端1丢失的数据包中的序列号相同,视频客户端2发送的重传请求消息中的序列号10001与本视频客户端1丢失的组播数据包中的序列号相同,因此视频客户端1将只包含序列号10002的重传请求消息发送出去。

本实施例组播接收设备通过组播数据包发送的重传请求消息的目的MAC地址为组播MAC地址,源MAC地址为本组播接收设备的MAC地址,目的IP地址为所接收组播源发送组播数据包的组播地址,源IP地址为本组播接收设备的IP地址。二层网络设备根据重传请求消息中的组播MAC地址将重传请求消息发送给同一个三层网络内的其它组播接收设备。

例如,组播源IPC1发送组播数据包的组播地址为224.100.1.2,视频客户端1在接收IPC1发送的组播数据包时出现丢包,则视频客户端1发送的重传请求消息中的目的MAC地址(组播MAC地址),采用组播头01005e+0+224.100.1.3对应二进制的后23位组成,即目的MAC地址(组播MAC地址)为:01-00-5E-64-01-02;源MAC地址为视频客户端1的MAC地址00-AC-62-29-35-0A;目的IP地址为组播源IPC1发送组播数据包的组播地址224.100.1.2;源IP地址为视频客户端1的IP地址11.1.1.6。

而对于跨三层网络的组播转发,则涉及到组播接收设备对应的网关路由器,在实施例二中进行描述。

实施例二、

本实施例一种减少可靠组播传输中数据包重传次数的方法,应用于组播接收设备的网关路由器,如图3所示,包括:

接收到组播接收设备通过组播发送的重传请求消息后,按照正常的组播转发流程将重传请求消息转发给其他路由器,使其它路由器将重传请求消息转发给跨三层网络的其它组播接收设备;

判断本设备所在的组播树是最短路径树还是共享树,如果是最短路径树,则将重传请求消息的目的IP地址修改为相应组播源的IP后发送给组播源,如果是共享树,则将重传请求消息的源IP地址修改为该重传请求消息的目的IP地址,将重传请求消息的目的IP地址修改为共享树的汇聚点的IP地址,将修改后的重传请求消息发送给共享树的汇聚点,使共享树的汇聚点将接收到的重传请求消息的目的IP地址修改为相应组播源的IP地址后发送给组播源。本实施例组播接收设备的网关路由器在收到组播接收设备通过组播数据包发送的重传请求消息后,首先按照正常的组播转发流程将该重传请求消息转发给其它的路由器,因此其它网段的组播接收设备可以收到该重传请求消息。然后,网关路由器将重传请求消息的源IP地址修改为重传请求消息的目的IP地址,将重传请求消息的目的IP地址修改为汇聚点RP的IP地址,将修改后的重传请求消息发送给汇聚点RP。汇聚点RP收到网关路由器发送的重传请求消息后,查询本设备的组播路由表中的转发表项即(S,G)表项,其中S是组播源的IP地址,G是该组播源发送组播数据包的组播地址,根据重传请求消息中的源IP地址,即组播源发送组播数据包的组播地址查找到该组播地址对应的组播源的IP地址,将重传请求消息的目的IP地址修改为该组播源的IP地址后发送给组播源。

例如,视频客户端3发送的重传请求消息的目的IP地址为IPC1发送组播数据包的组播地址224.100.1.2,源IP地址为视频客户端3的IP地址13.1.1.6。视频客户端3的网关路由器(即路由器3)接收到视频客户端3发送的重传请求消息后,按照正常的组播转发流程将该重传请求消息转发给其它的路由器,因此视频客户端1和视频客户端2能接收到该重传请求消息,同时路由器3将该重传请求消息的目的IP地址修改为汇聚点RP(即路由器4)的IP地址2.1.1.2,将该重传请求消息的源IP地址修改为组播地址224.100.1.2,然后路由器3将修改过的重传请求消息发送给汇聚点RP。汇聚点RP接收到路由器3发送的重传请求消息后,根据该重传请求消息中的组播地址224.100.1.2,查询本设备组播路由表的(S,G)表项,得到组播源IPC1的IP地址1.1.1.2,将汇聚点RP发送的重传请求消息的目的IP地址修改为IPC1的IP地址1.1.1.2,然后将该重传请求消息发送给IPC1。

需要说明的是,如果本实施例路由器中配置的路由协议为PIM-DM时,本实施例组播网络中的组播树为最短路径树SPT,此时组播接收设备的网关路由器的组播路由表中有(S,G)表项,当网关路由器接收到组播接收设备发送的重传请求消息后,按照正常的组播转发流程将该重传请求消息转发给其它的路由器,同时根据重传请求消息的目的IP地址(即组播源发送组播数据包的组播地址)查询本设备的(S,G)表项,得到该组播地址对应的组播源的IP地址,将该重传请求消息的目的IP地址修改为该组播源的IP地址后,发送给组播源。

本实施例组播源接收到重传请求消息后,根据重传请求消息中丢失组播数据包的序列号,从缓存中取出丢失的组播数据包进行重传。本实施例视频客户端1丢失的组播数据包序列号为:10001、10002、10003、10004、10005,视频客户端2丢失的组播数据包序列号为:10001、10003、10005,视频客户端3丢失的组播数据包序列号为:10003、10004、10005,但是视频客户端1发送的重传请求消息中只有序列号10002,视频客户端2发送的重传请求消息中只有序列号10001,视频客户端3发送的重传请求消息中有序列号10003、10004、10005,因此组播源IPC1只需要将序列号为10001、10002、10003、10004、10005的组播数据包各重传一次。而在现有技术中,组播源IPC1需要将序列号为10001和10004的组播数据包重传2次,需要将序列号为10003和10005的组播数据包重传3次,需要将序列号为10002的组播数据包重传1次,因此本实施例大大减少了可靠组播传输中组播数据包的重传次数,降低了组播源和组播传输设备的负荷。

对应于实施例一的方法,还提出了一种减少可靠组播传输中数据包重传次数的装置,应用于组播接收设备,与上述方法对应,如图4所示,包括:

丢包检测模块,用于检测到所接收的组播数据出现丢包后,获取丢失数据包的序列号;

重传请求模块,用于接收其它组播接收设备发送的重传请求消息,如果在预设的延迟发送时间内没有收到其它组播接收设备发送的重传请求消息,则以组播方式发送携带有所述丢失数据包的序列号的重传请求消息,如果在预设的延迟发送时间内收到了其它组播接收设备发送的重传请求消息,则以组播方式发送携带有未在其它组播接收设备发送的重传请求消息中包含的丢失数据包的序列号的重传请求消息。

具体地,重传请求消息的目的MAC地址为组播MAC地址,源MAC地址为本组播接收设备的MAC地址,目的IP地址为所接收的组播源发送组播数据包的组播地址,源IP地址为本组播接收设备的IP地址。

具体地,本实施例重传请求模块,还用于在接收到的重传请求消息中丢失数据包的序列号与本组播接收设备丢失的数据包序列号完全重复时,则本组播接收设备不发送重传请求消息。

对应于实施例二的方法,还提出了一种减少可靠组播传输中数据包重传次数的装置,应用于组播接收设备对应的网关路由器,与上述方法对应,如图5所示,包括:

组播转发模块,用于接收到组播接收设备以组播方式发送的重传请求消息后,按照正常的组播转发流程将重传请求消息转发给其他路由器,使其它路由器将重传请求消息转发给跨三层网络的其它组播接收设备;

组播修改模块,用于判断本设备所在的组播树是最短路径树还是共享树,如果是最短路径树,则将重传请求消息的目的IP地址修改为相应组播源的IP后发送给组播源,如果是共享树,则将重传请求消息的源IP地址修改为该重传请求消息的目的IP地址,将重传请求消息的目的IP地址修改为共享树的汇聚点的IP地址,将修改后的重传请求消息发送给共享树的汇聚点,使共享树的汇聚点将接收到的重传请求消息的目的IP地址修改为相应组播源的IP地址后发送给组播源。

本实施例组播修改模块将重传请求消息的目的IP地址修改为相应组播源的IP后发送给组播源,执行如下操作:

组播修改模块根据重传请求消息中的组播地址,查询本设备组播路由表的转发表项,得到该组播地址对应的组播源的IP地址,将重传请求消息的目的IP地址修改为该组播源的IP地址后发送给组播源。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1