发送流数据的方法及数据发送设备技术

技术编号:21854287 阅读:58 留言:0更新日期:2019-08-14 01:16
本申请实施例提供了一种发送流数据的方法及数据发送设备,应用于传输控制协议TCP连接的数据发送端,数据发送端的操作系统中运行有应用,包括:将应用下发的数据块存入第一队列,数据块为流数据,第一队列为数据发送端的操作系统的用户态中的队列,第一队列用于放置待发送的流数据的数据块;在第二队列中的数据量满足预设条件的情况下,将第一队列中的至少一个数据块加入第二队列,第二队列为数据发送端的操作系统的内核态中,TCP协议对应的发送缓存队列;数据发送端通过第二队列,向TCP连接的数据接收端发送数据。实施本申请,能够有效减少内核态中流数据的堆积,减少流数据的传输时延,提高了使用TCP协议传输流数据的实时性。

Method of sending stream data and data transmitting equipment

【技术实现步骤摘要】
发送流数据的方法及数据发送设备
本申请实施例涉及通信
,尤其涉及一种发送流数据的方法及数据发送设备。
技术介绍
流式传输分为顺序流式(ProgressiveStreaming)传输和实时流式(RealtimeStreaming)传输两种传输方式,流式传输所传输的数据可以称为流数据(datastream),广泛适用于例如音视频、网络监控、网络游戏、金融服务等场景。顺序流式传输是顺序下载,例如在下载一音视频文件的同时,用户可以观看该音视频已经下载完成的部分。实时流式传输总是实时传输,例如实时现场直播,这种情况下,往往音视频需要被实时的观看到。因此实时流式传输不能被延迟或过度缓冲,需要应用程序立即处理接收到的数据并呈现给用户。实时流式传输的使用场景包括:网络视频直播、远程桌面共享、视频监控以及视频电话等等。使用实时流式传输来传输音视频文件,用户可以边下载文件边播放,无需下载完整的音视频文件即可观看或者收听,可以节约数分钟甚至数小时的下载时间,对系统缓存容量的需求也会降低。另一方面,通信领域常用的传输控制协议(TransmissionControlProtocol,TCP)也可以用于传输流数据。使用TCP协议的情况下,发送流数据的应用程序(具体可以指实时流媒体应用)将流数据的数据块下发到内核态缓存后,该数据块就位于内核态缓存中,直到发送端确认接收端成功接收该数据块后,该数据块才被从发送端的内核态缓存中删除。这样的处理方式有较长的排队时延(指报文发送前在内核态的发送队列中排队的时间),也拉长了流数据传输的整体的时延,而流数据显然是一种对传输的实时性要求高,对传输时延容忍度小的应用程序使得用TCP协议传输无法满足流数据。例如,在一个移动网络场景下:带宽为10Mbps,待传输的视频流的数据块为4MB,由于4MB等于32Mb,因此,内核态缓存中的视频流的数据块的排队时延可能需要3.2s,这显然对保障流数据传输的实时性影响巨大。所以现有的TCP协议传输方式的传输流数据,不能满足流数据的传输时延的要求。
技术实现思路
本申请实施例提供了一种发送流数据的方法及数据发送设备,能够有效减少内核态中流数据的堆积,减少流数据的传输时延,提高了使用TCP协议传输流数据的实时性。第一方面,本申请实施例提供了一种发送流数据的方法,所述方法应用于传输控制协议TCP连接的数据发送端,所述数据发送端的操作系统中运行有应用,所述方法包括:将所述应用下发的数据块存入第一队列,所述数据块为流数据,所述第一队列为所述数据发送端的操作系统的用户态中的队列,所述第一队列用于放置待发送的流数据的数据块;在第二队列中的数据量满足预设条件的情况下,将所述第一队列中的至少一个数据块加入所述第二队列,所述第二队列为所述数据发送端的操作系统的内核态中,TCP协议对应的发送缓存队列;所述数据发送端通过所述第二队列,向所述TCP连接的数据接收端发送数据。实施本申请实施例,通过将应用下发的数据块存入第一队列,然后在第二队列中的数据量满足预设条件的情况下,将第一队列中的至少一个数据块加入第二队列,可以有效减少第二队列中数据块的堆积,从而有效减少了流数据的传输时延,提高了使用TCP协议传输流数据的实时性,提高了流数据传输的效率。在一个可选的实现方式中,所述预设条件为:所述第二队列中的数据量不超过第二阈值,或者,所述第二队列中的数据量的占用比不超过第三阈值。在一个可选的实现方式中,所述方法还包括:在所述第二队列中的数据量超过所述第二阈值的情况下,或者,在所述第二队列中的数据量的占用比超过所述第三阈值的情况下,丢弃所述第一队列内优先级较低的数据块。实施本申请实施例,在网络质量不好或网络质量变化剧烈的情况下,第二队列中的数据块可能无法及时发送出去,导致第二队列中的数据量过多,这时会加大数据块在内核态中的排队时延,利用本申请实施例所提供的方法,可以优先将优先级较高的数据块加入第二队列中,丢弃优先级较低的数据块,从而最大限度的满足了流数据的传输时延的要求,减少了流数据的传输时延。在一个可选的实现方式中,在所述第二队列中的数据量超过所述第二阈值的情况下,或者,在所述第二队列中的数据量的占用比超过所述第三阈值的情况下,所述方法还包括:降低将数据块从所述第一队列加入所述第二队列的速率。实施本申请实施例,在将数据块从第一队列加入第二队列的速率可变的情况下,通过降低将数据块从第一队列加入第二队列的速率,可以有效避免了第二队列中的数据块过多而无法存入导致应用卡顿的现象。在一个可选的实现方式中,在所述第二队列中的数据量超过所述第二阈值的情况下,所述方法还包括:暂停将所述第一队列中的至少一个数据块加入所述第二队列,直到所述第二队列中的数据量不超过所述第二阈值,继续执行所述将所述第一队列中的至少一个数据块加入所述第二队列。在一个可选的实现方式中,在所述第二队列中的数据量的占用比超过所述第三阈值的情况下,所述方法还包括:暂停将所述第一队列中的至少一个数据块加入所述第二队列,直到所述第二队列中的数据量的占用比不超过所述第三阈值,继续执行所述将所述第一队列中的至少一个数据块加入所述第二队列。实施本申请实施例,在将数据块从第一队列加入第二队列的速率不变的情况下,通过暂停将第一队列中的数据块加入第二队列,可以有效避免第二队列中的数据块过多,而增加该数据块的传输时延。在一个可选的实现方式中,所述方法还包括:在所述第一队列中的数据量超过第一阈值的情况下,丢弃所述第一队列内优先级较低的数据块。在一个可选的实现方式中,所述应用下发的数据块为视频流的数据块,所述视频流的数据块包括双向预测编码B帧,帧间预测编码P帧以及帧内编码I帧;其中,在所述视频流的数据块中,被其他帧引用的次数越多的帧的优先级越高;和/或,在所述视频流的数据块中包括连续多帧未被其他帧引用,则所述连续多帧中的第一帧的优先级最低。实施本申请实施例,通过确定视频流的数据块中各个帧的优先级高低,从而在网络质量不好时,利用上述优先级机制,可以优先的把优先级较高的帧发送出去,丢弃那些优先级较低的帧,保证将重要的帧发送出去,最大限度的保障了通信质量,且不会对视频的播放造成影响,最大限度的提高了用户体验。在一个可选的实现方式中,在所述B帧、所述P帧和所述I帧被其他帧引用的次数相同的情况下,或者,在所述B帧、所述P帧和所述I帧分别为一组连续多帧中的第一帧的情况下,所述B帧的优先级低于所述P帧的优先级,所述P帧的优先级低于所述I帧的优先级。在一个可选的实现方式中,所述应用为流媒体应用,所述应用下发的数据块为视频流的数据块;所述第一阈值为由视频比特率、所述TCP连接的速率、所述第一队列中的数据量以及第一调节参数确定的阈值,所述第一调节参数为所述TCP连接能够缓存的视频流的数据块的时长;所述第二阈值为由所述视频比特率以及第二调节参数确定的阈值,所述第二调节参数为延迟参数,所述延迟参数用于表征所述流媒体应用可容忍的延迟程度。实施本申请实施例,通过视频比特率、TCP连接的速率、第一队列中的数据量以及第一调节参数来设置第一阈值,从而避免由于第一阈值设置为固定值,而导致无法有效利用第一队列的情况;以及通过视频比特率以及第二调节参数来设置第二阈值,动态地调整第二队列的数据量本文档来自技高网
...

