TCP协议参数设置说明

ip route下的tcp参数设置

能设置的参数不止这些,只列出了我们关心的

rto_min

通过路由表覆盖全局rto_min,最好是对端配合设置quickack

避坑:这玩意是用jiffies为单位记录的,jiffies的单位是4ms,配10ms的话生效的时候是16ms

1 在tcp_rtt_estimator这个函数里面,rttvar_us初始化为rto_min,后续经一系列逻辑判断,rttvar_us只增不减

2 在__tcp_set_rto这个函数里面,rto = usecs_to_jiffies((tp->srtt_us >> 3) + tp->rttvar_us)

所以设置10ms的时候,实际rttvar_us就不会小于12ms,再加上srtt_us就大于12ms了,再转一次jiffies就是16ms

这也间接说明了,这两周的观察期间,实车未出现过>4ms的rtt

quickack

设置为1会关闭delayed ack,相关代码分析见delayed ack代码和实车环境影响分析

cwnd

实际上是拥塞窗口上限,是否有效取决于拥塞算法实现。对我们用的cubic是有效的

搜内核变量snd_cwnd_clamp,函数tcp_cong_avoid_ai

避坑:这玩意是当tcp_metrics没有缓存时,从路由更新到tcp_metrics才能生效。设置完之后要ip tcp_metrics delete xxx

initcwnd

初始拥塞窗口,如果开了tcp_slow_start_after_idle + rto_min,比较有用

因为定频通信的特征,会不停初始化

initrwnd

没仔细看代码,反正跟initcwnd一块配就行了

ssthresh

初始拥塞窗口,如何开了tcp_slow_start_after_idle + rto_min,比较有用

因为定频通信的特征,会不停初始化

/proc/sys/net/ipv4/tcp相关参数说明

/proc/sys/net/ipv4/tcp_frto

forward RTO-Recovery;虚假超时重传检测

/proc/sys/net/ipv4/tcp_recovery

rack重传,通过已ack数据包-时间差,判断未确认数据是否丢包

/proc/sys/net/ipv4/tcp_retrans_collapse

重传时重组数据包,不会对未发送数据做重组

/proc/sys/net/ipv4/tcp_dsack

sack的第一个块用于通知重复包

/proc/sys/net/ipv4/tcp_thin_dupack

缓存中无待发送数据时一个dup ACK就可以触发快速重传。

tcp_thin_dupack使能的时候,一定会关闭early retransmit。

/proc/sys/net/ipv4/tcp_reordering和tcp_max_reordering

设置快速重传需要的ack包阈值;linux要求tcp_reordering为3的时候才会使能ER

/proc/sys/net/ipv4/tcp_early_retrans

early retransmit:无待发送包时,快速重传需要的dup ack数量=“待确认包”-1;

发了1,2包,SACK确认2包,即可触发快速重传;

如果有可发送包,受拥塞控制发不出去,不算无待发送包。

tail loss probe:一段时间没收到ack,则强制传输最后一个未ack的报文或未发送的报文。不受拥塞控制, 受接收窗口限制。

但是linux写死了,只有一个未确认包时,TLP超时受200ms间隔限制。

/proc/sys/net/ipv4/tcp_moderate_rcvbuf

非0,且未设置连接SO_RCVBUF时,自动调整接收缓存,不超过tcp_rmem[2]

/proc/sys/net/ipv4/tcp_slow_start_after_idle

空闲后重新计算拥塞窗口

在这个函数tcp_slow_start_after_idle_check里进行判断,如未关闭此功能,则触发tcp_cwnd_restart

tcp_cwnd_restart根据“发送间隔是rto的倍数”,来执行cwnd>>1,取更新后cwnd和init_cwnd中的min值

同时用tcp_current_ssthresh更新tp->snd_ssthresh

/proc/sys/net/ipv4/tcp_limit_output_bytes

TSQ,tcp small queue,在发包时,如果单tcp待网卡发送数据较多,则缓存起来,通过TSQ tasklet发送

这个值默认256KB,tcp_wmem的default比这个小很多,感觉一般不会触发

主要用于同机器,不同tcp往外发包时,别让一个tcp把网卡队列占满了

/proc/sys/net/ipv4/tcp_min_rtt_wlen

