//linux-5.10.x\net\ipv4\sysctl_net_ipv4.c
//与IPv4网络配置参数相关的结构体,每个结构体代表一个配置项
static struct ctl_table ipv4_net_table[] = {
{
.procname = "icmp_echo_ignore_all", //该配置项用于控制系统是否忽略所有的ICMP回显请求
.data = &init_net.ipv4.sysctl_icmp_echo_ignore_all,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "icmp_echo_ignore_broadcasts", //该配置项用于控制系统是否忽略广播类型的ICMP回显请求
.data = &init_net.ipv4.sysctl_icmp_echo_ignore_broadcasts,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "icmp_ignore_bogus_error_responses", //该配置项用于控制系统是否忽略来自不可信源的错误类型的ICMP响应
.data = &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "icmp_errors_use_inbound_ifaddr", //该配置项用于确定系统在发送ICMP错误报文时使用的源地址
.data = &init_net.ipv4.sysctl_icmp_errors_use_inbound_ifaddr,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "icmp_ratelimit", //ICMP速率限制。该配置项用于限制系统可以发送的ICMP消息的速率
.data = &init_net.ipv4.sysctl_icmp_ratelimit,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_ms_jiffies,
},
{
.procname = "icmp_ratemask", //ICMP速率限制掩码。该配置项用于确定哪些ICMP消息受到速率限制的影响
.data = &init_net.ipv4.sysctl_icmp_ratemask,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "ping_group_range", //该配置项用于设置可以使用ping命令的用户组范围
.data = &init_net.ipv4.ping_group_range.range,//存储了ping组范围的起始和结束组ID
.maxlen = sizeof(gid_t)*2,
.mode = 0644,
.proc_handler = ipv4_ping_group_range,
},
#ifdef CONFIG_NET_L3_MASTER_DEV
{
.procname = "raw_l3mdev_accept", //表示是否接受使用 L3 主设备的原始套接字报文
.data = &init_net.ipv4.sysctl_raw_l3mdev_accept,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO, //附加参数,表示最小值为 0
.extra2 = SYSCTL_ONE, //附加参数,表示最大值为 1
},
#endif
{
.procname = "tcp_ecn", //表示是否启用 TCP ECN(Explicit Congestion Notification)
.data = &init_net.ipv4.sysctl_tcp_ecn,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_ecn_fallback", //表示是否启用 TCP ECN 回退
.data = &init_net.ipv4.sysctl_tcp_ecn_fallback,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "ip_dynaddr", //该配置项用于控制系统是否允许动态分配IP地址
.data = &init_net.ipv4.sysctl_ip_dynaddr,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "ip_early_demux", //该配置项用于控制系统是否在早期阶段解析IP报文
.data = &init_net.ipv4.sysctl_ip_early_demux,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "udp_early_demux", //该配置项用于控制系统是否在早期阶段解析UDP报文
.data = &init_net.ipv4.sysctl_udp_early_demux,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_udp_early_demux
},
{
.procname = "tcp_early_demux", //该配置项用于控制系统是否在早期阶段解析TCP报文
.data = &init_net.ipv4.sysctl_tcp_early_demux,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_tcp_early_demux
},
{
.procname = "nexthop_compat_mode", //该配置项用于控制系统是否启用下一跳兼容模式
.data = &init_net.ipv4.sysctl_nexthop_compat_mode,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO, //extra1和extra2参数指定该配置项的最小和最大值。在此情况下,允许的值为0和1
.extra2 = SYSCTL_ONE,
},
{
.procname = "ip_default_ttl", //该配置项用于设置IP报文的默认生存时间
.data = &init_net.ipv4.sysctl_ip_default_ttl,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = &ip_ttl_min, //extra1和extra2参数指定该配置项的最小和最大值
.extra2 = &ip_ttl_max,
},
{
.procname = "ip_local_port_range", //该配置项用于设置本地端口的有效范围
.maxlen = sizeof(init_net.ipv4.ip_local_ports.range),
.data = &init_net.ipv4.ip_local_ports.range,
.mode = 0644,
.proc_handler = ipv4_local_port_range,
},
{
.procname = "ip_local_reserved_ports", //该配置项用于设置保留的本地端口,这些端口不会被普通应用程序使用
.data = &init_net.ipv4.sysctl_local_reserved_ports,
.maxlen = 65536,
.mode = 0644,
.proc_handler = proc_do_large_bitmap,
},
{
.procname = "ip_no_pmtu_disc", //该配置项用于控制系统是否禁用路径MTU发现功能
.data = &init_net.ipv4.sysctl_ip_no_pmtu_disc,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "ip_forward_use_pmtu", //该配置项用于控制系统是否在IP转发时启用路径MTU发现功能
.data = &init_net.ipv4.sysctl_ip_fwd_use_pmtu,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "ip_forward_update_priority", //该配置项用于设置IP转发路由的更新优先级
.data = &init_net.ipv4.sysctl_ip_fwd_update_priority,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = ipv4_fwd_update_priority,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "ip_nonlocal_bind", //该配置项用于控制是否允许应用程序将套接字绑定到非本地地址
.data = &init_net.ipv4.sysctl_ip_nonlocal_bind,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "ip_autobind_reuse", //该配置项用于控制是否允许内核在套接字关闭后立即重用相同的本地地址和端口进行绑定
.data = &init_net.ipv4.sysctl_ip_autobind_reuse,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "fwmark_reflect", //该配置项用于控制是否允许内核根据防火墙标记来映射响应的链接层标记字段
.data = &init_net.ipv4.sysctl_fwmark_reflect,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "tcp_fwmark_accept", //该配置项用于控制是否允许内核在接收到带有防火墙标记的TCP报文时接受连接请求
.data = &init_net.ipv4.sysctl_tcp_fwmark_accept,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
#ifdef CONFIG_NET_L3_MASTER_DEV
{
.procname = "tcp_l3mdev_accept", //用于控制是否接受带有L3主设备标记的TCP连接请求
.data = &init_net.ipv4.sysctl_tcp_l3mdev_accept,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
#endif
{
.procname = "tcp_mtu_probing", //用于启用或禁用TCP的MTU探测功能
.data = &init_net.ipv4.sysctl_tcp_mtu_probing,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "tcp_base_mss", //用于设置TCP初始最大段长度(MSS)的基本值
.data = &init_net.ipv4.sysctl_tcp_base_mss,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "tcp_min_snd_mss", //用于设置TCP发送数据包的最小MSS值
.data = &init_net.ipv4.sysctl_tcp_min_snd_mss,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = &tcp_min_snd_mss_min,
.extra2 = &tcp_min_snd_mss_max,
},
{
.procname = "tcp_mtu_probe_floor", //用于设置TCP MTU探测期间发送数据包的最小MSS值
.data = &init_net.ipv4.sysctl_tcp_mtu_probe_floor,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = &tcp_min_snd_mss_min,
.extra2 = &tcp_min_snd_mss_max,
},
{
.procname = "tcp_probe_threshold", //用于设置TCP探测的阈值(单位:字节)
.data = &init_net.ipv4.sysctl_tcp_probe_threshold,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "tcp_probe_interval", //用于设置TCP探测的间隔时间(单位:秒)
.data = &init_net.ipv4.sysctl_tcp_probe_interval,
.maxlen = sizeof(u32),
.mode = 0644,
.proc_handler = proc_douintvec_minmax,
.extra2 = &u32_max_div_HZ,
},
{
.procname = "igmp_link_local_mcast_reports", //用于控制是否发送链路本地组播报告
.data = &init_net.ipv4.sysctl_igmp_llm_reports,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "igmp_max_memberships", //用于设置允许的最大IGMP组播成员关系数量
.data = &init_net.ipv4.sysctl_igmp_max_memberships,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "igmp_max_msf", //用于设置IGMP Multicast Source Filter (MSF) 的最大条目数
.data = &init_net.ipv4.sysctl_igmp_max_msf,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
#ifdef CONFIG_IP_MULTICAST
{
.procname = "igmp_qrv", //用于设置IGMP查询响应的版本
.data = &init_net.ipv4.sysctl_igmp_qrv,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ONE
},
#endif
{
.procname = "tcp_congestion_control", //用于设置当前使用的TCP拥塞控制算法
.data = &init_net.ipv4.tcp_congestion_control,
.mode = 0644,
.maxlen = TCP_CA_NAME_MAX,
.proc_handler = proc_tcp_congestion_control,
},
{
.procname = "tcp_available_congestion_control", //用于显示系统支持的所有TCP拥塞控制算法
.maxlen = TCP_CA_BUF_MAX,
.mode = 0444,
.proc_handler = proc_tcp_available_congestion_control,
},
{
.procname = "tcp_allowed_congestion_control", //用于设置当前可以使用的TCP拥塞控制算法
.maxlen = TCP_CA_BUF_MAX,
.mode = 0644,
.proc_handler = proc_allowed_congestion_control,
},
{
.procname = "tcp_keepalive_time", //用于设置TCP保活定时器发送保活报文的时间间隔
.data = &init_net.ipv4.sysctl_tcp_keepalive_time,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_jiffies,
},
{
.procname = "tcp_keepalive_probes", //用于设置TCP保活定时器发送保活探测报文的次数
.data = &init_net.ipv4.sysctl_tcp_keepalive_probes,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_keepalive_intvl", //用于设置TCP保活定时器发送保活探测报文的间隔时间
.data = &init_net.ipv4.sysctl_tcp_keepalive_intvl,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_jiffies,
},
{
.procname = "tcp_syn_retries", //用于设置TCP连接建立过程中,发送SYN报文的重试次数,用于控制尝试建立连接时的最大重试次数
.data = &init_net.ipv4.sysctl_tcp_syn_retries,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = &tcp_syn_retries_min,
.extra2 = &tcp_syn_retries_max
},
{
.procname = "tcp_synack_retries", //用于设置TCP连接建立过程中,发送SYN-ACK报文的重试次数
.data = &init_net.ipv4.sysctl_tcp_synack_retries,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
#ifdef CONFIG_SYN_COOKIES
{
.procname = "tcp_syncookies", //用于启用或禁用TCP SYN cookies机制,以防止TCP SYN flood攻击
.data = &init_net.ipv4.sysctl_tcp_syncookies,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
#endif
{
.procname = "tcp_reordering", //用于设置TCP数据包接收端进行重排序处理的阈值
.data = &init_net.ipv4.sysctl_tcp_reordering,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_retries1", //用于设置TCP连接建立过程中,发送SYN报文时的重试次数。它包括了tcp_syn_retries的次数和其他一些重试次数
.data = &init_net.ipv4.sysctl_tcp_retries1,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra2 = &tcp_retr1_max
},
{
.procname = "tcp_retries2", //用于设置TCP连接建立过程中,收到对方的SYN-ACK报文后的重试次数。它包括了tcp_synack_retries的次数和其他一些重试次数
.data = &init_net.ipv4.sysctl_tcp_retries2,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_orphan_retries", //TCP孤儿连接重试次数。用于设置操作系统在关闭TCP连接之前等待未确认数据的时间和重试次数
.data = &init_net.ipv4.sysctl_tcp_orphan_retries,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_fin_timeout", //TCP连接终止超时时间。用于设置服务器在收到客户端发来的FIN包(结束连接请求)后,等待确认的超时时间。
.data = &init_net.ipv4.sysctl_tcp_fin_timeout,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_jiffies,
},
{
.procname = "tcp_notsent_lowat", //TCP发送缓冲区低水位标记。用于设置TCP发送缓冲区低水位标记,当发送缓冲区的剩余空间小于该值时,阻塞调用者
.data = &init_net.ipv4.sysctl_tcp_notsent_lowat,
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_douintvec,
},
{
.procname = "tcp_tw_reuse", //用于启用或禁用TCP TIME_WAIT状态的重用,以减少处于TIME_WAIT状态的连接数
.data = &init_net.ipv4.sysctl_tcp_tw_reuse,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = &two,
},
{
.procname = "tcp_max_tw_buckets", //用于设置操作系统在TIME_WAIT状态保持的TCP连接最大数量
.data = &init_net.ipv4.tcp_death_row.sysctl_max_tw_buckets,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_max_syn_backlog", //用于设置TCP SYN队列的最大长度,即同时等待被接受的半连接(SYN_RECV状态)的最大数量
.data = &init_net.ipv4.sysctl_max_syn_backlog,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_fastopen", //用于启用或禁用TCP快速打开(TCP Fast Open)机制,以加速TCP连接的建立过程
.data = &init_net.ipv4.sysctl_tcp_fastopen,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "tcp_fastopen_key", //用于设置TCP快速打开连接的密钥
.mode = 0600,
.data = &init_net.ipv4.sysctl_tcp_fastopen,
/* maxlen to print the list of keys in hex (*2), with dashes
* separating doublewords and a comma in between keys.
* 最大长度用于以十六进制(*2)打印密钥列表,双字之间用破折号分隔,每个密钥之间用逗号分隔
*/
.maxlen = ((TCP_FASTOPEN_KEY_LENGTH *
2 * TCP_FASTOPEN_KEY_MAX) +
(TCP_FASTOPEN_KEY_MAX * 5)),
.proc_handler = proc_tcp_fastopen_key,
},
{
.procname = "tcp_fastopen_blackhole_timeout_sec", //用于设置当TCP快速打开连接遇到黑洞情况时的超时时间(秒)
.data = &init_net.ipv4.sysctl_tcp_fastopen_blackhole_timeout,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_tfo_blackhole_detect_timeout,
.extra1 = SYSCTL_ZERO,
},
#ifdef CONFIG_IP_ROUTE_MULTIPATH
{
.procname = "fib_multipath_use_neigh", //用于控制多路径路由是否使用邻居信息
.data = &init_net.ipv4.sysctl_fib_multipath_use_neigh,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "fib_multipath_hash_policy", //用于设置多路径路由的哈希策略
.data = &init_net.ipv4.sysctl_fib_multipath_hash_policy,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_fib_multipath_hash_policy,
.extra1 = SYSCTL_ZERO,
.extra2 = &two,
},
#endif
{
.procname = "ip_unprivileged_port_start", //用于设置非特权端口的起始值
.maxlen = sizeof(int),
.data = &init_net.ipv4.sysctl_ip_prot_sock,
.mode = 0644,
.proc_handler = ipv4_privileged_ports,
},
#ifdef CONFIG_NET_L3_MASTER_DEV
{
.procname = "udp_l3mdev_accept", //用于控制UDP是否接受L3主设备信息
.data = &init_net.ipv4.sysctl_udp_l3mdev_accept,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
#endif
{ //使用SACK机制后,接收方可以精确地向发送方指示哪些报文段已经成功接收,哪些是失序的,以及需要重传的范围
.procname = "tcp_sack", //用于控制是否启用TCP选择性确认
.data = &init_net.ipv4.sysctl_tcp_sack,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{ //使用一个指数来扩大窗口的大小,允许将窗口大小扩大到2^n倍,其中n是窗口扩大因子
.procname = "tcp_window_scaling", //用于控制是否启用TCP窗口扩大因子
.data = &init_net.ipv4.sysctl_tcp_window_scaling,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_timestamps", //控制是否启用TCP时间戳选项
.data = &init_net.ipv4.sysctl_tcp_timestamps,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_early_retrans", //控制TCP的早期重传机制和参数
.data = &init_net.ipv4.sysctl_tcp_early_retrans,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = &four,
},
{
.procname = "tcp_recovery", //用于控制TCP的拥塞恢复算法和参数
.data = &init_net.ipv4.sysctl_tcp_recovery,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "tcp_thin_linear_timeouts", //用于控制TCP是否使用细线性超时机制
.data = &init_net.ipv4.sysctl_tcp_thin_linear_timeouts,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_slow_start_after_idle", //用于控制TCP是否在空闲后进行慢启动
.data = &init_net.ipv4.sysctl_tcp_slow_start_after_idle,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_retrans_collapse", //用于控制TCP是否启用重传合并机制
.data = &init_net.ipv4.sysctl_tcp_retrans_collapse,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_stdurg", //用于控制TCP是否启用紧急标志支持
.data = &init_net.ipv4.sysctl_tcp_stdurg,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_rfc1337", //用于控制TCP是否启用RFC 1337规范中的端口号随机化
.data = &init_net.ipv4.sysctl_tcp_rfc1337,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_abort_on_overflow", //用于控制TCP是否在队列溢出时终止连接
.data = &init_net.ipv4.sysctl_tcp_abort_on_overflow,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_fack", //用于控制TCP是否启用快速ACK(Fast ACK)算法
.data = &init_net.ipv4.sysctl_tcp_fack,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_max_reordering", //用于控制TCP允许的最大报文乱序数
.data = &init_net.ipv4.sysctl_tcp_max_reordering,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_dsack", //启用或禁用DSACK(Duplication Selective Acknowledgment,重复选择性确认)机制,该机制用于处理冗余的ACK报文段
.data = &init_net.ipv4.sysctl_tcp_dsack,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_app_win", //设置TCP应用层窗口大小,以限制数据发送速率
.data = &init_net.ipv4.sysctl_tcp_app_win,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_adv_win_scale", //设置TCP高级窗口扩展因子的大小,用于支持更大的窗口大小
.data = &init_net.ipv4.sysctl_tcp_adv_win_scale,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = &tcp_adv_win_scale_min,
.extra2 = &tcp_adv_win_scale_max,
},
{
.procname = "tcp_frto", //启用或禁用F-RTO(Forward RTO-Recovery)算法,该算法用于提高拥塞控制的性能
.data = &init_net.ipv4.sysctl_tcp_frto,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_no_metrics_save", //控制是否保存TCP连接的性能指标
.data = &init_net.ipv4.sysctl_tcp_nometrics_save,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "tcp_no_ssthresh_metrics_save", //控制是否保存无拥塞不退避时的拥塞窗口阈值
.data = &init_net.ipv4.sysctl_tcp_no_ssthresh_metrics_save,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "tcp_moderate_rcvbuf", //启用或禁用中等接收缓冲区大小策略
.data = &init_net.ipv4.sysctl_tcp_moderate_rcvbuf,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "tcp_tso_win_divisor", //设置TCP TSO(TCP Segmentation Offload)窗口除数因子
.data = &init_net.ipv4.sysctl_tcp_tso_win_divisor,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.procname = "tcp_workaround_signed_windows", //启用或禁用修复有符号窗口问题的机制
.data = &init_net.ipv4.sysctl_tcp_workaround_signed_windows,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_limit_output_bytes", //设置TCP发送缓冲区的最大字节数限制
.data = &init_net.ipv4.sysctl_tcp_limit_output_bytes,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_challenge_ack_limit", //TCP挑战ACK限制,用于设置TCP连接在收到ACK时的限制
.data = &init_net.ipv4.sysctl_tcp_challenge_ack_limit,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
{
.procname = "tcp_min_tso_segs", //TCP最小TSO(TCP Segmentation Offload)分段数,用于设置允许使用TSO的最小分段数
.data = &init_net.ipv4.sysctl_tcp_min_tso_segs,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ONE,
.extra2 = &gso_max_segs,
},
{
.procname = "tcp_min_rtt_wlen", //TCP最小往返时间窗长,用于设置TCP计算最小往返时间所使用的窗口长度
.data = &init_net.ipv4.sysctl_tcp_min_rtt_wlen,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = &one_day_secs
},
{
.procname = "tcp_autocorking", //TCP自动短暂堵塞,用于启用或禁用TCP自动进行短暂堵塞的机制
.data = &init_net.ipv4.sysctl_tcp_autocorking,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "tcp_invalid_ratelimit", //TCP无效速率限制,用于设置TCP无效数据包的速率限制
.data = &init_net.ipv4.sysctl_tcp_invalid_ratelimit,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_ms_jiffies,
},
{
.procname = "tcp_pacing_ss_ratio", //TCP pacing慢启动比率,用于设置TCP pacing在慢启动阶段的比率
.data = &init_net.ipv4.sysctl_tcp_pacing_ss_ratio,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = &thousand,
},
{
.procname = "tcp_pacing_ca_ratio", //TCP pacing拥塞避免比率,用于设置TCP pacing在拥塞避免阶段的比率
.data = &init_net.ipv4.sysctl_tcp_pacing_ca_ratio,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = &thousand,
},
{
.procname = "tcp_wmem", //用于调整TCP连接的发送缓冲区大小
.data = &init_net.ipv4.sysctl_tcp_wmem,
.maxlen = sizeof(init_net.ipv4.sysctl_tcp_wmem),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ONE,
},
{
.procname = "tcp_rmem", //用于调整TCP连接的接收缓冲区大小
.data = &init_net.ipv4.sysctl_tcp_rmem,
.maxlen = sizeof(init_net.ipv4.sysctl_tcp_rmem),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ONE,
},
{
.procname = "tcp_comp_sack_delay_ns", //用于设置TCP SACK延迟压缩的时间间隔
.data = &init_net.ipv4.sysctl_tcp_comp_sack_delay_ns,
.maxlen = sizeof(unsigned long),
.mode = 0644,
.proc_handler = proc_doulongvec_minmax,
},
{
.procname = "tcp_comp_sack_slack_ns", //用于设置TCP SACK松弛度的时间间隔
.data = &init_net.ipv4.sysctl_tcp_comp_sack_slack_ns,
.maxlen = sizeof(unsigned long),
.mode = 0644,
.proc_handler = proc_doulongvec_minmax,
},
{
.procname = "tcp_comp_sack_nr", //用于设置TCP SACK压缩的数量
.data = &init_net.ipv4.sysctl_tcp_comp_sack_nr,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = &comp_sack_nr_max,
},
{
.procname = "tcp_reflect_tos", //用于设置TCP反射的类型服务质量
.data = &init_net.ipv4.sysctl_tcp_reflect_tos,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "udp_rmem_min", //用于设置UDP接收缓冲区的最小大小
.data = &init_net.ipv4.sysctl_udp_rmem_min,
.maxlen = sizeof(init_net.ipv4.sysctl_udp_rmem_min),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ONE
},
{
.procname = "udp_wmem_min", //用于设置UDP发送缓冲区的最小大小
.data = &init_net.ipv4.sysctl_udp_wmem_min,
.maxlen = sizeof(init_net.ipv4.sysctl_udp_wmem_min),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ONE
},
{ }
};
linux内核结构体-注释详解:struct ctl_table ipv4_net_table[]
于 2023-07-11 16:25:22 首次发布