【技术保护点】
1.一种发送流数据的方法,其特征在于,所述方法应用于传输控制协议TCP连接的数据发送端,所述数据发送端的操作系统中运行有应用,所述方法包括:将所述应用下发的数据块存入第一队列,所述数据块为流数据,所述第一队列为所述数据发送端的操作系统的用户态中的队列,所述第一队列用于放置待发送的流数据的数据块;在第二队列中的数据量满足预设条件的情况下,将所述第一队列中的至少一个数据块加入所述第二队列,所述第二队列为所述数据发送端的操作系统的内核态中,TCP协议对应的发送缓存队列;所述数据发送端通过所述第二队列,向所述TCP连接的数据接收端发送数据。

【技术特征摘要】
1.一种发送流数据的方法,其特征在于,所述方法应用于传输控制协议TCP连接的数据发送端,所述数据发送端的操作系统中运行有应用,所述方法包括:将所述应用下发的数据块存入第一队列,所述数据块为流数据,所述第一队列为所述数据发送端的操作系统的用户态中的队列,所述第一队列用于放置待发送的流数据的数据块;在第二队列中的数据量满足预设条件的情况下,将所述第一队列中的至少一个数据块加入所述第二队列,所述第二队列为所述数据发送端的操作系统的内核态中,TCP协议对应的发送缓存队列;所述数据发送端通过所述第二队列,向所述TCP连接的数据接收端发送数据。2.根据权利要求1所述的方法,其特征在于,所述预设条件为:所述第二队列中的数据量不超过第二阈值,或者,所述第二队列中的数据量的占用比不超过第三阈值。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:在所述第二队列中的数据量超过所述第二阈值的情况下,或者,在所述第二队列中的数据量的占用比超过所述第三阈值的情况下,丢弃所述第一队列内优先级较低的数据块。4.根据权利要求2或3所述的方法,其特征在于,在所述第二队列中的数据量超过所述第二阈值的情况下,或者,在所述第二队列中的数据量的占用比超过所述第三阈值的情况下,所述方法还包括:降低将数据块从所述第一队列加入所述第二队列的速率。5.根据权利要求2或3所述的方法,其特征在于,在所述第二队列中的数据量超过所述第二阈值的情况下,所述方法还包括:暂停将所述第一队列中的至少一个数据块加入所述第二队列,直到所述第二队列中的数据量不超过所述第二阈值,继续执行所述将所述第一队列中的至少一个数据块加入所述第二队列。6.根据权利要求2或3所述的方法,其特征在于,在所述第二队列中的数据量的占用比超过所述第三阈值的情况下,所述方法还包括:暂停将所述第一队列中的至少一个数据块加入所述第二队列,直到所述第二队列中的数据量的占用比不超过所述第三阈值,继续执行所述将所述第一队列中的至少一个数据块加入所述第二队列。7.根据权利要求1至3任意一项所述的方法,其特征在于,所述方法还包括:在所述第一队列中的数据量超过第一阈值的情况下,丢弃所述第一队列内优先级较低的数据块。8.根据权利要求1至7任意一项所述的方法,其特征在于,所述应用下发的数据块为视频流的数据块,所述视频流的数据块包括双向预测编码B帧,帧间预测编码P帧以及帧内编码I帧;其中,在所述视频流的数据块中,被其他帧引用的次数越多的帧的优先级越高;和/或,在所述视频流的数据块中包括连续多帧未被其他帧引用,则所述连续多帧中的第一帧的优先级最低。9.根据权利要求8所述的方法,其特征在于,在所述B帧、所述P帧和所述I帧被其他帧引用的次数相同的情况下,或者,在所述B帧、所述P帧和所述I帧分别为一组连续多帧中的第一帧的情况下,所述B帧的优先级低于所述P帧的优先级,所述P帧的优先级低于所述I帧的优先级。10.根据权利要求1至9任意一项所述的方法,其特征在于,所述将所述应用下发的数据块存入第一队列包括:通过调用目标应用程序编程接口API将所述应用下发的数据块存入所述第一队列。11.根据权利要求1至9任意一项所述的方法,其特征在于,所述将所述应用下发的数据块存入第一队列包括:通过所述应用的代理将所述应用下发的数据块存入所述第一队列,所述代理为运行在所述操作系统的用户态的一个进程。12.一种数据发送设备,其特征在于,所述数据发送设备为应用传输控制协议TCP的设备,所述数据发送设备的操作系统中运行有应用,所述数据发送设备包括:存入单元,用于将所述应用下发的数据块存入第一队列,所述数据块为流数据,所述第一队列为所述数据发送设备的操作系统的用户态中的队列,所述第一队列用于放置待发送的流数据的数据块;加入单元,用于在所述第二队列中的数据量满足预设条件的情况下,将所述第一队列中的至少一个数据块加入...

【专利技术属性】
技术研发人员:拉胡尔·阿尔温德·贾达夫曹振K·安莫尔·曼尼·特杰斯瓦·萨尔玛
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1