在函数tcp_update_rtt_min中,根据sysctl_tcp_min_rtt_wlen调用minmax_running_min计算rtt_min

minmax_running_min实现在lib/win_minmax.c,计算wlen,wlen/2,wlen/4时间内的极值

目前从代码上看,这个参数无用,相关功能应该是未实现,4.9.337里面也是无用的

但是4.5内核里tcp_update_rtt_min函数很长,也用了rtt_min,不知道是不是误判太多被删掉了

/proc/sys/net/ipv4/tcp_low_latency

tcp_prequeue_process出队

tcp_prequeue入队,perf火焰图没看到他的占用,反而是tcp_v4_do_rcv很高

没太仔细看,应该是要有进程使用阻塞socket read的时候,tp->ucopy.task不为空,才会触发prequeue

原理上是将原本软中断上下文中的tcp协议处理(tcp_v4_do_rcv),放到了进程上下文(tcp_prequeue_process)

如果要用的话,需考虑rtt上升等一系列影响;收益是减少软中断耗时,减少CPU0耗时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/27277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14.shell awk数组

awk数组 awk数组awk数组示例Nginx日志分析 awk数组 1.什么是awk数组 数组其实也算是变量,传统的变量只能存储一个值,但数组可以存储多个值 2.awk数组应用场景 通常用来统计、比如:统计网站访问TOP10、网站url访问TOP10等等 3.awk数组统计技巧 1.在awk中,使用数组时,不仅可以…

Interview preparation--RabbitMQ

