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

数据包发送的方法、装置与流程

2022-02-20 12:35:38 来源:中国专利 TAG:


1.本技术实施例涉及网络传输领域,尤其是涉及一种数据包发送的方法。


背景技术:

2.tcp/ip(transmission control protocol/internet protocol,传输控制/因特网互联协议)通信协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,tcp协议通过维护拥塞窗口来实现拥塞控制。拥塞控制的原则是,当网络未出现拥塞时,增大拥塞窗口值,把更多的数据包发送出去;当网络出现拥塞时,则减小拥塞窗口值,以减少注入到网络中的数据包数量。拥塞控制算法的核心是选择一个有效的策略来控制拥塞窗口的变化。在tcp拥塞控制中,经典算法步骤包括:慢启动,拥塞避免,快速重传和快速恢复。tcp协议现有拥塞算法是基于丢包或包往返时延(round-trip time,rtt)来实现拥塞控制:
3.基于丢包反馈的协议,是一种被动式的拥塞控制机制,它根据网络中的丢包事件来做出网络拥塞判断。这种协议在不丢包时可以提高吞吐量,但随着吞吐量提升必然会出现丢包,进而又会降低吞吐量,所以这种被动式拥塞控制会加大网络丢包率,同时也造成了网络的抖动。
4.基于rtt的协议,是根据数据包在网络中的往返时延做出网络拥塞判断。这种协议在根据rtt估算发送速率时,由于rtt的抖动较大,也会导致发送速率不稳定;而且拥有较小rtt的数据流的拥塞窗口增加速率快于较大rtt的流,占据更多的网络资源,会引入rtt不公平性。
5.随着wifi-direct技术以及第五代移动通信技术(5th-generation,5g)设备到设备(device-to-device,d2d)技术的发展普及,近场通信场景下高吞吐量传输的性能要求越来越高,现有的tcp协议拥塞控制机制并不能够达到最佳性能。因此,需要设计一种数据包发送方法,实现在极少丢包的前提下实现高吞吐传输性能。


技术实现要素:

