TCP单边优化是CDN之大忌,但又不能不说。常规单边优化使能于作为发送端的CDN服务器,但对诸如客户端上传场景,此举便使不上力。怎么办?

可在接收端修改针对上传data之ack的时间戳,以减小发送端的rtt,最终减小其TLP,RTO,RACK等timer超时时间,目标是尽可能快速触发重传。做法简述如下。

  • 当TCP发送端发送data,会做以下赋值:
    data.TSval = $now + delta
  • 当TCP接收端对data回复ack,会做以下赋值:
    ack.TSecr = data.TSval
  • 当TCP发送端收到ack,将计算瞬时iRTT:
    iRTT = $now + delta - ack.TSecr
  • TCP发送端随即用iRTT计算sRTT以及各timer超时时间。

从以上过程可知,若增加ack.TSecr,则会减少iRTT,至于如何增加ack.TSecr以及增加多少,就是作为接收端的服务器上要做的。

为确保ack.TSecr不会超过发送端$now + delta,接收端需要知道实的sRTT,对于单向传输,rcv_rtt并不可信,需接收端主动发送携SYN标志的报文进行探测,依据如下:

RFC 5961 4.2: If the SYN bit is set, irrespective of the sequence number, TCP MUST send an ACK (also referred to as challenge ACK) to the remote peer.

记接收端所获RTT为rRTT,可按如下例子(1/4可调)计算并赋值:

ack.TSecr = data.TSval + 1/4*rRTT

如此便可成事。

此举对发送端的影响如下:

  • 发送端运行Reno/BIC/CUBIC,对cc无影响,仅优化TLP/RTO/RACK。
  • 发送端运行BBR,除优化TLP/RTO/RACK外,还可取消ProbeRTT避免inflight降为4,亦可影响minRTT采集时机,风险在于对cwnd影响属负向,当心cwnd limited。
  • 发送端运行其它cc,未知。

对于Reno族(Reno/BIC/CUBIC),AIMD并不直接使用RTT数值,因此降低RTT对AI过程的cwnd无影响,但对于BBR,却有有趣的idea。

BBR(至少是Linux实现)并不以RTT参与计算delivery rate,而是自行打点,故改变RTT对采集delivery rate无影响,同时BBR采用minRTT计算BDP进而导出cwnd,故改变RTT可改变cwnd,前面描述了减少RTT则何如,却担心减少RTT会压缩cwnd,何不增大RTT,仅在两次或多次10s周期减小一次RTT帮发送端采集一次minRTT,此举既不影响发送端pacing rate计算,亦可在大多数情况下增其cwnd,不失为促进发送端激进传输的好方略。

此事既成,裂开一个新话题,稍微解释TCP时间戳的形式。

TCP时间戳使用各自独立的相对时间,且必要时加入对端并不知晓的delta,原因如下:

  • 两端时间无需同步,各自即可计算RTT。
  • 随机delta可避免对端猜测本端时间。

第一点明显摆脱了同步约束,着重解释第二点。

若直接取开机时间作时间戳,即便对端知道又如何?如何:

  • 本机多久没有重启会暴露,期间若有内核安全更新,对端确知本机未patch。
  • 本机角色会暴露,若开机180天,大概服务器,若不足一天,则为PC,手机亦可猜。
  • 若为PC or手机,对端可探测主人生活习惯,譬如在午夜,在清晨。
  • 哦…

so,针对每连接初始化不同的随机delta,目标是不和陌生人说话。

浙江温州皮鞋湿,下雨进水不会胖。

