/proc 接口概述
所有系统级的同产品参数设置都保存在 /proc/sys/net/ipv4/ 目录下. 另外家需要注意的是,很多对于 ip 的内核参数设置也会对 tcp 的行为产生影响.具体请参考linux 对于 ip 参数的帮助手册. 参数通常使用一个整形值来代表布尔型,设置为 0 时通常表示 "false",对应的一个非零值则表示 ("true").
tcp_abc
(Integer; default: 0; Linux 2.6.15 to Linux 3.8)
控制在 RFC 3465 上定义的 Appropriate Byte Count (ABC), 该值是一个用于在接收到部分 ACK 情况下 缓慢地增长拥塞窗口(cwnd),RFC3465给出了ABC算法,在ABC中,使用被ACK的字节数而不是ACK的数量来作为增窗的反馈信号.可用的值有:
0 每个 ACK 增加一个 cwnd (不开启 ABC);
1 每当被ACK的数据字节数达到了一窗的大小即增加一个 cwnd ;
2 允许补偿延迟发送的 ACK,当接收到2窗大小字节数的 ack 时, 增加 2个 cwnd .
参考:https://blog.csdn.net/dog250/article/details/51348568
tcp_abort_on_overflow
(Boolean; default: disabled; since Linux 2.4)
当一个服务器进入瓶颈响应太慢或者无法进行accept时,重置连接. 这意味着如果应为突发流量导致overflow,该链接可以被恢复. 仅在你已经确定启用 listen 的服务已经无法针对接受连接的速率做进一步调优的情况下启用该配置.因为启用该配置后配置可能会误伤客户端.
tcp_adv_win_scale
(integer; default: 2; since Linux 2.4)
如果 tcp_adv_win_scale 大于 0,则使用 bytes/2^tcp_adv_win_scale 方式计算缓存开销,否则(tcp_adv_win_scale <=0>)则使用 bytes-bytes/2^(-tcp_adv_win_scale) 的公式计算.
tcp socket 的接收缓存空间是应用与内核共享的, 其中归于 tcp 维护的部分即是 TCP 的 window, 该 window 作为可接收的 window ,tcp 将其通告给对端. 剩余部分用作应用缓存,用于将网络与 调度和应用的延迟 隔离开. tcp_adv_win_scale 默认值为 2, 标识 1/4 大小的用于应用的缓存.
tcp_allowed_congestion_control
(String; default: 见文本说明; since Linux 2.4.20)
该选项用于查看和设置非特权进程的可用的拥塞控制算法(参考 TCP_CONGESTION socket 选项). 使用空格键分割列表中个元素,使用换行结束. 这里配置的列表必须是参数 tcp_available_congestion_control 中列表的子集. 该选项值列表的默认值是 "reno" 加上 tcp_congestion_control 参数中的配置值.
tcp_available_congestion_control
(String; read-only; since Linux 2.4.20)
展示已经注册的可用的拥塞控制算法列表.使用空格键分割列表中个元素,用换行结束.这是限制在 tcp_allowed_congestion_control 中可用的配置的算法集合.更多的拥塞控制算法可以通过 内核模块的方式提供和加载,这里没有提及.
tcp_congestion_control
(String; default: see text; since Linux 2.4.13)
设置用于新建连接的默认拥塞控制算法. "reno" 总是可用的, 额外的选择的则取决于对该配置. 该选项将被作为系统内核配置的一部分.
[root@CQDC ~]# cat /proc/sys/net/ipv4/tcp_allowed_congestion_control
cubic reno
[root@CQDC ~]# cat /proc/sys/net/ipv4/tcp_available_congestion_control
cubic reno
[root@CQDC ~]# cat /proc/sys/net/ipv4/tcp_congestion_control
cubic
tcp_autocorking
(Boolean; default: enabled; since Linux 3.14)
启用时,内核将尽可能多的合并小块的写操作用来减少发包的数量 (from consecutive write(2) and sendmsg(2) calls) . 当至少有一个以前的包在队列规则(Qdisc)或者设备的传送队列中时,合并生效. 应用程序依然可以自行设置socket的 TCP_CORK 选项来优化其行为使其在适当的情况下不要执行合并操作.
tcp_app_win
(integer; default: 31; since Linux 2.4)
该变量定义了 TCP 窗口中多少字节用于缓存开销.设置为非零整数时,最大 (window/2^tcp_app_win, mss) 字节将被保留为应用的缓存开销, 设置为0则表示不预留.
tcp_base_mss
(Integer; default: 512; since Linux 2.6.17)
打包分组层路径 MTU 探索(MTU probing) 机制中 search_low 参数的起始值.如果启用了MTU probing,这是连接使用的起始 MSS.
tcp_bic
(Boolean; default: disabled; Linux 2.4.27/2.6.6 to 2.6.13)
启用 BIC-TCP 拥塞控制算法. BIC-TCP 是一个仅发送方变更的算法,该算法在提供与tcp优化集成与扩展性的情况下确保大窗口下的RTT线性公平.该协议包含2套方案分别是 叠加增长(additive increase) 和 二分查找增长(binary search i