6.本技术提供了一种数据包发送的方法和装置,应用于网络传输领域,解决如下问题:
7.在近场通信场景下,如何减少丢包、提升吞吐量性能。
8.第一方面,本技术实施例提供一种发送应用的数据包的方法,应用于近场通信场景下的发送节点,所述应用部署于发送节点,该方法包括:所述发送节点根据目标发送速率和数据发送队列的被占用情况发送所述应用的数据包,所述发送所述应用的数据包的速率与所述目标发送速率成正比,所述数据发送队列的被占用情况限制了一个发送周期内所述应用的数据包的发送数量。
9.其中,发送周期可以由系统根据经验值设置,示例性的,发送周期可以设置为5ms。可以理解的是,发送周期也可以设置为其他时长,本技术实施例不限制。
10.在本技术的上述实施例中,在发送节点发送应用的数据包时,综合考虑目标发送
速率和数据发送队列的被占用情况,使得在发送数据包过程中数据发送队列不会超负荷使用,从而降低丢包率,提高数据传输的效率、提高吞吐量性能。
11.在一种可能的实现方式中,发送节点接收来自接收节点的反馈消息,所述反馈消息指示所述接收节点处理接收到的所述应用的数据包的能力;所述发送节点基于所述反馈消息,调整发送所述应用的数据包的速率。在这种实现方式中,发送节点根据接收节点处理接收到的应用的数据包的能力来调整发送所述应用的数据包的速率,使得发送节点发送应用的数据包的速率和接收节点的处理数据包的能力的更匹配,从而提高数据传输的效率、提高吞吐量性能。
12.在一种可能的实现方式中,接收节点处理接收到的数据包的能力可以通过接收节点的数据接收队列的数据包接收速率来指示。
13.在一种可能的实现方式中,接收节点处理接收到的数据包的能力可以通过接收节点的数据接收队列的丢包状态来指示。
14.在一种可能的实现方式中,接收节点部署的应用的处理速率来指示,该处理速率表示应用程序每秒处理的数据包数量。
15.在一种可能的实现方式中,接收节点部署的所述应用的处理队列的空间占用情况来指示。可以理解的是,应用层队列的空间占用情况可以通过已使用空间的比例,或者空间大小比如剩余空间大小或者已使用空间大小来指示。
16.可以理解的是,接收节点处理接收到的数据包的能力还可以通过其他参数来指示,本技术不做特别限制。
17.在一种可能的实现方式中,调整发送所述应用的数据包的速率可以根据反馈消息指示的接收节点处理接收到的所述应用的数据包的能力,调整目标发送速率,进而根据调整后的目标发送速率和数据发送队列当前的空间占用情况调整发送所述应用的数据包的速率。
18.具体的,在一种可能的实现方式中,当接收节点的数据接收队列的丢包状态为真时,将目标发送速率调整为目标发送速率和数据接收队列的数据包接收速率两者之中的最小值。
19.在另一种可能的实现方式中,当接收节点部署的所述应用的处理队列的空间占用情况达到占用上限时,将目标发送速率调整为目标发送速率和接收节点部署的所述应用的处理速率两者之中的最小值。
20.在另一种可能的实现方式中,当接收节点的数据接收队列的丢包状态为真,并且接收节点部署的应用的处理队列的空间占用情况达到占用上限时,将目标发送速率调整为目标发送速率、数据接收队列的数据包接收速率和接收节点部署的所述应用的处理速率三者之中的最小值。
21.可以理解的是,目标发送速率也可以根据发送节点设置的周期进行周期性调整。目标发送速率还可以通过其他方式来调整,本技术不做特别限制。
22.在一种可能的实现方式中,反馈消息的发送方式为接收节点周期性发送,所述周期由系统预设。
23.在另一种可能的实现方式中,反馈消息的发送方式为当接收节点的数据接收队列的丢包状态满足预设条件时发送。示例性的,当接收节点的数据接收队列的丢包状态为真
时,或者丢包率达到预设的值时,或者丢包数量达到预设的值时,接收节点发送反馈消息给发送节点。
24.在另一种可能的实现方式中,反馈消息的发送方式为当接收节点部署的应用的处理队列的空间占用情况满足预设条件时发送。
25.具体的,在这种方式下,在一种可能的实现方式中,当接收节点部署的应用的处理队列的空间占用达到占用上限时,接收节点发送反馈消息给发送节点。示例性的,当接收节点部署的应用的处理队列的已使用比例q达到比例上限q1时,接收节点发送反馈消息给发送节点。其中,比例上限q1可以由系统预设,例如,当接收节点部署的应用的处理队列的已使用比例达到70%时,接收节点发送反馈消息给发送节点。在另一种可能的实现方式中,当接收节点部署的应用的处理队列的空间占用从占用上限下降到占用下限时,接收节点发送反馈消息给发送节点。示例性的,当接收节点部署的应用的处理队列的已使用比例q从比例上限q1下降到比例下限q2时,接收节点发送反馈消息给发送节点。其中,比例下限q1可以由系统预设,例如,当接收节点部署的应用的处理队列的已使用比例达到30%时,接收节点发送反馈消息给发送节点。
26.在另一种可能的实现方式中,反馈消息的发送方式也可以为当接收节点的数据接收队列的丢包状态为真,并且接收节点部署的应用的处理队列的空间占用情况达到占用上限时,接收节点向发送节点发送反馈消息。
27.在另一种可能的实现方式中,反馈消息的发送方式也可以为当接收节点的数据接收队列的丢包状态为真,并且接收节点部署的应用的处理队列的空间占用情况从占用上限下降到占用下限时,接收节点向发送节点发送反馈消息。
28.可以理解的是,反馈消息的发送方式也可以混合使用,比如,当满足上述条件时发送反馈消息,当不满足上述条件时,则周期性发送。其中,上述条件包括丢包状态为真、应用的处理队列的空间占用达到占用上限或者应用的处理队列的空间占用从占用上限下降到占用下限。反馈消息的发送方式也可以在其他情况下发送,本技术不进行限制。
29.在一种可能的实现方式中,发送节点根据目标发送速率和数据发送队列空间占用情况发送所述应用的数据包前,部署在发送节点的应用根据所述目标发送速率计算在一个发送周期内的目标发包数量,应用根据所述目标发包数量和所述数据发送队列的剩余空间,确定所述发送周期内的实际发包数量,其中,所述实际发包数量为所述目标发包数量和所述数据发送队列的剩余空间两者之中的最小值;然后,应用基于实际发包数量发送数据。发送周期可以由系统根据经验值设置,示例性的,发送周期可以设置为5ms。可以理解的是,发送周期也可以设置为其他时长,本技术实施例不限制。
30.需要说明的是,当数据发送队列没有剩余空间时,则在相应的发送周期内不发送数据包。
31.在应用发送数据包前综合考虑目标发送速率和数据发送队列空间占用情况,再确定待发送的实际数据包数量,使得在发送数据包过程中数据发送队列不会超负荷使用,从而降低发送过程的丢包率。
32.在一种可能的实现方式中,目标发送速率的初始值指示发送节点的物理层发送数据包的能力。示例性的,目标发送速率可以通过物理层信息获取,比如通过物理层信息获取到网卡协商速率,并结合物理层信道信息计算目标发送速率。其中,物理层信道信息包括接
收信号的强度指示(received signal strength indication,rssi)。
33.可以理解的是,物理层发送数据包的能力还可以通过其他物理层信息获取到,本技术不进行限制。
34.第二方面,本技术提供一种接收应用的数据包的方法,该方法应用于近场通信场景下的接收节点,所述应用部署于所述接收节点,该方法包括:接收来自发送节点的数据包;保存所述接收节点处理接收到的数据包的能力信息,所述能力信息包括以下参数中的至少一种:数据接收队列的数据包接收速率、数据接收队列的丢包状态、所述应用的处理速率和所述应用的处理队列的空间占用情况;所述接收节点向所述发送节点发送反馈消息,所述反馈消息包含所述能力信息,所述反馈消息用于指示所述发送节点调整所述应用发送数据包的速率。
35.通过该方法,接收节点将本节点处理接收到的数据包的能力信息通过反馈消息发送给发送节点,使得发送节点可以根据反馈消息调整应用发送数据包的速率,从而使得发送节点发送应用的数据包的速率和接收节点的处理数据包的能力的更匹配,从而提高数据传输的效率、提高吞吐量性能。
36.在一种可能的实现方式中,反馈消息的发送方式为接收节点周期性发送,所述周期由系统预设。
37.在另一种可能的实现方式中,反馈消息的发送方式为当接收节点的数据接收队列的丢包状态满足预设条件时发送。示例性的,当接收节点的数据接收队列的丢包状态为真时,或者丢包率达到预设的值时,或者丢包数量达到预设的值时,接收节点发送反馈消息给发送节点。
38.在另一种可能的实现方式中,反馈消息的发送方式为当接收节点部署的应用的处理队列的空间占用情况满足预设条件时发送。
39.具体的,在这种方式下,在一种可能的实现方式中,当接收节点部署的应用的处理队列的空间占用达到占用上限时,接收节点发送反馈消息给发送节点。示例性的,当接收节点部署的应用的处理队列的已使用比例q达到比例上限q1时,接收节点发送反馈消息给发送节点。其中,比例上限q1可以由系统预设,例如,当接收节点部署的应用的处理队列的已使用比例达到70%时,接收节点发送反馈消息给发送节点。在另一种可能的实现方式中,当接收节点部署的应用的处理队列的空间占用从占用上限下降到占用下限时,接收节点发送反馈消息给发送节点。示例性的,当接收节点部署的应用的处理队列的已使用比例q从比例上限q1下降到比例下限q2时,接收节点发送反馈消息给发送节点。其中,比例下限q1可以由系统预设,例如,当接收节点部署的应用的处理队列的已使用比例达到30%时,接收节点发送反馈消息给发送节点。
40.在另一种可能的实现方式中,反馈消息的发送方式也可以为当接收节点的数据接收队列的丢包状态为真,并且接收节点部署的应用的处理队列的空间占用情况达到占用上限时,接收节点向发送节点发送反馈消息。
41.在另一种可能的实现方式中,反馈消息的发送方式也可以为当接收节点的数据接收队列的丢包状态为真,并且接收节点部署的应用的处理队列的空间占用情况从占用上限下降到占用下限时,接收节点向发送节点发送反馈消息。
42.可以理解的是,反馈消息的发送方式也可以混合使用,比如,当满足上述条件时发
送反馈消息,当不满足上述条件时,则周期性发送。其中,上述条件包括丢包状态为真、应用的处理队列的空间占用达到占用上限或者应用的处理队列的空间占用从占用上限下降到占用下限。反馈消息的发送方式也可以在其他情况下发送,本技术不进行限制。
43.第三方面,本技术实施例提供一种发送应用的数据包的装置,该装置具有实现上述第一方面或第一方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
44.第四方面,本技术实施例提供一种接收应用的数据包的装置,该装置具有实现上述第二方面或第二方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
45.第五方面,本技术实施例提供一种计算机设备,包括存储器和一个或多个处理器,其中,存储器,用于存储程序;一个或多个处理器,用于执行所述存储器中的程序,使得所述计算机设备执行本技术实施例第一方面或第一方面任意一种可能实现方式的方法。其中,所述一个和多个处理器与所述存储器可以耦合在一起。
46.第六方面,本技术实施例提供一种计算机设备,包括存储器和一个或多个处理器,其中,存储器,用于存储程序;一个或多个处理器,用于执行所述存储器中的程序,使得所述计算机设备执行本技术实施例第二方面或第二方面任意一种可能实现方式的方法。其中,所述一个和多个处理器与所述存储器可以耦合在一起。
47.第七方面,本技术实施例提供一种数据传输系统,包括前述的发送节点和前述的接收节点。
48.第八方面,本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机可以执行上述第一方面或第一方面任意一种可能实现方式的方法;或者,使得计算机可以执行上述第二方面或第二方面任意一种可能实现方式的方法。
49.第九方面,本技术实施例提供一种计算机程序或计算机程序产品,当该计算机程序或计算机程序产品在计算机上运行时,使得计算机执行上述第一方面或第一方面任意一种可能实现方式的方法;或者,得计算机可以执行上述第二方面或第二方面任意一种可能实现方式的方法。
50.第十方面,本技术实施例提供一种芯片,该芯片包括至少一个处理器和至少一个接口电路,该接口电路和该处理器耦合,至少一个接口电路用于执行收发功能,并将指令发送给至少一个处理器,至少一个处理器用于运行计算机程序或指令,其具有实现如上述第一方面或第一方面任意一种可能实现方式的方法的功能或者具有实现如上述第二方面或第二方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过软件实现,还可以通过硬件和软件组合实现,该硬件或软件包括一个或多个与上述功能相对应的模块。此外,该接口电路用于与该芯片之外的其它模块进行通信。
附图说明
51.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
52.图1为本技术实施例提供的一种典型应用场景示意图;
53.图2为本技术实施例提供的为数据发送、接收时的协议栈及各层缓存示意图;
54.图3为本技术实施例提供的发送应用的数据包的方法的流程示意图;
55.图4为本技术实施例提供的目标发包数量小于设备发包队列的剩余空间示意图;
56.图5为本技术实施例提供的目标发包数量大于等于设备发包队列的剩余空间的示意图;
57.图6为本技术实施例提供的反馈消息的内容示意图;
58.图7为本技术实施例的应用效果图;
59.图8为本技术提供的发送应用的数据包的装置的逻辑结构示意图;
60.图9为本技术提供的接收应用的数据包的装置的逻辑结构示意图。
具体实施方式
61.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
62.本发明实施例描述的网络架构以及业务场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
63.在本技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。本技术中的术语“和/或”或字符“/”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,或a/b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
64.为了便于理解,首先对本技术中所涉及的一些技术名词进行解释,具体如下:
65.内核收包队列:接收节点驱动到协议栈cpu侧的内核接收队列,如linux系统的softnet_data(per-cpu)队列。内核收包队列为上文描述的数据接收队列的一种。
66.设备发包队列:发送节点协议栈cpu侧到驱动侧的设备发送队列,如linux系统的qdisc设备发送队列。设备发包队列为上文描述的数据发送队列的一种。
67.应用处理队列:应用程序用于存储从内核接收数据包的队列,包括且不限于socket缓冲区和应用程序存储队列。应用处理队列为上文描述的应用的处理队列。
68.本技术涉及的典型场景为吞吐性能瓶颈在端节点的场景,例如近场通信场景下的p2p(peer-to-peer)或d2d。d2d可以支持两个或多个设备之间近距离的点对点或点对多点的通信,典型的d2d设备有蓝牙,wifi-direct等。如图1所示,为本技术实施例提供的一种典型应用场景示意图,其中,ue1(user equipment,用户设备)基于传输协议与ue2进行数据传输,比如,手机克隆,或者文件、图片或视频传输,等等。ue之间可以通过有线或无线链路传输数据,因为链路等因素,同样也存在数据包丢失的情况。因此为了保证数据的可靠传输,
tcp(transmission control protocol,传输控制协议)成为不同设备之间传输协议的首选。但是tcp为了保障数据传输可靠性而引入的基于窗口的发送机制,拥塞控制、超时重传等机制会极大的限制数据的传送速率,降低链路利用率。本技术旨在针对吞吐性能瓶颈在端节点的场景,设计一套数据包发送方法,实现在极少丢包的前提下实现高吞吐传输性能。可以理解的是,任何基于tcp/ip(internet protocol)参考模型的通信系统都适用于本发明实施例的提供的技术方案,其中,tcp/ip参考模型是一个抽象的分层模型,它通常也被通称为tcp/ip协议栈,这个模型中,所有的网络协议都被归类到5个抽象的"层"中:物理层、链路层、网络层、传输层以及应用层,关于各层的定义均为现有技术,本发明实施例不再赘述。
69.可以理解的是,本技术也可以适用于网络极少丢包或者不会出现丢包,网络中的中间设备不会成为瓶颈的数据传输系统。
70.可以理解的是,本技术的执行主体可以是操作系统,也可以是内核,还可以是应用程序。
71.本技术所涉及到的用户设备ue可以包括pc(个人电脑)、智能手机、笔记本电脑、平板电脑、dc(数字相机)等各种具有通信功能的手持设备、车载设备、可穿戴设备、计算设备以及各种形式的用户设备(user equipment,简称ue),移动台(mobile station,简称ms),终端(terminal),终端设备(terminal equipment)等等。
72.如图2所示,为数据发送、接收时的协议栈及各层缓存示意图。
73.发送节点和接收节点可以独立的物理设备,也可以是虚拟机。在一种场景下,发送节点可以是用户设备,接收节点可以是服务器。在另一种场景下,用户设备和服务器的角色也可以互换,即服务器作为发送节点,而用户设备作为接收节点。可以理解的是,发送节点和接收节点也可以均为用户设备,或者均为服务器,本发明不做特别限制。
74.发送节点和接收节点之间可包括公用网络、专用网络、因特网、局域网的一部分和/或其任何组合。另外还需要说明的是,本发明实施例主要是对发送节点和接收节点上的数据包发送进行优化,以降低丢包率和提升数据传输速率,与发送节点和接收节点之间的网络类型无关。图2并未示出发送节点与接收节点之间的网络。可以理解的是,不同的设备之间通过有线或无线网络传输数据,例如,不同ue之间通过无线网络(如wi-fi网络、蜂窝网络),或者服务器之间通过有线或无线方式传输数据的场景下,均可使用本发明实施例提供的方法。
75.发送节点和接收节点分别包括协议栈。应用程序可以基于协议栈进行数据传送。其中,协议栈的功能可由软件、硬件和/或固件的适当组合执行。此外,所属领域的技术人员可以理解发送节点和接收节点可包括比图2中所示部件更少或更多的部件,图2仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。
76.以下将对发送节点和接收节点中的涉及的部分协议栈和缓冲区进行介绍。
77.其中,
78.应用层:为用户的应用进程提供服务。
79.套接字缓冲区(socket buffer):每个tcp socket在内核中都有一个发送缓冲区和一个接收缓冲区。其中,发送缓冲区(send socket buffer)把应用程序缓冲区中的数据拷贝到套接字的发送缓冲区中,在适当的时机,内核会把套接字发送缓冲区的数据发送到接收方的套接字接收缓冲区。接收缓冲区(receive socket buffer)用于缓存数据,在应用
程序调用读取函数时,从接收方的套接字接收缓冲区中把数据拷贝到应用程序缓冲区中。如果应用程序一直没有调用读取函数,则数据会一直缓存在相应的套接字接收缓冲区。
80.tcp/ip协议栈:定义了一些传输数据的协议和端口号,以及在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。数据包的发送和接收的处理过程是在内核的tcp/ip协议栈实现的。
81.设备发送队列:发送结点tcp/ip协议栈cpu侧到驱动侧的数据发送队列,如linux系统的queue discipline(qdisc)设备发送队列。
82.driver/nic:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。
83.环形缓冲区(tx ring buf):在通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。在本技术实施例中,涉及发送环形缓冲区(tx ring buf)和接收环形缓冲区(rx ring buf),其中,tx ring buf用于把数据包从内存以直接内存存取(direct memory access,dma)方式复制到网卡上的缓存区;rx ring buf用于从网卡上的缓存区以dma方式复制到内存。
84.内核接收队列:接收结点驱动到tcp/ip协议栈cpu侧的数据接收队列,如linux系统的softnet_data(per-cpu)队列。
85.在一次数据发送过程中,应用程序创建数据,拷贝到套接字发送缓冲区中,如果缓冲区没有内存可用,则系统调用返回失败或者堵塞。因此,应用程序流向内核的数据流速由套接字缓冲区大小来限制。
86.tcp协议栈创建和发送数据包,通过数据发送队列qdisc向网卡(network interface controller,nic)驱动发送。
87.环形发送缓冲区(tx ring buffer)处于nic驱动和nic之间,tx ring buffer可被认为是发送请求队列。如果tx ring buffer满,此时nic驱动不能发出发送请求,那么待发送的数据包将会累积在tcp/ip协议栈和nic驱动之间的qdisc中,如果累积数据包超过qdisc大小,发送的新数据包将会被直接丢弃。
88.nic将待发送数据包存储在自身缓冲区中,发送数据包的速率主要由nic的物理速度决定。
89.在一次数据接收过程中,接收节点收到的数据包将由nic向上层发送,其中,nic和nic驱动之间的rx ring buffer可作为缓存,nic驱动从rx ring中将已接收数据包的请求取出,发给上层,驱动可以把数据包挂到内核数据接收队列,由内核系统去取,网络包的数据部分将上传缓存在套接字的接收缓冲区中,应用程序随后从套接字的接收缓冲区中将数据读取到应用程序缓冲区中,再对数据包进行处理。
90.需要说明的是,应用程序本身也可能没有缓冲区时,应用程序直接从套接字接收缓冲区读取数据,然后对数据包进行处理。此时的应用的处理队列为套接字的接收缓冲区。这种场景在图2中并未示出,但也是数据包传输中的一种可能的场景。
91.基于上述的协议栈和各层缓存原理,下面描述本技术实施例的发送应用的数据包的方法,如图3所示,该方法主要包括以下步骤:
92.步骤s301:发送节点根据目标发送速率和数据发送队列的被占用情况发送应用的
数据包。
93.步骤s302:发送节点接收来自接收节点的反馈消息,所述反馈消息指示所述接收节点处理接收到的所述应用的数据包的能力。
94.步骤s303:发送节点基于所述反馈消息,调整发送所述应用的数据包的速率。
95.步骤s304:判断数据包是否传输完成:
96.如果是,则结束本流程;
97.如果否,则继续步骤s301。
98.示例性的,在本技术实施例的发送应用的数据包的方法中,综合考虑了目标发送速率和数据发送队列的被占用情况,以及接收节点处理接收到的应用的数据包的能力来主动调整发送所述应用的数据包的速率,使得在发送数据包过程中数据发送队列不会超负荷使用,从而降低丢包率;使得发送节点发送应用的数据包的速率和接收节点的处理数据包的能力的更匹配,从而提高数据传输的效率、提高吞吐量性能。
99.可以理解的是,在本技术实施例的应用过程中,也可以只根据目标发送速率和数据发送队列的被占用情况来调整发送应用的数据包的速率。接收节点可以发送反馈消息,也可以不发送反馈消息。
100.下面通过具体示例来展示本技术实施例中的发送和接收应用的数据包的详细流程。
101.针对步骤s301:发送节点根据目标发送速率和数据发送队列的被占用情况发送应用的数据包:
102.首先,发送节点从网卡获取到网卡协商速率v
nego