修改TCP Timestamp优化传输性能相关推荐

  1. 如何更改计算机性能,如何修改注册表优化电脑性能 修改注册表优化电脑性能方法...

    注册表相信电脑爱好者都不会陌生,通过 修改注册表可以实现优化各种电脑技能 ,在电脑安全设置,系统稳定性方面起着很重要的作用,但由于注册均为表值,因此很多电脑爱好者对于注册表都不赶去触及,害怕因此而影响 ...

  2. 注册表计算机性能设置怎么应用,如何修改注册表优化电脑性能 修改注册表优化电脑性能方法...

    注册表相信电脑爱好者都不会陌生,通过 修改注册表可以实现优化各种电脑技能 ,在电脑安全设置,系统稳定性方面起着很重要的作用,但由于注册均为表值,因此很多电脑爱好者对于注册表都不赶去触及,害怕因此而影响 ...

  3. TCP接收端优化吞吐性能的把戏

    惯常TCP吞吐优化均在发送端激进传输,比如一个报文发两遍,盲目扩大cwnd此类.将这种动作称作"猛推",就必然存在是"猛拉",即在接收端做一些把戏. 还有一天放 ...

  4. 通过修改注册表优化win7性能

    ;加速APP [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem] "ConfigFileAllocSize&qu ...

  5. openEuler A-Ops通用场景TCP传输性能劣化检测工具开发报告

    --开源软件开发导论项目实践总结报告 摘要:本项目是应用openEuler A-Ops项目中的gala-gopher组件而开发的通用场景下TCP传输性能劣化检测工具,主要功能是通过对gala-goph ...

  6. 【博客523】k8s修改pod的内核参数以优化服务网络性能

    k8s修改pod的内核参数以优化服务网络性能 1.面对高并发场景: TIME_WAIT 连接复用 如果短连接并发量较高,它所在 netns 中 TIME_WAIT 状态的连接就比较多,而 TIME_W ...

  7. 优化传输文件的性能- -零拷贝

    优化传输文件的性能- -零拷贝 文章目录 优化传输文件的性能- -零拷贝 一.为什么要有 DMA 技术? 二.传统的文件传输有多糟糕? 三.如何优化文件传输的性能? 四.如何实现零拷贝? mmap + ...

  8. Windows下tcp参数优化

    Windows系统下的TCP参数优化 2013-04-25      0 个评论       作者:最初的幸福ever 收藏     我要投稿 Windows系统下的TCP参数优化   TCP连接的状 ...

  9. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(三) Linux 软中断

    [Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(三) Linux 软中断 [1]相关概念 [1.1]中断 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力:为了减少 ...

最新文章

  1. 独家|OpenCV1.9 如何利用OpenCV的parallel_for_并行化代码(附代码)
  2. 428 Setup MySQL + - 改
  3. 杨彪 | 一次线上游戏卡死的解决历程(文末赠书福利)
  4. [Hbase]Hbase章2 Hbase读写过程解析
  5. ABP理论学习之仓储
  6. java11和13_Java1113
  7. 对一个正整数n,求出n!中末尾0的个数。
  8. Java多线程教学演示系统_Java多线程演示样例(模拟通话,sleep,join,yield,wait,notify,Semaphore)...
  9. 为什么数学叫“数学”?
  10. OpenGL是什么?Win10+VS2019下搭建glfw+glad开发环境
  11. 拼多多和酷家乐面试经历总结(已拿offer)
  12. 计算机专业社会调研怎么写,计算机专业调研论文提纲格式 计算机专业调研论文提纲怎么写...
  13. SqlServer数据库性能优化详解
  14. 输入一个整数求其位数和各个位数之和
  15. Hair-Gan论文翻译
  16. 为交付Semi卡车做准备 特斯拉招募技术服务人员
  17. 企查查企业详情爬虫(自动模拟登录企业详情页法律风险爬取)
  18. 关于(object sender, EventArgs e)
  19. python使用pyechart快速绘制各类可视化表格-包括带平均线的折线图、雷达图等等,超实用!(不断更新)
  20. centos 拨号上网

热门文章

  1. Python之禅:优雅地编程
  2. 任何的Linux开发板+ADB+fastboot驱动-----真实有效!
  3. 物联网开发笔记(68)- 使用Micropython开发ESP32开发板之使用官方工具esptool烧录
  4. [附源码]java毕业设计宠物店管理系统
  5. C语言冒泡排序的优化(图解+代码)
  6. Vue+Axios+ElementUI 远程搜索问题(返回promise对象问题)
  7. 数学建模学习视频及资料集(2022.08.10)
  8. openssl之EVP系列之5---EVP_Encrypt系列函数具体解释(二)
  9. MySQL练习题 答案和解析
  10. 动态化超详细完善的Excel动态导入Mysql,支持导入不同表,集成后只需配置就可以实现动态导入excel到数据库