网站首页 > 技术文章 正文
腾讯内核团队发布了一个名为 TCPA 的项目,官方表示这原是腾讯内部使用的产品,现在正式“OPEN”出来,个人、站长和企业均可以免费使用。
按照官方的说法,TCPA 需要配合其定制开发的内核来使用,其提供的 TCPA 和 BBR 测试对比报告显示,TCPA 的加速效果优于 BBR。
TCPA是腾讯内部使用的单边拥塞算法,对TCP协议栈进行了参数,代码逻辑层的优化,以达到客户端访问的快速的体验。
这个是TCPA,发送数据包和接收应答包后的处理逻辑图。一共包括9个模块。应用程序通过sendfile,write等发送的后,交由内核的数据包构建模块来处理,最终生成一个个SKB并放入发送队列中。平缓发送模块,根据拥塞控制模块所产生的发送速度/发送窗口值来平缓地将这些数据(无论是新数据,还是重传数据)发送到网络中,本身并不会决策发送的速率,只会按照给定的速度/发送窗口来执行。超时模块用来决策哪些数据包超时,并重传,最终会交给平缓发送模块来发送。Probe探测模块,是依据网络的特定需要,构造一些数据包来探测网络的质量情况。发送是交给平缓发送模块来发送,接收到的应答包,会将Probe应答包交给Probe模块来处理。收到应答包后,如果有SACK则单独处理SACK,SACK的处理逻辑比较复杂,需要知道哪些数据包被应答,哪些未被应答,需要对重传队列进行标记。并且也会根据sack中的应答来判断哪些报文丢包了,当前网络中的RTT值变化等。这里会给丢包检测模块,拥塞控制模块提供判断信息。
丢包检测模块,用来判断哪些数据包已经丢弃,比如快速重传,RACK等算法。这里只去标记丢弃的报文,具体的重传由重传包处理模块来执行。
拥塞控制算法,用来判断当前网络链接情况,并据此来决定当前发送的速度和发送窗口值。不同的拥塞算法所依赖的判断信息不同。 窗口的增减均由这里来判断。这里会依赖SACK模块,丢包检测模块,RTO超时模块,probe模块等给予关键信息。
重传数据包模块和新数据发送模块相对比较简单,将数据整理好后,交给平缓发送模块来发送。
所以,总的来说,TCPA的修改不仅仅是对拥塞算法的修改,也对收发包的整个逻辑进行了重构。对于系统已有的功能,腾讯额外还提供了可调整的参数接口,供使用。比如小表中列举了部分调整的参数:
net.core.wmem_max = 3276800
net.ipv4.tcp_fack = 0
net.ipv4.tcp_init_cwnd = 10
net.ipv4.tcp_loss_init_cwnd = 1
net.ipv4.tcp_mem = 379479 505972 758958
net.ipv4.tcp_metrics_minrtt = 0
net.ipv4.tcp_rto_max = 120
net.ipv4.tcp_rto_min = 200
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_wmem = 4096 16384 4194304
△TCPA 简介
官方表示定制的内核基于 RHEL7.4 源码而开发,那么问题来了,公告中的 "OPEN" 是什么意思呢?
阅读全文之后,笔者终于理解 OPEN 一词所代表的意义了 —— 也就是不开源的另一种说法。因为通篇公告都没提到开源,也没看到提供了源码,只是提供了二进制包的下载。
但问题是,我们都知道 RHEL 使用的是 GPL 开源许可证。既然基于 RHEL 开发,那么按照 GPL 协议,其内核是不是也应该开源?
猜你喜欢
- 2024-10-19 3分钟大幅提升CentOS 7的TCP下载性能
- 2024-10-19 Springcloud-alibaba-sentinel 学习
- 2024-10-19 Sentinel 系统自适应限流原理剖析与实战思考
- 2024-10-19 服务器为什么要用BBR加速以及安装版本的推荐
- 2024-10-19 阿里面试:说说自适应限流? 自适应控制流程图
- 2024-10-19 谷歌云新网络算法逆天了,可提高网络吞吐量2700倍
- 2024-10-19 4重高阶教程:RAID、快照、3-2-1、混合云,一篇打尽NAS数据安全
- 2024-10-19 tcp收包和发包受哪些linux配置项影响?
- 2024-10-19 谷歌的新网络算法与众不同,看上去很牛,可大大提升网速
- 2024-10-19 Cilium eBPF 带宽管理器 带宽管理软件
你 发表评论:
欢迎- 11-18软考系统分析师知识点十六:系统实现与测试
- 11-18第16篇 软件工程(四)过程管理与测试管理
- 11-18编程|实例(分书问题)了解数据结构、算法(穷举、递归、回溯)
- 11-18算法-减治法
- 11-18笑疯了!巴基斯坦首金!没有技巧全是蛮力!解说:真远啊!笑死!
- 11-18搜索算法之深度优先、广度优先、约束条件、限界函数及相应算法
- 11-18游戏中的优化指的的是什么?
- 11-18算法-分治法
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)