CN116980713A - 一种带宽检测方法、装置、电子设备及存储介质 - Google Patents

一种带宽检测方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116980713A
CN116980713A CN202310270241.7A CN202310270241A CN116980713A CN 116980713 A CN116980713 A CN 116980713A CN 202310270241 A CN202310270241 A CN 202310270241A CN 116980713 A CN116980713 A CN 116980713A
Authority
CN
China
Prior art keywords
packet
data
bandwidth
response
information set
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310270241.7A
Other languages
English (en)
Inventor
郭凌峰
刘岩
李耀斌
汪福裕
欧阳昌葵
罗成
李佳宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310270241.7A priority Critical patent/CN116980713A/zh
Publication of CN116980713A publication Critical patent/CN116980713A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64723Monitoring of network processes or resources, e.g. monitoring of network load
    • H04N21/64738Monitoring network characteristics, e.g. bandwidth, congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N17/00Diagnosis, testing or measuring for television systems or their details
    • H04N17/004Diagnosis, testing or measuring for television systems or their details for digital television systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed

Abstract

本申请涉及网络技术领域,提供一种带宽检测方法、装置、电子设备及存储介质,用于提高带宽采样的精度。该方法中,接收到视频直播过程中产生的视频流后,按照设定的视频流传输周期,将视频流编码后的多个数据包发送给接收端,并接收数据包对应的应答包,获得应答信息集;同时,根据数据包发送情况,记录数据包停滞发送产生的数据包缺失事件对应的缺失信息集,结合应答信息集,剔除当前带宽的采样时长内,各数据包缺失事件对应的总空闲时延和数据量大小的影响,从而减少视频直播构成中,应用层无数据对传输层的影响,提高带宽检测的准确性,进而基于高精度的带宽调整拥塞发送窗口,以减少视频直播过程中的画面卡顿现象。

Description

