CN117714746A - 基于多通道的数据包传输方法、装置、设备和介质 - Google Patents

基于多通道的数据包传输方法、装置、设备和介质 Download PDF

Info

Publication number
CN117714746A
CN117714746A CN202211091369.9A CN202211091369A CN117714746A CN 117714746 A CN117714746 A CN 117714746A CN 202211091369 A CN202211091369 A CN 202211091369A CN 117714746 A CN117714746 A CN 117714746A
Authority
CN
China
Prior art keywords
transmission
data packet
data
channel
transmission channel
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
CN202211091369.9A
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 CN202211091369.9A priority Critical patent/CN117714746A/zh
Publication of CN117714746A publication Critical patent/CN117714746A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种基于多通道的数据包传输方法、装置、设备、介质和程序产品,属于网络传输服务领域。基于多通道的数据包传输方法包括:基于待传输数据确定至少两个数据包集合,每个数据包集合包括至少一个数据包;将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输,同一个数据包集合中的数据包经由同一传输通道传输;在至少两条传输通道中的第一传输通道对第一数据包集合传输失败的情况下,将第一数据包集合重新分配至第二传输通道进行传输。上述方案通过重新分配传输通道,根据实际情况选择传输通道进行内容分发,及时发送数据包,提高服务质量。本申请实施例可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。

Description

