Linux 内核网络参数全解析(二)--TCP内核参数篇

 /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

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内核网络协议栈是指在操作系统内核中实现的一系列网络协议和功能。它负责处理网络数据包的收发、路由选择、协议解析等一系列操作,以实现网络通信和数据传输。 Linux内核网络协议栈包括以下几个层次: 1. 网络接口层(Network Interface Layer):负责处理物理网络接口的驱动程序和硬件设备的通信。它提供了对底层网络设备的抽象,如以太网、Wi-Fi、蓝牙等。 2. 网络层(Network Layer):负责处理IP协议相关的操作,包括IP地址分配、路由选择和IP数据包的转发等。其中主要的协议有IPv4和IPv6。 3. 传输层(Transport Layer):负责处理端到端的数据传输,主要通过TCP(传输控制协议)和UDP(用户数据报协议)来实现。TCP提供可靠的、面向连接的数据传输,而UDP提供无连接的、不可靠的数据传输。 4. 应用层(Application Layer):负责处理特定应用程序的数据传输和协议,如HTTP、FTP、DNS等。应用层协议依赖于传输层和网络层的支持,通过这些协议实现应用程序之间的通信。 此外,Linux内核还提供了一些额外的功能,如网络地址转换(NAT)、防火墙(iptables)、网络隧道(Tunneling)等,以满足网络通信和安的需求。 总之,Linux内核网络协议栈是一个复杂而庞大的系统,通过不同层次的协议和功能实现了网络通信的各个方面。它为应用程序提供了丰富的网络功能,使得Linux成为一个强大的网络操作系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值