AMQP AMQP(Advanced Message Queueing protocol). 高级消息队列协议,是进程之间床底一步新消息的网络协议AMQP工作原理如下: 发布者(Publisher)发布消息(Message)经过交换机(Exchange&#xff…

新视窗新一代物业管理系统 GetCertificateInfoByStudentId SQL注入漏洞复现

0x01 产品简介 新视窗物业管理系统属于专家型的物业管理软件,能够给物业公司内部管理提供全面的解决方案,具有房产管理、客户管理、租赁管理、仪表管理、财务收费、发票管理、合同管理、仓储管理、设施设备管理、客户服务管理、会员管理、人事管理、资产管理、日常办公、档案…

SASS详解:从零到一,轻松驾驭CSS预处理器

Sass(Syntactically Awesome Stylesheets)是一个流行的CSS预处理器,它扩展了CSS的功能,使得开发者可以更高效地编写样式表。本文将带你从Sass的基础语法开始,逐步深入,帮助你轻松掌握这一强大的工具。 1. 变…

2024.06.01 校招 实习 内推 面经

绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、实习 | 先临三维2025实习生招聘 实习 | 先临三维2025实习生招聘 2、实习 | 腾讯音乐娱乐MUX2024实习生招聘 实习 | 腾讯音乐娱乐MUX2024实习生招聘 3、实习 | 2024年长沙市开福区“未…

HTML+CSS 动态卡片

效果演示 实现了一个带有动态背景和图片放大效果的卡片展示。卡片的背景是由两种颜色交替组成的斜线条纹&#xff0c;同时背景会以一定速度循环滚动。当鼠标悬停在卡片上时&#xff0c;卡片的图片会放大&#xff0c;并且卡片的背景会变为彩色。 Code HTML <!DOCTYPE html&…

简单聊一下Oracle,MySQL,postgresql三种锁表的机制,行锁和表锁

MySQL&#xff1a; MySQL使用行级锁定和表级锁定。行级锁定允许多个会话同时写入表&#xff0c;适用于多用户、高并发和OLTP应用。表级锁定只允许一个会话一次更新表&#xff0c;适用于只读、主要读取或单用户应用。 比如mysql开启一个窗口执行 begin; update xc_county_a…

【STM32】飞控设计

【一些入门知识】 1.飞行原理 【垂直运动】 当 mg&#xff1e;F1F2F3F4&#xff0c;此时做下降加速飞行 当 mg&#xff1c;F1F2F3F4&#xff0c;此时做升高加速飞行 当 mgF1F2F3F4 &#xff0c;此时垂直上保持匀速飞行。 【偏航飞行】 ω 4 ω 2 ≠ ω 1 ω 3 就会产生水…

我的考研经历

当我写下这篇文章时&#xff0c;我已经从考研 的失败中走出来了&#xff0c;考研的整个过程都写在博客日志里面了&#xff0c;在整理并阅读考研的日志时&#xff0c;想写下一篇总结&#xff0c;也算是为了更好的吸取教训。 前期日志模板&#xff1a;时间安排的还算紧凑&#x…

git如何将本地仓库的代码提交到远程仓库

首先复制需要克隆的远程仓库的地址&#xff1a; git clone https://github.com/your-username/your-repository.git 先将远程仓库的文件拉去到本地仓库&#xff1a; git pull origin main添加指定文件 git add XXX 添加当前目录下所有未追踪&#xff08;untracked&#xf…

【启明智显分享】Model系列工业级HMI芯片:开源RISC-V+RTOS实时系统,开放!高效!

前言 「Model系列」芯片是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片&#xff0c;主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点…

C4D如何预览动画?C4D动画云渲染助力

C4D是一款功能丰富的3D设计软件&#xff0c;以其快速的预览渲染和多样的渲染插件而闻名&#xff0c;其卓越的渲染效果赢得了CG行业专业人士的广泛赞誉。尽管C4D的渲染功能十分强大&#xff0c;但对于初学者而言&#xff0c;其复杂的渲染设置可能会带来一些挑战。本文一起来看看…

最好用的邮箱管理软件推荐,邮箱管理软件哪个好?(干货篇)

在快节奏的工作与生活中&#xff0c;有效管理电子邮件成为提升个人与团队效率的关键。 面对海量信息流&#xff0c;一款好的邮箱管理软件不仅能够帮助我们高效地整理收件箱&#xff0c;还能确保重要邮件不会错过&#xff0c;同时提升通讯的便捷性和安全性。 本文将为您推荐几款…

Http协议JSON格式

1. 计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。 思考:计算机网络…

【第三篇】SpringSecurity请求流程分析

简介 本篇文章主要分析一下SpringSecurity在系统启动的时候做了那些事情、第一次请求执行的流程是什么、以及SpringSecurity的认证流程是怎么样的,主要的过滤器有哪些? SpringSecurity初始化流程 1.加载配置文件web.xml 当Web服务启动的时候,会加载我们配置的web.xml文件…

【记录与感想】CS61b-21sp project0(2048游戏)

项目概述 本项目是cs61b课程开课以来的第一个项目&#xff0c;游戏本身非常简单。它在 44 的方格网格上进行&#xff0c;每个方格可以是空的&#xff0c;也可以包含一个带有整数&#xff08;大于或等于 2 的 2 的幂&#xff09;的图块。在第一步之前&#xff0c;应用程序会将一…

Spring 进阶技巧:使用 ConditionalOnMissingBean 进行优雅的 Bean 管理

ConditionalOnMissingBean 是 Spring Framework 提供的一个条件注解之一&#xff0c;它的作用是在容器中不存在指定类型的 Bean 时&#xff0c;才会实例化被注解的 Bean。这个注解通常用于配置类或者组件类上&#xff0c;可以根据条件来动态地决定是否创建某个 Bean。 使用 Co…

Python第二语言(十四、高阶基础)

目录 1. 闭包 1.1 使用闭包注意事项 1.2 小结 2. 装饰器&#xff1a;实际上也是一种闭包&#xff1b; 2.1 装饰器的写法&#xff08;闭包写法&#xff09; &#xff1a;基础写法&#xff0c;只是解释装饰器是怎么写的&#xff1b; 2.2 装饰器的语法糖写法&#xff1a;函数…

半导体笔记汇总

半导体笔记汇总 介于导体与绝缘体之间的材质就叫做半导体。半导体器件主要分三类&#xff1a;二极管、三极管、MOS管。 一、半导体理论基础 1、导体、半导体和绝缘体 我们根据物质的导电性能强弱将物质分为导体、半导体和绝缘体。电导率与电阻率互为倒数&#xff0c;下图中…

3d模型文件格式有那些,什么区别?---模大狮模型网

3D模型文件格式有很多种&#xff0c;每种格式都有其特点和应用场景。常见的3D模型文件格式包括OBJ、FBX、STL、3DS、DAE等&#xff0c;下面将逐一介绍这些格式的区别。 1. OBJ格式&#xff1a;OBJ是一种开放的3D模型文件格式&#xff0c;可以被几乎所有的3D软件所支持。OBJ格式…