103.需要说明的是,网卡协商速率随着网络状态的变化而变化,这里获取到的速率为获取的时刻对应的速率。
104.其次,发送节点计算目标发送速率v:v=v
nego
/8*p;
105.其中,p是根据物理层信道信息如received signal strength indication(rssi)等计算出来的比例系数,rssi为接收的信号强度指示,无线发送层的可选部分,用来判定链接质量,以及是否增大广播发送强度。rssi是从网卡获取到的信息。作为一种示例,rssi和p的对应关系可取值如表1所示,当rssi大于(-50db)时,p可取值为1;当rssi小于(-50db)并且rssi大于(-60db),p可取值为0.9,等等。
106.表1
107.rssi》-50dbp=1.0rssi《-50db&&rssi》-60dbp=0.9rssi《-60db&&rssi》-70dbp=0.8rssi《-70dbp=0.7
108.可以理解的是,rssi与比例系数p的取值关系也可以是其他对应关系,本技术实施例不限制。
109.接着,发送节点根据目标发送速率v和发送周期t计算目标发包数量:
110.目标发包数量s=v*t;
111.其中,发送周期为系统根据经验值设置的,例如,发送周期t可设置为5ms,也可以设置为其他时长,本技术实施例不限制。
112.数据包在发送过程中可以设置发送周期t,这是主动限制发送速率的一种比较通用的方式。也可以通过其他方式达到主动限制发送速率的目的,本技术不进行限制。
113.再者,发送节点获取数据发送队列的被占用情况,在本实施例中,以qdisc设备发包队列为例,假设总长度为n,剩余空间长度为nc。
114.然后,计算实际发包数量;
115.实际发包数量可通过如下方式计算:n
tx
=min(s,nc*r),作为一种示例,比例系数r建议可取值为0.95;比例系数r为一种保护机制,为了保护设备发包队列不超负荷发送数据包,防止数据接收队列丢包。可以理解的是,r也可以设置为其他值,本技术实施例不限制。
116.最后,n
tx
中的数据包发送完成,计算休眠时间,然后再进行下一周期的数据包发送。
117.其中,以下将通过两个例子来说明休眠时间的计算方式。即根据设备发包队列的使用情况,可分为两种情况:
118.当s《nc*r时,即发送周期t内的目标发包数量小于设备发包队列的剩余空间时,如图4所示;在这种情况下,休眠时间t2=t

