当前位置: 首页 > 专利查询>浙江大学专利>正文

基于制造技术

技术编号:39837411 阅读:3 留言:0更新日期:2023-12-29 16:23
本发明专利技术公开了一种基于

【技术实现步骤摘要】
基于TCP

BPF的动态网络自适应修改方法


[0001]本专利技术涉及
TCP
动态网络修改领域,尤其涉及一种基于
TCP

BPF
的动态网络自适应修改方法


技术介绍

[0002]当客户端与服务端建立
TCP
连接时,通常情况下与
TCP
相关的参数大多都是默认的,比如
TCP
所采用的拥塞控制方案,初始拥塞窗口大小

以及
UTO、
延迟
ACK
的大小等,但是在网络环境发生变化时,如网络环境从低带宽高延迟变为高带宽低延迟,或丢包率徒增,网络波动时,对于当前
TCP
连接的参数,可能就不是最优解了

[0003]其次,有时需要去修改
TCP
相关参数来适应应用层的需求,如
TCP UTO(User Timeout
,用户超时时间
)
,需要根据不同的应用层的场景来设置不同的
UTO
,而非默认值;再如,在智能手机上运行的
app
需要针对短数据包优化的重传技术,而数据中心服务器可以则需要另一种拥塞控制方案,即需要实现客户端的定制化

[0004]Linux TCP
协议栈现在有一些方式来对
TCP
连接参数进行修改,如基于通用规则的自适应配置,或通过修改相应文件来调整参数等方式,但这些方式都存在一些问题

[0005]Linux TCP
协议栈现在有一些方式来对
TCP
连接参数进行修改,
TCP
连接参数在标准情况下通常是根据默认配置进行设置的
。TCP
协议栈会在建立连接时使用一组默认的参数来初始化连接,并在连接过程中根据一些固定的算法和规则进行调整,但这种方式虽然比较灵活,但缺点也很明显,是基于一些通用的原则和算法,可能不适用于所有的特定情况

在某些特殊应用场景下
(
如网络情况发生明显波动
)
,可能需要根据特定需求

除此之外,还可以使用配置文件的方式来对参数进行调整

通常可以在
/proc/sys/net/ipv4

/proc/sys/net/ipv6
目录下找到,并通过修改相应的文件来进行调整,这种方式的弊端是非常不灵活,无法在
TCP
保持连接的过程中自适应地变化


技术实现思路

[0006]本专利技术的目的在于针对现有技术的不足,提供一种基于
TCP

BPF
的动态网络自适应修改方法

[0007]本专利技术的目的是通过以下技术方案来实现的:一种基于
TCP

BPF
的动态网络自适应修改方法,包括以下步骤:
[0008](1)
使用
eBPF
获取
TCP
协议栈中的关键数据,并基于
eBPF

map
将关键数据传递到用户态,同时收集应用层的第一信息,将关键数据和第一信息作为衡量指标,以计算出适配当前网络环境的一组最优
TCP
参数集;其中,所述关键数据包括网络带宽相关数据

网络延迟相关数据

网络稳定性相关数据

丢包率相关数据和延迟
ACK
相关数据;所述第一信息包括对连接持久性的需求和数据传输模式;所述
TCP
参数集包括拥塞控制算法

初始拥塞窗口大小

用户超时时间和延迟
ACK

[0009](2)
使用
TCP

BPF
提供的
tcp_options_write()
方法将所述步骤
(1)
得到的最优
TCP
参数集插入到
TCP Header
中的
options
字段中,并将更新后的
TCP
参数集中的
TCP
参数同步至服务端,以实现
TCP
参数的传递;
[0010](3)
服务端在收到
TCP
报文时,通过
TCP

BPF
提供的
tcp_parse_options()
方法对
options
字段进行解析,并使用
eBPF
提供的
bpf_setsockops

setsockops
辅助函数将接收到的最优
TCP
参数集应用到服务端的当前
TCP
连接中

[0011]进一步地,所述拥塞控制算法包括
Reno
算法
、NewReno
算法
、CUBIC
算法
、BBR
算法和
Vegas
算法

[0012]进一步地,所述步骤
(1)
中,使用
eBPF
获取
TCP
协议栈中的关键数据,具体包括:
[0013]网络带宽相关数据:通过
struct tcp_sock
中的
__u32 snd_cwnd
获取拥塞窗口大小;通过
struct tcp_sock
中的
__u32 snd_ssthresh
获取慢开始门限;通过
struct tcp_sock
中的
__u32snd_cwnd_cnt
获取拥塞窗口大小的增长情况;通过
struct tcp_sock
中的
__u32 snd_cwnd_clamp
获取拥塞窗口大小的最大值限制;
[0014]网络延迟相关数据:通过
struct tcp_sock
中的
__u32 srtt_us
获取往返时间;通过
struct sock
中的
struct rate_sample
获取与往返时间和传输速率相关的统计信息;
[0015]丢包率相关数据:通过
struct tcp_sock
中的
__u32 retrans_out
获取当前重传队列中的数据包数量;
[0016]网络稳定性相关数据:通过
struct tcp_sock
中的
__u32 mdev_us
获取往返时间的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于
TCP

BPF
的动态网络自适应修改方法,其特征在于,包括以下步骤:
(1)
使用
eBPF
获取
TCP
协议栈中的关键数据,并基于
eBPF

map
将关键数据传递到用户态,同时收集应用层的第一信息,将关键数据和第一信息作为衡量指标,以计算出适配当前网络环境的一组最优
TCP
参数集;其中,所述关键数据包括网络带宽相关数据

网络延迟相关数据

网络稳定性相关数据

丢包率相关数据和延迟
ACK
相关数据;所述第一信息包括对连接持久性的需求和数据传输模式;所述
TCP
参数集包括拥塞控制算法

初始拥塞窗口大小

用户超时时间和延迟
ACK

(2)
使用
TCP

BPF
提供的
tcp_options_write()
方法将所述步骤
(1)
得到的最优
TCP
参数集插入到
TCP Header
中的
options
字段中,并将更新后的
TCP
参数集中的
TCP
参数同步至服务端,以实现
TCP
参数的传递;
(3)
服务端在收到
TCP
报文时,通过
TCP

BPF
提供的
tcp_parse_options()
方法对
options
字段进行解析,并使用
eBPF
提供的
bpf_setsockops

setsockops
辅助函数将接收到的最优
TCP
参数集应用到服务端的当前
TCP
连接中
。2.
根据权利要求1所述的基于
TCP

BPF
的动态网络自适应修改方法,其特征在于,所述拥塞控制算法包括
Reno
算法
、NewReno
算法
、CUBIC
算法
、BBR
算法和
Vegas
算法
。3.
根据权利要求1所述的基于
TCP

BPF
的动态网络自适应修改方法,其特征在于,所述步骤
(1)
中,使用
eBPF
获取
TCP
协议栈中的关键数据,具体包括:网络带宽相关数据:通过
struct tcp_sock
中的
__u32 snd_cwnd
获取拥塞窗口大小;通过
struct tcp_sock
中的
__u32 snd_ssthresh
获取慢开始门限;通过
struct tcp_sock
中的
__u32snd_cwnd_cnt...

【专利技术属性】
技术研发人员:徐新杰
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1