基于多通道的数据包传输方法、装置、设备和介质
技术领域
本申请实施例涉及网络传输服务领域,特别涉及一种基于多通道的数据包传输方法、装置、设备、介质和程序产品。
背景技术
视频传输是指按照一定的规程,通过连接将视频数据从数据源传输到数据终端。
相关技术中,一般的视频服务器大多使用一条无线局域网连接或者移动网络连接,来发送视频流,即单连接传输。另一种多连接传输方式,如多路传输控制协议(Multi-Path Transmission Control Protocol,MPTCP)利用多条连接来发送视频流,MPTCP使用同样的传输控制协议(Transmission Control Protocol,TCP)数据包格式、同样的传输算法。
然而,即使是多连接传输方式,传输速率依然受限于传输速率最低的一条连接,这条连接出现问题时,需要等待其修复完成。整个多连接传输才能继续传输数据。
发明内容
本申请提供了一种基于多通道的数据包传输方法、装置、设备、介质和程序产品,可以根据实际情况灵活选择传输通道,及时发送数据包,提高服务质量。技术方案如下:
根据本申请实施例的一个方面,提供了一种基于多通道的数据包传输方法,该方法由发送端设备执行,该方法包括:
基于待传输数据确定至少两个数据包集合,每个数据包集合包括至少一个数据包;
将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输,同一个数据包集合中的数据包经由同一传输通道传输;
在至少两条传输通道中的第一传输通道对第一数据包集合传输失败的情况下,将第一数据包集合重新分配至第二传输通道进行传输。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输方法,该方法包括:
按照至少两个数据包集合的网速比值,将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输;
其中,每个传输通道分配到的数据包数量的比值与网速比值匹配。至少两条传输通道的类型包括:无线局域网传输通道、移动网络传输通道、有线网络传输通道、光纤传输通道中的至少一种。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输方法,该方法包括:
将至少两个数据包集合中与关键数据有关的数据包集合,分配到至少两条传输通道中丢包率最小的传输通道进行传输;
或,将至少两个数据包集合中与关键数据有关的数据包集合,分配到至少两条传输通道中网速最快的传输通道进行传输;
其中,关键数据包括:云视频场景中的关键帧数据、云游戏场景中的操作数据、视频通话场景中的语音数据中的至少一种。关键数据具有最高的传输优先级。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输方法,该方法由接收端设备执行,该方法包括:
通过至少两条传输通道接收至少两个数据包集合,每个数据包集合包括至少一个数据包,同一个数据包集合中的数据包经由同一传输通道传输;
在至少两条传输通道中的第一传输通道对第一数据包集合接收失败的情况下,通过第二传输通道重新接收第一数据包集合。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输方法,该方法选择第二传输通道,包括:
第二传输通道是除第一传输通道之外的传输通道中网速最快的传输通道;
或,第二传输通道是除第一传输通道之外的传输通道中负载最小的传输通道;
或,第二传输通道是除第一传输通道之外的传输通道中丢包率最小的传输通道,作为第二传输通道。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输方法,该方法确定第一数据包集合中的数据包传输失败,包括:
第一数据包集合中的数据包在第一传输通道中的重传次数达到第一阈值;
或,第一数据包集合中的数据包开始传输后的传输时长达到第二阈值且未发送第一数据包集合的确认反馈;
或,第一数据包集合分配至第一传输通道的已分配时长达到第三阈值且未发送第一数据包集合的确认反馈;
或,发送第一数据包集合的重传请求或否认反馈。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输方法,该方法包括:
第一数据包集合中的数据包的重传优先级,高于第二传输通道中的初传数据包的优先级。
传输数据包括视频流数据;
至少两个数据包集合是基于视频帧粒度划分得到的;
或,至少两个数据包集合是基于视频帧中的数据块粒度划分得到的。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输方法,该方法包括:
在接收到第二传输通道传输的第二数据包集合的情况下,发送第二数据包集合的确认反馈。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输方法,该方法包括:
接收端对至少两个传输通道接收到的数据包进行重排序。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输装置,该装置包括:
确定模块,用于基于待传输数据确定至少两个数据包集合,每个数据包集合包括至少一个数据包;
传输模块,用于将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输,同一个数据包集合中的数据包经由同一传输通道传输;
重传输模块,用于在至少两条传输通道中的第一传输通道对第一数据包集合传输失败的情况下,将第一数据包集合重新分配至第二传输通道进行传输。
根据本申请实施例的另一个方面,提供了一种基于多通道的数据包传输装置,该装置包括:
接收模块,用于通过至少两条传输通道接收至少两个数据包集合,每个数据包集合包括至少一个数据包,同一个数据包集合中的数据包经由同一传输通道传输;
重接收模块,用于在至少两条传输通道中的第一传输通道对第一数据包集合接收失败的情况下,通过第二传输通道重新接收第一数据包集合。
根据本申请实施例的另一个方面,提供了一种计算机设备,计算机设备包括:处理器和存储器,存储器存储有计算机程序,计算机程序由处理器加载并执行以实现如上述各个方面的基于多通道的数据包传输方法。
根据本申请实施例的另一个方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上述各个方面的基于多通道的数据包传输方法。
根据本申请实施例的另一个方面,提供了一种计算机程序产品(或者计算机程序),该计算机程序产品(或者计算机程序)包括计算机指令,计算机指令存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质中读取计算机指令,处理器执行计算机指令,使得计算机设备执行如上述各个方面的基于多通道的数据包传输方法。
本申请实施例提供的技术方案可以包括以下有益效果:
通过在某个数据包集合传输失败的情况下,重新分配传输通道的设计,根据实际情况灵活选择传输通道进行内容分发,比如哪个传输通道更快、传输质量更好就选择哪个传输通道,从而及时发送数据包,保障数据包发送时的可靠性、有序性,提高服务质量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的示意图;
图2示出了本申请一个示例性实施例提供的基于多通道的数据包传输系统的架构示意图;
图3示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的流程图;
图4示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的流程图;
图5示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的示意图;
图6示出了本申请一个示例性实施例提供的基于多通道的数据包传输系统的架构示意图;
图7示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的流程图;
图8示出了本申请一个示例性实施例提供的基于多通道的数据包传输系统的架构示意图;
图9示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的示意图;
图10示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的示意图;
图11示出了本申请一个示例性实施例提供的基于多通道的数据包传输装置的框图;
图12示出了本申请一个示例性实施例提供的基于多通道的数据包传输装置的框图;
图13示出了本申请一个示例性实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的输入图像是经过用户授权或经过各方充分授权的情况下获取的。
应当理解,尽管在本公开可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一参数也可以被称为第二参数,类似地,第二参数也可以被称为第一参数。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。用户终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
云计算指互联网技术基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是软件、互联网相关,也可是其他服务。云计算是网格计算、分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
本申请中部分关键术语简介如下:
云视频:内容集成在云端的视频流服务,如点播、直播、视频通话、云游戏等。
传输通道:在传输层由端到端两端确认建立起来的通道,本申请中传输通道与传输连接含义相同。
会话:表示客户端级别的管理单元,一个客户端对应一个会话,一个会话,可以有多条传输通道。
传输协议:在任何物理介质中允许两个或多个在传输系统中的终端之间传播信息的系统标准,也是指计算机通信或网上设备的共同语言。
云视频服务器:架构在云端,用于传输云视频的服务器。
多通道传输:指同时使用WIFI+长期演进技术(Long Term Evolution,LTE)、WIFI+WIFI、WIFI+LTE+5G等多条传输通道,共同传输数据。
传输通道切换:指在一条传输通道上遇到传输问题时,让数据及时切到另一传输通道上进行传输。
丢包率:网络上一个时段内发生丢包的比例。
发送阻塞:发送数据堆积,无法得到对端确认的现象。
子流:MPTCP引入的概念,在一条通道上运行的单通道数据流。
图1示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的示意图。本申请实施例的数据传输系统包括:发送端100和接收端200。其中,发送端100包括发送端会话层120,接收端200包括接收端会话层180。发送端100可以通过多个通道向接收端200发送数据包。除了在通道层实现基于数据包级别的传输保障机制,本申请还通过在两端增加会话层,通过会话层实现基于数据块(数据包集合)级别的传输保障机制。
本实施例中,多个通道包括至少两个通道,本实施例以多个通道包括第一通道和第二通道来举例说明。以发送端100向接收端200发送数据包为例,示例性的流程包括:
发送端会话层120将数据拆分为数据块1、数据块2、数据块3、数据块4,数据块1包括数据包①②,数据块2包括数据包③④,数据块3包括数据包⑤⑥,数据块4包括数据包⑦⑧。发送端会话层120基于数据块为调度单位,将每个数据块中的多个数据包分配至同一个通道进行传输。
示例性的,发送端会话层120分配数据块1(包括数据包①②)从第一通道传输到接收端会话层180,分配数据块2(包括数据包③④)从第二通道传输到接收端会话层180。数据包①②③成功传输到接收端会话层180,但数据包④传输失败。也即数据块1成功传输,数据块2中的数据包④未能成功传输。在数据块1完整传输到接收端会话层180后,发送端会话层120销毁数据块1,数据块2没有完整传输到接收端会话层180,发送端会话层120不销毁数据块2。此时接收端会话层180有数据包①②③,发送端会话层120有数据包③④⑤⑥⑦⑧。
发送端会话层120继续分配数据块3(包括数据包⑤⑥)从第一通道传输到接收端会话层180。第二通道仍然尝试传输数据包④到接收端会话层180。数据包⑤成功传输到接收端会话层180,假设数据包④依然传输失败。此时接收端会话层180有数据包①②③⑤,发送端会话层120有数据包③④⑤⑥⑦⑧。
发送端会话层120重新分配数据块2(包括数据包③④)从第一通道传输到接收端会话层180,同时数据包④持续尝试从第二通道传输到接收端会话层180。由于多次从第二通道传输数据包④失败,发送端会话层120便将数据块2分配给第一通道传输,并且由于发送端会话层120按顺序传输数据包,所以数据包③④比数据包⑥传送优先级更高。数据块2完整传输到接收端会话层180后,发送端会话层120销毁数据块2,此时接收端会话层180有数据包①②③④⑤,发送端会话层120有数据包⑤⑥⑦⑧。
发送端会话层120依次发送数据包⑥和⑦⑧从第一通道传输到接收端会话层180,数据包④在此期间从第二通道传输到接收端会话层180。数据块3、4完整传输到接收端会话层180后,发送端会话层120销毁数据块3、4,此时接收端会话层180有数据包①②③④⑤⑥⑦⑧,发送端会话层120没有数据包。数据包④通过第二通道传输到接收端会话层180后,接收端会话层180由于之前已经接收到从第一通道发送的数据包4,对第二通道发送的数据包4进行合并去重处理,只留下第一通道发送的数据包4,这之后发送端会话层120可以再次通过第二通道发送数据包。
综上所述,本实施例提供的方法通过重新分配传输通道,选择传输速度更快,传输质量更好的传输通道从而灵活选择传输、重传数据包,保障数据包的可靠传输,提高服务质量。
图2示出了本申请一个示例性实施例提供的基于多通道的数据包传输系统的架构示意图。该基于多通道的数据包传输系统包括发送端设备100和接收端设备200,发送端设备可简称为发送端,接收端设备可简称为接收端。发送端设备100包括传统物理服务器、云端服务器等,接收端设备200包括手机、计算机等。
发送端设备100和接收端设备200之间通过网络传输来传输数据,发送端设备100会将传输数据确定为至少两个数据包集合,每个数据包集合包括至少一个数据包,之后将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输,这至少两条传输通道的类型包括:无线局域网传输通道、移动网络传输通道、有线网络传输通道、光纤传输通道中的至少一种。数据包集合通过传输通道传输至接收端设备200上,由接收端设备200对数据包集合进行排序从而得到正确数据。
图3示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的流程图,该方法由发送端设备100和接收端设备200执行,该方法包括:
步骤310:发送端设备100基于待传输数据确定至少两个数据包集合,每个数据包集合包括至少一个数据包。
待传输数据包括视频流数据、音频流数据等,其中,以视频流数据为例说明数据包集合的情况,视频流数据是由多个视频帧数据组成的,数据包集合可以按照视频帧粒度或者视频帧中的数据块粒度来划分,不同数据包集合包括的数据包可以是一个或多个,例如数据包集合1包括数据包1,数据包集合2包括数据包2到数据包5。不同数据包集合中的数据包也可以重复,例如数据包集合1包括数据包1到数据包10,数据包集合1包括数据包5到数据包15。
步骤320:发送端设备100将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输,同一个数据包集合中的数据包经由同一传输通道传输。
以数据包集合按照视频帧中的数据块粒度来划分为例,数据块1包括数据包①和数据包②,数据块2包括数据包③和数据包④,发送端设备100分配数据块1到第一传输通道,分配数据块2到第二传输通道。数据包①和数据包②经由第一传输通道传输,数据包③和数据包④经由第二传输通道传输。
步骤330:接收端设备200通过至少两条传输通道接收至少两个数据包集合,每个数据包集合包括至少一个数据包,同一个数据包集合中的数据包经由同一传输通道传输。
在本实施例中,接收端设备200接收到至少两个数据包集合中的数据包后,需要对数据包进行重排序,以至少两个数据包集合中的数据包为数据包①②③④为例,接收端设备200接收到这些数据包时不是一定按照正确的顺序接收的,可能为①③②④、①③④②等顺序,接收端设备200需要将这些数据包按照①②③④的顺序重新排列。
步骤340:发送端设备100在至少两条传输通道中的第一传输通道对第一数据包集合传输失败的情况下,将第一数据包集合重新分配至第二传输通道进行传输。
发送端设备100需要确定第一数据包集合是否传输失败,在确定传输失败的情况下,发送端设备100重新分配第一数据包集合中的数据包例如数据包①②至第二传输通道进行重传。
第一数据包集合中的数据包的重传优先级,高于第二传输通道中的初传数据包的优先级。以第一数据包集合中的数据包为数据包①②,第二传输通道中的初传数据包为数据包⑤⑥为例,由于发送端设备100按照顺序传输数据包,第一数据包集合中的数据包①②按照顺序应该在第二传输通道中的初传数据包⑤⑥之前传输,所以重传时数据包①②优先级更高。
步骤350:接收端设备200在至少两条传输通道中的第一传输通道对第一数据包集合接收失败的情况下,通过第二传输通道重新接收第一数据包集合。
接收端设备200在接收到数据包集合的情况下,需要向发送端设备100发送数据包集合的确认反馈。除了发送第二数据包集合的确认反馈之外,第一数据包集合被发送端设备100重新分配至第二传输通道进行传输后,接收端设备200在接收到第二传输通道传输的第一数据包集合的情况下,需要发送第一数据包集合的确认反馈。
综上所述,本实施例提供的方法通过重新分配传输通道,根据实际情况选择传输通道进行内容分发,及时发送数据包,保障数据包的可靠性、有序性,提高服务质量。
图4示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的流程图,该方法由发送端设备100和接收端设备200执行,该方法包括:
步骤310:发送端设备100基于待传输数据确定至少两个数据包集合,每个数据包集合包括至少一个数据包。
待传输数据包括视频流数据、音频流数据等,其中,以视频流数据为例说明数据包集合的情况,视频流数据是由多个视频帧数据组成的。
在一些实施例中,视频流数据的数据包很少,那么基于视频帧粒度,将视频流数据划分为至少两个数据包集合。
在一些实施例中,视频流数据的数据包很多,那么基于视频帧中的数据块粒度,将视频流数据划分为至少两个数据包集合。
步骤320:发送端设备100将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输,同一个数据包集合中的数据包经由同一传输通道传输。
在本实施例中,传输通道的类型包括:无线局域网传输通道、移动网络传输通道、有线网络传输通道、光纤传输通道中的至少一种,其中无线局域网分为2.5G、5G等,移动网络分为LTE、新空口(New Radio,NR)等,有线网络包括标准8位模块化接口等,光纤传输即以光导纤维为介质进行的数据、信号传输。
步骤330:接收端设备200通过至少两条传输通道接收至少两个数据包集合,每个数据包集合包括至少一个数据包,同一个数据包集合中的数据包经由同一传输通道传输。
在本实施例中,接收端设备200接收到至少两个数据包集合中的数据包后,需要对数据包进行重排序,以至少两个数据包集合中的数据包为数据包①②③④为例,接收端设备200接收到这些数据包时不是一定按照正确的顺序接收的,可能为数据包①③②④、数据包①③④②等顺序,接收端设备200需要将这些数据包按照数据包①②③④的顺序重新排列。
步骤341:发送端设备100确定第一数据包集合传输失败。
发送端设备100需要确定第一数据包集合传输失败,示例性的,第一数据包集合传输失败包括以下情况中的至少之一:
在一些实施例中,在第一数据包集合中的数据包在第一传输通道中的重传次数达到第一阈值的情况下,确定第一数据包集合传输失败,即第一数据包集合中的数据包多次重传依然无法传输,此时确定第一数据包集合传输失败。
在一些实施例中,在第一数据包集合中的数据包开始传输后的传输时长达到第二阈值且未接收到第一数据包集合的确认反馈的情况下,确定第一数据包集合传输失败,即传输时长过长且未接收到接收端会话层发送的确认反馈,仅传输时间过长可能是传输速度慢等问题,因此还需要满足未接收到接收端会话层发送的确认反馈才能确定第一数据包集合传输失败。
在一些实施例中,在第一数据包集合分配至第一传输通道的已分配时长达到第三阈值且未接收到第一数据包集合的确认反馈的情况下,确定第一数据包集合传输失败,即已分配后经历时长过长且未接收到接收端会话层发送的确认反馈,仅已分配后经历时长过长可能是传输速度慢等问题,因此还需要满足未接收到接收端会话层发送的确认反馈才能确定第一数据包集合传输失败。
在一些实施例中,在接收到第一数据包集合的重传请求或否认反馈的情况下,确定第一数据包集合传输失败,即接收端发送重传请求或否认反馈给发送端时,明确表示没有接收到第一数据包集合,此时确定第一数据包集合传输失败。
步骤342:发送端设备100将第一数据包集合重新分配至第二传输通道进行传输。
基于历史传输信息,计算传输通道的网速,即每秒传输二进制信息的位数,单位为位/秒,记作bps,计算公式:S=(1/T)*log2N,T为一个数字脉冲信号的宽度或重复周期,单位为秒;N为一个码元所取的离散值个数。
基于历史传输信息,计算传输通道的负载:传输通道未发送的数据包的数量。
基于历史传输信息,计算传输通道的丢包率:[(输入数据包数量-输出数据包数量)/输入数据包数量]*100%,输入数据包是指会话层分配的数据包,输出数据包是指发送成功的数据包。
第二传输通道的选择包括以下情况中的至少之一:
在除第一传输通道之外的传输通道中选择出网速最快的传输通道作为第二传输通道,例如传输通道A的网速是第一传输通道的网速的5倍,传输通道B的网速是第一传输通道的网速的2倍,那么选择传输通道A作为第二传输通道,这样可以做到保证数据及时传输;
或者在除第一传输通道之外的传输通道中选择出负载最小的传输通道作为第二传输通道,例如传输通道A剩余5个传输数据包,传输通道B剩余10个传输数据包,那么选择传输通道A作为第二传输通道,这样可以做到对传输通道压力最小,整体完成任务的时间最短;
或者在除第一传输通道之外的传输通道中选择出丢包率最小的传输通道作为第二传输通道,例如传输通道A的丢包率是1%,传输通道B的丢包率是3%,那么选择传输通道A作为第二传输通道,这样可以做到保证数据传输的可靠性。
步骤350:接收端设备200通过第二传输通道重新接收第一数据包集合。
发送端100重新传输第一数据包集合中的数据包后,接收端设备200通过对应的传输通道重新接收第一数据包集合中的数据包。
步骤360:接收端设备200发送第二数据包集合的确认反馈。
接收端设备200在接收到第二数据包集合的情况下,需要向发送端设备100发送第二数据包集合的确认反馈,保证第二数据包集合中的所有数据包可靠到达。
步骤362:接收端设备200发送第一数据包集合的确认反馈。
第一数据包集合被发送端设备100重新分配至第二传输通道进行传输后,接收端设备200在接收到第二传输通道传输的第一数据包集合的情况下,需要发送第一数据包集合的确认反馈。
步骤370:发送端设备100在接收到第二传输通道传输的第二数据包集合的确认反馈的情况下,第二传输通道分配第三数据包集合进行传输,销毁缓存的第二数据包集合中的数据包。
发送端设备100接收到传输通道传输的数据包集合的确认反馈的情况下,判断传输通道正常工作,继续给传输通道分配其他数据包集合进行传输,同时销毁缓存的已传输数据包集合中的数据包,这样保证数据包能及时可靠地交付给接收端设备200。
步骤380:接收端设备200发送第三数据包集合的确认反馈。
接收端设备200在接收到第三数据包集合的情况下,需要向发送端设备100发送第三数据包集合的确认反馈,保证第三数据包集合中的所有数据包可靠到达。
综上所述,本实施例提供的方法通过对重新传输通道进行灵活选择:选择网速最快的传输通道作为重新传输通道时,保证数据及时传输;选择负载最小的传输通道作为重新传输通道时,做到对传输通道压力最小,整体完成任务的时间最短;选择丢包率最小的传输通道作为重新传输通道时,保证数据传输的可靠性;以及通过使用接收端确认才销毁的数据处理机制,能够及时感知数据包是否被成功接收,更贴合实际情况。
基于图4的可选实施例还存在其他可能设计:
一种可能设计中,步骤320可以按照至少两个数据包集合的网速比值,将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输。其中,每个传输通道分配到的数据包数量的比值与网速比值匹配。例如,传输通道A的网速是10Mbps,传输通道B网速是5Mbps,那么传输通道A的网速是传输通道B的2倍,传输通道A分配到的数据包数量就是传输通道B的2倍;
一种可能设计中,步骤320还可以将至少两个数据包集合中与关键数据有关的数据包集合,分配到至少两条传输通道中丢包率最小的传输通道进行传输。例如传输通道A的丢包率是1%,传输通道B的丢包率是3%,那么选择传输通道A作为传输通道,这样可以做到保证关键数据的可靠传输;
一种可能设计中,步骤320还可以将至少两个数据包集合中与关键数据有关的数据包集合,分配到至少两条传输通道中网速最快的传输通道进行传输,例如传输通道A的网速是传输通道B的2倍,那么选择传输通道A作为传输通道,这样可以做到保证关键数据最早传输到接收端;
一种可能设计中,步骤320还可以将至少两个数据包集合中与关键数据有关的数据包集合,分配到两条或以上传输通道进行传输,例如将与关键数据有关的数据包集合分配给传输通道A和传输通道B一起传输,这样可以做到一条传输通道出现问题时,另一条传输通道可以将关键数据传输给接收端,保证关键数据的可靠传输;
其中,关键数据包括:云视频场景中的关键帧数据、云游戏场景中的操作数据、视频通话场景中的语音数据中的至少一种,关键数据具有最高的传输优先级。
图5示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的示意图。
本申请可以应用于云视频场景中,云视频是指内容集成在云端的视频流服务,如点播、直播、视频通话、云游戏等。云视频服务器保存视频流数据,当客户端发送需要视频流数据的请求时,云视频服务器将视频流数据发送给客户端。此时,云视频服务器是发送端设备,客户端是接收端设备,本实施例中以传输数据是视频流数据为例进行讲解。
相关技术中,单通道传输发送视频流数据时,如果出现网络抖动、丢包等情况,只能等待当前网络通道的数据包重传和网络缓慢恢复,用户体验差。而以MPTCP为例的多通道传输虽然利用多通道来传输多条子流,但是以MPTCP传输视频帧1中的数据块1为例,假设数据块1有20个数据包,MPTCP提前分配10个数据包从第一通道传输,10个数据包从第二通道传输,如果第一通道丢了2个数据包,那么第一通道本来要传输的10个数据包就一直没传输过去,从而整个视频帧1就一直没传输过去。因为每一个数据包都分好了从哪个通道走,传输时间和单通道传输相比是减少了,但是依然存在队头阻塞问题即一列的第一个数据包受阻而导致整列数据包受阻,MPTCP会一直等待第一通道修好再传输数据包。
本实施例提供的基于多通道的数据包传输系统包括云视频服务器510和客户端530,其中,云视频服务器510的代理层提供代理服务让会话层520工作,会话层520包括第一通道模块610和第二通道模块620,会话层520通过分配数据包传输任务给第一通道模块610和第二通道模块620来传输视频流数据。
在本实施例提供的基于多通道的数据包传输方法中,通过多通道传输的服务架构,建立多条通道,这些通道可以是无线局域网传输通道和移动网络传输通道,也可以是TCP通道和用户数据报协议(User Datagram Protocol,UDP)通道,本实施例中以TCP通道和UDP通道为例进行说明。云视频服务器510通过TCP通道和UDP通道将视频流数据传输到会话层520,会话层520将视频流数据拆分为若干数据包后分配给第一通道模块610和第二通道模块620进行传输,会话层520可以与客户端530进行对等连接,即客户端530与云视频服务器510建立一对一的通道,两端会话层与通道模块一一对应。云视频服务器510将数据包通过TCP通道发送给客户端530,最终发送完整的视频流数据。本实施例中云视频服务器510将一条视频流数据通过多条通道来传输,当部分通道出现数据包传输失败的情况时,可以及时更换通道重传数据包,有效地提升视频的流畅度和实时性。
综上所述,本实施例提供的方法通过在客户端和云视频服务器之间预先建立两条通道的方法,在需要的时候,动态选择更好的通道来传输数据包,做到在不打扰用户的前提下,提升云视频类产品的服务质量。
图6示出了本申请一个示例性实施例提供的基于多通道的数据包传输系统的架构示意图。
相关技术中,以MPTCP为例的多通道传输在传输层工作,并不在应用层工作,因此不能紧贴应用服务,满足不了实际需要。而应用层的数据,都是发送到内核后就会立即销毁,数据是否及时可靠地交付给了客户端,应用层都是不知道的。
本实施例提供的基于多通道的数据包传输系统在客户端或服务器上都可以工作,基于多通道的数据包传输系统包括:应用层600、传输层、网络层、数据链路层、物理层。其中,应用层600包括:会话层520、第一通道模块610、第二通道模块620、第一套接字612、第二套接字622、第三套接字632,会话层520、第一通道模块610、第二通道模块620均通过套接字来发送数据。
在本实施例中,基于多通道的数据包传输的服务架构均工作在应用层600,可以做到紧贴应用服务,满足实际需要。服务架构在通道建立后,将多个通道模块汇聚成会话层520,传输同一个视频流。本实施例中,第一通道模块610和第二通道模块620为任意通道模块,所有通道模块都是通过套接字发送数据包,并且工作流程相同,此处以第一通道模块610和第二通道模块620为例进行说明,其余通道模块不再赘述。
当一条视频流数据进行传输时,会话层520将其分成视频帧形式,再将视频帧分成数据块形式,每个数据块包含相同或不同数量的数据包,数据块的数量以及数据块包含的数据包的数量由会话层520决定。会话层520通过第三套接字632将数据块分配给不同的通道模块,举例来讲,第一通道模块610接收到分配的数据块1后,通过第一套接字612将数据块1包含的所有数据包发送给客户端的通道模块,客户端的通道模块再将所有数据包发送给客户端的会话层,客户端的会话层接收到所有数据包后返回数据块1的确认,从而保证数据块1可靠到达客户端,之后第一通道模块610向会话层520发送数据块1可靠到达客户端的信息。如果某一通道模块没有将数据块包含的全部数据包发送到客户端,会话层520接收不到该数据块可靠到达客户端的信息,例如第二通道模块620发送的数据块2中的数据包4发送失败,会话层520会将第二通道模块620负责的数据块2分配给第一通道模块610进行发送,从而保证最终完整视频流数据可靠到达客户端。
综上所述,本实施例提供的系统通过将服务架构建立在应用层,引入了新的可靠传输机制,数据块在收到客户端的确认后才会被销毁,保证了数据块能够被可靠地交付给客户端,提高了视频流数据的可靠性。
图7示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的流程图,该方法以传输视频帧数据为例,由发送端执行,传输流程包括:
步骤710:建立第一通道。
发送端提前建立第一通道用于传输数据包,第一通道为发送端中的任意一种通道,工作流程与所有同类型的通道工作流程相同。
步骤712:建立第二通道。
发送端提前建立第二通道用于传输数据包,第二通道为发送端中的任意一种通道,工作流程与所有同类型的通道工作流程相同。
步骤720:发送端发送视频帧数据。
视频流数据由视频帧数据组成,发送端按顺序发送视频帧数据会话层处理,最后将整条视频流数据发送到接收端。
步骤730:会话层拆分视频帧为数据块。
会话层将一个视频帧数据拆分为多个数据块,每个数据块包含相同或不同数量的数据包,数据块的数量以及数据块包含的数据包的数量由会话层决定。
步骤740:找到最新要发送或重传的数据块。
会话层将待发送的数据块中的数据包分配给不同的通道进行传输,如果有数据块发送失败,那么会话层需要重传该数据块。
步骤750:是否使用当前通道。
会话层对是否使用某条通道进行判断,例如根据能否传输数据包判断,选择能传输数据包的传输通道,保证数据包的稳定传输;或根据网速判断,选择网速最快的传输通道,保证数据包的及时到达;或根据丢包率判断,选择丢包率最小的传输通道,保证数据包的可靠传输。
如果第一通道没有出现无法传输数据包的情况,那么判断使用第一通道,执行步骤760;如果第二通道出现无法传输数据包的情况,那么判断不使用第二通道,执行步骤752。
步骤752:选择一个新的通道。
以会话层判断第二通道出现无法传输数据包的情况为例,会话层不使用第二通道,将本来第二通道传输的数据块2重新分配给第一通道进行传输。
步骤760:通道传输数据包。
当第一通道和第二通道都正常工作时,第一通道传输数据块1中的数据包1、数据包2,第二通道传输数据块2中的数据包3、数据包4;当第二通道出现无法传输数据包的情况时,第一通道按顺序传输数据块1和数据块2中的数据包,如果此时第一通道已经开始传输数据块3中的数据包,第一通道收到会话层重新分配的数据块2后,优先传输数据块2中的数据包3和数据包4。
步骤770:数据包是否被确认。
当所有数据包全部被确认时,执行步骤780;当某一个数据包例如第二通道传输的数据块2中的数据包4没有被确认时,执行步骤752。
步骤780:数据块是否被确认。
当所有数据块全部被确认时,该视频帧数据可靠到达接收端,重复上述流程最终传输完整视频流数据;当某一个数据块例如第二通道传输的数据块2没有被确认时,执行步骤782。
步骤782:反馈给会话层。
当某一个数据块没有被确认例如第二通道传输的数据块2没有被确认时,第二通道模块需要将该情况反馈给会话层,会话层执行步骤740。
综上所述,本实施例提供的方法通过多传输通道来传输视频流数据,灵活选择传输通道,在某一通道出现问题时切换其他通道进行传输,保证了用户的视频观看体验,提高了服务质量。
图8示出了本申请一个示例性实施例提供的基于多通道的数据包传输系统的架构示意图。
本申请实施例的数据传输系统包括:发送端100和接收端200。其中,发送端100包括发送端会话层120,发送端会话层120包括发送端第一通道模块130、发送端第二通道模块140,发送端会话层120是发送端100的应用层的一部分;接收端200包括接收端会话层180,接收端会话层180包括接收端第一通道模块160、接收端第二通道模块170,接收端会话层180是接收端200的应用层的一部分。发送端第一通道模块130和接收端第一通道模块160对应,发送端第二通道模块140和接收端第二通道模块170对应,这四个通道模块都是对应的任意通道模块,本实施例中以这四个通道模块为例进行说明,其余通道模块不再赘述,所有的通道模块都由会话层进行管理。发送端100包括传统物理服务器、云端服务器等,接收端200包括手机、计算机等。
图9和图10示出了本申请一个示例性实施例提供的基于多通道的数据包传输方法的示意图。
本实施例中,以发送端100向接收端200发送视频流数据为例,处理流程包括:
步骤1.1:发送端会话层120将视频帧1拆分为数据块1、2、3、4,数据块1包括数据包1、2,数据块2包括数据包3、4,数据块3包括数据包5、6,数据块4包括数据包7、8。视频流数据由视频帧数据组成,发送端会话层120按顺序发送视频帧数据,最后将整条视频流数据发送出去。发送端会话层120将一个视频帧数据拆分为多个数据块,每个数据块包含相同或不同数量的数据包,数据块的数量以及数据块包含的数据包的数量由发送端会话层120决定;
步骤2.1:发送端会话层120分配数据块1给发送端第一通道模块130。发送端会话层120将视频帧数据拆分为数据块后,将数据块里的数据包按顺序发送给不同的通道模块,不同的通道模块的工作流程是相同的,本实施例中以发送端会话层120分配数据块给发送端第一通道模块130、发送端第二通道模块140进行说明,发送端会话层120将包括了数据包1、2的数据块1分配给发送端第一通道模块130;
步骤2.2:发送端会话层120分配数据块2给发送端第二通道模块140。发送端会话层120将包括了数据包3、4的数据块2分配给发送端第二通道模块140;
步骤3.1:发送端第一通道模块130发送数据包1给接收端第一通道模块160,接收端第一通道模块160发送数据包1给接收端会话层180。发送端第一通道模块130按照顺序将数据包1和数据包2发送给接收端第一通道模块160,接收端第一通道模块160按照顺序将数据包1和数据包2发送给接收端会话层180;
步骤3.2:发送端第二通道模块140发送数据包3给接收端第二通道模块170,接收端第二通道模块170发送数据包3给接收端会话层180。发送端第二通道模块140按照顺序将数据包3和数据包4发送给接收端第二通道模块170,接收端第二通道模块170按照顺序将数据包3和数据包4发送给接收端会话层180;
步骤4.1:接收端第一通道模块160发送数据包1的确认1(ACK1)给发送端第一通道模块130。接收端第一通道模块160收到数据包1后需要返回确认1给发送端第一通道模块130,保证数据包1可靠到达;
步骤4.2:接收端第二通道模块170发送数据包3的确认3给发送端第二通道模块140。接收端第二通道模块170收到数据包3后需要返回确认3给发送端第二通道模块140,保证数据包3可靠到达;
步骤5.1:发送端第一通道模块130发送数据包2给接收端第一通道模块160,接收端第一通道模块160发送数据包2给接收端会话层180。发送端第一通道模块130按照顺序将数据包1和数据包2发送给接收端第一通道模块160,接收端第一通道模块160按照顺序将数据包1和数据包2发送给接收端会话层180;
步骤5.2:发送端第二通道模块140发送数据包4给接收端第二通道模块170。发送端第二通道模块140按照顺序将数据包3和数据包4发送给接收端第二通道模块170;
步骤6.1:接收端第一通道模块160发送数据包2的确认2给发送端第一通道模块130。接收端第一通道模块160收到数据包2后需要返回确认2给发送端第一通道模块130,保证数据包2可靠到达;
步骤6.2:接收端第二通道模块170发送数据包4的非确认4(NACK4)给发送端第二通道模块140。由于出现了丢包,接收端第二通道模块170未接收到数据包4,因此接收端第二通道模块170发送数据包4的非确认4;
步骤6.3:接收端会话层180排序数据包并发送数据块1的确认10给接收端第一通道模块160。接收端会话层180将数据包按照数据包1、数据包2、数据包3的顺序排列,并且因为接收到数据块1包含的全部数据包,发送数据块1的确认10给接收端第一通道模块160,保证数据块1可靠到达,并且接收端会话层180可以视网络传输情况,选择其他传输质量好的接收端通道模块发送确认;
步骤6.4:接收端第一通道模块160发送数据块1的确认10给发送端会话层120。接收端第一通道模块160接收到确认10后,向发送端第一通道模块130发送确认10,发送端第一通道模块130接收到确认10后,向发送端会话层120发送确认10,发送端会话层120销毁数据块1。这样可以保证会话层及时感知数据块1有没有被确认,从而决定是否需要重传数据块1;
步骤7.1:发送端会话层120分配数据块3给发送端第一通道模块130。发送端会话层120将包括了数据包5、6的数据块3分配给发送端第一通道模块130;
步骤8.1:发送端第一通道模块130发送数据包5给接收端第一通道模块160,接收端第一通道模块160发送数据包5给接收端会话层180。发送端第一通道模块130按照顺序将数据包5和数据包6发送给接收端第一通道模块160,接收端第一通道模块160按照顺序将数据包5和数据包6发送给接收端会话层180;
步骤8.2:发送端第二通道模块140重新发送数据包4给接收端第二通道模块170。发送端第二通道模块140再次将数据包4发送给接收端第二通道模块170;
步骤9.1:接收端第一通道模块160发送数据包5的确认5给发送端第一通道模块130。接收端第一通道模块160收到数据包5后需要返回确认5给发送端第一通道模块130,保证数据包5可靠到达;
步骤9.2:接收端第二通道模块170发送数据包4的非确认4给发送端第二通道模块140。由于出现了丢包,接收端第二通道模块170未接收到数据包4,因此接收端第二通道模块170发送数据包4的非确认4;
步骤10.1:发送端会话层120重新分配数据块2给发送端第一通道模块130。由于始终接收到数据包4的非确认4,发送端会话层120将数据块2分配给发送端第一通道模块130进行发送,同时发送端第二通道模块140持续发送数据包4给接收端第二通道模块170;
步骤11.1:发送端第一通道模块130优先发送数据包3给接收端第一通道模块160,接收端第一通道模块160发送数据包3给接收端会话层180。发送端第一通道模块130按照顺序将数据包3和数据包4发送给接收端第一通道模块160,接收端第一通道模块160按照顺序将数据包3和数据包4发送给接收端会话层180。由于会话层是按顺序发送的数据包,因此重传数据包按照顺序是应该在发送端第一通道模块130正在发送的数据包之前发送的,即数据包3和数据包4和数据包6相比具有更高优先级;
步骤12.1:接收端第一通道模块160发送数据包3的确认3给发送端第一通道模块130。接收端第一通道模块160收到数据包3后需要返回确认3给发送端第一通道模块130,保证数据包3可靠到达;
步骤13.1:发送端第一通道模块130优先发送数据包4给接收端第一通道模块160,接收端第一通道模块160发送数据包4给接收端会话层180。发送端第一通道模块130按照顺序将数据包3和数据包4发送给接收端第一通道模块160,接收端第一通道模块160按照顺序将数据包3和数据包4发送给接收端会话层180;
步骤14.1:接收端第一通道模块160发送数据包4的确认4给发送端第一通道模块130。接收端第一通道模块160收到数据包4后需要返回确认4给发送端第一通道模块130,保证数据包4可靠到达;
步骤15.1:接收端会话层180排序数据包并发送数据块2的确认20给接收端第一通道模块160。接收端会话层180将数据包按照数据包1、2、3、4、5的顺序排列,并且因为接收到数据块2包含的全部数据包,发送数据块2的确认20给接收端第一通道模块160,保证数据块2可靠到达;
步骤15.2:接收端第一通道模块160发送数据块2的确认20给发送端会话层120。接收端第一通道模块160接收到确认20后,向发送端第一通道模块130发送确认20,发送端第一通道模块130接收到确认20后,向发送端会话层120发送确认20,发送端会话层120销毁数据块2;
步骤16.1:发送端第一通道模块130发送数据包6给接收端第一通道模块160,接收端第一通道模块160发送数据包6给接收端会话层180。发送端第一通道模块130按照顺序将数据包5和数据包6发送给接收端第一通道模块160,接收端第一通道模块160按照顺序将数据包5和数据包6发送给接收端会话层180;
步骤17.1:接收端第一通道模块160发送数据包6的确认6给发送端第一通道模块130。接收端第一通道模块160收到数据包6后需要返回确认6给发送端第一通道模块130,保证数据包6可靠到达;
步骤18.1:接收端会话层180排序数据包并发送数据块3的确认30给接收端第一通道模块160。接收端会话层180将数据包按照数据包1、2、3、4、5、6的顺序排列,并且因为接收到数据块3包含的全部数据包,发送数据块3的确认30给接收端第一通道模块160,保证数据块3可靠到达;
步骤18.2:接收端第一通道模块160发送数据块3的确认30给发送端会话层120。接收端第一通道模块160接收到确认30后,向发送端第一通道模块130发送确认30,发送端第一通道模块130接收到确认30后,向发送端会话层120发送确认30,发送端会话层120销毁数据块3;
步骤19.1:发送端会话层120分配数据块4给发送端第一通道模块130。由于发送端会话层120判断发送端第二通道模块140存在问题,将数据块4分配给发送端第一通道模块130进行发送;
步骤20.1:发送端第一通道模块130发送数据包7给接收端第一通道模块160,接收端第一通道模块160发送数据包7给接收端会话层180。发送端第一通道模块130按照顺序将数据包7和数据包8发送给接收端第一通道模块160,接收端第一通道模块160按照顺序将数据包7和数据包8发送给接收端会话层180;
步骤21.1:接收端第一通道模块160发送数据包7的确认7给发送端第一通道模块130。接收端第一通道模块160收到数据包7后需要返回确认7给发送端第一通道模块130,保证数据包7可靠到达;
步骤22.1:发送端第一通道模块130发送数据包8给接收端第一通道模块160,接收端第一通道模块160发送数据包8给接收端会话层180。发送端第一通道模块130按照顺序将数据包7和数据包8发送给接收端第一通道模块160,接收端第一通道模块160按照顺序将数据包7和数据包8发送给接收端会话层180;
步骤23.1:接收端第一通道模块160发送数据包8的确认8给发送端第一通道模块130。接收端第一通道模块160收到数据包8后需要返回确认8给发送端第一通道模块130,保证数据包8可靠到达;
步骤24.1:接收端会话层180排序数据包并发送数据块4的确认40给接收端第一通道模块160。接收端会话层180将数据包按照数据包1、2、3、4、5、6、7、8的顺序排列,并且因为接收到数据块4包含的全部数据包,发送数据块4的确认40给接收端第一通道模块160,保证数据块4可靠到达;
步骤24.2:接收端第一通道模块160发送数据块4的确认40给发送端会话层120。当接收端第一通道模块160接收到确认40后,向发送端第一通道模块130发送确认40,发送端第一通道模块130接收到确认40后,向发送端会话层120发送确认40,发送端会话层120销毁数据块4;
步骤25.1:发送端第二通道模块140发送数据包4给接收端第二通道模块170,接收端第二通道模块170发送数据包4给接收端会话层180。发送端第二通道模块140在其他通道模块工作期间持续将数据包4发送给接收端第二通道模块170,直到成功发送为止,成功发送后发送端会话层120可以再次给发送端第二通道模块140分配数据块;
步骤26.1:接收端第二通道模块170发送数据包4的确认4给发送端第二通道模块140。接收端第二通道模块170收到数据包4后需要返回确认4给发送端第二通道模块140,保证数据包4可靠到达;
步骤27.1:接收端会话层180合并去重数据包4并发送数据块2的确认20。接收端第二通道模块170将数据包4发送给接收端会话层180后,接收端会话层180由于之前已经接收到接收端第一通道模块160发送的数据包4,对接收端第二通道模块170发送的数据包4进行合并去重处理,只留下接收端第一通道模块160发送的数据包4,之后向接收端第二通道模块170发送数据块2的确认20;
步骤27.2:接收端第二通道模块170发送数据块2的确认20给发送端会话层120。当接收端第二通道模块170接收到确认20后,向发送端第二通道模块140发送确认20,发送端第二通道模块140接收到确认20后,向发送端会话层120发送确认20,告知发送端会话层120可以再次给发送端第二通道模块140分配数据块。
综上所述,本实施例提供的方法通过多传输通道进行数据传输,灵活选择传输通道,并且新增会话层的可靠传输机制,保证了视频帧的可靠性,同时通过使用接收端会话层的重排序与合并查重机制,保证了数据包的完整正确,有效地提升了视频的流畅度和实时性。
图11示出了本申请一个示例性实施例提供的基于多通道的数据包传输装置的框图,该装置包括:
确定模块1110,用于基于待传输数据确定至少两个数据包集合,每个数据包集合包括至少一个数据包;
传输模块1120,用于将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输,同一个数据包集合中的数据包经由同一传输通道传输;
重传输模块1130,用于在至少两条传输通道中的第一传输通道对第一数据包集合传输失败的情况下,将第一数据包集合重新分配至第二传输通道进行传输。
在本实施例的一种可能设计中,至少两条传输通道的类型为无线局域网传输通道、移动网络传输通道、有线网络传输通道、光纤传输通道中的至少一种。
在本实施例的一种可能设计中,重传输模块1130用于基于历史传输信息在除第一传输通道之外的传输通道中选择出网速最快的传输通道,作为第二传输通道;
或,在除第一传输通道之外的传输通道中选择出负载最小的传输通道,作为第二传输通道;
或,在除第一传输通道之外的传输通道中选择出丢包率最小的传输通道,作为第二传输通道。
在本实施例的一种可能设计中,确定模块1110用于在第一数据包集合中的数据包在第一传输通道中的重传次数达到第一阈值的情况下,确定第一数据包集合传输失败;
或,在第一数据包集合中的数据包开始传输后的传输时长达到第二阈值且未接收到第一数据包集合的确认反馈的情况下,确定第一数据包集合传输失败;
或,在第一数据包集合分配至第一传输通道的已分配时长达到第三阈值且未接收到第一数据包集合的确认反馈的情况下,确定第一数据包集合传输失败;
或,在接收到第一数据包集合的重传请求或否认反馈的情况下,确定第一数据包集合传输失败。
在本实施例的一种可能设计中,第一数据包集合中的数据包的重传优先级,高于第二传输通道中的初传数据包的优先级。
在本实施例的一种可能设计中,传输数据包括视频流数据,传输模块1120用于基于视频帧粒度,将视频流数据划分为至少两个数据包集合;
或,基于视频帧中的数据块粒度,将视频流数据划分为至少两个数据包集合。
在本实施例的一种可能设计中,传输模块1120用于按照至少两个数据包集合的网速比值,将至少两个数据包集合按照集合粒度分配到至少两条传输通道进行传输;
其中,每个传输通道分配到的数据包数量的比值与网速比值匹配。
在本实施例的一种可能设计中,传输模块1120用于将至少两个数据包集合中与关键数据有关的数据包集合,分配到至少两条传输通道中丢包率最小的传输通道进行传输;
或,将至少两个数据包集合中与关键数据有关的数据包集合,分配到至少两条传输通道中网速最快的传输通道进行传输;
其中,关键数据包括:云视频场景中的关键帧数据、云游戏场景中的操作数据、视频通话场景中的语音数据中的至少一种。关键数据具有最高的传输优先级。
销毁模块1140,用于在接收到第二传输通道传输的第二数据包集合的确认反馈的情况下,向第二传输通道分配第三数据包集合进行传输,销毁缓存的第二数据包集合中的数据包。
图12示出了本申请一个示例性实施例提供的基于多通道的数据包传输装置的框图,该装置包括:
接收模块1210,用于通过至少两条传输通道接收至少两个数据包集合,每个数据包集合包括至少一个数据包,同一个数据包集合中的数据包经由同一传输通道传输;
重接收模块1220,用于在至少两条传输通道中的第一传输通道对第一数据包集合接收失败的情况下,通过第二传输通道重新接收第一数据包集合。
在本实施例的一种可能设计中,至少两条传输通道的类型包括:无线局域网传输通道、移动网络传输通道、有线网络传输通道、光纤传输通道中的至少一种。
在本实施例的一种可能设计中,待传输数据包括视频流数据,其中至少两个数据包集合是基于视频帧粒度划分得到的;
或,至少两个数据包集合是基于视频帧中的数据块粒度划分得到的。
在本实施例的一种可能设计中,重接收模块1220用于在除第一传输通道之外的传输通道中选择出网速最快的传输通道,作为第二传输通道;
或,在除第一传输通道之外的传输通道中选择出负载最小的传输通道,作为第二传输通道;
或,在除第一传输通道之外的传输通道中选择出丢包率最小的传输通道,作为第二传输通道。
在本实施例的一种可能设计中,第一数据包集合中的数据包的重传优先级,高于第二传输通道中的初传数据包的优先级。
发送模块1230用于在接收到第二传输通道传输的第二数据包集合的情况下,发送第二数据包集合的确认反馈;在接收到第二传输通道传输的第一数据包集合的情况下,发送第一数据包集合的确认反馈。
重排序模块1240用于对至少两个传输通道接收到的数据包进行重排序。
图13示出了本申请一个示例性实施例提供的计算机设备的结构示意图。发送端设备与接收端设备的结构与该计算机设备相同,通常,计算机设备1300包括有:处理器1301和存储器1302。
处理器1301可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1301可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1301也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1301可以在集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1301还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1302可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1302还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1302中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1301所执行以实现本申请中方法实施例提供的图像分类模型的方法和/或使用方法。
在一些实施例中,服务器1300还可选包括有:输入接口1303和输出接口1304。处理器1301、存储器1302和输入接口1303、输出接口1304之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与输入接口1303、输出接口1304相连。输入接口1303、输出接口1304可被用于将输入/输出(Input/Output,I/O)相关的至少一个外围设备连接到处理器1301和存储器1302。在一些实施例中,处理器1301、存储器1302和输入接口1303、输出接口1304被集成在同一芯片或电路板上;在一些其他实施例中,处理器1301、存储器1302和输入接口1303、输出接口1304中的任意一个或两个可以在单独的芯片或电路板上实现,本申请实施例对此不加以限定。
本领域技术人员可以理解,上述示出的结构并不构成对服务器1300的限定,服务器1300可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器从计算机可读存储介质读取并执行该计算机指令,以实现上述各方法实施例提供的图像分类模型的训练方法和/或使用方法。
在示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,计算机程序由处理器加载并执行以实现上述各方法实施例提供的图像分类模型的训练方法和/或使用方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (15)