一种带宽检测方法、装置、电子设备及存储介质
技术领域
本申请涉及网络技术领域,尤其涉及一种带宽检测方法、装置、电子设备及存储介质。
背景技术
在数据传输领域,随着传输数据量的增大,带宽采样被广泛用于网络拥塞检测中。目前,在检测一个采样周期内的带宽时,较为常用算法为Linux内核中的Westwood算法和基于瓶颈带宽计算往返时延(Bottleneck Bandwidth and RTT,BBR)算法。这两种算法的原理均是将一个往返时延(Round Trip Time,RTT)作为带宽的一个采样周期,再通过统计RTT内应答包的数量进行带宽检测,从而掌握网络的拥塞情况。
可见,采用上述两种算法进行带宽检测时,均可以准确掌握RRT内应答包的数量,因此能够应对无线网络中随机丢包的问题,从而在下载类应用(如,文件下载、视频点播)中被广泛使用。
然而,不同于下载类应用,视频直播类应用传输的视频流是实时生成的,受网络影响,视频直播类应用传输的视频流的生成速度可能小于链路带宽,在此种情况下,在视频流传输过程中,很容易产生数据包缺失现象,从而导致RTT内的部分时段内无法接收到应答包,显然,这种现象会对带宽检测过程形成干扰,因此,若仍沿用上述两种算法进行带宽检测,会影响检测准确性。
发明内容
本申请实施例提供了一种带宽采样方法、装置、电子设备及存储介质,用于提高带宽采样的准确性。
一方面,本申请实施例提供一种带宽采样方法,包括:
接收视频直播过程中产生的视频流,并对所述视频流进行编码,获得多个数据包;
按照设定的视频流传输周期,将所述多个数据包发送给接收端,以及接收所述多个数据包各自对应的应答包,获得应答信息集;
若传输过程中发生至少一个数据包缺失事件,则基于记录的所述至少一个数据包缺失事件各自对应的缺失信息集,获得当前带宽的采样时长内的总空闲时长;
基于所述应答信息集和获得的至少一个缺失信息集,结合所述总空闲时长,获得所述采样时长内,所述视频流的带宽检测结果。
另一方面,本申请实施例提供一种带宽检测装置,包括:
接收模块,用于接收视频直播过程中产生的视频流,并对所述视频流进行编码,获得多个数据包;以及,接收所述多个数据包各自对应的应答包,获得应答信息集;
发送模块,用于按照设定的视频流传输周期,将所述多个数据包发送给接收端;
处理模块,用于若传输过程中发生至少一个数据包缺失事件,则基于记录的所述至少一个数据包缺失事件各自对应的缺失信息集,获得当前带宽的采样时长内的总空闲时长;以及,基于所述应答信息集和获得的至少一个缺失信息集,结合所述总空闲时长,获得所述采样时长内,所述视频流的带宽检测结果。
可选的,每个缺失信息集至少包括:相应的数据包缺失事件的起始数据包的数据量大小;所述应答信息集至少包括:各应答包的累计数据量大小、起始应答包的接收时间和结束应答包的接收时间;
则所述处理模块具体用于:
基于所述各应答包的累计数据量大小,以及各缺失信息集各自的起始数据包的数据量大小,获得所述各应答包的真实数据量大小;
基于所述起始应答包的接收时间,和所述结束应答包的时间,获得所述采样时长;
基于所述采样时长和所述总空闲时长,获得真实采样时长;
基于所述真实数据量大小和所述真实采样时长,获得所述视频流的带宽检测结果。
可选的,每个缺失信息集至少还包括相应的数据包缺失事件的起始数据包的包序号;所述应答信息集至少包括起始应答包的包序号和结束应答包的包序号;
则所述处理模块具体用于:
针对各缺失信息集,分别执行以下操作,获得所述各应答包的真实数据量大小:
将一个缺失信息集中起始数据包的包序号,与所述起始应答包和所述结束应答包的包序号进行比较;
若所述起始数据包的包序号大于等于所述起始应答包的包序号,且所述起始数据包的包序号小于等于所述结束应答包的包序号,则从所述各应答包的累积数据量大小中去除所述起始数据包的数据量大小。
可选的,所述处理模块还用于:
若所述起始数据包的包序号小于所述起始应答包的包序号,则清除所述一个缺失信息集;
若所述起始数据包的包序号大于所述结束应答包的包序号,则将所述一个缺失信息集用于下一次带宽采样。
可选的,每个缺失信息集至少还包括相应的数据包缺失事件的起始数据包的发送时间;
则所述处理模块具体用于:
针对所述至少一个数据包缺失事件,分别执行以下操作:基于一个数据包缺失事件的起始数据包的包序号,获得结束数据包,并基于所述结束数据包的发送时间和所述起始数据包的发送时间,获得所述一个数据包缺失事件的子空闲时长;
基于所述至少一个数据包缺失事件各自的子空闲时长,获得所述当前带宽的采样时长内总空闲时长。
可选的,每个数据包缺失事件满足以下条件:
传输层的发送缓冲区内无数据包;
内核列队中无数据包;
已发送数据包的数目小于拥塞窗口的大小;
所述采样时长内丢失的数据包已经重传。
可选的,所述应答信息集包括各应答包的累积数据量大小,所述处理模块还用于:
若传输过程中未发生数据包缺失事件,则基于所述各应答包的累积数据量的大小以及当前带宽的采样时长,获得所述视频流的带宽检测结果。
可选的,获得所述采样时长内,所述视频流的带宽检测结果之后,所述处理模块还用于:
基于检测的带宽,获得带宽时延积;
基于所述带宽时延积,调整拥塞发送窗口,以减小随机丢包对传输速度的影响。
另一方面,本申请实施例提供一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现上述带宽检测方法的步骤。
另一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令被电子设备执行时实现上述带宽检测方法的步骤。
另一方面,本申请实施例提供一种计算机程序产品,包含计算机程序,所述计算机程序被电子设备执行时实现上述带宽检测方法的步骤。
本申请实施例的有益效果如下:
本申请实施例提供的一种带宽检测方法、装置、电子设备及存储介质中,在对视频直播过程中产生的视频流进行传输的过程中,按照设定的视频流传输周期,将视频流编码后的多个数据包发送给接收端,按照通信协议,每个发送的数据包都会对应一个接收端返回的应答包,由于视频直播过程中的视频流是实时生成的,受网络的影响,可能出现应用层无数据的现象,反映在传输层为数据包发送停滞现象,此现象可定义为数据包缺失事件,此时,若扔按照当前带宽的采样时长内接收的应答包的数据量进行带宽检测,会导致带宽检测不准确。因此,当发生至少一个数据包缺失事件时,可记录的每个数据包缺失事件对应的缺失信息集,获得采集时长内总空闲时长和缺失的数据量,结合应答信息集进行带宽检测,从而减少应用层无数据对传输层的影响,提高带宽检测的准确性。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例适用的一种应用场景图;
图2为本申请实施例提供的带宽检测方法流程图;
图3为本申请实施例提供的视频编码示意图;
图4为本申请实施例提供的视频直播类应用的数据传输示意图;
图5为本申请实施例提供的接收应答包的过程示意图;
图6为本申请实施例提供的下载类应用的数据传输示意图;
图7为本申请实施例提供的数据包缺失事件示意图;
图8为本申请实施例提供的数据包缺失事件记录方式示意图;
图9为本申请实施例提供的空闲时长计算方法流程图;
图10为本申请实施例提供的带宽采样方法流程图;
图11为本申请实施例提供的带宽计算方法流程图;
图12A为本申请实施例提供的带宽检测的整体逻辑图;
图12B为本申请实施例提供的带宽检测应用场景图;
图13为本申请实施例提供的带宽检测装置的结构图;
图14为本申请实施例提供的电子设备的结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
为了方便理解,下面对本申请实施例中涉及的名词进行解释。
传输控制协议(Transmission Control Protocol,TCP):是一种面向连接的、可靠的、基于字节流的传输层通信协议。
用户数据报协议(User Datagram Protocol,UDP):为应用程序提供了一种无需建立连接就可以发送封装的数据包的方法。
基于UDP的低时延的互联网传输层协议(Quick UDP Internet Connections,QUIC):用于解决传输层和应用层面临的各种需求,如:处理更多的连接、提高安全性、和降低延迟等。
拥塞控制(Congestion Control,CC):在超负载的情况下进行相应的处理,使得网络恢复到正常的负载水平,保障数据的稳定传输。
应用程序限制(APP Limited):传输层因应用层无数据而导致的数据包发送停滞的现象。
往返时延(Round Trip Time,RTT):是一个网络性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认总共经历的时延。
平滑往返时延(Smoothed Round Trip Time,SRTT):每产生一次新的RTT,就根据一定的算法对RTT进行更新。
带宽时延积(Bandwidth Delay Product,BDP):是一个网络性能指标,在数据传输中,指的是一个数据链路的能力(每秒比特)与往返延迟(单位秒)的乘积。
拥塞发送窗口(Congestion Window,CWnd):大小取决于网络速度的拥塞程度和处理数据量,并且动态地在变化加入新的执行方式。发送端可根据拥塞窗口大小调节自己的发送窗口大小。
内容分发网络(Content Delivery Network,CND):是一种新型网络内容服务体系,其基于IP网络而构建,基于内容访问与应用的效率要求、质量要求和内容秩序而提供内容的分发和服务。
体验质量(Quality of Experience,QOE):是指对象对设备、网络和系统、应用或业务的质量和性能的主观感受。
采样时长:在网络稳定的理想情况下,采样时长为采样周期,即一个RTT。在实际应用中,传输层可根据当前网络的传输性能(如吞吐量、拥塞程度、网速等)的影响,对采样时长的大小进行调整。
Inflight:已发送但未收到ACK的部分数据量,CWnd控制Inflight上限。
Qdisc queue:Linux系统中流量控制器(Traffic Control,TC)的队列。
NIC tx queue:网卡的发送队列。
Westwood算法:作为Linux内核主流算法之一,用于通过检测的带宽来提升弱网环境下的传输性能。
BBR算法:作为Linux内核中最新的CC算法,目的在于提高基于TCP协议的数据流传输性能,特别是在有随机丢包的网络环境(如:WIFI和蜂窝网等)中,效果更显明显。
下面对本申请实施例的设计思想进行概述。
带宽的本质为一段时间内(一般为一个RTT)收到的应答包的数据包量,应答包的数据量越大,带宽越大。目前,较为常用的带宽检测算法为Westwood算法和BBR算法。
对于下载类应用来说,数据源源不断从应用层分发到传输层,直到下载完成,此种数据传输方式作为目前主流的传输方式,在未来的互联网中也出长期存在。在负载无异常的情况下,下载类应用(如:文件下载、视频点播等)数据的发送,不会成为整个数据传输的瓶颈,所以带宽体现的是网络链路中速度最小的一段。
不同于下载类应用,视频直播类应用传输的视频流是实时生成的,在网络链路中速度较高的情况下,视频直播类应用传输的视频流的生成速度可能小于链路带宽,这样,可能会频繁出现应用层无数据的现象,反映在传输层为数据包发送停滞现象,即APPLimited,本申请实施例定义为数据包缺失事件,此时,数据传输过程的瓶颈从网络链路层转移到了应用层。
然而,由于Westwood算法的设计初衷是为了提高数据的下载速度,并没有针对视频直播场景的APP Limited做任何优化。而BBR算法提出的时候视频直播也在悄然兴起,因此BBR对APP Limited开始有相对应的优化,例如,BBR算法退出慢启动的必要条件是:连续3次带宽增长不超过25%,且该必要条件的前提是采用周期内没有发生到APP Limited。也就是说,BBR算法承认APP Limited会对一个采样周期的内的带宽检测结果产生影响,但是并没有针对带宽检测提出优化措施,而是通过设置条件规避APP Limited对带宽检测结果的影响。因此,若直接采用Westwood算法和BBR算法,检测视频直播类应用的带宽,会因APPLimited出现导致带宽偏小,即无法正确的检测出真实的带宽,进而,按照错误的带宽控制视频流传输时,可能会出现直播卡顿的现象,降低了QoE。
鉴于此,本申请实施例提供一种带宽检测方法、装置、电子设备及存储介质,通过记录一个采样时间内所有的数据包缺失事件,将这些数据包缺失事件占用的空闲时间从当前带宽的采样时长中移除,从而来提高带宽检测的准确性,进而提升带宽的利用率,更有效的应对数据传输中的丢包问题,有效减少视频直播过程中的卡顿现象,提升QoE。
如图1所示,为本申请实施例提供的一种应用场景示意图,该应用场景包括第一终端设备210、第二终端设备220和一个服务器230。
在本申请实施例中,第一终端设备210和第二终端设备220包括但不限于手机、平板电脑、笔记本电脑、台式电脑、电子书阅读器、智能语音交互设备、可穿戴设备、车载终端等设备;第一终端设备210和第二终端设备220上可以安装有下载类应用,还可以安装有视频直播类应用。服务器230则是各类应用对应的服务器。服务器230可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,服务器230用于将第一终端设备210发送的数据分发给第二终端设备220。
本申请的实施例中,第一终端设备210、第二终端设备220和服务器230之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络是有线网络或无线网络。
以第一终端设备210和第二终端设备220上安装的视频直播类应用为例,对象A通过第一终端设备210上安装的视频直播软件进行直播,对象B通过第二终端设备220上安装的视频直播软件观看对象A的直播。直播过程中,第一终端210将对象A的视频流实时上传到服务器230。服务器230接收到对象A视频直播过程中的视频流后进行编解码,获得多个数据包,服务器230按照设定的视频流传输周期,将多个数据包发送给第二终端设备220,并记录传输过程中发生至少一个数据包缺失事件,获得相应的缺失信息集,同时,接收第二终端设备220针对每个数据包返回的应答包,获得应答信息集;基于至少一个缺失信息集,获得当前带宽的采样时长内的总空闲时长,并将总空闲时长从采样时间内移除,并基于至少一个缺失信息集和应答信息集,统计应答包的真实数据量大小,从而去除APP Limited对带宽检测结果的影响,提高带宽检测的准确性。
需要说明的是,图1所示只是举例说明,实际上终端设备和服务器的数量不受限制,在本申请实施例中不做具体限定。
需要说明的是,本申请实施例提供的带宽检测方法,对视频直播类应用的带宽检测的精度有明显的提升,但不排除将本申请实施例提供的带宽检测方法应用于下载类应用中,即,本申请实施例提供的带宽检测方法,适用于所有等使用QUIC/TCP协议的终端设备或服务器上的软件产品。
下面结合上述描述的应用场景,参考附图来描述本申请示例性实施方式提供的带宽检测方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
应当理解,下述所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
参见图2,为本申请实施例提供的带宽检测方法的实施流程图,该流程由图1中的服务器230执行,主要包括以下几步:
S201:服务器接收视频直播过程中产生的视频流,并对视频流进行编码,获得多个数据包。
在一种示例中,服务器针对实时接收的视频直播过程中产生的视频流,采用H264编码方式,对视频流进行编码,获得多个数据包。
在H264编码方式中,通常以三种类型的帧来传输视频流,分别是I帧、B帧和P帧。I帧也称为关键帧,是一个完整的画面,为这三种类型中数据量最大的帧;P帧也称为前向预测编码帧,不构成一个独立的画面,仅包含与前一帧的差别数据,相对于I帧数据量较小;B帧也称为双向预测编码帧,包含的是其与前后帧(I帧或者P帧)之间的差别数据,为这三种类型中数据量最大的帧。
以H264编码方式编码的直播视频,由连续的若干个图像集合(Group ofpictures,GOP),如图3所示,每个GOP包含一个I帧、至少一个P帧和至少一个B帧,每个GOP的长度为一个I帧和下一个I帧之间的帧数。由此可见,视频直播过程中产生的视频流不仅是实时生成的,还具有周期性特征。
本申请的实施例中,在保证直播视频质量的前提下,服务器通过对视频流进行编码,从而利用每个GOP中的P帧和B帧来减少数据量,降低传输成本。
S202:服务器按照设定的视频流传输周期,将多个数据包发送给接收端,并接收多个数据包各自对应的应答包,获得应答信息集。
在视频传输过程中,服务器将一个GOP中视频帧编码后的多个数据包(DataPackages),发送给接收端后,还会接收接收端返回的每个数据包对应的应答包(ACKPackages),从发送一个GOP对应的多个数据包,到接收各应答包的时间,记为一个RTT,即视频流的传输周期。
其中,RTT受网络环境影响,并不是固定不变的,服务器可根据当前的网络传输性能,按一定的算法自行调节RTT,获得SRTT。
如图4所示,为针对视频直播类应用,服务器在一个SRTT内发送数据包和接收应答包的过程示意图,其中,“□”表示发送的数据包,“○”表示接收的应答包,由于一个GOP中I帧的数据量大于B帧和B帧的数据量,因此,I帧对应的数据包(用实线□表示)和应答包(用实线○表示)的个数,多于P帧对应的数据包(用双点画线□表示)和应答包(用双点画线○表示)的个数,以及,多于B帧对应的数据包(用虚线□表示)和应答包(用虚线○表示)的个数。
本申请的实施例中,在进行带宽采样时,是基于当前带宽的采样时长内,服务器接收的应答包的数据量来检测的,因此,服务器在接收接收端返回的应答包时,会记录应答包的接收情况,获得应答信息集。
具体实施时,视频直播过程中,在当前带宽的采样时长内,服务器将编码后的多个数据包发送给接收端,并接收接收端返回的每个数据包对应的应答包,服务器每收到一个应答包,会更新当前带宽的采样时长对应的应答信息集,当接收到全部数据包的应答包后,获得最终的应答信息集。
在一种示例中,应答信息集至少包括起始应答包的包序号、结束应答包的包序号、起始应答包的接收时间、结束应答包的接收时间、以及各应答包的累计数据量大小。
如图5所示,为服务器获得应答信息集的过程示意图,当服务器接收到第1个应答包ACKa时,将其作为起始应答包并记录接收时间,当接收到第2个应答包ACKb时,将其作为结束应答包并记录接收时间,此时,应答信息集中累计数据量大小为ACKa和ACKb之和,带宽采样的时长为ACKb的接收时间与ACKa的接收时间之差;当接收到第3个应答包ACKc时,将其作为新的结束应答包并记录接收时间,此时,应答信息集中累计数据量大小为ACKa、ACKb和ACKc之和,带宽采样的时长为ACKc的接收时间与ACKa的接收时间之差,依此类推。
假设,每个应答包的数据量大小均为1500Byte,ACKa和ACKp分别为带宽的当前带宽的采样时长内的起始应答包和结束应答包,则计算当前带宽BW的应答信息集为{ACKa,ACKp,1500Bytes*16,ts_ACKp–ts_ACKa},其中,ts_ACKa为起始应答包的接收时间,ts_ACKp为结束应答包的结束时间,ts_ACKp–ts_ACKa为当前带宽的采样时长。
为描述视频直播类应用和下载类应用之间的数据传输差异,图6示出了一个SRTT内,针对下载类应用,服务器发送数据包和接收应答包的过程示意图,图7示出了一个SRTT内,针对视频直播类应用,服务器发送数据包和接收应答包的过程示意图。
在图6中,在网络稳定状态下,针对下载类应用,服务器将数据包源源不断的发送给接收端,并源源不断的接收接收端返回的应答包。假设ACKa为当前带宽的采样时长的第1个应答包,ACKp为当前带宽的采样时长的第16个应答包,当收到ACKp的时间与收到ACKa的时间之差大于SRTT时,则触发一次带宽采样。
以采用Westwood算法为例,假设每个应答包的数据量大小size_ACKi为1500Byte,且ACKp与ACKa的时间之差为200ms,此时,当前带宽的采样时长内检测出的带宽为:
其中,ts_ACKp为ACKp的接收时间,ts_ACKa为ACKa的接收时间。
在图7中,在网络稳定状态下,针对视频直播类应用,服务器将多个数据包发送给接收端时,会频繁出现数据包缺失事件APP Limited(简称为AL),而这些事件对应的数据包发送停滞现象,会体现在服务器接收接收端返回的应答包上。
由公式1可知,若采用Westwood算法检测视频直播类应用的带宽时,Westwood算法会将数据包缺失事件的发送停滞时间,计入带宽采样中,这样,会造成计算的带宽偏小。
基于图6和图7中下载类应用和视频直播类应用的数据包发送,以及应答包的接收情况对比可知,视频直播类应用中视频帧实时生成的特性,会导致传输层频繁出现数据包缺失事件,而数据包缺失事件会反过来影响到传输层的带宽采样。在相同网络环境下,假设1GOP=1RTT,采用Westwood算法检测出的视频直播类应用的有效带宽,仅为下载类应用检测到的带宽的62%(16/26)。
需要说明的是,BBR算法与Westwood算法类似,均是根据采样时长内接收到的应答包的数据量来计算带宽,因此,BBR算法也存在带宽采样不准确的问题。
因此,为了提高带宽的精度,需要进行数据包缺失事件的检测,以剔除数据包缺失事件的带宽的影响。
S203:服务器确定数据包传输过程中,是否发生至少一个数据包缺失事件,若是,则执行S204,若否,则执行S206。
为了解决视频直播类应用中数据包缺失事件对带宽的影响,在数据传输的过程中,当发生数据包缺失事件时,服务器会记录下每个数据包缺失事件对应的缺失信息集,从而基于各缺失信息集,剔除数据包缺失事件对带宽采样的影响,提高带宽检测的准确性。
服务器记录下每个数据包缺失事件对应的缺失信息集的前提是,能够确定发生了数据包缺失事件。因此,本申请的实施例中提供了每个数据包缺失事件满足的条件包括:
传输层的发送缓冲区内无数据包;
内核列队中无数据包;
已发送数据包的数目小于拥塞窗口的大小;
当前带宽的采样时长内丢失的数据包已经重传;
当服务器确定当前传输节点满足上述四个条件时,则确定发生了一件数据包缺失事件。
S204:服务器记录下每个数据包缺失事件对应的缺失信息集,并基于各缺失信息集,获得当前带宽的采样时长内的总空闲时长。
在一种示例中,每个缺失信息集至少包括:相应的数据包缺失事件的起始数据包的包序号、起始数据包的数据量大小、起始数据包的发送时间,结束数据包的发送时间。
如图8所示,为数据包缺失事件的记录过程示意图,在视频直播的一个SRTT(即一个采样时长)内,服务器向接收端发送数据包的过程中,共发生了6次数据包缺失事件(AL1-AL6),因此,记录了6个缺失信息集。
以图8中第一个数据包缺失事件AL1为例,在发送数据包pkth是,记录下的AL1对应的缺失信息集为{pkth,ts_pkth,ts_pkti,size_pkth},其中,pkth为AL1对应的起始数据包的包序号,ts_pkth为AL1对应的起始数据包的发送时间,pkti为与AL1对应的结束数据包的包序号,ts_pkti为AL1对应的结束数据包的发送时间,size_pkth为AL1对应的起始数据包的数据量大小。
在图8中,每一个数据包缺失事件AL,都会对应一段数据包发送停滞时间,本申请实施例将这段数据包发送停滞时间,记为采样时间内的一个子空闲时长。由于带宽采样是计算一个采样时长内应答包的数据量,因此,需要计算出各数据包缺失事件在当前带宽的采样时长内的总空闲时长。具体计算过程参见图9,主要包括以下几步:
S2041:针对每一个数据包缺失事件,基于该数据包缺失事件的起始数据包的包序号,获得结束数据包。
仍以图8中第一个数据包缺失事件AL1为例,该数据包缺失事件的起始数据包的包序号pkth,获取到相邻的下一数据包pkti,并将数据包pkti作为AL1对应的结束数据包的包序号。
S2042:基于结束数据包的发送时间和起始数据包的发送时间,获得该数据包缺失事件的子空闲时长。
假设,结束数据包pkti的发送时间为ts_pkti,起始数据包pkth的发送时间为ts_pkth,此时,数据包缺失事件AL1对应的子空闲时间为ts_pkti-ts_pkth
S2043:基于各数据包缺失事件各自的子空闲时长,获得当前带宽的采样时长内总空闲时长。
以图8为例,当前带宽的采样时长内总空闲时长为6个数据包缺失事件的子空闲时长之和,即(ts_pkti-ts_pkth)+(ts_pktj-ts_pkti)+(ts_pktk-ts_pktj)+(ts_pktm-ts_pktl)+(ts_pktn-ts_pktm)+(ts_pkto-ts_pktn)。
S205:服务器基于应答信息集和获得的至少一个缺失信息集,结合总空闲时长,获得采样时长内视频流的带宽检测结果。
基于公式1带宽的计算公式可知,分母为采样时长,分子为采样时长内的接收的应答包的数据量,通过将各数据包缺失事件占用的总空闲时长从作为分母的采样时长内移除,可以提高带宽计算的精度。然而,在视频直播过程中,每个数据包缺失事件对应的子空闲时长,是和相应的数据包的传输时间混淆在一起的,如:数据包pkth的传输时间混淆在数据包缺失事件AL对应的子空闲时间内。因此,将各数据包缺失事件占用的总空闲时长,从作为分母的采样时长内移除的同时,也应将各数据包缺失事件占用的数据量,从作为分母的应答包的累计数据量内移除。具体带宽的计算过程参见图10,主要包括以下几步:
S2051:基于起始应答包的接收时间和结束应答包的时间,获得当前带宽的采样时长。
假设,应答信息集中的起始应答包为起始应答包为ACKa,结束应答包为ACKp,则当前带宽的采样时长为ts_ACKp-ts_ACKa
S2052:基于各应答包的累计数据量大小,以及各缺失信息集各自的起始数据包的数据量大小,获得各应答包的真实数据量大小。
在一种示例中,通过将各数据包缺失事件占用的数据量,从各应答包的累计数据量内移除,获得当前带宽的采样时长内,各应答包的真实数据量大小,从而提高带宽检测的准确性。
具体实施时,针对每个缺失信息集,执行图11所示的流程后,可以获得各应答包的真实数据量大小,其中,对每个缺失信息集的操作如下:
S2052_1:将该缺失信息集中起始数据包的包序号,分别与应答信息集中的起始应答包和结束应答包的包序号进行比较。
以数据包缺失事件AL1对应的缺失信息集为例,将数据包缺失事件AL1对应的起始数据包pkth的包序号,分别与起始应答包ACKa和结束应答包ACKp比较。
S2052_2:确定起始数据包的包序号是否大于等于起始应答包的包序号,以及,起始数据包的包序号是否小于等于结束应答包的包序号,若是,执行S2052_3,若起始数据包的包序号小于起始应答包的包序号,则执行S2052_4;若起始数据包的包序号大于结束应答包的包序号,则执行S2052_5。
S2052_3:从各应答包的累积数据量大小中,去除起始数据包的数据量大小。
当起始数据包的包序号大于等于起始应答包的包序号,且起始数据包的包序号小于等于结束应答包的包序号时,说明当前带宽的采样时长内,包含有因数据包缺失事件导致的空闲,因此,需要将数据包缺失事件占用的数据量大小,从当前带宽的采样时长内,各应答包的累积数据量大小中排除出去。
例如,起始数据包pkth的包序号大于等于起始应答包ACKa,且小于等于结束应答包ACKp的包序号,因此,用各应答包的累积数据量大小,减去起始数据包pkth的数据量的大小。
S2052_4:清除该缺失信息集。
当起始数据包的包序号小于起始应答包的包序号时,说明该缺失信息集对应的数据包缺失事件,发生在上一次带宽采样过程,因此,可以清除该缺失信息集以释放内存空间。
S2052_5:将该缺失信息集用于下一次带宽采样。
当起始数据包的包序号小于起始应答包的包序号时,说明该缺失信息集对应的数据包缺失事件,发生在下一次带宽采样过程,因此,该缺失信息集用于下一次带宽采样,本次带宽采样时忽略不计。
S2053:基于当前带宽的采样时长和总空闲时长,获得真实检测时长。
用当前带宽的采样时长减去总空闲时长,得到本次带宽采样的真实采样时长。
S2054:基于真实数据量大小和真实检测时长,获得视频流的带宽检测结果。
用各应答包的真实数据量大小,除以真实采样时长,获得视频直播过程中,本次带宽采样的带宽的检测结果。
S206:服务器基于各应答包的累积数据量的大小以及当前带宽的采样时长,获得视频流的带宽检测结果。
在视频直播过程中,当为发生数据包缺失事件时,在传输层不会出现数据包发送停滞的现象,因此,可直接用各应答包的累积数据量的大小,除以当前带宽的采样时长,获得当前带宽的检测结果。
获得高精度的带宽后,服务器可以基于检测的带宽,获得带宽时延积,并基于带宽时延积,调整拥塞发送窗口,以减小随机丢包对传输速度的影响,进而避免因为随机丢包而导致的直播视频卡顿现象。
需要说明的是,本申请实施例提供的带宽检测方法,不仅适用于视频直播场景,同时适用于基于TCP和QUIC协议的数据传输场景中,包括但不限于文件传输,音视频会话等,并且也适用超高随机丢包率网络环境下的传输方法优化。
据数据统计,目前大部分视频直播类应用连接的CWnd,会频繁触及配置的最小CWnd阈值,也就是说,带宽采样偏小的问题普遍存在于经常触发APP Limited的视频直播类应用中。而本申请实施例提供的带宽检测方法,能够有效提高带宽采样的精度,进而能提升带宽利用率和更有效的应对丢包问题。经实验验证,BBR算法的抗丢包率小于25%,Westwood算法更小,而本申请实施例的抗丢包率大于25%,从而解决了现有视频直播类应用面临的技术问题。
参见图12A,为本申请实施例提供的带宽检测的整体实现逻辑,主要包括数据包缺失事件判定、记录数据包缺失事件的缺失信息集、记录应答信息集、计算当前带宽、和准备下一轮带宽采样5部分。其中,各部分的使用的变量的含义如表1所示。
表1、带宽检测的变量名和含义
如图12B所示,为本申请实施例提供的视频直播过程交互图,在视频直播过程中,服务器将主播端实时上传的视频流进行编码,得到多个数据包,并将数据包发送给观看端,观看端每接收到一个数据包,都会向服务器返回一个应答包。在发送数据包的过程中,服务器根据数据包的发送情况,记录产生的至少一个数据包缺失事件对应的缺失信息集,同时,在接收应答包的过程中,服务器根据接收应答包的情况,获得应答信息集。其中,每个缺失信息集包含起始数据包的包序号、起始数据包的发送时间、结束数据包的发送时间和起始数据包的数量大小;应答信息集包括起始应答包的包序号、结束应答包的包序号、应答包的接收时间和应答包的累计数据量大小。服务器基于记录的各缺失信息集和应答信息集进行带宽采样,采样过程中,基于各缺失信息集中起始数据包的发送时间和结束数据包的发送时间,计算出各数据包缺失事件占用的当前采样时长的总空闲时长,同时,基于各缺失信息集中各起始数据包的数据量大小、以及应答信息集中应答包的累计数据量大小,计算当前采样时长内除去总空闲时长这段时间,接收的应答包的真实数据量大小,从而获得当前的带宽,并根据当前的带宽,控制视频流的传输,从而使用观看端的对象,看到清晰流程的直播画面。
本申请实施例提供的带宽检测方法中,在视频直播过程中,通过记录每次带宽采样中的所有的数据包缺失事件,以将各数据包缺失事件在采样时长内占用的空闲时长以及数据量,从带宽采样中移除,从而提高采样时长内带宽的检测精度。整个检测过程都是有服务端执行,对中间路由以及客户端没有任何要求,实现过程简单,并且,检测过程中,不涉及频繁的函数调用,总体的内存开销在可控范围内,不会给服务器带来额外的负担,效率更高。
基于相同的技术构思,本申请实施例提供了一种带宽检测装置的结构示意图,该装置能够实现上述带宽检测方法,且能达到相同的技术效果。
参见图13,该检测装置包括接收模块1301、发送模块1302和处理模块1303,其中:
接收模块1301,用于接收视频直播过程中产生的视频流,并对所述视频流进行编码,获得多个数据包;以及,接收所述多个数据包各自对应的应答包,获得应答信息集;
发送模块1302,用于按照设定的视频流传输周期,将所述多个数据包发送给接收端;
处理模块1303,用于若传输过程中发生至少一个数据包缺失事件,则基于记录的所述至少一个数据包缺失事件各自对应的缺失信息集,获得当前带宽的采样时长内的总空闲时长;以及,基于所述应答信息集和获得的至少一个缺失信息集,结合所述总空闲时长,获得所述采样时长内,所述视频流的带宽检测结果。
可选的,每个缺失信息集至少包括:相应的数据包缺失事件的起始数据包的数据量大小;所述应答信息集至少包括:各应答包的累计数据量大小、起始应答包的接收时间和结束应答包的接收时间;
则所述处理模块1303具体用于:
基于所述各应答包的累计数据量大小,以及各缺失信息集各自的起始数据包的数据量大小,获得所述各应答包的真实数据量大小;
基于所述起始应答包的接收时间,和所述结束应答包的时间,获得所述采样时长;
基于所述采样时长和所述总空闲时长,获得真实采样时长;
基于所述真实数据量大小和所述真实采样时长,获得所述视频流的带宽检测结果。
可选的,每个缺失信息集至少还包括相应的数据包缺失事件的起始数据包的包序号;所述应答信息集至少包括起始应答包的包序号和结束应答包的包序号;
则所述处理模块1303具体用于:
针对各缺失信息集,分别执行以下操作,获得所述各应答包的真实数据量大小:
将一个缺失信息集中起始数据包的包序号,与所述起始应答包和所述结束应答包的包序号进行比较;
若所述起始数据包的包序号大于等于所述起始应答包的包序号,且所述起始数据包的包序号小于等于所述结束应答包的包序号,则从所述各应答包的累积数据量大小中去除所述起始数据包的数据量大小。
可选的,所述处理模块1303还用于:
若所述起始数据包的包序号小于所述起始应答包的包序号,则清除所述一个缺失信息集;
若所述起始数据包的包序号大于所述结束应答包的包序号,则将所述一个缺失信息集用于下一次带宽采样。
可选的,每个缺失信息集至少还包括相应的数据包缺失事件的起始数据包的发送时间;
则所述处理模块1303具体用于:
针对所述至少一个数据包缺失事件,分别执行以下操作:基于一个数据包缺失事件的起始数据包的包序号,获得结束数据包,并基于所述结束数据包的发送时间和所述起始数据包的发送时间,获得所述一个数据包缺失事件的子空闲时长;
基于所述至少一个数据包缺失事件各自的子空闲时长,获得所述当前带宽的采样时长内总空闲时长。
可选的,每个数据包缺失事件满足以下条件:
传输层的发送缓冲区内无数据包;
内核列队中无数据包;
已发送数据包的数目小于拥塞窗口的大小;
所述采样时长内丢失的数据包已经重传。
可选的,所述应答信息集包括各应答包的累积数据量大小,所述处理模块1303还用于:
若传输过程中未发生数据包缺失事件,则基于所述各应答包的累积数据量的大小以及当前带宽的采样时长,获得所述视频流的带宽检测结果。
可选的,获得所述采样时长内,所述视频流的带宽检测结果之后,所述处理模块1303还用于:
基于检测的带宽,获得带宽时延积;
基于所述带宽时延积,调整拥塞发送窗口,以减小随机丢包对传输速度的影响。
本申请实施例提供的一种带宽检测装置中,在对视频直播过程中产生的视频流进行传输的过程中,按照设定的视频流传输周期,将视频流编码后的多个数据包发送给接收端,按照通信协议,每个发送的数据包都会对应一个接收端返回的应答包,由于视频直播过程中的视频流是实时生成的,受网络的影响,可能出现应用层无数据的现象,反映在传输层为数据包发送停滞现象,此现象可定义为数据包缺失事件,此时,若扔按照当前带宽的采样时长内接收的应答包的数据量进行带宽检测,会导致带宽检测不准确。因此,当发生至少一个数据包缺失事件时,可记录的每个数据包缺失事件对应的缺失信息集,获得采集时长内总空闲时长和缺失的数据量,结合应答信息集进行带宽检测,从而减少应用层无数据对传输层的影响,提高带宽检测的准确性。
与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种电子设备。在一种实施例中,该电子设备可以是图1中的服务器。在该实施例中,电子设备的结构可以如图14所示,包括存储器1401,通讯模块1403以及一个或多个处理器1402。
存储器1401,用于存储处理器1402执行的计算机程序。存储器1401可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器1401可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1401也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器1401是能够用于携带或存储具有指令或数据结构形式的期望的计算机程序并能够由计算机存取的任何其他介质,但不限于此。存储器1401可以是上述存储器的组合。
处理器1402,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器1402,用于调用存储器1401中存储的计算机程序时实现上述带宽检测方法。
通讯模块1403用于与终端设备和其他服务器进行通信。
本申请实施例中不限定上述存储器1401、通讯模块1403和处理器1402之间的具体连接介质。本申请实施例在图14中以存储器1401和处理器1402之间通过总线1404连接,总线1404在图14中以粗线描述,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1404可以分为地址总线、数据总线、控制总线等。为便于描述,图14中仅用一条粗线描述,但并不描述仅有一根总线或一种类型的总线。
存储器1401中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的带宽检测方法。处理器1402用于执行上述带宽检测方法的步骤。
在一些可能的实施方式中,本申请提供的带宽检测方法的各个方面还可以实现为一种程序产品的形式,其包括计算机程序,当程序产品在电子设备上运行时,计算机程序用于使电子设备执行本说明书上述描述的根据本申请各种示例性实施方式的带宽检测方法的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括计算机程序,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的计算机程序,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。计算机程序可以完全地在电子设备上执行、部分地在电子设备上执行、作为一个独立的软件包执行、部分在电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务器上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (12)

