一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据传输方法及装置与流程

2022-04-02 03:23:31 来源:中国专利 TAG:
1.本技术涉及通信
技术领域
:,尤其涉及一种数据传输方法及装置。
背景技术
::2.电子设备之间进行基于近场通信的数据传输,是一种常见的通信场景。近场通信的方式包括但不限于:蓝牙、无线保真(wirelessfidelity,wifi)、无线局域网(wirelesslocalareanetworks,wlan)以及近距离通信(nearfieldcommunication,nfc)。技术实现要素:3.本技术提供了一种数据传输方法,目的在于解决如何降低基于近场通信的数据传输的时延的问题。4.为了实现上述目的,本技术提供了以下技术方案:本技术的第一方面提供一种数据传输方法,应用于第一电子设备,包括:与第二电子设备建立多条基于近场通信的链路,基于多条基于近场通信的链路的时延,选择至少两条用于传输数据的链路,至少两条用于传输数据的链路包括第一链路和第二链路,通过第一链路向第二电子设备发送第一数据包,并通过第二链路向第二电子设备发送第一数据包,因为基于时延选择用于传输数据的链路,所以为降低数据传输的时延提供可能性,并且在多条链路发送第一数据包,即在多条链路冗余传输数据,可以进一步降低传输时延。5.在一种实现方式中,通过第一链路向第二电子设备发送第一数据包包括:使用实际发送速率,在第一链路传输数据,实际发送速率为第一发送速率与第二发送速率中的最小值,第一发送速率依据第一链路的队列规程qdisc的剩余空间确定,第二发送速率依据第一链路的协商速率确定,使得在数据传输的初始阶段获得较高的传输速率,并在数据传输的中期或后期,能够降低qdisc丢包的可能性。6.在一种实现方式中,第一发送速率的确定过程包括:至少依据第一链路的qdisc的剩余空间,确定数据包的个数,至少依据个数、每个数据包的数据量以及每个发送周期的长度,确定第一发送速率,以实现主动预防qdisc丢包的可能性。7.在一种实现方式中,至少依据个数、每个数据包的数据量以及每个发送周期的长度,确定第一发送速率,包括:依据个数、每个数据包的数据量、每个发送周期的长度以及预设的第一系数,确定第一发送速率,第一系数能够降低qdisc的剩余空间的抖动而导致的qdisc丢包的可能性。8.在一种实现方式中,至少依据第一链路的qdisc的剩余空间,确定数据包的个数,包括:依据第一链路的qdisc的剩余空间与预设的队列阈值的差值,确定数据包的个数。队列阈值能够降低qdisc的剩余空间的抖动而导致的qdisc丢包的可能性。9.在一种实现方式中,第二发送速率的确定过程包括:依据协商速率与预设的第二系数的乘积,确定第二发送速率,以在实现获得较高的第二发送速率的前提下,使用第二系数降低协商速率的抖动而导致的丢包的可能性。10.在一种实现方式中,第二系数小于1;或者,第二系数为第一链路中有效数据的传输时间与全部数据的传输时间的比值,以获得与第一链路的实际情况更为吻合的第二系数的值。11.在一种实现方式中,在使用实际发送速率,在通过所述第一链路向所述第二电子设备发送第一数据包之前,还包括:确定第一链路的qdisc的剩余空间小于预设的队列阈值,以使得剩余空间不小于预设的队列阈值的实际传输速率不被计算,从而节省计算资源。12.在一种实现方式中,在基于多条基于近场通信的链路的时延,选择至少两条用于传输数据的链路之前,还包括:探测多条基于近场通信的链路的时延,从而为依据时延选择用于传输数据的链路奠定基础。13.在一种实现方式中,电子设备包括发送/接收引擎模块。在选择至少两条用于传输数据的链路之后,方法还包括:发送/接收引擎模块记录第一数据包的发送时间,记录第一数据包的确认ack数据包的接收时间,并基于发送时间和接收时间,更新至少两条用于传输数据的链路的时延,得到更新后的时延,基于更新后的时延,重新选择至少两条用于传输数据的链路。在数据的传输过程中,使用被传输的数据包以及被传输的数据包的ack数据包更新链路的时延并基于更新后的时延重新选择用于传输数据的链路,既能够避免发送时延探测包导致的占用数据传输资源的问题,又能够使得用于传输数据的链路的时延始终较小,从而较大程度地降低数据的传输时延。14.在一种实现方式中,在发送/接收引擎模块记录第一数据包的确认ack数据包的接收时间之前,还包括:发送/接收引擎模块确定数据未传输完毕。数据传输完毕后没有必要再更新链路的时延,因此,确定数据未传输完毕再记录ack数据包的接收时间,能够节省资源。15.在一种实现方式中,基于近场通信的链路包括:基于近场通信的用户数据报协议udp单播链路。电子设备包括发送/接收引擎模块。第一方面提供的方法还包括:发送/接收引擎模块响应于第二电子设备的数据包重传请求,通过至少两条用于传输数据的链路,向第二电子设备再次发送第一数据包,从而保证第二电子设备接收到全部的数据包。16.本技术的第二方面提供一种数据传输系统,包括:第一电子设备与第二电子设备。第一电子设备与第二电子设备之间建立多条基于近场通信的链路。第一电子设备用于执行本技术的第一方面提供的数据传输方法,第二电子设备至少用于请求数据重传以及进行去重处理。17.本技术的第三方面提供一种电子设备,包括:一个或多个处理器,以及一个或多个存储器。存储器存储有一个或多个程序,当一个或者多个程序被处理器执行时,使得电子设备执行本技术的第一方面提供的数据传输方法。18.本技术的第四方面提供一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得处理器执行本技术的第一方面提供的数据传输方法。19.本技术的第五方面提供一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在电子设备上运行时,使得电子设备执行本技术的第一方面提供的数据传输方法。附图说明20.图1a-图1d为本技术实施例所述的数据传输方法应用的近场通信的场景的示例图;图1e为电子设备之间建立的近场通信的链路的示例图;图1f为电子设备之间建立的基于中继的近场通信的链路的示例图;图2为本技术实施例提供的数据传输方法的流程图;图3为本技术实施例提供的电子设备的结构的示例图;图4为本技术实施例提供的进行数据传输的电子设备的软件框架示例图;图5a和图5b为本技术实施例提供的数据传输方法的流程图;图6为本技术实施例提供的数据传输方法在多条链路上冗余传输数据的示例图;图7a为本技术实施例提供的数据传输方法中丢包的示例图;图7b为本技术实施例提供的数据传输方法中数据接收方建立的数据重传链表的示例图;图7c为本技术实施例提供的数据传输方法中数据接收方建立的重传二叉树表的示例图;图8为本技术实施例提供的进行数据传输的电子设备的内核层和硬件层的结构示例图;图9a为本技术实施例提供的数据传输方法中主动防止目标链路拥塞的流程图;图9b为本技术实施例提供的多条链路上使用主动防止拥塞方式的示例图;图10为本技术实施例提供的数据传输方法中时延探测以及依据时延选择链路发送数据的流程图。具体实施方式21.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本技术的限制。如在本技术的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本技术实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。22.在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。23.本技术实施例涉及的多个,是指大于或等于两个。需要说明的是,在本技术实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。24.图1a为近场通信场景的一种示例,图1a中,手机1与笔记本电脑2、平板电脑(tabletpersonalcomputer,简称tabletpc、flatpc、tablet、slates)3以及大屏4(也可以是智慧屏)之间,分别可以进入多屏协同模式、投屏模式、或者同享模式等,在这些模式下的电子设备之间建立近场通信,各个设备之间可以建立的近场通信如图1a所示,以蓝牙、wlan以及wifi为例。25.以多屏协同模式为例,如图1b所示,手机1在开启近距离通信(nearfieldcommunication,nfc)功能的情况下,靠近开启nfc功能的笔记本电脑2的触控板后,手机1显示与笔记本电脑2的连接界面,用户在连接界面上点击“连接”控件后,手机1与笔记本电脑2进入多屏协同模式,如图1d所示。26.或者,如图1c所示,笔记本电脑2的电脑管家的界面上显示“立即连接”控件,在用户点击“立即连接”控件后,电脑管家的界面上显示正在查找手机的提示信息,并且,在笔记本电脑2找到手机1后,在手机1显示连接界面,用户在连接界面上点击“连接”控件后,手机1与笔记本电脑2进入多屏协同模式。27.如图1d所示,在多屏协同模式下,在笔记本电脑2上,显示手机1的协同窗口a,协同窗口a的显示内容与手机1当前显示的内容相同,以图1d为例,手机1当前显示一个桌面,笔记本电脑2的协同窗口a也显示相同的桌面。用户可以在手机1的界面或笔记本电脑2的协同窗口a中选择文件,并选择打开方式为“使用电脑打开”,在此场景下,需要将文件从手机1传输至笔记本电脑2。在目前的一些实现方式中,手机1通过nfc、wifi、蓝牙或基于usb的有线连接等这些近场通信的方式,将文件传输至笔记本电脑2。28.发明人在研究的过程中发现,在近场通信的场景下,用户对于传输时延比较敏感,较低的传输时延能够获得较优的用户体验,因此如何降低传输时延,是需要解决的问题。29.本技术实施例公开的数据传输方法,目的在于降低基于近场通信的数据传输的时延。30.本技术的以下实施例应用在基于近场通信的数据传输场景,如前所述,近场通信的数据传输场景的一种示例为多屏协同模式。可以理解的是,通过nfc建立多屏协同模式的方式仅为示例,还可以使用蓝牙或有线方式建立多屏协同模式。并且,多屏协同模式下的文件传输也仅为本技术的以下实施例的应用场景的示例,还可能,在无线投屏模式或者共享模式下传输文件,即应用场景还可以为无线投屏模式或者共享模式。文件也仅为传输的数据的一种示例,传输的数据还可能是指令、消息等。31.在本技术的实施例中,处于近场通信的电子设备支持多链路的数据传输(即多种近场通信方式一并传输数据)。如图1e所示,多种链路包括:第5代移动通信点对点(5gpointtopoint)链路、第二代移动通信(2g)点对点链路、第5代移动通信无线局域网(5gwirelesslocalareanetworks,wlan)链路、2gwlan链路、以太网(ethernet,eth)链路、蓝牙低功耗(bluetoothlowenergy,ble)链路、无线保真(wirelessfidelity,wifi)链路以及基于通用串行总线(universalserialbus,usb)的有线连接链路。可以理解的是,图1e仅为示例,近场通信的方式并不限于图1e示出的方式。32.可以理解的是,至少两个电子设备的近场通信可以为直连(即直接相连)模式,例如5g点对点为直连模式,还可以是中继模式。中继模式是指第一电子设备通过第二电子设备,与第三电子设备相连,例如,如图1f所示,手机1通过路由器3与笔记本电脑2相连,即手机1与笔记本电脑2之间建立wifi链路。33.为了更好实现降低数据的传输时延的效果,在本技术实施例适用的场景中,在中继模式下,相连的电子设备之间的间距小于或等于2跳。并且,在本技术实施例适用的场景中,假设近场环境下的传输链路的丢包近似可控(即近场通信链路的性能不再是瓶颈),并且,传输的数据包为轻量级数据包(如数据量小于1m的数据包)。但可以理解的是,这些限定条件仅为可选,并不作为对本技术的实施例的使用场景的限定。34.本技术实施例所述的数据传输,可以是相连的电子设备在多种业务场景下的数据传输,业务场景的示例包括但不限于:1、居家环境(同一wlan)中实现任一设备接听或者拨打电话的超级来电业务。35.此业务场景的一种示例为:具有蜂窝通信功能的电子设备例如手机1与其它电子设备例如笔记本电脑2之间,通过图1b或图1c的方式,建立近场通信的链路,手机1与对端手机进行基于蜂窝通信的通话,其它电子设备例如笔记本电脑2通过近场通信的链路,接收手机1传输的通话音频下行数据,并播放通话音频下行数据,以及通过近场通信的链路,向手机1发送采集的通话音频上行数据,手机1将通话音频上行数据发送至对端手机。36.2、在(同账号)设备之间协同编辑处理办公文档等办公协同业务,例如图1c所示。37.为了实现降低数据传输时延的目的,本技术实施例提供的数据传输方法的主要包括如图2所示的两方面:a、多径低时延传输策略。38.多径低时延传输策略包括:多径低时延探测方法(记为a1)、多径冗余发送方法(记为a2)以及多径队列规程(queuediscipline,qdisc)拥塞控制方法(记为a3)。39.b、多径可靠性设计与去重处理。40.还以手机1与笔记本电脑2之间的数据传输为例,假设手机1的文件在笔记本电脑2上打开,手机1向笔记本电脑2传输文件,以上a主要由手机1实现,b由笔记本电脑2执行。41.下面将针对电子设备的硬件结构以及软件框架,对图2所示的两方面进行详细说明。42.本技术实施例公开的数据传输方法应用在电子设备。电子设备可以为平板电脑、pc、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、车载设备、上网本、个人数字助理(personaldigitalassistant,pda)等具有多种近场通信功能的电子设备上,本技术实施例对电子设备的具体类型不作任何限制。43.示例性的,图3是本技术实施例提供的一例电子设备100的结构示意图。以电子设备100是手机1为例,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserialbus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentificationmodule,sim)卡接口195等。44.其中,传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器navigationsatellitesystem,bds),准天顶卫星系统(quasi-zenithsatellitesystem,qzss)和/或星基增强系统(satellitebasedaugmentationsystems,sbas)。52.应理解,除了图3中列举的各种部件或者模块之外,本技术实施例对电子设备100的结构不做具体限定。在本技术另一些实施例中,电子设备100还可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。53.在图3所示的电子设备上运行操作系统,操作系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本技术的实施例中,以手机1与笔记本电脑2进行近场通信,并且手机1运行分层架构的安卓操作系统为例。可以理解的是,进行近场通信的电子设备的操作系统可能相同也可能不同,例如笔记本电脑运行windows操作系统。54.图4为进行近场数据传输的手机1和笔记本电脑2的软硬件模块的连接示例,其中,硬件层中以5g点对点网卡和waln网卡示例,但可以理解的是,网卡还可以包括蓝牙网卡和nfc网卡等,并且,硬件层中参与数据传输的模块并不限于网卡,可以参见图8所示。55.基于图4,手机1与笔记本电脑2基于近场通信进行数据传输的流程如图5a和图5b所示。其中,图5a中包括以下步骤:s501、手机1的协同服务模块11检测到近场通信网络连接后,向发现连接模块12发送建立服务端的指令。56.近场通信网络发生变化包括但不限于:与其它电子设备的近场通信断开或者连接。例如结合图1b所示,手机1放置在笔记本电脑2的触控板后,手机1的协同服务模块11检测到nfc网络连接。57.s502、发现连接模块12向传输模块13发送建立服务端的指令。58.也就是说,发现连接模块12调用传输模块13建立服务端。59.s503、传输模块13建立服务端。60.服务端的功能将在以下步骤中结合服务端对应的客户端进行说明。61.s504、传输模块13向发送/接收引擎模块14发送初始化的指令。62.也就是说,传输模块13触发发送/接收引擎模块14初始化。63.可以理解的是,s503和s504的执行顺序不做限定。64.s505、发送/接收引擎模块14初始化。65.在某些实现方式中,初始化包括但不限于启动发送线程、接收线程等模块初始化工作,同时让固定端口处在监听状态,等待客户端的连接。66.s506、发送/接收引擎模块14广播消息。67.s507、电脑管家25响应于接收到发送/接收引擎模块14广播的消息,向发送/接收引擎模块14发送消息的反馈消息。68.s506和s507均可以按照通信协议执行。69.结合图1b所示,在手机1接收到反馈消息后,手机1上显示取消控件以及连接控件,假设用户点击连接控件,则触发手机1与笔记本电脑2建立近场通信,即执行s508:s508、发送/接收引擎模块14向笔记本电脑2的电脑管家25发送多屏协同触发指令。70.可以理解的是,结合图4所示,发送/接收引擎模块14通过调用硬件层的某个网卡,以wlan网卡和5g点对点网卡中的wlan网卡为例,将多屏协同指令向笔记本电脑2中的wlan网卡传输,笔记本电脑2的wlan网卡接收到多屏协同触发指令后,逐层向上传输至电脑管家25。71.s509、电脑管家25向协同服务模块21发送第一调用指令。72.第一调用指令用于指示协同服务模块21实现多屏协同。73.s510、协同服务模块21响应于第一调用指令,向发现连接模块22发送第二调用指令。74.第二调用指令用于指示发现连接模块22实现连接。75.s511、发现连接模块22响应于第二调用指令,向传输模块23发送建立客户端的指令。76.即发现连接模块22触发传输模块23建立与服务端对应的客户端。77.s512、传输模块23建立客户端。78.可以理解的是,本实施例中,将手机1的传输模块13建立的模块称为服务端,将笔记本电脑的传输模块23建立的模块称为客户端。除此之外,笔记本电脑的传输模块23建立的模块称为服务端,传输模块13建立的模块称为客户端,这里不做限定。79.s513、传输模块23向发送/接收引擎模块24发送初始化的指令。80.即传输模块23触发发送/接收引擎模块24初始化。81.s514、发送/接收引擎模块24初始化。82.在某些实现方式中,本步骤的初始化包括但不限于:启动发送线程以及接收线程,全局服务的注册等。83.s515、发送/接收引擎模块24将客户端的用户数据报协议(userdatagramprotocol,udp)单播链路建立请求向发送/接收引擎模块14传输。84.在某些实现方式中,在发送/接收引擎模块24初始化后,向传输模块23反馈初始化完成的消息,传输模块23建立的客户端向发送/接收引擎模块24传输udp单播链路建立请求。在另一些实现方式中,传输模块23将客户端的udp单播链路建立请求携带在初始化指令中传输至发送/接收引擎模块24。85.s516、发送/接收引擎模块14将udp链路建立请求向传输模块13的服务端发送。86.s517、发送/接收引擎模块14接收传输模块13传输的服务端的udp链路建立响应。87.s518、发送/接收引擎模块14响应于udp链路建立响应,与发送/接收引擎模块24建立多条udp单播链路。88.udp单播链路是指,基于udp协议建立的一端对一端的链路。建立udp链路而非tcp链路,有利于进一步降低数据的传输时延。89.在某些实现方式中,建立手机1和笔记本电脑2支持的所有的近场通信方式的传输链路,建立的udp单播传输链路的类型的示例可以参见图1e所示。90.可以理解的是,在手机1执行s518的过程中,有可能手机1或者笔记本电脑2的某种近场通信功能没有被开启,则可以在建立链路时开启该近场通信功能,并建立基于该近场通信功能的链路。例如手机1的蓝牙功能没有开启,则开启手机1的蓝牙功能,以便充分利用可用的近场通信方式。91.在某些实现方式中,在被开启近场通信功能的电子设备显示开启提示,例如,在手机1上显示开启蓝牙功能的提示。在另一些实现方式中,在待开启近场通信功能的电子设备显示开启询问,并依据用户的操作,开启或不开启近场通信功能。例如,在手机1上显示开启蓝牙功能的问询信息,用户选择开启,则开启该功能,用户选择不开启,则不开启该功能。在不开启该功能的情况下,手机1与笔记本电脑2无法建立基于该近场功能的链路。92.可以理解的是,建立udp链路仅为一种实现方式,也可以建立tcp链路,还可以,建立一部分udp链路,一部分tcp链路。93.s519、发送/接收引擎模块14通过与发送/接收引擎模块24交互数据包,探测多条udp单播链路的时延。94.在某些实现方式中,发送/接收引擎模块14在每条udp单播链路向发送/接收引擎模块24发送探测数据包,发送/接收引擎模块24向发送/接收引擎模块14发送探测数据包的反馈数据包,发送/接收引擎模块14依据探测数据包的发送时间以及反馈数据包的接收时间,计算得到链路的时延。95.s520、发送/接收引擎模块14判断是否接收到发送接口调用指令,如果否,执行s519,如果是,执行s525。96.接收到发送接口调用指令说明要进行数据传输,如果没有接收到发送接口调用指令,则说明目前没有数据传输的需求。97.可以理解的是,可以周期性执行s520。98.在本实施例中,结合图1d所示,假设用户在手机1的界面或者笔记本电脑2的协同界面,选中文件,并选择使用电脑应用打开,则触发s521。99.s521以及后续步骤参见图5b所示:s521、文件管理器15获取在电脑打开手机上的文件的指令。100.可以理解的是,在笔记本电脑2的协同窗口a中选择打开方式为“使用电脑打开”的情况下,笔记本电脑2向手机1发送使用电脑打开文件的指令,发送该指令使用的链路可以为上述建立的至少一条链路。101.s522、文件管理器15向发现连接模块12发送接口调用指令。102.接口调用指令用于调用发现连接模块12的接口,向传输模块13建立的服务端下发文件传输指令。103.s523、发现连接模块12向传输模块13发送接口调用指令,以调用传输模块13建立的服务端。104.s524、传输模块13建立的服务端向发送/接收引擎模块14传输发送接口调用指令,以调用发送/接收引擎模块14。105.可以理解的是,在s524之后,发送/接收引擎模块14接收到发送接口调用指令,因此,执行以下流程,还可能,在s524之后以及s525之前,恰好因为触发了s520的执行周期,所以,执行s520,因为发送/接收引擎模块14接收到发送接口调用指令,所以s520的判断结果为是,执行s525。106.s525、发送/接收引擎模块14选择时延较低的若干链路。107.在某些实现方式中,从探测到时延的多条链路中选择时延较低的n条链路,作为传输数据的链路。例如,将探测到时延的多条链路按照时延从低到高排序,将排序在前n个的链路,作为传输数据的链路。108.在另一些实现方式中,依据时延以及配置信息,从多条链路中选择时延较低的n条链路。也就是说,除了时延之外,配置信息也作为链路的选择依据。109.配置信息包括但不限于:1、用户指定的近场通信方式。2、业务以及业务与近场通信方式的对应关系。110.用户指定的近场通信方式是指,由用户预先指定的至少一种优先使用的近场通信方式,例如,用户指定蓝牙、wlan以及nfc,则选择链路时,处理考虑时延之外,还要优先选择用户指定的近场通信方式。例如,从用户指定的近场通信方式中,选择时延较低的n条链路作为传输数据的链路。又例如,只要用户指定的近场通信方式的链路的时延满足条件(例如小于预设的阈值),则至少选择用户指定的近场通信方式的链路。111.业务与近场通信方式的对应关系是指预设的某些业务对应的近场通信方式。例如,文件传输业务对应的近场通信方式为蓝牙和wlan。例如,因为视频的数据量较大,所以配置视频数据传输对应5gwlan和2gwlan,只要5gwlan和2gwlan的时延满足条件(例如小于预设的阈值),选择5gwlan链路和2gwlan链路。112.可见,除了考虑时延,还考虑配置信息选择传输数据的链路,在降低数据传输时延的前提下,还有利于实现更为灵活的传输方式的选择,从而进一步提升用户体验。113.在某些实现方式中,配置信息可以由用户基于手机1显示的用户交互界面进行配置。114.可以理解的是,依据时延和配置信息选择传输数据的若干链路的上述方式仅为示例,而不作为限定。115.在一些实现方式中,选择的链路的数量(即上述n)依据以下规则确定:待传输的数据量越大,n越大,待传输的数据量越小,n越小。在另一些实现方式中,除了依据待传输的数据量确定n之外,为了满足近场通信场景下数据传输低时延的需求,n为大于1的整数。116.s526、发送/接收引擎模块14在选择的若干链路上冗余传输文件的数据包。117.可以理解的是,冗余传输数据是指,将相同的数据在若干链路上传输,即若干链路上传输相同的数据。118.以图6为例,从图1e中选择的用于传输数据的若干链路为5g点对点链路、2g点对点链路、5gwlan链路以及2gwlan链路,在这些链路上传输相同的数据,如图6所示,对于任意一个数据包pkt1,在被选择用于传输数据的链路上,均发送pkt1。119.s527、发送/接收引擎模块14记录若干链路上数据包的发送时间。120.s528、发送/接收引擎模块24向传输模块23传输接收到的数据包。121.可以理解的是,s527和s528的执行顺序不做限定。122.s529、传输模块23定期向发送/接收引擎模块14发送数据包的ack数据包。123.ack数据为确认(acknowledgement)数据,在笔记本电脑2接收到数据后,向笔记本1发送ack数据。可以理解的是,每接收到一个数据包,发送该数据包的ack数据包。124.s530、发送/接收引擎模块24判断数据是否传输完毕,如果是,结束流程,如果否,执行s531。125.s531、发送/接收引擎模块14记录接收到ack数据包的时间。126.s532、发送/接收引擎模块14依据数据包的发送时间以及ack数据包的接收时间,更新若干链路的时延。127.可以理解的是,在使用若干链路传输数据的过程中,为了不降低数据的传输速率,不再发送探测数据包探测链路的时延。但基于数据传输的ack机制,可以依据数据的发送时间和接收到ack数据的时间,得到若干链路的时延,并依据更新的时延,重新执行s525,即重新选择用于传输数据的链路,从而保证数据传输过程中,用于传输数据的链路的时延较低。128.s533、传输模块23判断是否有丢包,如果是,执行s534,如果否,执行s535。129.传输模块23可以依据数据传输协议确定是否有丢包,以传输文件的数据包为例,丢包是指没有接收到文件的全部数据包。130.s534、传输模块23请求数据包重传并进行去重处理。131.可以理解的是,传输模块23可以依据数据传输协议建立重传数据表,并依据重传数据表请求数据包重传,在某些实现方式中,传输模块23向发送/接收引擎模块14发送数据重传请求,发送/接收引擎模块14基于数据重传请求开始重传数据包。132.重传机制能够在获得udp链路的低时延优点的情况下,提高数据传输的可靠性。具体的请求重传的流程不再赘述。133.以图7a为例,假设发送/接收引擎模块14发送了编号分别为1-8的数据包,传输模块23没有接收到编号为2、5和7的数据包。134.在一些实现方式中,笔记本电脑2建立如图7b所示的重传链表,重传链表中包括没有接收到的数据包的编号2、5和7。135.在另一些实现方式中,笔记本电脑2建立如图7c所示的重传二叉树表,重传二叉树表的生成过程包括:多次执行划分流程,直到所有没有接收到的数据包的编号均被分配重传二叉树表上的节点位置。136.划分流程包括:编号中居中的编号作为父节点,大于父节点的编号作为第一分支,小于父节点的编号作为第二分支。其中,居中的编号是指将待重传的数据包的编号按照大小进行排序得到的序列中,中间位置的编号(序列中编号的数量为偶数的情况下从两个中间位置任选一个)。可以理解的是,第一次执行划分流程时,编号是指没有接收到的数据包的编号,得到的父节点为二叉树的根节点。137.对于第一分支和第二分支,分别执行上述划分流程,直到分支中仅包括一个编号。138.请求重传的需要说明的是,本实施例中,虽然使用若干链路传输数据包,即笔记本电脑2使用多条链路接收数据包,但不针对多条链路分别建立重传数据表,而是建立一个统一的重传数据表,以获得更低的时延。139.因为有可能接收到多个相同的数据包,因此,需要进行去重处理。140.可以理解的是,接收到数据包后,在重传数据表中查找接收到的数据包的编号,如果找到,则表示为重传的数据包,如果没有找到,表示为重复的数据包,释放重复的数据包。141.基于图7b和图7c可知,假设待传输的数据包的数量为n,需要依次对比重传链表中的编号,则基于重传链表的查找复杂度为o(n)(o()表示计算时间复杂度的函数)。而重传二叉树表可以确定查找范围,例如,假设接收到的数据包的编号为3,则仅查找根节点5的第一分支节点即可,因此,能够降低查找复杂度。假设待传输的数据包的数量为n,则基于重传二叉树表的查找复杂度为o(log(n))。可见,二叉树结构能够降低去重的查找复杂度。142.s535、发送/接收引擎模块24将文件的全部数据包向应用26发送。143.s536、应用26打开文件。144.从图5a和图5b所示的流程可以看出,从传输路径中选择时延较低的多条链路发送数据包,因为选择的各条路径的时延较低以及冗余传输方式,所以,能够降低文件的传输时延。特别对时延敏感较高的轻量级数据,能够显著降低平均时延(是指进行多次消息传输测试后将多次传输时延取均值)与尾时延(是指将多次消息传输测试时延结果进行排序取排在末尾的时延)。145.并且,作为接收端的笔记本电脑2进行基于二叉树表的去重处理,能够进一步降低数据传输至应用的时延。146.可以理解的是,以上s501-s517为图1b所示的手机1靠近笔记本电脑2的触控板触发的手机1与笔记本电脑2进入多屏协同模式的流程。如果是图1c所示的用户操作笔记本电脑2上的电脑管家触发手机1与笔记本电脑2进入多屏协同模式,则图4所示的各模块之间的流程为:用户打开笔记本电脑2中的电脑管家应用程序25,并点击电脑管家应用程序25显示界面中的立即连接控件,触发执行电脑管家25向协同服务模块21发送多屏协同触发指令,协同服务模块21调用发现连接模块22,发现连接模块22调用传输模块23,传输模块23调用发送/接收引擎模块24,发送/接收引擎模块24通过硬件层向手机1的协同服务模块11发送多屏协同统触发指令。手机1的协同服务模块11调用发现连接模块12,发现连接模块12调用传输模块13,传输模块13调用发送/接收引擎模块14,发送/接收引擎模块14与发送/接收引擎模块24通过调用硬件层,建立多条近场通信的udp单播链路。147.图5a和图5b所示的流程中,详细说明了图2中a1和b的具体实现方式,下面将详细介绍图2中a2的具体实现方式。148.可以理解的是,图4中所示的系统库和硬件层之间,通过内核层交互数据,假设基于时延选择的若干链路中至少包括第一链路和第二链路,对于任意一条传输数据的链路(即第一链路或第二链路,以下简称为目标链路),内核层中与本技术的实施例相关的模块如图8所示。图8中所示的网卡,可以为图4中所示的任意一种网卡。149.基于图8所示的结构,在手机1向笔记本电脑2传输数据时,手机1的发送算法/接收引擎模块14将待发送的数据包放入发送套接字缓冲区(sendsocketbuffer)16。150.udp/ip协议栈17(以及27)中定义了一些传输数据的协议和端口号,以及在位于不同地理位置的网络中的主机系统之间提供连接和路径选择。数据包的发送和接收的处理过程是在udp/ip协议栈实现的。udp/ip协议栈中定义了udp协议,可以理解的是,图5a所示的流程中,手机1和笔记本电脑2之间建立的是udp链路,所以,传输的数据包由udp/ip协议栈中的udp协议处理:sendsocketbuffer16中的数据包经过udp/ip协议栈17中的udp协议封装后,传输至队列规程(queuediscipline,qdisc)18。qdisc18是设备发送队列的一种,设备发送队列是发送节点udp/ip协议栈cpu侧到驱动侧的数据发送队列。151.qdisc18中的数据由网卡控制器(networkinterfacecontroller,nic)的驱动19传输至发送环形缓冲区(txringbuffy)110。在通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。152.txringbuffy110把数据包以直接内存存取(directmemoryaccess,dma)方式复制到nic队列(queue)111,nicqueue111将数据包发送至对端的nicqueue211。153.在笔记本电脑2的一次数据接收过程中,nicqueue211将接收到的数据包向接收环形缓冲区(rxringbuffy)210发送,nic驱动29将rxringbuffy210中的数据包向接收队列28发送,接收队列28中的数据经由udp/ip协议栈所在的传输层处理后,缓存在接收套字缓冲区(receivesocketbuffer)26。发送/接收引擎模块24将receivesocketbuffer26中的数据包向上层应用传输。154.结合本技术实施例的前述应用场景,在高速率数据传输时,一方面,发送端(即手机1)的sendsocketbuffer在被数据包占满的情况下,可以通知上层,上层停止向sendsocketbuffer发送数据包。所以,sendsocketbuffer基本不会发生拥塞而导致丢包。另一方面,如前述场景假设:近场环境下的传输链路的丢包近似可控,并且,如图5b所示,收发双方(即手机1和笔记本电脑2)还有ack机制,所以,链路也基本可以不丢包。又一方面,接收端(即笔记本电脑2)对接收到的数据包的处理速度较快,所以,也不会因接收端处理不及时而导致丢包。综上,结合图8所示,丢包主要发生在发送端由于qdisc的数据量大(例如队列已满)而导致的qdisc的主动丢包。155.为了降低目标链路丢包的可能性,在图5b所示的选择多条较低时延的链路作为传输数据的链路,并在选择的链路上冗余传输数据的基础上,还可以对各条传输数据的链路的传输速率进行配置。156.本实施例中采用配置策略为:在初始阶段,因为qdisc的剩余空间通常较大,所以实际的发送速率主要取决于网络的性能,因此,依据发送端和接收端协商的速率确定实际传输速率,以获得较高的初始传输速率。在发送的中期和后期,由于消息高速发送,因此网络可能发生拥塞,会有较多的数据包缓存在内核的qdisc,所以,实际的发送速率将取决于qdisc的剩余空间,所以依据qdisc的剩余空间(即剩余长度)确定数据的实际传输速率,从而实现主动预防qdisc拥塞的目的。157.依据上述策略,s526的实现流程中,在目标链路(即若干链路中的任意一条链路)传输数据包的流程包括如图9a所示的以下步骤:s901、判断目标链路的qdisc的剩余空间是否小于预设的队列阈值,如果是,执行s902,如果否,执行s905。158.队列阈值是为了在qdisc保持接近填满的状态下,防止网络状态的抖动造成qdisc溢出。159.可以理解的是,可以从s525中没有被选择的链路中,选择时延最低的一条链路作为目标链路。160.s902、依据目标链路对应的qdisc的剩余空间确定第一发送速率。161.第一发送速率可以理解为qdisc的剩余空间确定发送速率的上限值,即不超过该发送速率,就可以避免qdisc的主动丢包。162.在某些实现方式中,第一发送速率按照式(1)获得:(qdiscremainlength-threshold)*x/t(1)。163.qdiscremainlength为qdisc的剩余空间,threshold为预设的队列阈值,目的在于降低因抖动而导致的队列溢出。x为每个数据包的大小(即数据量如1472kb),t发送周期(如5ms)。164.在另一些实现方式中,第一发送速率按照式(2)获得:amendsendrate=(qdiscremainlength-threshold)*x/t*pqdisc(2)。165.式(2)中,amendsendrate为第一发送速率,qdiscremainlength为qdisc的剩余空间,threshold为队列阈值。pqdisc为预设的系数(又可称为第一系数),可以为预先配置的经验值,目的在于防止抖动而导致的队列溢出,x为每个数据包的大小(即数据量如1472kb),t发送周期(如5ms)。166.s903、依据协商速率获取第二发送速率。167.在建立近场链路时,双方设备协商确定的链路的传输速率。结合图5a所示,在s518中建立多条udp单播链路时,手机1的发送/接收引擎模块14与笔记本电脑2的发送/接收引擎模块24之间协商确定协商速率。168.在某些实现方式中,近场通信的设备之间为直连模式,例如图1e所示的手机1与笔记本电脑2的5g点对点方式,两端设备之间协商物理层速率,作为协商速率。在另一些实现方式中,近场通信的设备之间为中继模式,例如图1f所示通过路由器通信,两端设备之间通过中继设备,如路由器,交换传输速率,从而协商确定协商速率。169.第二发送速率依据协商速率确定,第二发送速率可以理解为基于链路的传输速率的上限。170.可以理解的是,协商速率为设备之间的最大传输速率,因此,为了保护两端设备,在某些实现方式中,将协商速率与小于1的系数(又可称为第二系数)的乘积,作为第二发送速率。171.在另一些实现方式中,第二发送速率按照式(3)获得:validsendrate=negosendrate*pmsr(3)。172.其中,validsendrate为第二发送速率,negosendrate为协商速率,pmsr(又可称为第二系数)为物理层协商发送速率和有效数据发送速率之间的系数,即为链路中有效数据的传输时间与全部数据的传输时间的比值。其中,全部数据是指按照协议传输的数据,全部数据由有效数据与按照协议添加的数据构成,例如,在笔记本电脑2中打开的文件包括的数据包为有效数据,而为了按照协议传输,在文件包括的数据包中需要添加某些数据。更利于理解的举例为:文件的一个数据包为“123”,有效数据即为“123”,全部数据为“00112300”。173.s904、以第二发送速率与第一发送速率中的最小值作为实际发送速率,发送数据包。174.实际发送速率可以表示为:realsendrate=min(vsr,asr)(4)。其中,vsr为第二发送速率,asr为第一发送速率。175.s905、在当前发送周期不使用目标链路(图9a中未画出),或者,在当前发送周期更换目标链路。176.可以理解的是,本次发送周期不使用目标链路,导致原本计划目标链路上发送的数据包无法在目标链路上被发送。在某些实现方式中,有可能选择的若干链路的数量为两条,在此情况下,如果其中一条链路(即目标链路)不能发送数据包,则无法实现数据的冗余发送,为了实现数据的冗余发送,可以更换目标链路。177.图9a所示的流程,在发送初始化阶段,各条传输链路提前探测本链路内核qdisc缓冲区剩余空间。当本链路未被其他应用占用时,socket内核qdisc的缓冲区剩余空间较大时,则此时实际的发送速率取决于wifi协商速率计算的最大的发送速率(如300mbit/s),与于基于tcp协议传输数据包过程相比,省去了慢启动阶段,初始发送速率可达较高水平。178.在发送中后期阶段,由于消息高速发送,而网络传输处理速率可能降低,因此会有较多的数据包缓存在内核qdisc,假设此时队列余量长度较小,则此时实际的发送速率将取决于socket内核qdisc剩余空间。179.通过主动探测socket内核qdisc余量在每个发送周期实时调整实际发送速率,既可以做到传输过程起步阶段以高速率发送数据包,同时可以做到预防式的拥塞控制,避免了在高速发送阶段qdisc主动发生丢包的问题。180.可以理解的是,对于s526中传输文件的每条链路,均作为目标链路执行图9a所示的流程,如图9b所示,假设依据时延选择的若干链路分别为5g点对点、wlan以及eth,则在每条链路上,不仅传输相同的数据包(任意一个数据包以pack1表示),还对每条链路进行图9a所示的流程,图9b中将图9a所示的流程简称为qdisc拥塞控制,以在降低数据传输时延的基础上,实现主动预防式的拥塞控制。181.可以理解的是,以上所述的软件系统框架仅为示例,并不作为限定,在不限定具体的系统框架的情况下,图2中多径低时延传输策略(a)的具体实现流程,在手机1与笔记本电脑2进入多屏协同模式后执行,如图10所示,包括以下步骤:s11、建立多条udp单播链路。182.s11的具体实现方式可以参见s518,这里不再赘述。183.s12、探测多条链路的时延。184.s12的具体实现方式可以参见s519。185.s13、判断是否进行数据传输,如果是,执行s14,如果否,执行s12。186.s13的具体实现方式可以参见s520。187.s14、选择时延较低的若干链路。188.s14的具体方式可以参见s525。189.s15、使用若干链路冗余传输数据。s15具体可参见s526。190.s16、记录若干链路上数据的发送时间。191.可以理解的是,数据以数据包的形式被传输,数据的发送时间可以为每个数据包的发送时间,例如各个数据包的发送时间戳。192.s17、判断数据是否传输完毕,如果是,结束流程,如果否,执行s18。193.s18、记录接收到ack数据的时间。194.s19、依据数据的发送时间和接收ack数据的时间,更新若干链路的时延。s19具体可参见s532。195.图10所示的数据传输方法,因为采用多条时延较低的链路传输数据,所以能够获得较低的数据传输时延。196.本技术的实施例还公开一种计算机可读存储介质,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行上述实施例所述的数据传输方法。197.本技术的实施例还公开一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在电子设备上运行时,使得所述电子设备执行本技术的实施例公开的数据传输方法。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献