1.一种基于多通道的数据包传输方法,其特征在于,所述方法由发送端设备执行,所述发送端设备和接收端设备之间建立有至少两条传输通道,所述方法包括:
基于待传输数据确定至少两个数据包集合,每个所述数据包集合包括至少一个数据包;
将所述至少两个数据包集合按照集合粒度分配到所述至少两条传输通道进行传输,同一个所述数据包集合中的数据包经由同一传输通道传输;
在所述至少两条传输通道中的第一传输通道对第一数据包集合传输失败的情况下,将所述第一数据包集合重新分配至第二传输通道进行传输。
2.根据权利要求1所述的方法,其特征在于,所述在所述至少两条传输通道中的第一传输通道对第一数据包集合传输失败的情况下,将所述第一数据包集合重新分配至第二传输通道进行传输,包括:
在所述至少两条传输通道中的第一传输通道对第一数据包集合传输失败的情况下,基于历史传输信息在除所述第一传输通道之外的传输通道中选择出所述第二传输通道;
将所述第一数据包集合重新分配至所述第二传输通道进行传输。
3.根据权利要求2所述的方法,其特征在于,所述基于历史传输信息在除所述第一传输通道之外的传输通道中选择出所述第二传输通道,包括:
在除所述第一传输通道之外的传输通道中选择出网速最快的传输通道,作为所述第二传输通道;或,
在除所述第一传输通道之外的传输通道中选择出负载最小的传输通道,作为所述第二传输通道;或,
在除所述第一传输通道之外的传输通道中选择出丢包率最小的传输通道,作为所述第二传输通道。
4.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
在所述第一数据包集合中的数据包在所述第一传输通道中的重传次数达到第一阈值的情况下,确定所述第一数据包集合传输失败;或,
在所述第一数据包集合中的数据包开始传输后的传输时长达到第二阈值且未接收到所述第一数据包集合的确认反馈的情况下,确定所述第一数据包集合传输失败;或,
在所述第一数据包集合分配至所述第一传输通道的已分配时长达到第三阈值且未接收到所述第一数据包集合的确认反馈的情况下,确定所述第一数据包集合传输失败;或,
在接收到所述第一数据包集合的重传请求或否认反馈的情况下,确定所述第一数据包集合传输失败。
5.根据权利要求1至3任一所述的方法,其特征在于,所述第一数据包集合中的数据包的重传优先级,高于所述第二传输通道中的初传数据包的优先级。
6.根据权利要求1至3任一所述的方法,其特征在于,所述待传输数据包括视频流数据;所述基于待传输数据确定至少两个数据包集合,包括:
基于视频帧粒度,将所述视频流数据划分为至少两个数据包集合;
或,
基于视频帧中的数据块粒度,将所述视频流数据划分为至少两个数据包集合。
7.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
在接收到所述第二传输通道传输的第二数据包集合的确认反馈的情况下,向所述第二传输通道分配第三数据包集合进行传输。
8.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
在接收到所述第二传输通道传输的第二数据包集合的确认反馈的情况下,销毁缓存的所述第二数据包集合中的数据包。
9.一种基于多通道的数据包传输方法,其特征在于,所述方法由接收端设备执行,所述接收端设备与发送端设备之间建立有至少两条传输通道,所述方法包括:
通过所述至少两条传输通道接收至少两个数据包集合,每个所述数据包集合包括至少一个数据包,同一个所述数据包集合中的数据包经由同一传输通道传输;
在所述至少两条传输通道中的第一传输通道对第一数据包集合接收失败的情况下,通过第二传输通道重新接收所述第一数据包集合。
10.一种基于多通道的数据包传输装置,其特征在于,所述装置包括:
确定模块,用于基于待传输数据确定至少两个数据包集合,每个所述数据包集合包括至少一个数据包;
传输模块,用于将所述至少两个数据包集合按照集合粒度分配到所述至少两条传输通道进行传输,同一个所述数据包集合中的数据包经由同一传输通道传输;
重传输模块,用于在所述至少两条传输通道中的第一传输通道对第一数据包集合传输失败的情况下,将所述第一数据包集合重新分配至第二传输通道进行传输。
11.一种基于多通道的数据包传输装置,其特征在于,所述装置包括:
接收模块,用于通过所述至少两条传输通道接收至少两个数据包集合,每个所述数据包集合包括至少一个数据包,同一个所述数据包集合中的数据包经由同一传输通道传输;
重接收模块,用于在所述至少两条传输通道中的第一传输通道对第一数据包集合接收失败的情况下,通过第二传输通道重新接收所述第一数据包集合。
12.一种发送端设备,其特征在于,所述发送端设备包括:处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至8任一所述数据传输方法。
13.一种接收端设备,其特征在于,所述接收端设备包括:处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求9所述数据传输方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至9任一所述数据传输方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,处理器从所述计算机可读存储介质中获取所述计算机指令,使得所述处理器加载并执行以实现如权利要求1至9任一所述数据传输方法。
CN202211091369.9A 2022-09-07 2022-09-07 基于多通道的数据包传输方法、装置、设备和介质 Pending CN117714746A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211091369.9A CN117714746A (zh) 2022-09-07 2022-09-07 基于多通道的数据包传输方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211091369.9A CN117714746A (zh) 2022-09-07 2022-09-07 基于多通道的数据包传输方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN117714746A true CN117714746A (zh) 2024-03-15