t1;其中,t为系统设置的发送周期,t1为发送n
tx
数据包消耗的时间,t1可根据系统时间来计算:如在数据包发送之前获取时间a,在数据包发送完成后获取时间b,则t1=b-a,可以理解的是,这种计算方式仅为一种示例,也可以通过其他方式进行计算,本技术实施例不做限制。
119.休眠时间到期后,退出本周期t的数据包传输,进入下一发送周期继续发送数据包。
120.当s》=nc*r,即发送周期t内的目标发包数量大于等于设备发包队列的剩余空间时,如图5所示;在这种情况下:
121.1)计算发送n
tx
数据包消耗时间t1:t1可根据系统时间来计算:如在数据包发送之前获取时间a,在数据包发送完成后获取时间b,则t1=b-a。当n
tx
发送完成后,设备发包队列将继续被填满;
122.2)计算发送一定比例的队列长度的数据后的等待时间t3:例如,等待队列发送队列长度(n*q)的数据所消耗的时间,其中,q为设备发包队列待发送数据包的比例系数,建议设置为1/2,即等待发送完设备发包队列总长度n的一半长度的数据后,重新触发数据包的发送。
123.其中,比例系数的设置是为了防止qdisc设备发包队列出现空闲但是还处于休眠状态不能发包而导致资源浪费。可以理解的是,q也可以设置为其他值,本技术实施例不进行限制。
124.3)计算休眠时间:休眠时间选择为min(t2,t3):其中t2=t