1.一种带宽检测方法,其特征在于,包括:
接收视频直播过程中产生的视频流,并对所述视频流进行编码,获得多个数据包;
按照设定的视频流传输周期,将所述多个数据包发送给接收端,以及接收所述多个数据包各自对应的应答包,获得应答信息集;
若传输过程中发生至少一个数据包缺失事件,则基于记录的所述至少一个数据包缺失事件各自对应的缺失信息集,获得当前带宽的采样时长内的总空闲时长;
基于所述应答信息集和获得的至少一个缺失信息集,结合所述总空闲时长,获得所述采样时长内,所述视频流的带宽检测结果。
2.如权利要求1所述的方法,其特征在于,每个缺失信息集至少包括:相应的数据包缺失事件的起始数据包的数据量大小;所述应答信息集至少包括:各应答包的累计数据量大小、起始应答包的接收时间和结束应答包的接收时间;
则所述基于所述应答信息集和获得的至少一个缺失信息集,结合所述总空闲时长,获得所述采样时长内,所述视频流的带宽检测结果,包括:
基于所述各应答包的累计数据量大小,以及各缺失信息集各自的起始数据包的数据量大小,获得所述各应答包的真实数据量大小;
基于所述起始应答包的接收时间,和所述结束应答包的时间,获得所述采样时长;
基于所述采样时长和所述总空闲时长,获得真实采样时长;
基于所述真实数据量大小和所述真实采样时长,获得所述视频流的带宽检测结果。
3.如权利要求2所述的方法,其特征在于,每个缺失信息集至少还包括相应的数据包缺失事件的起始数据包的包序号;所述应答信息集至少包括起始应答包的包序号和结束应答包的包序号;
则所述基于所述各应答包的累计数据量大小,以及各缺失信息集各自的起始数据包的数据量大小,获得所述各应答包的真实数据量大小,包括:
针对各缺失信息集,分别执行以下操作,获得所述各应答包的真实数据量大小:
将一个缺失信息集中起始数据包的包序号,与所述起始应答包和所述结束应答包的包序号进行比较;
若所述起始数据包的包序号大于等于所述起始应答包的包序号,且所述起始数据包的包序号小于等于所述结束应答包的包序号,则从所述各应答包的累积数据量大小中去除所述起始数据包的数据量大小。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
若所述起始数据包的包序号小于所述起始应答包的包序号,则清除所述一个缺失信息集;
若所述起始数据包的包序号大于所述结束应答包的包序号,则将所述一个缺失信息集用于下一次带宽采样。
5.如权利要求2-4中任一项所述的方法,其特征在于,每个缺失信息集至少还包括相应的数据包缺失事件的起始数据包的发送时间;
则所述基于记录的所述至少一个数据包缺失事件各自对应的缺失信息集,获得当前带宽的采样时长内的总空闲时长,包括:
针对所述至少一个数据包缺失事件,分别执行以下操作:基于一个数据包缺失事件的起始数据包的包序号,获得结束数据包,并基于所述结束数据包的发送时间和所述起始数据包的发送时间,获得所述一个数据包缺失事件的子空闲时长;
基于所述至少一个数据包缺失事件各自的子空闲时长,获得所述当前带宽的采样时长内总空闲时长。
6.如权利要求1-4中任一项所述的方法,其特征在于,每个数据包缺失事件满足以下条件:
传输层的发送缓冲区内无数据包;
内核列队中无数据包;
已发送数据包的数目小于拥塞窗口的大小;
所述采样时长内丢失的数据包已经重传。
7.如权利要求1-4任一项所述的方法,其特征在于,所述应答信息集包括各应答包的累积数据量大小,所述方法还包括:
若传输过程中未发生数据包缺失事件,则基于所述各应答包的累积数据量的大小以及当前带宽的采样时长,获得所述视频流的带宽检测结果。
8.如权利要求1-4中任一项所述的方法,其特征在于,获得所述采样时长内,所述视频流的带宽检测结果之后,所述方法还包括:
基于检测的带宽,获得带宽时延积;
基于所述带宽时延积,调整拥塞发送窗口,以减小随机丢包对传输速度的影响。
9.一种带宽检测装置,其特征在于,包括:
接收模块,用于接收视频直播过程中产生的视频流,并对所述视频流进行编码,获得多个数据包;以及,接收所述多个数据包各自对应的应答包,获得应答信息集;
发送模块,用于按照设定的视频流传输周期,将所述多个数据包发送给接收端;
处理模块,用于若传输过程中发生至少一个数据包缺失事件,则基于记录的所述至少一个数据包缺失事件各自对应的缺失信息集,获得当前带宽的采样时长内的总空闲时长;以及,基于所述应答信息集和获得的至少一个缺失信息集,结合所述总空闲时长,获得所述采样时长内,所述视频流的带宽检测结果。
10.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1-8中任一所述方法的步骤。
11.一种计算机可读存储介质,其特征在于,其包括计算机程序,当所述计算机程序在电子设备上运行时,所述计算机程序用于使所述电子设备执行权利要求1-8中任一所述方法的步骤。
12.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序存储在计算机可读存储介质中;当电子设备的处理器从所述计算机可读存储介质读取所述计算机程序时,所述处理器执行所述计算机程序,使得所述电子设备执行权利要求1-8中任一所述方法的步骤。
CN202310270241.7A 2023-03-15 2023-03-15 一种带宽检测方法、装置、电子设备及存储介质 Pending CN116980713A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310270241.7A CN116980713A (zh) 2023-03-15 2023-03-15 一种带宽检测方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310270241.7A CN116980713A (zh) 2023-03-15 2023-03-15 一种带宽检测方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116980713A true CN116980713A (zh) 2023-10-31

