数据传输的方法和装置与流程

文档序号:27914596发布日期:2021-12-11 10:17阅读:58来源:国知局
1.本发明涉及计算机
技术领域
:,尤其涉及一种数据传输的方法和装置。
背景技术
::2.在实时通信(rtc,real‑timecommunication)场景中,高清晰、低延时音视频是传输持续追求的目标,但在实际使用过程中,网络丢包、抖动、延时都会导致传输质量的下降。通常的解决方法是采用前向纠错fec、后向纠错arq等技术来弥补丢失或延迟到达的数据包,配合抖动缓冲器jitterbuffer来对数据包去重排序,从而达到稳定连续数据输出。3.在实现本发明过程中,发明人发现现有技术中至少存在如下问题:4.现有的fec或arq纠错方式,主要解决随机性丢包、偶发抖动造成的数据分组丢失或延时到达等数据传输问题,但并不能解决网络拥塞、连续性丢包、大抖动等的弱网场景下的数据传输问题。技术实现要素:5.有鉴于此,本发明实施例提供一种数据传输的方法和装置,能够更好地利用网络资源进行数据传输,降低了传输延时,提高了音视频等数据的传输质量和传输效率,解决了网络拥塞、连续性丢包、大抖动等的弱网场景下的数据传输问题。6.为实现上述目的,根据本发明实施例的一个方面,提供了一种数据传输的方法。7.一种数据传输的方法,包括:获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路;获取所述网络链路的传输性能指标,并根据所述传输性能指标对所述网络链路进行通信质量评估;根据所述通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路,其中,所述纠错链路为所述主链路和所述备用链路中的至少一个网络链路。8.可选地,获取系统可用的不少于一个网络接口包括:获取系统的有效网络接口;从所述有效网络接口中删除回环网络接口和虚拟网络接口;通过查询系统的网络路由表,从删除后的有效网络接口中获取具有默认路由记录的网络接口作为系统可用的网络接口。9.可选地,建立网络接口与数据接收方的网络连接以得到不少于一个网络链路包括:对每个网络接口,创建与所述网络接口的ip地址绑定的网络套接字;通过所述网络套接字建立与数据接收方的ip地址的网络连接,以得到不少于一个网络链路。10.可选地,所述传输性能指标包括网络链路的往返时延、丢包率和抖动方差;获取所述网络链路的传输性能指标包括:获取所述网络链路的心跳记录,所述心跳记录包括心跳包的发送时间和响应时间;根据所述心跳记录计算每个心跳包的往返时延,以及所述网络链路的丢包率和抖动方差;根据所述传输性能指标对所述网络链路进行通信质量评估包括:根据所述网络链路的往返时延、丢包率和抖动方差,判断所述网络链路是否可用、是否连续丢包、是否高延时、是否高丢包、是否高抖动以及是否超负荷,以进行通信质量评估。11.可选地,根据所述传输性能指标对所述网络链路进行通信质量评估包括:判断所述网络链路的往返时延是否超过设定的第一阈值;若是,则判定所述网络链路为不可用网络;否则,判断在设定的第一时长内,是否出现多次所述网络链路的往返时延超过设定的第二阈值,其中,所述第二阈值远小于第一阈值,所述多次为次数超过设定的次数阈值;若是,则判定所述网络链路为连续丢包网络;否则,计算所述网络链路的平均往返时延,并判断所述平均往返时延是否超过设定的第三阈值;若是,则判定所述网络链路为高延时网络;否则,计算所述网络链路在设定的第二时长内的丢包率,并判断所述丢包率是否超过设定的第四阈值;若是,则判定所述网络链路为高丢包网络;否则,计算所述网络链路在设定的第三时长内的抖动方差,并判断所述抖动方差是否超过设定的第五阈值;若是,则判定所述网络链路为高抖动网络;否则,计算所述网络链路在设定的第四时长内的往返时延的变化率,并判断所述变化率是否超过设定的第六阈值;若是,则判定所述网络链路为高负载网络。12.可选地,计算所述网络链路在设定的第四时长内的往返时延的变化率包括:根据所述网络链路的心跳记录,计算在设定的第四时长内相邻两个心跳包的往返时延的差值;根据所述差值,通过最小二乘法拟合得到直线的斜率值,并将所述直线的斜率值作为所述网络链路在设定的第四时长内的往返时延的变化率。13.可选地,根据所述通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路包括:根据所述通信质量评估结果,将通信质量评估结果符合预设要求的网络链路确定为用于传输原始数据的主链路,将除主链路之外的网络链路确定为用于传输原始数据的备用链路;若不存在备用链路,则将所述主链路确定为用于传输纠错数据的纠错链路;否则,判断所述主链路是否为连续丢包网络、高延时网络、高丢包网络、高抖动网络或高负载网络;若是,则从所述备用链路中选择一个备用链路确定为用于传输纠错数据的纠错链路;否则,判断所述主链路是否为高延时和高抖动网络,且已设置可双路容错;若是,则从所述备用链路中选择一个备用链路,并将所述主链路和选择的备用链路确定为用于传输纠错数据的纠错链路。14.根据本发明实施例的另一方面,提供了一种数据传输的装置。15.一种数据传输的装置,包括:链路构建模块,用于获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路;链路评估模块,用于获取所述网络链路的传输性能指标,并根据所述传输性能指标对所述网络链路进行通信质量评估;链路选择模块,用于根据所述通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路,其中,所述纠错链路为所述主链路和所述备用链路中的至少一个网络链路。16.可选地,所述链路构建模块还用于:获取系统的有效网络接口;从所述有效网络接口中删除回环网络接口和虚拟网络接口;通过查询系统的网络路由表,从删除后的有效网络接口中获取具有默认路由记录的网络接口作为系统可用的网络接口。17.可选地,所述链路构建模块还用于:对每个网络接口,创建与所述网络接口的ip地址绑定的网络套接字;通过所述网络套接字建立与数据接收方的ip地址的网络连接,以得到不少于一个网络链路。18.可选地,所述传输性能指标包括网络链路的往返时延、丢包率和抖动方差;所述链路评估模块还用于:获取所述网络链路的心跳记录,所述心跳记录包括心跳包的发送时间和响应时间;根据所述心跳记录计算每个心跳包的往返时延,以及所述网络链路的丢包率和抖动方差;根据所述网络链路的往返时延、丢包率和抖动方差,判断所述网络链路是否可用、是否连续丢包、是否高延时、是否高丢包、是否高抖动以及是否超负荷,以进行通信质量评估。19.可选地,所述链路评估模块还用于:判断所述网络链路的往返时延是否超过设定的第一阈值;若是,则判定所述网络链路为不可用网络;否则,判断在设定的第一时长内,是否出现多次所述网络链路的往返时延超过设定的第二阈值,其中,所述第二阈值远小于第一阈值,所述多次为次数超过设定的次数阈值;若是,则判定所述网络链路为连续丢包网络;否则,计算所述网络链路的平均往返时延,并判断所述平均往返时延是否超过设定的第三阈值;若是,则判定所述网络链路为高延时网络;否则,计算所述网络链路在设定的第二时长内的丢包率,并判断所述丢包率是否超过设定的第四阈值;若是,则判定所述网络链路为高丢包网络;否则,计算所述网络链路在设定的第三时长内的抖动方差,并判断所述抖动方差是否超过设定的第五阈值;若是,则判定所述网络链路为高抖动网络;否则,计算所述网络链路在设定的第四时长内的往返时延的变化率,并判断所述变化率是否超过设定的第六阈值;若是,则判定所述网络链路为高负载网络。20.可选地,所述链路评估模块还用于:根据所述网络链路的心跳记录,计算在设定的第四时长内相邻两个心跳包的往返时延的差值;根据所述差值,通过最小二乘法拟合得到直线的斜率值,并将所述直线的斜率值作为所述网络链路在设定的第四时长内的往返时延的变化率。21.可选地,所述链路选择模块还用于:根据所述通信质量评估结果,将通信质量评估结果符合预设要求的网络链路确定为用于传输原始数据的主链路,将除主链路之外的网络链路确定为用于传输原始数据的备用链路;若不存在备用链路,则将所述主链路确定为用于传输纠错数据的纠错链路;否则,判断所述主链路是否为连续丢包网络、高延时网络、高丢包网络、高抖动网络或高负载网络;若是,则从所述备用链路中选择一个备用链路确定为用于传输纠错数据的纠错链路;否则,判断所述主链路是否为高延时和高抖动网络,且已设置可双路容错;若是,则从所述备用链路中选择一个备用链路,并将所述主链路和选择的备用链路确定为用于传输纠错数据的纠错链路。22.根据本发明实施例的又一方面,提供了一种数据传输的电子设备。23.一种数据传输的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所提供的数据传输的方法。24.根据本发明实施例的再一方面,提供了一种计算机可读介质。25.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的数据传输的方法。26.上述发明中的一个实施例具有如下优点或有益效果:通过获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路;获取网络链路的传输性能指标,并根据传输性能指标对网络链路进行通信质量评估;根据通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路,其中,纠错链路为主链路和备用链路中的至少一个网络链路,即可实现通过对设备系统可用的不少于一个网络接口进行通信质量评估,并选择通信质量好的网络链路来进行原始数据和纠错数据的传输,既可以实现一个网络链路同时传输原始数据和纠错数据,又可以实现多个网络链路分别传输原始数据和纠错数据,从而更好地利用了网络资源进行数据传输,降低了传输延时,提高了音视频等数据的传输质量和传输效率,解决了网络拥塞、连续性丢包、大抖动等的弱网场景下的数据传输问题。27.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明28.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:29.图1是根据本发明实施例的数据传输的方法的主要步骤示意图;30.图2是本发明实施例的数据传输的实现原理示意图;31.图3是本发明一个实施例的数据传输系统的架构图;32.图4是本发明一个实施例的心跳记录采集原理示意图;33.图5是本发明一个实施例的网络链路的通信质量评估的实现流程示意图;34.图6是本发明一个实施例的最小二乘法拟合直线的实现原理示意图;35.图7是本发明一个实施例的链路选择的实现流程示意图;36.图8是根据本发明实施例的数据传输的装置的主要模块示意图;37.图9是本发明实施例可以应用于其中的示例性系统架构图;38.图10是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式39.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。40.在数据纠错环节,前向纠错是在发送端消耗一定比例的冗余带宽,对原始数据数据采用数学算法(如:xor、reed‑solomon算法等)运算产生纠错数据分组并发送,接收端在检测到原始数据分组丢失后,通过纠错数据分组计算尝试恢复原始数据;后向纠错arq是接收方检测到数据包丢失,向发送方请求nack重传丢失的数据分组;这两种纠错方法中纠错数据包都随同原始数据包在同一条网路链路收发,加剧网络链路的拥塞程度,纠错效果在部分场景存在效率低下的情况。41.现有无论是fec还是arq纠错方式,主要解决随机性丢包、偶发抖动造成的数据分组丢失或延时到达问题,并不解决处于网络拥塞、连续性丢包、大抖动的弱网场景,经分析主要表现有以下几点不足:42.1、现阶段大量的智能终端支持多种网络类型,如手机同时支持无线网络wifi和3/4/5g网络接入,或双4/5g网络接入,pc支持有线网络和wifi无线网络接入,在现有实时通信同时只能使用一种网络,只有网络失效后才切换到另一个网络,这种做法不能获得多个网络连接带了的好处,在其中网络失效后切换到可用网络也不够及时;43.2、造成网络数据大丢包、高抖动、高延时的原因往往是网络超负载、网络拥塞,fec或arq的纠错算法方式都是增加发送纠错数据包,增大带宽负载,从而导致网络链路状态的拥塞加剧恶化,这与纠错恢复数据的初衷背离,导致网络链路更加不可用;44.3、在连续性丢包、或突发高抖动场景中,表现现象为一段时间范围内所有的数据包都大量丢失或延迟到达,在这期间无论何种纠错方式都无济于事,纠错算法失效,最终表现为视频卡顿、声音丢失。45.针对上述现有技术中存在的技术问题,本发明提供了一种数据传输的方法和装置,通过同时使用多个网络接口来进行原始数据和纠错数据的传输,可以高效纠错丢失的数据分组,降低传输延时,整体上提升视音频数据的传输质量。46.图1是根据本发明实施例的数据传输的方法的主要步骤示意图。如图1所示,本发明实施例的数据传输的方法主要包括如下的步骤s101至步骤s103。47.步骤s101:获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路。48.步骤s102:获取网络链路的传输性能指标,并根据传输性能指标对网络链路进行通信质量评估;49.步骤s103:根据通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路,其中,纠错链路为主链路和备用链路中的至少一个网络链路。50.根据上述的步骤s101至步骤s103,即可实现通过对设备系统可用的不少于一个网络接口进行通信质量评估,并选择通信质量好的网络链路来进行原始数据和纠错数据的传输,既可以实现一个网络链路同时传输原始数据和纠错数据,又可以实现多个网络链路分别传输原始数据和纠错数据,从而更好地利用了网络资源进行数据传输,降低了传输延时,提高了音视频等数据的传输质量和传输效率。51.图2是本发明实施例的数据传输的实现原理示意图。如图2所示,在数据传输过程中,涉及到数据发送方和数据接收方,本发明主要为数据发送方的实现过程。根据图2所示,本发明的数据传输的实现原理如下:52.1、数据发送方获取系统可用的不少于一个网络接口。具体地,数据发送方枚举操作系统所有状态为up的有效网络接口;然后过滤掉回环回环网络接口和虚拟网络接口,并获得过滤后得到的网络接口的网络类型(如以太网ether、无线网wifi、蜂窝网cellular等)、ip地址等信息,其中,过滤后得到的网络接口要具备默认路由记录,即:目标为0.0.0/0的路由记录;53.2、数据发送方针对过滤出来的网络接口,分别建立网络接口与数据接收方的网络连接。具体地,可通过创建网络套接字socket与网络接口的ip地址绑定,并通过socket与数据接收端的ip地址建立网络连接;54.3、在数据发送方建立起的多条链路上,周期性发送udp心跳请求包,数据接收方接收到心跳请求包后立即回复心跳回应包,在此过程中,数据发送方统计网络延时(即:网络的往返时延)、丢包率、抖动率、抖动方差等网络链路的传输性能指标;55.4、数据发送方对心跳反馈成功的网络链路,依据链路的通信质量进行排序,同等质量的网络链路依据链路类型ether、wifi、cellular的顺序决定优先级,选择排序中最优网络链路作为主传输链路、次优链路为备用链路,其中,备用链路可以有多个;56.5、持续采集主链路的传输性能指标网络延时、丢包率、抖动率等,并判定主链路是否为高丢包、连续丢包、高延时、高抖动、超负荷(或网络链路拥塞)或是否设置了主备链路同传纠错数据等等,进而确定用于传输纠错数据的纠错链路;57.6、数据发送方依据判定出的主、备链路,纠错数据传输的纠错链路,发送原始数据和纠错数据;数据接收方收到数据后,经由抖动缓冲器jitterbuffer去重排序纠错后,返回数据。58.图3是本发明一个实施例的数据传输系统的架构图。根据本发明实施例的技术方案,数据传输系统分为数据发送方和数据接收方两个部分。在发送方实现网络链路检测,对于符合条件的网络链路建立udp连接,并持续ping/pong心跳检测网络连通性、计算往返时延rtt、丢包率、抖动率等,这些传输性能指标用于评估网络质量,判定主、备链路和选定纠错数据传输的纠错链路。原始数据进入发送缓冲器,产生fec纠错包,经链路判断和选路后经由网络收发模块发送,接收方收到数据后,在jitterbuffer中对于丢失的数据包尝试恢复,或发送nack(negativeacknowledgement,是一种负向反馈,接收方只有在没有收到数据时通知发送方)请求重新补发,最后完成数据传输,并将接收到的音视频等数据返回给需要的应用。59.下面分别介绍数据传输系统包括的各个模块的功能:60.网络接口检测模块:用于检测设备上可用的网络适配器,挑选出与接收端连通的网络接口,驱动网络链路管理模块建立网络连接。检测方式是:首先枚举操作系统所有有效网络接口;然后删除回环网络接口和虚拟网络接口,并获得删除后的网络接口的网络类型(如ether、wifi、cellular等)和ip地址等信息;最后,通过查询操作系统路由表routetable,从删除后的有效网络接口中获取具有默认路由记录的网络接口作为系统可用的网络接口,其中,默认路由记录指的是目标为0.0.0/0的路由记录。该模块监听操作系统网络接口变更事件,以便快速发现网络接口变化;61.网络链路管理模块:用于根据网络接口检测模块选择的多个可用的网络接口,创建多个网络udpsocket,分别绑定到不同的网络接口,例如:在手机上创建2个socket,分别绑定到wifi、4g类型的网络接口上,并周期性发送ping心跳包来检测网络链路的连通状态,若持续一段时间接收不到响应则表示连接丢失,网络不可用;62.网络质量评估tx模块(发送方):用于获得网络连接的几个典型的传输性能指标,并根据传输性能指标计算网络链路的状态以进行通信质量评估,网络链路的状态例如包括是否可用、高丢包、高延时、高抖动、高负载(链路拥塞)、连续丢包等,得到的传输性能指标和根据指标计算的网络链路的状态形成了网络链路的通信质量评估结果,供网络链路判定与选路模块使用;63.链路判定与选路模块:用于根据网络质量评估模块的通信质量评估结果,判定选择主备链路和纠错链路的选路结果;64.网络收发模块(发送方、接收方):封装操作系统的网络收发功能,一般是使用socket绑定网络适配器实现,大多采用udp协议发送;65.发送缓冲区模块:用于缓存调用者发送的原始数据、产生fec纠错包,在接收方明确指示数据包已经接收到、或发送超时、或发送缓存区满,才会从该缓冲区移除;66.网络质量评估rx模块(接收方):用于接收网络质量评估tx模块的心跳请求包并立即回应回复,回应包附带心跳请求包内容;67.接收缓冲器(jitterbuffer)模块:用于接收到发送方的原始数据、纠错数据,在检测到数据分组丢失后尝试依据fec包恢复原始数据、或发送nack请求,对接收到的数据包排序、去重后回调给调用者。68.其中,网络质量评估tx模块在获取网络连接的几个典型的传输性能指标时,具体方式是获取网络链路的心跳记录,心跳记录包括心跳包的发送时间和响应时间,并根据心跳记录计算每个心跳包的往返时延,以及网络链路的丢包率和抖动方差。具体地,发送方周期(例如:每50毫秒)向接收方发送udp心跳包,接收方回应心跳包,发送方通过采集心跳记录来计算网络链路的传输性能指标。图4是本发明一个实施例的心跳记录采集原理示意图,如图4所示,周期性得到每次心跳记录,以pair(100,req发送时间点,resp接收时间点)为例,表示的是第100次心跳记录,其中包括了(请求包发送时间点,响应包接收时间点)。通过周期性地采集每次心跳记录,即可计算每次心跳的rtt往返时延,或心跳丢失记录。69.在得到心跳记录之后,即可根据心跳记录计算每个心跳包的往返时延,以及网络链路的丢包率和抖动方差等传输性能指标。其中,往返时延rtt=响应包接收时间-请求包发送时间;一段时间的丢包率=心跳丢失次数/所有心跳次数,其中,所有心跳次数指的是心跳丢失次数与心跳成功次数之和;一段时间的抖动方差=(sum(sqrt(rtt-rtt均值)))/n,其中,sqrt指的是开方运算,sum指的是求和运算。70.在得到传输性能指标之后,即可根据传输性能指标,判断网络链路的状态以进行通信质量评估。其中,网络链路的状态例如包括网络链路是否可用、是否连续丢包、是否高延时、是否高丢包、是否高抖动以及是否超负荷(链路拥塞),等等。图5是本发明一个实施例的网络链路的通信质量评估的实现流程示意图。如图5所示,可通过以下步骤来进行通信质量评估:71.判断所述网络链路的往返时延是否超过设定的第一阈值,其中,第一阈值例如是3秒;72.若是,则判定所述网络链路为不可用网络;73.否则,判断在设定的第一时长内,是否出现多次所述网络链路的往返时延超过设定的第二阈值,其中,所述第二阈值远小于第一阈值,所述多次为次数超过设定的次数阈值;其中,第二阈值例如是200毫秒,次数阈值例如是5次,等等;74.若是,则判定所述网络链路为连续丢包网络;75.否则,计算所述网络链路的平均往返时延,并判断所述平均往返时延是否超过设定的第三阈值;其中,在计算平均往返时延时,可计算最近的指定次数rtt的平均值,也可计算最近的指定时间段内的rtt平均值,第三阈值例如是600毫秒;76.若是,则判定所述网络链路为高延时网络;77.否则,计算所述网络链路在设定的第二时长内的丢包率,并判断所述丢包率是否超过设定的第四阈值;其中,第四阈值例如是30%;78.若是,则判定所述网络链路为高丢包网络;79.否则,计算所述网络链路在设定的第三时长内的抖动方差,并判断所述抖动方差是否超过设定的第五阈值;80.若是,则判定所述网络链路为高抖动网络;81.否则,计算所述网络链路在设定的第四时长内的往返时延的变化率,并判断所述变化率是否超过设定的第六阈值;82.若是,则判定所述网络链路为高负载网络。83.在本发明的实施例中,所出现的第一时长、第二时长、第三时长、第四时长、第一阈值、第二阈值、第三阈值、第四阈值、第五阈值、第六阈值、次数阈值等,在具体实施时,可根据需要灵活设定,本发明对此不作具体限定。84.根据本发明的实施例,在判断网络链路的状态是否为高负载网络时,若rtt的变化率在一段时间内持续增加则判定为网络超负荷,为高负载网络。具体地,首先统计每个心跳记录,计算得到相邻两个心跳包的往返时延rtt的差值,然后通过最小二乘法拟合出直线的斜率,依据斜率值判断rtt的变化率是否是持续增加。图6是本发明一个实施例的最小二乘法拟合直线的实现原理示意图。其中,y是第i次心跳与第(i‑1)次心跳的rtt差值,x表示心跳次数i,每两次心跳间隔1个单位(例如:20毫秒),则拟合直线方程y=bx+a的斜率b可按如下公式计算:[0085][0086]其中,和分别为x和y的算术平均值。[0087]在通过网络质量评估tx模块得到网络链路的传输性能指标和网络链路的状态后,即构成了网络链路的通信质量评估结果。之后,链路判定与选路模块,即根据通信质量评估结果,来选择用于传输原始数据的主、备链路,以及用于传输纠错数据的纠错链路。[0088]具体地,根据本发明的实施例,在根据通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路时,具体实现流程如图7,图7是本发明一个实施例的链路选择的实现流程示意图。如图7所示,链路选择的实现流程可以包括以下的步骤:[0089]根据通信质量评估结果,将通信质量评估结果符合预设要求的网络链路确定为用于传输原始数据的主链路,将除主链路之外的网络链路确定为用于传输原始数据的备用链路;其中,理论上来讲,主链路应符合:网络链路的往返时延不超过设定的第一阈值,且在设定的第二时长内的丢包率不超过设定的第四阈值的低延时、低丢包网络,故而,预设要求例如是:将该不少于一个网络链路的往返延时、丢包率等按照从低到高排序,并将排在最前的最优网络链路作为主链路,将其他的网络链路作为备用链路,或者也可将排在第二位的次优网络链路作为备用链路,等等。另外,在选择主链路时,也可考虑网络链路的抖动方差等传输性能指标;以及,在选择主链路时,还可以考虑网络接口的网络类型的优先级(例如:可设置wifi的优先级高于4/5g蜂窝网的优先级)等;[0090]若不存在备用链路,则将主链路确定为用于传输纠错数据的纠错链路;[0091]否则,判断主链路是否为连续丢包网络、高延时网络、高丢包网络、高抖动网络或高负载网络;[0092]若是,则从备用链路中选择一个备用链路确定为用于传输纠错数据的纠错链路;其中,若备用链路有多个,则在从备用链路选择中选择一个备用链路作为纠错链路时,也可按照前述的选择主链路的方法选择往返延时和丢包率最低的备用链路作为纠错链路;[0093]否则,判断主链路是否为高延时和高抖动网络,且已设置可双路容错;其中,如果设置了对某些数据(例如音频数据包、视频关键帧数据包等)可双路容错,则主备链路可同时传输纠错数据;[0094]若是,则从备用链路中选择一个备用链路,并将主链路和选择的备用链路确定为用于传输纠错数据的纠错链路,即:使用主备链路同时传输纠错数据。[0095]在实际应用中,每当数据传输所使用的当前主链路不可用时,即可执行一次链路选择的实现流程。[0096]根据本发明的技术方案,在进行数据传输时,可以达到以下效果:[0097]1、在多网络链路的设备上,选择出通信质量好(延时小、丢包低、抖动小)的网络链路做作为主传输链路,其它有效网络链路作为备用链路,选择时可考虑不同类型的网络链路的优先级(例如wifi优先级就比4/5g高),在手机、pc上同时并发利用wifi、4g、lan、wifi等多中网络接口的目标;[0098]2、当网络链路的实际通信质量变得非常差时(非网络接口处于down状态),本发明能识别该情况并自动快速切换,降低网络接口切换的响应时间;[0099]3、在网络链路出现拥塞时,其表现为高丢包、高延时、高抖动,采用备用链路传输纠错包,以减轻拥塞网络链路的负载,增强纠错效果,提高数据传输效率;[0100]4、可检测出连续丢包的网络特性,使用备用链路作为纠错包传输链路,解决传统单链路传输方法连续丢包时间段内,任何数据都无法到达接收方的问题;[0101]5、对于高优先级的数据包,例如音频数据包等,可设置主备链路同时传输,以获得高到达率和更低延时。例如:在移动设备(手机)视频通信过程中,在wifi链路带宽不足以支持流畅的视音频通话时,可设置4g网络链路作为补充,以增强数据传输的流畅性、降低延时;[0102]6、对于数据包要即将超出抖动缓冲器jitterbuffer的最大容忍抖动范围、或主备链路延时(非拥塞状态)都高于阈值时,可以通过主备链路同时传输容错数据,获得更高传输效率,降低延时。[0103]图8是根据本发明实施例的数据传输的装置的主要模块示意图。如图8所示,本发明实施例的数据传输的装置800主要包括链路构建模块801、链路评估模块802和链路选择模块803。[0104]链路构建模块801,用于获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路;[0105]链路评估模块802,用于获取所述网络链路的传输性能指标,并根据所述传输性能指标对所述网络链路进行通信质量评估;[0106]链路选择模块803,用于根据所述通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路,其中,所述纠错链路为所述主链路和所述备用链路中的至少一个网络链路。[0107]根据本发明的一个实施例,链路构建模块801还可以用于:[0108]获取系统的有效网络接口;[0109]从所述有效网络接口中删除回环网络接口和虚拟网络接口;[0110]通过查询系统的网络路由表,从删除后的有效网络接口中获取具有默认路由记录的网络接口作为系统可用的网络接口。[0111]根据本发明的另一个实施例,链路构建模块801还可以用于:[0112]对每个网络接口,创建与所述网络接口的ip地址绑定的网络套接字;[0113]通过所述网络套接字建立与数据接收方的ip地址的网络连接,以得到不少于一个网络链路。[0114]根据本发明的另一个实施例,所述传输性能指标包括网络链路的往返时延、丢包率和抖动方差;[0115]链路评估模块802还可以用于:[0116]获取所述网络链路的心跳记录,所述心跳记录包括心跳包的发送时间和响应时间;[0117]根据所述心跳记录计算每个心跳包的往返时延,以及所述网络链路的丢包率和抖动方差;[0118]根据所述网络链路的往返时延、丢包率和抖动方差,判断所述网络链路是否可用、是否连续丢包、是否高延时、是否高丢包、是否高抖动以及是否超负荷,以进行通信质量评估。[0119]根据本发明的又一个实施例,链路评估模块802还可以用于:[0120]判断所述网络链路的往返时延是否超过设定的第一阈值;[0121]若是,则判定所述网络链路为不可用网络;[0122]否则,判断在设定的第一时长内,是否出现多次所述网络链路的往返时延超过设定的第二阈值,其中,所述第二阈值远小于第一阈值,所述多次为次数超过设定的次数阈值;[0123]若是,则判定所述网络链路为连续丢包网络;[0124]否则,计算所述网络链路的平均往返时延,并判断所述平均往返时延是否超过设定的第三阈值;[0125]若是,则判定所述网络链路为高延时网络;[0126]否则,计算所述网络链路在设定的第二时长内的丢包率,并判断所述丢包率是否超过设定的第四阈值;[0127]若是,则判定所述网络链路为高丢包网络;[0128]否则,计算所述网络链路在设定的第三时长内的抖动方差,并判断所述抖动方差是否超过设定的第五阈值;[0129]若是,则判定所述网络链路为高抖动网络;[0130]否则,计算所述网络链路在设定的第四时长内的往返时延的变化率,并判断所述变化率是否超过设定的第六阈值;[0131]若是,则判定所述网络链路为高负载网络。[0132]根据本发明的又一个实施例,链路评估模块802还可以用于:[0133]根据所述网络链路的心跳记录,计算在设定的第四时长内相邻两个心跳包的往返时延的差值;[0134]根据所述差值,通过最小二乘法拟合得到直线的斜率值,并将所述直线的斜率值作为所述网络链路在设定的第四时长内的往返时延的变化率。[0135]根据本发明的再一个实施例,链路选择模块803还可以用于:[0136]根据所述通信质量评估结果,将通信质量评估结果符合预设要求的网络链路确定为用于传输原始数据的主链路,将除主链路之外的网络链路确定为用于传输原始数据的备用链路;[0137]若不存在备用链路,则将所述主链路确定为用于传输纠错数据的纠错链路;[0138]否则,判断所述主链路是否为连续丢包网络、高延时网络、高丢包网络、高抖动网络或高负载网络;[0139]若是,则从所述备用链路中选择一个备用链路确定为用于传输纠错数据的纠错链路;[0140]否则,判断所述主链路是否为高延时和高抖动网络,且已设置可双路容错;[0141]若是,则从所述备用链路中选择一个备用链路,并将所述主链路和选择的备用链路确定为用于传输纠错数据的纠错链路。[0142]根据本发明实施例的技术方案,通过获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路;获取网络链路的传输性能指标,并根据传输性能指标对网络链路进行通信质量评估;根据通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路,其中,纠错链路为主链路和备用链路中的至少一个网络链路,即可实现通过对设备系统可用的不少于一个网络接口进行通信质量评估,并选择通信质量好的网络链路来进行原始数据和纠错数据的传输,既可以实现一个网络链路同时传输原始数据和纠错数据,又可以实现多个网络链路分别传输原始数据和纠错数据,从而更好地利用了网络资源进行数据传输,降低了传输延时,提高了音视频等数据的传输质量和传输效率,解决了网络拥塞、连续性丢包、大抖动等的弱网场景下的数据传输问题。[0143]图9示出了可以应用本发明实施例的数据传输的方法或数据传输的装置的示例性系统架构900。[0144]如图9所示,系统架构900可以包括终端设备901、902、903,网络904和服务器905。网络904用以在终端设备901、902、903和服务器905之间提供通信链路的介质。网络904可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。[0145]用户可以使用终端设备901、902、903通过网络904与服务器905交互,以接收或发送消息等。终端设备901、902、903上可以安装有各种客户端应用,例如购物类应用、网页浏览器应用、图片处理类应用、音视频采集类应用、社交平台软件等(仅为示例)。[0146]终端设备901、902、903可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。[0147]服务器905可以是提供各种服务的服务器,例如对用户利用终端设备901、902、903所发送的数据传输请求提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的数据传输请求等数据进行处理,获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路;获取所述网络链路的传输性能指标,并根据所述传输性能指标对所述网络链路进行通信质量评估;根据所述通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路,其中,所述纠错链路为所述主链路和所述备用链路中的至少一个网络链路,并将处理结果(例如确定的主链路和备用链路,以及纠错链路‑‑仅为示例)反馈给终端设备。[0148]需要说明的是,本发明实施例所提供的数据传输的方法一般由服务器905执行,相应地,数据传输的装置一般设置于服务器905中。[0149]应该理解,图9中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。[0150]下面参考图10,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机系统1000的结构示意图。图10示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。[0151]如图10所示,计算机系统1000包括中央处理单元(cpu)1001,其可以根据存储在只读存储器(rom)1002中的程序或者从存储部分1008加载到随机访问存储器(ram)1003中的程序而执行各种适当的动作和处理。在ram1003中,还存储有系统1000操作所需的各种程序和数据。cpu1001、rom1002以及ram1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。[0152]以下部件连接至i/o接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。[0153]特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(cpu)1001执行时,执行本发明的系统中限定的上述功能。[0154]需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd‑rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。[0155]附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。[0156]描述于本发明实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括链路构建模块、链路评估模块和链路选择模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,链路构建模块还可以被描述为“用于获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路的模块”。[0157]作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路;获取所述网络链路的传输性能指标,并根据所述传输性能指标对所述网络链路进行通信质量评估;根据所述通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路,其中,所述纠错链路为所述主链路和所述备用链路中的至少一个网络链路。[0158]根据本发明实施例的技术方案,通过获取系统可用的不少于一个网络接口,并建立网络接口与数据接收方的网络连接以得到不少于一个网络链路;获取网络链路的传输性能指标,并根据传输性能指标对网络链路进行通信质量评估;根据通信质量评估结果确定用于传输原始数据的主链路和备用链路,以及用于传输纠错数据的纠错链路,其中,纠错链路为主链路和备用链路中的至少一个网络链路,即可实现通过对设备系统可用的不少于一个网络接口进行通信质量评估,并选择通信质量好的网络链路来进行原始数据和纠错数据的传输,既可以实现一个网络链路同时传输原始数据和纠错数据,又可以实现多个网络链路分别传输原始数据和纠错数据,从而更好地利用了网络资源进行数据传输,降低了传输延时,提高了音视频等数据的传输质量和传输效率,解决了网络拥塞、连续性丢包、大抖动等的弱网场景下的数据传输问题。[0159]上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1