t1;t3=n*q/v;
125.4)休眠时间到期后,退出本周期t的数据包传输,进入下一发送周期继续发送数据包。
126.休眠时间的合理设置是为了控制发包数量使得设备发包队列不会超负荷使用,从而降低发送过程的丢包率;也可以防止发包队列空闲后但由于还处于休眠状态不能发送数据包而导致资源浪费。
127.针对步骤s302:发送节点接收来自接收节点的反馈消息,所述反馈消息指示所述接收节点处理接收到的所述应用的数据包的能力。
128.首先,接收节点监控内核收包队列与应用处理队列动态变化并反馈接收状态。
129.接收节点根据内核收包队列单位时间收包数量计算数据包接收速率v
nr
,可通过如下方式进行计算:
130.t1时刻记录内核收包队列总收包数量s1;
131.t2时刻记录内核收包队列总收包数量s2;
132.计算内核收包队列接收速率v
nr
=(s2–
s1)/(t2–
t1),t2与t1间隔时间可以设置为200ms;可以理解的是,t2与t1间隔时间也可以设置为其他值,本技术实施例不进行限制。可以理解的是,数据包接收速率的计算方式也可以通过其他方式计算,本技术实施例不进行限制。
133.其次,根据内核收包队列丢包数据,记录丢包状态:s
drop
,可通过如下方式进行计算:
134.t1时刻记录内核收包队列总丢包数量d1;
135.t2时刻记录内核收包队列总丢包数量d2;
136.计算内核收包队列丢包数d=(d2–
d1),t2与t1间隔时间可以设置为200ms;可以理解的是,t2与t1间隔时间也可以设置为其他值,本技术实施例不进行限制;
137.如果d》0,则s
drop
=true,否则s
drop
=false;
138.可以理解的是,丢包状态的设置也可以是d达到某个系统预设的值时,将丢包状态设置为s
drop
=true,否则s
drop
=false。丢包状态的判断还可以根据丢包率来判断,比如丢包率达到系统预设的值时,将丢包状态设置为s
drop
=true,否则s
drop
=false。本技术实施例对丢包状态的设置标准不做限制。
139.接着,计算应用的处理速率v
ap
,即应用程序单位时间内处理的数据包数量,可以通过应用程序统计处理数据包的数量,以及处理这些数据包使用的时间,然后根据数量/时间计算出v
ap
;可以理解的是,应用的处理速率也可以通过其他方式计算,本技术实施例不进行限制。
140.然后,记录应用处理队列已使用比例信息q。
141.最后,接收节点发送反馈消息给发送节点,其中,反馈消息可包含内核收包队列记录的v
nr
,s
drop
,应用处理队列记录的v
ap
和/或q等信息。一种示例的反馈消息如图6所示。可以理解的是,本技术实施例反馈消息不局限于图6所示的内容、格式,还可以包含接收节点通知发送节点的各种格式及协议内容。
142.发送反馈消息的方式包括:
143.1)接收节点周期性发送反馈消息到发送节点;
144.其中,发送反馈消息的周期可以设置为200ms,可以理解的是,发送反馈消息的周期也可以设置为其他值,本技术实施例不进行限制;
145.2)接收节点在检测到s
drop
=true时,发送反馈消息给发送节点;
146.3)当接收节点检测到应用处理队列已使用比例q上升到q1或q从q1下降到q2时,发送反馈消息给发送节点;
147.其中,q1和q2分别代表应用队列使用比例,q1,q2为系统初始化时根据经验值设置的;例如q1可取值为70%,q2可取值为30%。即当应用处理队列使用到70%时,接收节点发送反馈消息给发送节点;或者应用处理队列的使用比例从70%下降到30%后,接收节点发
送反馈消息给发送节点。
148.4)当接收节点的数据接收队列的丢包状态为真,并且接收节点部署的应用的处理队列的空间占用情况达到占用上限时,接收节点向发送节点发送反馈消息。
149.5)当接收节点的数据接收队列的丢包状态为真,并且接收节点部署的应用的处理队列的空间占用情况从占用上限下降到占用下限时,接收节点向发送节点发送反馈消息。
150.可以理解的是,以上反馈消息的发送方式仅为示例性的,反馈消息也可以在其他情况下发送,本技术实施例不进行限制。
151.针对步骤s303:发送节点基于所述反馈消息,调整发送所述应用的数据包的速率。
152.首先,发送节点根据所述反馈消息指示的所述接收节点处理接收到的所述应用的数据包的能力,调整所述目标发送速率:
153.1)发送节点根据物理层信道信息确定目标发送速率v
new
=v
nego
'/8*p';这里v
nego
'区别于步骤s301的v
nego
,为收到反馈消息时的网卡协商速率,p'为该时刻物理层信道信息如rssi对应的比例系数。
154.需要说明的是,发送节点可以根据收到反馈消息的时刻的物理层信息来确定目标发送速率,发送节点也可以周期性的调整目标发送速率,比如周期性的根据物理层的网卡协商速率和rssi进行计算。
155.2)检测到接收节点出现丢包s
drop
=true时,调整目标发送速率为v
new
=min(v
new
,v
nr
);或者
156.当q上升到q1时,调整目标发送速率为v
new
=min(v
new
,v
ap
);
157.q1代表应用处理队列使用比例,例如当队列占比达到q1(如70%)时,应开启流控,以应用处理速率v
ap
来发送,当队列占比降到q2(如30%)时,则目标发送速率不受应用处理速率影响。
158.可以理解的是,这里q1,q2的取值仅是示例,在实际应用过程中也可以设置为其他值。在实际应用过程中也可以通过空间大小如已使用空间大小或者剩余空间大小来判断应用处理队列的空间占用情况,进而调整目标发送速率。
159.以上为对本技术实施例提供的发送、接收应用的数据包的方法的详细说明。
160.本技术实施例中,在发送节点发送应用的数据包时,综合考虑目标发送速率和数据发送队列的被占用情况,使得在发送数据包过程中数据发送队列不会超负荷使用,从而降低丢包率;同时发送节点根据接收节点处理接收到的应用的数据包的能力来调整发送所述应用的数据包的速率,使得发送节点发送应用的数据包的速率和接收节点的处理数据包的能力的更匹配,从而提高数据传输的效率、提高吞吐量性能。
161.请参见图7,为针对同一终端上,采用tcp拥塞控制算法瓶颈带宽与往返时间(bottleneck bandwidth and rtt,bbr)进行应用的数据包发送与采用本技术实施例提供的应用的数据包发送的方法发送数据包的效果对比图。方案对比如下:
162.优化前:
163.在发送速率获取方面:现有tcp拥塞控制算法bbr是根据rtt往返时延来控制数据包发送,容易导致发送速率会有比较大的抖动,无法充分发挥链路发送性能。
164.在计算发包数量方面:现有bbr技术发送数据包时仅考虑了网络传输中的中间节点的时延,不会考虑终端上如手机上的各层缓冲区队列的空间占用情况,易出现队列丢包。
165.优化后:
166.在近场通信场景下综合考虑发送节点的物理层发送数据包的能力以及接收节点的数据接收队列的数据包接收速率、接收节点的数据接收队列的丢包状态、接收节点部署的所述应用的处理速率或接收节点部署的所述应用的处理队列的空间占用情况来调整目标发送速率,进而根据调整后的目标发送速率和所述数据发送队列当前的空间占用情况调整发送所述应用的数据包的速率,从而能够减少终端上各层缓冲区队列丢包,实现网络传输性能最大化。
167.图7中从发送速率方面,给出了采用tcp拥塞控制算法bbr进行应用的数据包发送与采用本技术实施例提供的应用的数据包发送的方法发送数据包的效果对比,在使用现有bbr技术时发送速率平均值为38.8mb/s,而在使用本技术实施例提供的方案时,发送速率平均值为53.3mb/s,可见,本技术实施例的发送应用的数据包的技术可以提高数据发送速率。
168.以上主要介绍了本技术实施例提供的方法的具体流程,下面将介绍本技术的装置实施例。
169.请参考图8,为本技术提供的发送应用的数据包的装置的逻辑结构示意图。示例性的,如图所述,该发送应用的数据包的装置800包括发送模块810、接收模块820以及调整模块830。其中,
170.发送模块810用于根据目标发送速率和数据发送队列的被占用情况发送所述应用的数据包,所述发送所述应用的数据包的速率与所述目标发送速率成正比,所述数据发送队列的被占用情况限制了所述应用的数据包的发送数量。;所述发送模块具体用于根据所述目标发送速率计算在一个发送周期内的目标发包数量;根据所述目标发包数量和所述数据发送队列的剩余空间,确定所述发送周期内的实际发包数量;基于实际发包数量发送数据。
171.接收模块820用于接收来自所述接收节点的反馈消息,所述反馈消息指示所述接收节点处理接收到的所述应用的数据包的能力;所述接收节点的数据接收队列的数据包接收速率、所述接收节点的数据接收队列的丢包状态、所述接收节点部署的所述应用的处理速率和所述接收节点部署的所述应用的处理队列的空间占用情况,所述数据接收队列用于接收来自设备驱动层的数据包。其中,所述反馈消息的发送方式为以下方式中的至少一种:周期性发送;当所述接收节点的数据接收队列的丢包状态满足预设条件时发送;和当所述接收节点部署的所述应用的处理队列的空间占用情况满足预设条件时发送。
172.调整模块830用于基于所述反馈消息调整发送所述应用的数据包的速率。
173.所述调整模块830具体用于根据所述反馈消息指示的所述接收节点处理接收到的所述应用的数据包的能力,调整所述目标发送速率,进而根据调整后的目标发送速率和所述数据发送队列当前的空间占用情况调整发送所述应用的数据包的速率。
174.所述调整模块830具体用于当所述接收节点的数据接收队列的丢包状态为真时,将所述目标发送速率调整为所述目标发送速率和所述数据接收队列的数据包接收速率两者之中的最小值;当所述接收节点部署的所述应用的处理队列的空间占用情况达到占用上限时,将所述目标发送速率调整为所述目标发送速率和所述接收节点部署的所述应用的处理速率两者之中的最小值;当所述接收节点的数据接收队列的丢包状态为真,并且所述接收节点部署的所述应用的处理队列的空间占用情况达到占用上限时,将所述目标发送速率
调整为所述目标发送速率、所述数据接收队列的数据包接收速率和所述接收节点部署的所述应用的处理速率三者之中的最小值。
175.可以理解的是,本技术实施例提供的发送应用的数据包的装置800也可以只包含发送模块。本技术实施例考虑了接收节点会发送反馈消息的场景,所以还包含了接收模块和调整模块。在接收节点不发送反馈消息的场景下,该装置将只包含发送模块。
176.本技术实施例提供的发送应用的数据包的装置800的效果可以参考前述方法实施例,在此不再赘述。
177.请参考图9,为本技术提供的接收应用的数据包的装置的逻辑结构示意图。如图所述,该发送应用的数据包的装置900包括接收模块910、保存模块920以及发送模块930。其中,接收模块910用于接收来自发送节点的数据包。
178.保存模块920用于保存接收数据包时的能力信息,所述能力信息包括以下参数中的至少一种:数据接收队列的数据包接收速率、数据接收队列的丢包状态、所述应用的处理速率和所述应用的处理队列的空间占用情况。
179.发送模块930用于向所述发送节点发送反馈消息,所述反馈消息包含所述能力信息,所述反馈消息用于指示所述发送节点调整所述应用发送数据包的速率。所述反馈消息的发送方式为以下方式中的至少一种:周期性发送;当所述数据接收队列的丢包状态满足预设条件时发送;和当所述应用的处理队列的空间占用情况满足预设条件时发送。
180.另外,本技术还提供与本技术提供的方案相关的存储介质、计算机程序产品、计算机程序等。具体实现可参考前述实施例。
181.本领域普通技术人员可以意识到,在上述实施例的描述的各示例的模块及算法步骤,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
182.当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
183.以上所描述的装置实施例仅仅是示意性的,例如,所述的模块的划分仅仅是一种逻辑功能的划分。其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本技术提供的装置实施例附图中,模块之间可通过一条或多条通信总线或信号线进行通信
连接。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
184.以上所述,仅为本技术的一些具体实施方式,但本技术的保护范围并不局限于此。
再多了解一些

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

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

相关文献