内核-syn-ack RTO修改


尝试修改SYN ACK 包的重传时间修改,刚开始 使用

ip route list
ip route change ... rto_min 20ms
ss -ite

使用命令 ss -ite 发现RTO 从200+ ms 降到30ms 等,说明配置有生效,网上说的RTO_MIN 200ms 修改生效

问题在于,如果仅仅是通过这种不科学的验证方式 无法确定syn ack 的丢失重传时间,经过验证 syn ack 的 丢失重传时间 为 TCP_TIMEOUT_INIT 1秒 而不是 TCP_RTO_MIN

TCP_TIMEOUT_INIT

搜索与之相关的函数

tcp_schedule_loss_probe 此函数为尾部丢失定时探测 不是syn ackif (tp->srtt_us) {timeout = usecs_to_jiffies(tp->srtt_us >> 2);if (tp->packets_out == 1)timeout += TCP_RTO_MIN;elsetimeout += TCP_TIMEOUT_MIN;} else {timeout = TCP_TIMEOUT_INIT;}tcp_timeout_init
修改 返回的为配置值

tcp_connect_init 作为客户端对外建联

tcp_connect_request 作为服务端 接收客户端建联

     if (!want_cookie)inet_csk_reqsk_queue_hash_add(sk, req,tcp_timeout_init((struct sock *)req)); //af_ops->send_synack(sk, dst, &fl, req, &foc,!want_cookie ? TCP_SYNACK_NORMAL :TCP_SYNACK_COOKIE);

在实际测试过程中 配置值 需要乘以10 倍才是真实的超时重传值。可能与最小tick 间隔10ms 有关吧

测试工具:

packet drill 、或者使用 raw socket 封装的发包工具

ip route 修改的是路由缓存中的值

static inline u32 tcp_rto_min(struct sock *sk)
{const struct dst_entry *dst = __sk_dst_get(sk);u32 rto_min = TCP_RTO_MIN;if (dst && dst_metric_locked(dst, RTAX_RTO_MIN))rto_min = dst_metric_rtt(dst, RTAX_RTO_MIN);return rto_min;
}

内核-syn-ack RTO修改相关推荐

  1. Linux 防止cc syn ack 攻击

    三次握手的过程及相关概念 TCP/IP协议使用三次握手来建立连接,过程如下: 1.第一次握手,客户端发送数据包syn到服务器,并进入SYN_SEND状态,等待回复 2.第二次握手,服务器发送数据报sy ...

  2. linux TCP连接失败(不回复SYN,ACK)问题分析

    问题现象 在某一台服务器无法访问另一台服务器的https服务,telnet检测端口发现端口无法连接: [root@020113 ~]# telnet 192.168.5.27 443 Trying 1 ...

  3. Linux accept tcp,Linux TCP accept without SYN|ACK

    问题 I'm trying to write a TCP transparent proxy to run on Linux. I want to, upon receipt of an incomi ...

  4. TCP: SYN ACK FIN RST PSH URG 详解【转】

    TCP: SYN ACK FIN RST PSH URG 详解 ============================================================= TCP的三次 ...

  5. TCP标志位syn,ack,fin以及序列号(seq),响应号(ack)

    一,三次握手 TCP使用三次握手建立一个连接: 第一次握手:客户端发送SYN包至服务器,并进入SYN_SENT状态,等待服务器确认 第二次握手:服务器收到客户端的SYN包,发送一个ACK,同时发送自己 ...

  6. 网络篇之三次握手(SYN+ACK)

    网络篇之socket 网络篇之bind 网络篇之listen 网络篇之accept 网络篇之connect 一 服务端发送SYN+ACK  客户端调用connect发起连接请求时,发送了第一次握手(S ...

  7. TCP SYN,ACK 详解

    TCP协议::: 三次握手: 握手过程的第一个段的代码位设置为SYN,序列号为x,表示开始一次握手.接收方收到这个段后,向发送者回发一个段.代码位设置为SYN和ACK,序列号设置为y,确认序列号设置为 ...

  8. JZ2440 v3.0 linux-3.4.2 busybox1.20.0内核 和 文件系统移植 修改分区大小 yaffs2文件系统补丁 开源资源查找

    文章目录 零.平台 + 软件版本 + 烧写 平台 和 版本 烧写 一.编译系统的一堆命令 1. 编译uboot 2. 编译内核 3. 文件系统 yaffs2 额外的,自启动脚本配置 + 自动配置网卡 ...

  9. TCP SYN ACK RST UTG PSH FIN

    TCP连接:SYN ACK RST UTG PSH FIN 三次握手:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一 ...

最新文章

  1. 杭州内推 | 阿里达摩院机器智能技术团队招聘多模态方向研究型实习生
  2. 《Too Much Heaven》
  3. Unity——用UnityEditor拷贝FBX中的AnimationClip
  4. 【牛客 - 368B】选点(dfs序,LIS 或 dfs序 + 树状数组 + 离散化,树状数组求LIS的方法)
  5. 洛谷 P2097 资料分发1
  6. Java的Constructor(构造器)的理解
  7. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)
  8. 1至100之和用c语言表达方式,C语言菜鸟基础教程之求1到100的和
  9. pytorch l2正则化_理解机器学习中的 L2 正则化
  10. C++虚函数指针虚函数表
  11. 数据结构问题解决2.1——单链表存储结构定义详细解释,struct LNode* next解释,为啥next定义成指针类型
  12. c语言使用openssl库进行RSA加解密,并使用OAEP SHA256填充方式
  13. 字节跳动推出在线医疗App“小荷” 品牌域名或要另辟蹊径?
  14. 工作笔记:Android高德定位使用说明
  15. 在docker里跑gpgpusim
  16. 2014年计算机考研,2014年计算机考研大纲
  17. c语言程序中复合句用什么表示,c语言程序设计(包云)c第1章概述
  18. 华为机试java_华为java机试面试题目大全
  19. java 静态分析_静态代码分析与代码质量安全
  20. 当我们遭遇2038年1月19日该怎么办?

热门文章

  1. linux命令应用之一
  2. PLSQL_解析过程及硬解析和软解析的区别(案例)
  3. Zend SDK学习-1
  4. winform运行时如何接受参数?(示例)
  5. 设计模式(19)-Observer Pattern
  6. CCF201803-1 跳一跳(序列处理)
  7. Java™ 教程(Collection接口)
  8. 软件工程综合实践阶段小结(2)
  9. 【荐】如何规划 Nginx 网站目录的权限(用户,用户组,ssh,sftp)
  10. 解决 WIn7 启动时“你有等待写入光盘的文件”