Family

ID=90146648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211091369.9A Pending CN117714746A (zh) 2022-09-07 2022-09-07 基于多通道的数据包传输方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN117714746A (zh)

Similar Documents

Publication Publication Date Title
US9100180B2 (en) Method, device and communication system for retransmission based on forward error correction
CN113037440B (zh) 数据重传处理方法、装置、计算机设备和存储介质
KR102328615B1 (ko) 다중 경로 송신 제어 프로토콜 연결을 사용하여 데이터를 전송하는 장치 및 방법
US20230083441A1 (en) Managing subpacket transmission and reception for advanced interactive services
CN106254202A (zh) 一种基于喷泉码的多路并行传输方法以及装置
WO2023284447A1 (zh) 云边协同的数据传输方法、服务器及存储介质
CN110418376A (zh) 数据传输方法及装置
CN109729602B (zh) 一种链路数据处理方法、装置和计算机存储介质
EP2849393B1 (en) Method and device for transmitting video data
US20230060066A1 (en) Data transmission method and apparatus, computer readable medium, and electronic device
US10020916B2 (en) Method and apparatus for data communication of vehicle
CN112787945B (zh) 数据传输方法、装置、计算机可读介质及电子设备
CN103312478A (zh) 用于数据网络中的数据传输的方法和系统
CN110831039A (zh) 多路并发系统中的数据传输方法及传输服务器
CN104980257B (zh) 物联网通讯方法及装置
CN111522656A (zh) 一种边缘计算数据调度与分布方法
CN115002023A (zh) 一种链路聚合方法、链路聚合装置、电子设备及存储介质
CN110808917B (zh) 多链路聚合数据重传方法及发送设备
CN106130746B (zh) 一种数据传输方法及装置
CN105323183A (zh) 网络服务器之间的数据传输处理方法与系统
EP3672189B1 (en) Data transmission method, device and system
CN117714746A (zh) 基于多通道的数据包传输方法、装置、设备和介质
Phung et al. Enhancing rest http with random linear network coding in dynamic edge computing environments
CN116260887A (zh) 数据传输方法、数据发送装置、数据接收装置和存储介质
CN109274467A (zh) 一种数据重传处理方法、rlc实体和mac实体

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination