技术新讯 > 电子通信装置的制造及其应用技术 > 基于QUIC的ACK帧处理方法、装置、设备及介质  >  正文

基于QUIC的ACK帧处理方法、装置、设备及介质

  • 国知局
  • 2024-08-02 14:22:42

本发明属于计算机网络领域,特别涉及一种基于quic的ack帧处理方法、装置、设备及介质。

背景技术:

1、quic协议是http3的底层传输协议,其核心优势在于利用udp报文的快速传输特性实在在用户态对传输策略的更灵活控制。与tcp相比,quic协议通过优化减少了队头阻塞等问题,尤其在弱网环境下展现出显著的传输效率。此外,quic协议引入了0-rtt模式等新特性,进一步提升了客户端的使用体验。然而,由于quic协议采用udp作为传输层协议,与tcp相比,在ack处理的cpu开销上存在明显差异。在tcp协议中,ack处理主要由内核空间完成,而quic协议中的ack帧是通过udp数据包携带的,每次处理ack帧时都需要将数据包从内核空间读取到用户空间,并解析出ack帧,这种频繁的系统调用和用户态与内核态之间的切换导致了较高的cpu开销。

2、另一方面,由于quic数据包通常较小,客户端发送ack帧的频率相对较高。在服务端处理每个ack帧时,需要遍历已发送队列,将确认收到的数据包移除,这种多次遍历已发送队列的过程同样带来了较大的cpu开销。因此,优化quic协议的ack处理方法,以降低cpu开销,提高在有限cpu资源下的网络吞吐量,成为了一个亟待解决的问题。

技术实现思路

1、为解决上述技术问题,本发明提供了一种基于quic协议的高效ack帧处理方法,以达到在服务端能够批量读取数据包获取ack帧,并在合并多个ack帧之后进行ack帧的处理,同时根据历史一段时间内每次读取数据包获得的ack帧数量的平均值动态更新客户端发送ack帧的频率,保证不会影响吞吐量的目的。其技术方案为:

2、本发明第一方面提出了一种基于quic协议的高效ack帧处理方法,应用于服务端,包括:

3、s1、批量读取来自客户端的quic数据包,所述quic数据包中携带有ack帧;

4、s2、合并s1中quic数据包携带的ack帧,对合并后的ack帧进行正常的ack帧的处理,计算读取的quic数据包中携带有ack帧的总数量;

5、s3、根据quic数据包的往返时间划分时间窗口,并在到达新的时间窗口时,计算上个时间窗口内每次读取quic数据包获得的ack帧数量的平均值;

6、s4、通知所述客户端更新发送ack帧的频率,根据计算更新后ack帧频率的值,创建ack_frequency帧并发送给所述客户端。

7、进一步的,所述s1中,批量读取quic数据包包括:

8、使用recvmmsg()系统调用从套接字中批量读取来自所述客户端的udp数据包;

9、从udp数据包中解析出所述quic数据包。

10、进一步的,所述s2中合并s1中quic数据包携带的ack帧,包括:对相同quic连接且相同包号空间的quic数据包携带的ack帧进行合并。

11、进一步的,所述相同quic连接且相同包号空间的quic数据包判断方法包括:

12、解析出quic数据包的包头信息;

13、根据所述包头信息判断quic连接是否相同并确定数据包类型;

14、根据所述quic数据包的数据包类型判断包号空间是否相同。

15、进一步的,所述s2中合并s1中quic数据包携带的ack帧包括:

16、获取相同quic连接且相同包号空间的quic数据包携带的ack帧;

17、计算合并后的ack帧中的最大确认包号;

18、计算合并后的ack帧中的确认区间。

19、进一步的,所述合并后的ack帧中的最大确认包号的值取相同quic连接且相同包号空间的quic数据包携带的ack帧的最大确认包号的最大值,具体计算方式为:,式中,为合并后的ack帧的最大确认包号,n是相同quic连接且相同包号空间的quic数据包携带的ack帧的数量,为其中第i个ack帧的最大确认包号。

20、进一步的,所述合并后的ack帧中的确认区间的计算方式为取所有相同quic连接且相同包号空间的quic数据包携带的ack帧的所有确认区间的交集,其中,每个ack帧包括至少一个确认区间。

21、进一步的,所述s2中计算此次读取的quic数据包中携带有ack帧的总数量为所有quic连接和包号空间的quic数据包携带的ack帧的总数量。

22、进一步的,所述s3中划分时间窗口的方法为:

23、在到达新的时间窗口时,记录此时传输的数据总量s;

24、在发送数据包时,记录发送该数据包时传输的数据总量p;

25、在收到数据包的确认时,获取该数据包发送时传输的数据总量p,如果,进入新的时间窗口。

26、进一步的,所述s3中的计算方式如下:

27、 ;

28、式中,m是上一个时间窗口内读取数据包的次数,为第k次读取的quic数据包所携带的ack帧的数量。

29、进一步的,所述s4中的计算方式如下:

30、;

31、式中,是更新前客户端发送ack帧的频率,为更新后的频率,代表通知客户端每收到个数据包后发送一个ack帧。

32、进一步的,所述创建ack_frequency帧并发送给客户端包括:

33、设置ack_frequency帧的ack频率阈值;

34、将ack_frequency帧加入到服务端的发送队列。

35、进一步的,所述创建ack_frequency帧并发送给客户端还包括设置ack_frequency帧的序列号,其计算方式如下:

36、 ;

37、式中,是当前创建的ack_frequency帧的序列号,是上一个ack_frequency帧的序列号,当客户端收到的ack_frequency帧序列号小于已收到的序列号的最大值时,将该ack_frequency帧其忽略。

38、本发明第二方面提出了一种基于quic协议的高效ack帧处理装置,应用于服务端,所述装置包括:

39、数据接收模块,用于批量接收来自客户端的携带ack帧的quic数据包,所述quic数据包中携带有ack帧;

40、数据处理模块,用于合并所述数据接收模块接收到的quic数据包中的ack帧,对合并后的ack帧进行正常的ack帧的处理,并计算读取的quic数据包中携带有ack帧的总数量;

41、计算模块,用于根据quic数据包的往返时间划分时间窗口,并在到达新的时间窗口时,计算上个时间窗口内每次读取quic数据包获得的ack帧数量的平均值;

42、通知模块,用于通知客户端更新发送ack帧的频率,根据计算更新后的ack帧频率的值,创建ack_frequency帧发送给所述客户端。

43、一种计算机设备,包括至少一个处理器以及存储有计算机程序的计算机可读介质,所述计算机程序被所述处理器读取并运行时,实现如上述第一方面所述方法的步骤。

44、一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器读取并运行时,实现如上述第一方面所述方法的步骤。

45、与现有技术相比,本技术有益效果如下:

46、(1)本发明通过批量读取携带ack帧的udp数据包,避免了频繁的系统调用导致用户态与内核态切换,显著降低了cpu开销。

47、(2)本发明通过合并读取得到ack帧,相比于现有quic协议需要对每个ack帧都要进行处理,本发明只需要对合并后的ack帧进行一次处理,降低ack帧处理的cpu开销,提高cpu资源不足时的吞吐量。

48、(3)本发明根据历史一段时间内每次读取quic数据包所获得的ack帧的数量的平均值,动态调整客户端发送ack帧的频率,相比于现有一些直接降低客户端发送ack帧的频率的方法,可以在网络条件不好时提高频率,从而保证在弱网环境下吞吐量不会受到影响。

本文地址:https://www.jishuxx.com/zhuanli/20240801/242613.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。