Family

ID=88473750

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310270241.7A Pending CN116980713A (zh) 2023-03-15 2023-03-15 一种带宽检测方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116980713A (zh)

Similar Documents

Publication Publication Date Title
KR101942208B1 (ko) Dlna http 스트리밍 클라이언트들을 위한 서버측 적응형 비트 레이트 제어
US9473406B2 (en) On-demand adaptive bitrate management for streaming media over packet networks
US9596281B2 (en) Transport accelerator implementing request manager and connection manager functionality
KR100966447B1 (ko) 데이터 스트리밍 시스템 및 방법
CN113271316B (zh) 多媒体数据的传输控制方法和装置、存储介质及电子设备
WO2019062050A1 (zh) 直播管控方法、装置及电子设备
JP2001274861A (ja) データ伝送方法および装置
US10491964B2 (en) Assisted acceleration for video streaming clients
US10230651B2 (en) Effective intra-frame refresh in multimedia communications over packet networks
US20170142029A1 (en) Method for data rate adaption in online media services, electronic device, and non-transitory computer-readable storage medium
JP2024509728A (ja) データ再送処理方法、装置、コンピュータ機器及びコンピュータプログラム
US11350142B2 (en) Intelligent video frame dropping for improved digital video flow control over a crowded wireless network
KR20230002784A (ko) 오디오 및/또는 비디오 콘텐츠 전송을 위한 방법 및 서버
CN112866746A (zh) 一种多路串流云游戏控制方法、装置、设备及存储介质
US20160360220A1 (en) Selective packet and data dropping to reduce delay in real-time video communication
CN109862400B (zh) 一种流媒体传输方法、装置及其系统
van der Hooft et al. An HTTP/2 push-based approach for SVC adaptive streaming
EP2928145A1 (en) Method for estimating a bandwidth associated with a connection between a client terminal and at least one server, corresponding client terminal
WO2015044104A1 (en) Video traffic management
KR20230040872A (ko) 비디오 스트림의 전송을 제어하는 방법들 및 장치들
CN116980713A (zh) 一种带宽检测方法、装置、电子设备及存储介质
CN111953613B (zh) 数据传输控制方法及装置
CN111953612B (zh) 数据传输控制方法及装置
CN115834975B (zh) 一种视频传输方法、装置、设备及介质
CN115037701B (zh) 视频处理方法、装置、服务器及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication