[转]proc 文件系统调节参数介绍
/proc/net/*
snmp文件
Ip: ip项
Forwarding : 是否开启ip_forward,1开启,2关闭
DefaultTTL : IP默认ttl.
InReceives : IP协议处理的数据包.
InHdrErrors : IP头错误而丢弃的数据包.
InAddrErrors : IP地址没有找到路由而丢弃的包.
ForwDatagrams : IP转发的数据包个数
InUnknownProtos : IP头中的协议未知的数据包个数
InDiscards : IP层中丢弃的数据包,由于没有内存等原因引起.
InDelivers : IP层向上层传输层递交的数据包
OutRequests : IP层向外发送数据包请求的个数,这个包最后不一定真发送出去了.
OutDiscards : IP层向外发送数据时由于一些错误而丢弃的数据包.
OutNoRoutes : IP层发送数据时没有找到路由的数据包个数
ReasmTimeout : IP碎片队列超时次数
ReasmReqds : IP碎片重组包数
ReasmOKs : IP碎片重组成功次数
ReasmFails : IP碎片重组失败次数
FragOKs : IP分片成功次数
FragFails : IP分片失败次数
FragCreates : IP分片发送个数
icmp :icmp项
InMsgs : 总共接收的icmp包个数
InErrors : 错误的icmp包个数
InDestUnreachs : 接收的icmp目的不可达包个数
InTimeExcds : 接收的icmp超时包的个数
InParmProbs : 接收的icmp参数错误包的个数
InSrcQuenchs : 接收的icmp源抑制包的个数
InRedirects : 接收的icmp重定向包的个数
InEchos : 接收的icmp回显请求包数量
InEchoReps : 接收的icmp回显应答包数量
InTimestamps : 接收的icmp时间截请求数量
InTimestampReps : 接收的icmp时间截应答数量
InAddrMasks : 接收的icmp子网掩码请求包数量
InAddrMaskReps : 接收的icmp子网掩码应答包数量
OutMsgs : 总共发出的icmp包个数
OutErrors : 发出icmp包的错误个数,因为icmp包很小几乎不会出错,内核没使用这项所以总是0.
OutDestUnreachs : 发送的icmp目的不可达包个数
OutTimeExcds : 发送的icmp超时包的个数
OutParmProbs : 发送的icmp参数错误包的个数
OutSrcQuenchs : 发送的icmp源抑制包的个数
OutRedirects : 发送的icmp重定向包个数
OutEchos : 发送的icmp回显请求包的个数
OutEchoReps : 发送的icmp回显应答包数量
OutTimestamps : 发送的icmp时间截请求包数量
OutTimestampReps: 发送的icmp时间截应答数量
OutAddrMasks : 发送的icmp子网掩码请求包数量
OutAddrMaskReps : 发送的icmp子网掩码应答包数量
Tcp: tcp项
RtoAlgorithm : 转发未答复对象的延时的算法的数目,初始化为1
RtoMin : TCP延迟重发的最小值,初始化为200
RtoMax : TCP延迟重发的最大值,初始化为120000
MaxConn : 主机可支持的TCP最大连接数目,初始化为-1
ActiveOpens : tcp主动连接的发送次数
PassiveOpens : tcp listen状态被动打开的次数
AttemptFails : tcp syn_recv状态被reset的次数
EstabResets : 当tcp状态在CLOSE_WAIT或TCP_ESTABLISHED状态时被reset的次数
CurrEstab : tcp连接转换到TCP_ESTABLISHED状态的次数
InSegs : tcp协议层收到的数据包个数
OutSegs : tcp协议层发出的数据包个数
RetransSegs : tcp协议层重传的数据包个数
InErrs : tcp协议层接收出错的数据包的个数
OutRsts : tcp协议层发送的reset数据包的个数
Udp: udp项
InDatagrams : udp协议层接收到有效数据包个数
NoPorts : udp协议层接收到目的地址或目的端口不存在的数据包
InErrors : udp层接收到的无效数据包的个数
OutDatagrams : udp层发送的数据包个数
RcvbufErrors : udp接收数据时因缓冲区满而丢弃的包数量
SndbufErrors : udp发送数据包因缓冲区满或没有内存而丢弃的包数量
netstat文件
TcpExt : tcp各种异常数据包
SyncookiesSent : 在sysctl_tcp_syncookies选项打开后接收到syn而进行syn cookies计算的次数
SyncookiesRecv : 在CONFIG_SYN_COOKIES配置打开后接收ack而进行syn cookies检测计算成功的次数
SyncookiesFailed : 在CONFIG_SYN_COOKIES配置打开后接收ack而进行syn cookies检测计算失败的次数
EmbryonicRsts : 服务端由于3次握手没有成功因为接收到了一个reset包而导致向客户端发送reset包的次数
PruneCalled : 由于接收缓存空间不足而进行tcp内存回收的次数
RcvPruned : 由于接收缓存空间不足而进行tcp内存回收后空间还是不够的次数
OfoPruned : 由于接收缓存空间不足而进行tcp无序数据回收的次数
OutOfWindowIcmps : icmp协议栈处理ICMP_DEST_UNREACH, ICMP_TIME_EXCEED, ICMP_QUENCH类型包时,是超出tcp窗口类型的包个数
LockDroppedIcmps : icmp协议栈处理ICMP_DEST_UNREACH, ICMP_TIME_EXCEED, ICMP_QUENCH类型包时,当时sock正被用户程序锁定的包个数
ArpFilter : 被arp协议栈过滤掉的包的个数,过滤后就不会响应arp_reply包
TW : timewait状态sock超时后被回收的个数
TWRecycled : 试图进行timewait状态sock回收的次数,当新sock进行connect而hash时与原有的sock或timewait状态的sock冲突时,会触发回收工作.
TWKilled : 使用PAWS机制后释放timewait状态sock的个数
PAWSPassive : 服务器方在接收到syn而且在重用timewait状态的sock时,因时间截检查而失败导致syn失效的次数.
PAWSActive : 客户端在接收到syn+ack包但因时间截超出预取而被reset的连接数.
PAWSEstab : 连接已经建立中接收到时间截项错误的数据包的个数.
DelayedACKs : 延迟ack包发送的次数.
DelayedACKLocked : 发送延迟ack时,用户已经锁定了sock而导致ack再次延迟的次数.
DelayedACKLost : 延迟ack丢失而进行从发的次数
ListenOverflows : Listen状态的sock因syn过多导致请求数量超过了sock的最大backlog的数量的次数
ListenDrops : 或者是因为请求数量超出或者是其他错误原因例如内存不足等导致Listen状态sock分配子sock失败的次数.
TCPPrequeued : 系统调用中处理tcp协议栈的skb包的次数.
TCPDirectCopyFromBacklog : 在网络软中断中就已经拷贝到用户空间的字节数.
TCPDirectCopyFromPrequeue : 直接从prequeue队列拷贝到用户空间的数据字节数.
TCPPrequeueDropped : 没有使用总是0
TCPHPHits : tcp协议栈快速路径处理数据被动拷贝到用户空间的次数
TCPHPHitsToUser : tcp协议栈快速路径处理数据主动拷贝到用户空间的次数
TCPPureAcks : tcp协议栈接收到纯ack包的次数
TCPHPAcks : tcp协议接收到预期顺序ack包的次数
TCPRenoRecovery : 进入到快速重传恢复状态的次数,说明有数据包丢失 ??
TCPSackRecovery : 进入到拥塞控制状态的次数 ??
TCPSACKReneging : 主机发送的SACK被拒绝的次数,说明接收端拥塞十分严重或有bug
TCPFACKReorder : tcp协议栈在接收到FACK包而进行乱序包阀值调整的次数 ??
TCPSACKReorder : tcp协议栈在接收到SACK包而进行乱序包阀值调整的次数 ??
TCPRenoReorder : tcp协议栈在拥塞状态而进行乱序包阀值调整的次数 ??
TCPTSReorder : tcp协议栈在接收到时间截包而进行乱序包阀值调整的次数 ??
TCPFullUndo : tcp协议栈撤销了所有需要重传的数据包. ??
TCPPartialUndo : tcp协议栈撤销了部分需要重传的数据包. ??
TCPDSACKUndo : 撤销了发送DSACK包的次数,DSACK要求重传所有需要重传的数据.
TCPLossUndo : 撤销发送快速恢复数据包的次数.
TCPLoss : tcp协议栈丢失数据包而进行恢复的次数.
TCPLostRetransmit : tcp协议栈丢失重传的数据包的次数.
TCPRenoFailures : 拥塞控制恢复失败次数.
TCPSackFailures : tcp协议sack恢复数据失败次数.
TCPLossFailures : tcp协议栈丢失数据包而进行恢复失败的次数
TCPFastRetrans : tcp协议栈发送快速重传数据的次数.
TCPForwardRetrans : tcp协议栈发送一般重传数据的次数.
TCPSlowStartRetrans : tcp协议栈执行慢启动重传数据的次数.
TCPTimeouts : tcp数据在指定时间内没有受到应答ack而超时的次数
TCPRenoRecoveryFail : 快速重传包丢失导致快速重传恢复机制失败的次数 ??
TCPSackRecoveryFail : 从拥塞控制状态恢复失败的次数 ??
TCPSchedulerFailed : tcp在发送延迟ack而进行数据后备队列的接收处理的次数.
TCPRcvCollapsed : tcp在丢弃重复完整数据包时的次数.
TCPDSACKOldSent : 发送过期的相同sack的次数
TCPDSACKOfoSent : 发送超前的相同sack的次数
TCPDSACKRecv : 接收到相同sack包的次数
TCPDSACKOfoRecv : 接收到相同超前的sack包次数 ??
TCPAbortOnSyn : 接收到错误的syn包(序号错误)导致连接被reset的次数.
TCPAbortOnData : 当sock状态在TCP_FIN_WAIT1或TCP_FIN_WAIT2状态已经进入半连接但还是接收到数据而引起连接被reset的次数.
TCPAbortOnClose : 当sock关闭时还有相关数据未读的次数.
TCPAbortOnMemory : 当sock关闭时由于内存不足而直接被reset的次数.
TCPAbortOnTimeout : tcp协议栈各定时器超时重复次数超过最大限制而关闭sock的次数.
TCPAbortOnLinger : 当sock关闭时状态是TCP_FIN_WAIT2状态直接被reset的次数.
TCPAbortFailed : tcp协议栈在发送reset包而发送失败的次数.
TCPMemoryPressures : 分配skb失败导致进入协议栈内存紧缺状态的次数.
IpExt: ip异常数据包
InNoRoutes : ip接收到数据包但是查找路由时路由标识目的地址不可达的次数.
InTruncatedPkts : ip接收到数据包实际长度小于ip头中标识长度的个数.
InMcastPkts : ip接收到多播地址的数据包个数
OutMcastPkts : ip发送到多播地址的数据包个数
InBcastPkts : ip接收到广播地址的数据包个数
OutBcastPkts : ip发送到广播地址的数据包个数
/proc/sys/net/ 描述
ipv4
ip_default_ttl : net/ipv4/ip_output.c default 64
description:
表示IP数据报的Time To Live值(在网络传递中,每经过一"跳",该值减少1,当ttl为0的时候,丢弃该包.该值越大,即在网络上可以经过的路由器设备的数量越多,但一个错误的包,也会越发浪费生存周期.根据目前的实际情形而看,设置为32已经足够普通网络访问Internet的需求了)
ip_dynaddr : net/ipv4/af_inet.c default 0
description :
拨号上网大部分都是使用动态IP地址,我们不知道远程拨号服务器的IP地址是多少,也不可能知道它会给电脑分配什么IP地址。在其中写入“1”,就是告诉内核要使用动态IP地址。
ip_forward : include/linux/inetdevice.h default 0
description:
struct in_device
{
......
struct ipv4_devconf cnf;
......
};
struct ipv4_devconf
{
......
int forwarding;
......
};
禁止和开启ip路由功能,0为禁止.
ipfrag_high_thresh : net/ipv4/ip_fragment.c default 256*1024
description:
用来组装分段的IP包的最大内存量。一旦达到最高内存分配值,其它分段将被丢弃,直到达到最低内存(ipfrag_low_thresh)分配值。
ipfrag_low_thresh : net/ipv4/ip_fragment.c default 192*1024
description:
ip碎片内存最低阀值,直到回收内存到最低值的时候才又开门放分段的ip包进来处理.
ipfrag_max_dist : net/ipv4/ip_fragment.c default 64 😦
description:
相同的源地址ip碎片数据报的最大数量. 这个变量表示在ip碎片被添加到队列前要作额外的检查.如果超过定义的数量的ip碎片从一个相同源地址到达,那么假定这个队列的ip碎片有丢失,已经存在的ip碎片队列会被丢弃,如果为0关闭检查。
非常小的值例如1,2可能导致不必要的碎片丢弃,如果值很大50000可能导致ip碎片重组的不正确性。
ipfrag_secret_interval : net/ipv4/ip_fragment.c default 1060HZ 😦
description:
hash表中ip碎片队列的重建延迟.
ipfrag_time : net/ipv4/ip_fragment.c default 30*HZ
description:
ip碎片队列在内存中的超时时间,如果超时将销毁ip碎片队列.
ip_local_port_range : net/ipv4/inet_connection_sock.c default { 1024, 4999 }
description:
本地发起连接时使用的端口范围,tcp初始化时会修改此值.
ip_nonlocal_bind : net/ipv4/af_inet.c default 0
description:
允许进程绑定到非本地地址,0为禁止。
ip_no_pmtu_disc : include/net/ip.h default 0
description:
struct ipv4_config
{
......
int no_pmtu_disc;
};
关闭路径MTU探测,一次成功的传输中,mtu是由网络上最"窄"的位置决定的.如果IP层有一个数据报要传,
而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据报分成若干片,这样每一片都小于MTU. 0为开启.
cipso : Commercial IP Security Option
cipso_cache_bucket_size : net/ipv4/cipso_ipv4.c default 10
description:
限制cipso缓存项的大小,如果在缓存中新添加一行超出了这个限制,那么最旧的缓存项会被丢弃以释放出空间。
cipso_cache_enable : net/ipv4/cipso_ipv4.c default 1
description:
是否启用cipso缓存,默认启用。
cipso_rbm_optfmt : net/ipv4/cipso_ipv4 default 0
description:
是否开启cipso标志优化选项,如果开启,数据包中标志将会在32bit对齐,默认关闭.
cipso_rbm_strictvalid : net/ipv4/cipso_ipv4 default 1
description:
是否开启cipso选项的严格检测,默认开启。
icmp_echo_ignore_all : net/ipv4/icmp.c default 0
description:
是否忽略icmp回显请求,默认不忽略.
icmp_echo_ignore_broadcasts : net/ipv4/icmp.c default 1
description:
是否忽略在广播或多波地址上的回显和时间截请求,1为忽略,防止icmp风暴,防止网络阻塞.
icmp_errors_use_inbound_ifaddr : net/ipv4/icmp.c default 0
description:
当前为 ICMP 错误消息选择源地址的方式,是使用存在的接口地址。1表示内核通过这个选项允许使用接收到造成这一错误的报文的接口的地址。
icmp_ignore_bogus_error_responses : net/ipv4/icmp.c default 1
description:
如果关闭这项,核心接收到广播地址的icmp应答包将给出警告信息,因为一些路由器会发送这样的伪造的数据包. dmesg中可见到,默认开启.
icmp_ratelimit : net/ipv4/icmp.c default 1*HZ
description:
限制在下面掩码中定义的icmp类型数据包的发送速度,如果为0,那么没有限制。
icmp_ratemask : net/ipv4/icmp.c default 0x1818
description:
在这些位中定义的icmp类型数据报发送将被限速.
Significant bits: IHGFEDCBA9876543210
Default mask: 0000001100000011000 (6168)
Bit definitions (see include/linux/icmp.h):
0 Echo Reply
3 Destination Unreachable *
4 Source Quench *
5 Redirect
8 Echo Request
B Time Exceeded *
C Parameter Problem *
D Timestamp Request
E Timestamp Reply
F Info Request
G Info Reply
H Address Mask Request
I Address Mask Reply
igmp_max_memberships : net/ipv4/igmp.c default 20
description:
限制加入一个多播组的最大成员数.
igmp_max_msf : net/ipv4/igmp.c default 10
description:
限制多播源地址过滤数量.
inet_peer_gc_maxtime : net/ipv4/inetpeer.c default 120 * HZ
description:
废物收集通过的最大间隔,这个间隔会影响到缓冲池中内存的低压力。 该值以 jiffies为单位测量。
inet_peer_gc_mintime : net/ipv4/inetpeer.c default 10 * HZ
description:
废物收集通过的最短间隔。这个间隔会影响到缓冲池中内存的高压力。 该值以 jiffies为单位测量。
inet_peer_maxttl : net/ipv4/inetpeer.c default 10 * 60 * HZ
description:
项目的最大存活期。在此期限到达之后,如果缓冲池没有耗尽压力的话(例如,缓冲池中的条目数目非常少),不使用的条目将会超时。该值以 jiffies为单位测量。
inet_peer_minttl : net/ipv4/inetpeer.c default 120 * HZ
description:
项目的最低存活期。在重组端必须要有足够的碎片存活期。这个最低存活期必须保证缓冲池容积是否少于 inet_peer_threshold。该值以 jiffies为单位测量。
inet_peer_threshold : net/ipv4/inetpeer.c default 65536 + 128
description:
INET对端存储器某个合适值,当超过该阀值条目将被丢弃。该阀值同样决定生存时间以及废物收集通过的时间间隔。项越多,存活期越低,垃圾收集间隔越短
也就是当前数量如果超过这个值,那么会使用inet_peer_gc_mintime和inet_peer_minttl参数.
tcp_abc : net/ipv4/tcp_input.c default 0
description:
用适当的字节计算增加tcp的拥塞窗口,以使tcp应答速度减慢, 定义在RFC3465.
tcp_abort_on_overflow : net/ipv4/tcp_minisocks.c default 0
description:
控制当tcp的监听队列满时由于瞬时的连接过多,连接是否会继续. 因为连接满了,
服务端会丢弃这个syn,客户端会从发syn, 如果这项为1那么连接满后会发送reset包并且丢弃请求结构,
这样的话如果客户端再次建立连接,服务器端又会从新建立请求结构. 如果确定监听进程不能通过适当的调节而更快的接受连接那么开启这项.
tcp_adv_win_scale : net/ipv4/tcp_input.c default 2
description:
接收窗口尺寸的选取与对接收端MSS和当前可用的接收缓存总量有关,接收缓存按一定的比例划为可用接收窗口.
这个比例可由这个参数调节.
tcp_allowed_congestion_control : net/ipv4/tcp_cubic.c net/ipv4/tcp_cong.c
description:
列出了tcp目前允许使用的拥塞控制算法,只能在下面可用的算法中选择.
tcp_available_congestion_control : net/ipv4/tcp_cubic.c net/ipv4/tcp_cong.c
description:
列出了tcp目前可以使用的拥塞控制算法.
tcp_congestion_control : net/ipv4/sysctl_net_ipv4.c default cubic
description:
当前正在使用的拥塞控制算法.
tcp_app_win : net/ipv4/tcp_input.c default 31
description:
调整滑动窗口的最大值时使用. 1 - 31 有影响,滑动窗口的最大值随着数值的增加而增加,如果为0或 > 32那么滑动窗口的最大值取最大.
tcp_base_mss : net/ipv4/tcp_output.c default 512
description:
tcp探察路径上mtu的最低边界限制, mss+TCP头部+TCP选项+IP头+IP选项.
tcp_dma_copybreak : net/core/user_dma.c default 4096
description:
控制用户请求数据时可以从协议栈中直接拷贝数据的长度. 在内核开启NET_DMA时使用,是tcp模拟dma拷贝的一项功能.
tcp_dsack : net/ipv4/tcp_input.c default 1
description:
表示是否允许TCP发送“两个完全相同”的SACK,默认开启.
tcp_ecn : net/ipv4/tcp_input.c default 0
description:
表示是否打开TCP的直接拥塞通告功能,默认关闭.
tcp_fack : net/ipv4/tcp_input.c default 1
description:
表示是否打开FACK拥塞避免和快速重传功能,启用转发应答(Forward Acknowledgment),这可以进行有选择应答(SACK)从而减少拥塞情况的发生.默认开启.
tcp_fin_timeout : net/ipv4/tcp.c default 60*HZ
description:
对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡,减少值可以使系统处理更多的连接。
tcp_frto : net/ipv4/tcp_input.c default 0
description:
增强tcp超时从传算法,一般用在无线环境,包丢失是由于随机无线接口设备而不是中间路由拥塞,默认关闭.
tcp_keepalive_intvl : net/ipv4/tcp_timer.c default 75 * HZ
description:
探测消息发送的频率(保活定时器),乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间,
默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。
tcp_keepalive_probes : net/ipv4/tcp_timer.c default 9
description:
表示丢弃TCP连接前,进行最大TCP保持连接侦测的次数。保持连接仅在SO_KEEPALIVE套接字选项被打开时才被发送.
tcp_keepalive_time : net/ipv4/tcp_timer.c default 12060HZ
description:
表示从不再传送数据起到向连接上发送保持连接信号之间所需的秒数。
tcp_low_latency : net/ipv4/tcp_ipv4.c default 0
description:
允许 TCP/IP 栈适应在高吞吐量情况下低延时的情况;这个选项一般情形是的禁用.(但在构建Beowulf 集群的时候,打开它很有帮助)
是否允许TCP包将被排入套接字的预备队列,这样如果关闭将可以使用预备队列,那么tcp接受处理将在用户进程上下文中,如果开启那么处理将在软中断中.
tcp_max_orphans : net/ipv4/tcp_input.c default 8192
description:
系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那么不属于任何进程的连接会被立即reset,并同时显示警告信息。
之所以要设定这个限制,纯粹为了抵御那些简单的 DoS 攻击,千万不要依赖这个或是人为的降低这个限制,这个数值会在启动时随内存大小根据在默认值的基础上调整.
tcp_max_syn_backlog : net/core/request_sock.c default 256
description:
对于那些依然还未获得客户端确认的连接请求,需要保存在队列中最大数目.对于超过 128Mb 内存的系统,默认值是 1024,低于 128Mb 的则为 128。
如果服务器经常出现过载,可以尝试增加这个数字.
(警告!假如您将此值设为大于1024,最好修改 include/net/tcp.h 里面的 TCP_SYNQ_HSIZE,以保持TCP_SYNQ_HSIZE*16 hash表的大小).
这个值并不是具体个数,也是一个比例.
tcp_max_tw_buckets : include/net/inet_timewait_sock.h default 8192 * 2
description:
struct inet_timewait_death_row {
......
int sysctl_max_tw_buckets;
};
后备缓存中可以创建的twsk的上限值,在启动时会根据内存大小进行修改.一般不需要修改.
tcp_mem : net/ipv4/tcp.c
description:
该文件包含3个整数值,分别是:low,pressure,high
Low:当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存。
Pressure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。
High:允许所有tcp sockets用于排队缓冲数据报的页面量。
一般情况下这些值是在系统启动时根据系统内存数量计算得到的.
tcp_moderate_rcvbuf : net/ipv4/tcp_input.c default 1
description:
如果值为1,那么每次数据到来时会进行接收缓存的调整.
tcp_mtu_probing : net/ipv4/tcp_output.c default 0
description:
是否开启tcp层路径mtu发现,自动调整tcp窗口等信息,默认关闭.
tcp_no_metrics_save : net/ipv4/tcp_input.c default 0
description:
如果开启,tcp会在连接关闭时也就是LAST_ACK状态保存各种连接信息到路由缓存中,新建立的连接可以使用这些条件来初始化.
通常这会增加总体的系统性能,但是有些时候也会引起性能下降. 默认是开启.
tcp_orphan_retries : net/ipv4/tcp_timer.c default 0
description:
在本端丢弃TCP孤儿连接之前,要进行多少次重试.如果您的系统是负载很大的web服务器,那么也许需要降低该值. 默认为最大值,1为最小次数.
tcp_reordering : net/ipv4/tcp_input.c default 3
description:
表示TCP流中重排序的数据报最大数量.
tcp_retrans_collapse : net/ipv4/tcp_output.c default 1
description:
为兼容某些糟糕的打印机设置的"将错就错"选项.再次发送时,把连续数据包和并,来避免某些TCP协议栈的BUG,默认开启.
tcp_retries1 : net/ipv4/tcp_timer.c default 3
description:
当出现可疑情况而必须向网络层报告(修改路由缓存)这个可疑状况之前,需要进行多少次重试.最低的 RFC 数值是 3 ,
这也是默认值,根据RTO的值大约在3秒 - 8分钟之间.
这个所谓的可疑情况是在建立连接下重传次数超过这个值.
tcp_retries2 : net/ipv4/tcp_timer.c default 15
description:
表示放弃在已经建立连接状态下的一个TCP数据包进行重传的次数(例如发送数据时),
RFC1122规定,该值必须大于100秒.默认值为15,根据RTO的值来决定,相当于13-30分钟.
tcp_rfc1337 : net/ipv4/tcp_input.c default 0
description:
这个开关可以启动对于在RFC1337中描述的"tcp的time-wait暗杀危机"问题的修复.默认内核接收到RST包后会销毁掉那些time-wait状态TCP套接字.
tcp_rmem : net/ipv4/tcp.c
description:
该文件包含3个整数值,分别是:min,default,max
Min: 为TCP socket预留用于接收缓冲的最小内存数量,即使在内存出现紧张情况下TCP socket都至少会有这么多数量的内存用于接收缓冲.
Default:为TCP socket预留用于接收缓冲的默认内存数量,默认情况下该值会复盖net/core/rmem_default中的值.
该值决定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win的默认值情况下,TCP窗口大小为65535。
Max: 为TCP socket预留用于接收缓冲的内存最大值.选项参数SO_RCVBUF设置不能超过net/core/rmem_max的值.
tcp_sack : net/ipv4/tcp_input.c default 1
description:
该文件表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能
(这样可以让发送者只发送丢失的报文段)(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用.
tcp_slow_start_after_idle : net/ipv4/tcp_output.c default 1
description:
如果设置满足RFC2861定义的行为,在从新开始计算拥塞窗口前延迟一些时间,这延迟的时间长度由当前rto决定. (慢启动 ??)
tcp_stdurg : net/ipv4/tcp_input.c default 0
description:
使用 TCP urg pointer 字段中的主机请求解释功能。大部份的主机都使用老旧的BSD解释,因此如果您在 Linux 打开它,或会导致不能和它们正确沟通.
默认关闭情况,紧急指针会回退一字节.
tcp_synack_retries : net/ipv4/tcp_timer.c default 5
description:
对于远端的连接请求SYN,内核会发送SYN + ACK数据报,以确认收到上一个 SYN连接请求包。
这是所谓的三次握手.这里决定内核在放弃连接之前所送出的 SYN+ACK 数目.
tcp_syncookies : net/ipv4/tcp_minisocks.c default 1 如果配置CONFIG_SYSCTL default 0
description:
该文件表示是否打开TCP同步标签(syncookie),内核必须打开了CONFIG_SYN_COOKIES项进行编译.
同步标签(syncookie)可以防止一个套接字在有过多试图连接到达时引起过载,该功能可以防止部分SYN攻击, 1为开启.
tcp_syn_retries : net/ipv4/tcp_timer.c default 5
description:
该文件表示本机向外发起TCP SYN连接超时重传的次数,不应该高于255;该值仅仅针对外出的连接,对于进来的连接由tcp_retries1控制.
tcp_timestamps : net/ipv4/tcp_input.c default 1
description:
该文件表示是否启用以一种比超时重发更精确的方法(请参阅 RFC 1323)来对 RTT 的计算;为了实现更好的性能应该启用这个选项.
tcp_tso_win_divisor : net/ipv4/tcp_output.c default 3
description:
控制根据拥塞窗口的百分比,是否来发送相应的延迟tso frame, 0为关闭, 值越大表示tso frame延迟发送可能越小.
tcp_tw_recycle : include/net/inet_timewait_sock.h default 0
description:
struct inet_timewait_death_row {
......
int sysctl_tw_recycle;
......
};
启动快速 TIME-WAIT sockets 回收,默认关闭.
tcp_tw_reuse : net/ipv4/tcp_ipv4.c default 0
description:
表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接.默认关闭.
tcp_window_scaling : net/ipv4/tcp_input.c default 1
description:
表示设置tcp会话的滑动窗口大小是否可变,默认时表示可变.tcp通常使用的窗口最大可达到 65535 字节,对于高速网络,该值可能太小,
这时候如果启用了该功能,可以使tcpp滑动窗口大小增大数个数量级,从而提高数据传输的能力.
tcp_wmem : net/ipv4/tcp.c
description:
包含3个整数值,分别是:min,default,max
Min: 为TCP socket预留用于发送缓冲的最小内存数量,即使在内存出现紧张情况下TCP socket都至少会有这么多数量的内存用于发送缓冲.
Default:为TCP socket预留用于发送缓冲的默认内存数量,默认情况下该值会复盖net/core/wmem_default中的值.
Max: 为TCP socket预留用于发送缓冲的内存最大值.选项参数SO_SNDBUF设置不能超过net/core/wmem_max的值.
tcp_workaround_signed_windows : net/ipv4/tcp_output.c default 0
description:
如果设置为1,假定远程连接端有错误,没有发送相关的窗口缩放选项.默认假定远程连接端正常发送了窗口收缩选项,即使对端没有发送.
ipv4/conf
在/proc/sys/net/ipv4/conf/{interface}/* :
下可以发现类似 all,eth0,eth1,default,lo 等网络接口界面,每一个都是目录,他们下属的文件中,每个文件对应该界面下某些可以设置的选项设置.
(all/是特定的,用来修改所有接口的设置,default/表示缺省设置,lo/表示本地接口设置,eth0/表示第一块网卡,eth1/表示第2块网卡.
注意:下面有的参数,是需要all和该界面下同时为ture才生效,而某些则是只需要该界面下为true即可,注意区别!!)
struct ipv4_devconf 在include/linux/inetdevice.h文件中定义了所有配置项
{
int accept_redirects;
int send_redirects;
int secure_redirects;
int shared_media;
int accept_source_route;
int rp_filter;
int proxy_arp;
int bootp_relay;
int log_martians;
int forwarding;
int mc_forwarding;
int tag;
int arp_filter;
int arp_announce;
int arp_ignore;
int arp_accept;
int medium_id;
int no_xfrm;
int no_policy;
int force_igmp_version;
int promote_secondaries;
......
};
accept_redirects : 对于主机来说默认为1,对于路由器默认为0
description:
是否收和发icmp重定向包.如果开启为1,需要两者同时生效.
accept_source_route : 对于主机默认0,对于路由默认1
description:
是否接受带有srr IP选项的数据报.需要两者同时生效.
(IP 源路由选项,也是TCP/IP协议早期的一个实现缺陷,允许IP包自身携带路由选择选项,这将允许攻击者绕过某些安全检验的网关,或者被用来探测网络环境。
在企业网关上强烈建议设置关闭或过滤丢弃IP源路由选项数据包。这个功能在调试网络的时候很有用,但是在真正的实际应用中,有可能造成一些麻烦和危险)
arp_accept : default 0
description:
是否接收相应arp请求的arp应答数据包,默认丢弃. (只有全局生效 ?)
arp_announce : default 0
description:
对网络接口上,做相应级别的限制: 宣布使用在发送ARP请求时IP地址中使用的接口的源IP地址.
0 : (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址.
1 : 尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果该来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2 : 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
all和相应接口下(eth0)比较,较大的值生效.
参考:https://app.yinxiang.com/shard/s23/sh/cb19e31c-48b2-44c7-84d9-ae4614650b3c/2709b0fd9bcea8d9a9471d1cd0adbdd8
accept_local : default BOOLEAN
description:
Accept packets with local source addresses. In combination with
suitable routing, this can be used to direct packets between two
local interfaces over the wire and have them accepted properly.
default FALSE
arp_filter : default 0
description:
0 : 可以从任意接口应答arp请求. 这项看似错误的设置却经常非常有效,因为它增加了成功通讯的机会.
在Linux主机上,每个IP地址是网络接口独立的,而非一个复合的接口.只有在一些特殊的设置的时候,比如负载均衡的时候会带来麻烦.
1 : 允许你有多个网络接口在同样的子网段内, 每个网络接口依据是,是否内核指派了路由,该数据包就会经过此接口来响应ARP查询
(这个实现是由源地址确定路由的时候决定的),换句话说,允许控制使用某一块网卡(通常是第一块)回应arp请求.
all和相应接口至少一个为1即生效.
(简单来说,就是同一Linux上,如果有某些原因,有2块网卡必须设置为同一网段,那么默认情况下,会有一块工作,
而另外一块不工作或者内核频繁报告错误,这个时候就需要打开这个选项了)
既然rp_filter已经能搞定出口入口相一致的问题,为何要在arp模块中再次存在arp_filter呢?这是一个层次的问题,rp_filter是对整个路由系统起作用的,而arp_filter仅仅针对arp系统,二者的共存旨在解决路由系统和arp系统的配置策略不一致的问题。
arp_ignore : default 0
description:
对目标为本地地址的arp请求作出不同的应答方法.
0 : 对所有本地地址进行应答,不管这个请求出现在哪个接口上.
1 : 只应答目标地址是这个接口上地址的arp请求.
(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24, eth0收到来自10.1.1.2地址发起的对192.168.0.1的查询会进行应答,而对10.1.1.1 的arp查询不会回应)
2 : 只应答目标地址是这个接口上地址的arp请求,而且源地址也必须在该接口的同一子网内.
(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,eth0收到来自10.1.1.2这样地址发起的对192.168.0.1的查询不会回答,
而对192.168.0.2发起的对192.168.0.1的arp查询会回应)
3 : 不应答对本地地址的请求,只应答直连地址的请求.
4 - 7 : 未用
8 : 不应答所有arp请求
all和相应接口比较,较大值生效.
bootp_relay : default 0
description:
接收源地址为任意,目的地址不是本机的数据报.用来支持BOOTP转发服务进程,该进程将捕获并转发该包.
在kernel-2.6.18中没有找到使用(还没有实现 ?)
disable_policy : default 0
description:
关闭接口上的IPSEC策略,默认0开启.
disable_xfrm : default 0
description:
不管接口上的IPSEC策略是什么,关闭IPSEC加密.
force_igmp_version : default 0
description:
强制kernel内igmp的版本,有0和1,2三个版本,0为版本3,发送igmp报文时也使用设置的版本.
all和相应接口有一个设置生效既使用相关的版本,代码中从1开始比较的然后2最后0.
forwarding : default 0
description:
在该网络接口打开转发功能,默认关闭
(在3块或以上的网卡的时候很实用,有时候只想让其中一外一内,另一块做服务,就可以让这块做服务的网卡不转发数据进出)
log_martians : default 0
description:
打印带有错误数据的数据报到内核日志中,dmesg可以看见,是一个调试项.
all和相应接口有一个设置生效即生效.
mc_forwarding : default 0
description:
是否进行多播路由.只有内核编译CONFIG_MROUTE选项并且有路由服务程序在运行,该参数才有效.默认禁止
all和相应接口同时生效才生效.
medium_id : default 0
description:
通常,这个参数用来区分不同媒介(id).两个网络设备可以使用不同的值,使他们只有其中之一接收到广播包.
默认值表示各个网络设备接受他们自己介质上的媒介,值-1表示该媒介未知.
这个参数被用来改变proxy_arp的行为 : proxy_arp开启表示允许arp报文在两个不同的网络设备中转发
proxy_arp : default 0
description:
是否开启arp代理功能.默认关闭
all和相应接口有一个生效即生效.
promote_secondaries : default 0
description:
如开启,当网络接口的主地址被删除后,其复地址会变为主地址.默认当主地址被删除后其全部的复地址都会被删除.
all和相应接口有一个生效即生效.
rp_filter : default 0
description:
0 - 不通过反向路径回溯进行源地址验证
1 - 通过反向路径回溯进行源地址验证(在RFC1812中定义)。
(router默认会路由所有东西,就算该封包'显然'不属於我们的网路的.常见的例子,莫过於将私有 IP 泄漏到 internet 上去.假如某个接口,其上设定的网络地址段为
195.96.96.0/24,那么理论上不会有212.64.94.1 这样的地址段封包会到达这个接口上.许多人都不想转发非本网段的数据包,因此核心设计者也打开了方便之门.
在/proc里面有些选项,透过它们您可以让核心为您做到这点.此方法被称为 "逆向路径过滤(Reverse Path Filtering)".
基本上,假如对此封包作出的回应,不是循其进入的接口送出去,那它就被置之不理.
验证路由出口是否和正方向的入口一致。比如如果一个包的源地址是s1,目的地址是d1,从e1进入,那么在开启源验证的情况下,源为d1,目的为s1的路由出口必须是e1,
Refer to: http://blog.csdn.net/dog250/article/details/6150900
既然rp_filter已经能搞定出口入口相一致的问题,为何要在arp模块中再次存在arp_filter呢?这是一个层次的问题,rp_filter是对整个路由系统起作用的,而arp_filter仅仅针对arp系统,二者的共存旨在解决路由系统和arp系统的配置策略不一致的问题。
secure_redirects : default 1
description:
只接收默认网关列表中网关发送的icmp重定向消息.
all和相应接口有一个生效即生效.
(这个参数一般情形请不要修改,可以有效地防止来自同网段的非网关机器发出恶意ICMP重定向攻击行为)
send_redirects : default 1
description:
是否允许发送icmp重定向消息.默认可以.
all和相应接口有一个生效即生效.
(根据网络而定,如果是做NAT,并且网内只有此一个网关的时候,其实是可以关闭掉它的,事实上目前而言,ICMP Redirects是TCP/IP协议产生早期为了解决
网络持续性而提出的一种方法,后来事实证明这种措施不太实用而且具有很大的安全风险,可能引起各种可能的网络风险产生 - 拒绝服务攻击,中间人攻击,
会话劫持等等,所以很多安全文档是推荐关闭它.)
shared_media : default 1
description:
发送(路由器)或接收(主机) RFC1620 共享媒体重定向.
all和相应接口有一个生效即生效.
tag : default 0
description:
没有使用. !?
ipv4/neigh
在/proc/sys/net/ipv4/neigh/{interface}/* :
下可以发现类似 default,eth0,eth1,lo 等网络接口界面,每一个都是目录,他们下属的文件中,每个文件对应该界面下某些可以设置的选项设置.
ARP的缓存表,也称为邻居表.协议栈通过ARP协议获取到的网络上邻居主机的IP地址与MAC地址的对应关系都会保存在这个表中,
以备下次与邻居通讯时使用,同时,ARP模块自身也会提供一套相应的机制来更新和维护这个邻居表.
struct neigh_table //include/net/neighbour.h
{
.....
struct neigh_parms parms;
//下面这几项是全局的,不出现在特定端口
int gc_interval;
nt gc_thresh1;
int gc_thresh2;
int gc_thresh3;
......
};
struct neigh_parms
{
......
int base_reachable_time;
int retrans_time;
int gc_staletime;
int reachable_time;
int delay_probe_time;
int queue_len;
int ucast_probes;
int app_probes;
int mcast_probes;
int anycast_delay;
int proxy_delay;
int proxy_qlen;
int locktime;
};
anycast_delay : default 1*HZ
description:
对相邻请求信息的回复的最大延迟时间.(好像还没有实现)
app_solicit : default 0
description:
在使用多播探测前,通过netlink发送到用户空间arp守护程序的最大探测数.(参考mcast_solicit).
base_reachable_time : default 30 * HZ
description:
一旦发现相邻记录,至少在一段介于 base_reachable_time/2和3*base_reachable_time/2之间的随机时间内,该记录是有效的.
如果收到上层协议的肯定反馈, 那么记录的有效期将延长.
delay_first_probe_time : default 5 * HZ
description:
发现某个相邻层记录无效后,发出第一个探测要等待的时间. 缺省值是5秒.
gc_interval : default 30 * HZ
description:
垃圾收集器收集相邻层记录和无用记录的运行周期,缺省为30秒.
gc_stale_time : default 60 * HZ
description:
决定检查一次相邻层记录的有效性的周期. 当相邻层记录失效时,将在给它发送数据前,再解析一次. 缺省值是60秒.
gc_thresh1 : default 128
description:
存在于ARP高速缓存中的最少个数,如果少于这个数, 垃圾收集器将不会运行.
gc_thresh2 : default 512
description:
保存在 ARP 高速缓存中的最多的记录软限制. 垃圾收集器在开始收集前,允许记录数超过这个数字,在创建新表项时如果发现5秒没有刷新过,那么进行强制回收.
gc_thresh3 : default 1024
description:
保存在 ARP 高速缓存中的最多记录的硬限制, 一旦高速缓存中的数目高于此, 垃圾收集器将马上运行.
locktime : default 1 * HZ
description:
防止相邻记录被过度频繁刷新,引起抖动,只有距邻居上次刷新时间超过这时才允许被再次刷新.
mcast_solicit : default 3
description:
在把记录标记为不可达之前, 用多播/广播方式解析地址的最大次数.
proxy_delay : default (8 * HZ) / 10
description:
当接收到有一个arp请求时,在回应前可以延迟的时间,这个请求是要得到一个已知代理arp项的地址. 缺省值是0.8秒
proxy_qlen : default 64
description:
能放入代理 ARP 地址队列的数据包最大数目.
retrans_time : default 1*HZ
description:
重发一个arp请求前的等待的秒数,缺省值是1秒.
ucast_solicit : default 3
description:
arp请求最多发送次数.
unres_qlen : default 3
description:
最大挂起arp请求的数量,这些请求都正在被解析中.
ipv4/route
控制路由表选项. net/ipv4/route.c
error_burst : default 5 * HZ
description:
这个参数和error_cast一起用于限制有多少个icmp不可达消息被发送.当数据包不能到达下一跳时会发送icmp不可达数据包.
当一些主机忽略我们的icmp重定向消息时也会打印一些错误信息到dmesg.这个选项也控制打印的次数.
这选项控制上面两个方面.默认是每5秒1次.
error_cost : default HZ
description:
这个参数和error_burst一起用于限制有多少个icmp不可达消息被发送.当数据包不能到达下一跳时会发送icmp不可达数据包.
当一些主机忽略我们的icmp重定向消息时也会打印一些错误信息到dmesg.这个选项也控制打印的次数.
error_cost值越大,那么icmp不可达和写错误信息的频率就越低.
这选项控制上面两个方面.默认是每5秒1次.
flush : 只写文件
description:
写这个文件就会刷新路由高速缓冲.
gc_elasticity : default 8
description:
用来控制路由缓存垃圾回收机制的频率和行为.当路由表一个hash项的长度超过此值时,会进行缓存缩减,当路由缓存项长度超过
ip_rt_gc_elasticity << rt_hash_log(表示路由高速缓存hash table的容量以2为对数所得的值) 时会进行强烈的回收.
gc_interval : default 60 * HZ
description:
此参数定义了路由表垃圾回收的间隔(秒).
gc_min_interval
description:
已不再使用,并被gc_min_interval_ms取代
gc_min_interval_ms : default HZ / 2
description:
此参数定义了路由表垃圾回收的最小间隔,默认0.5秒.
gc_thresh : default (rt_hash_mask + 1) 路由hash table的大小
description:
struct dst_ops
{
......
unsigned gc_thresh;
......
};
当cache中的路由条数超过此值时,开始垃圾回收.
gc_timeout : default 300 * HZ
description:
设置一个路由表项的过期时长(秒).
max_delay : default 10 * HZ
description:
当触发刷新操作时(像echo 1 > flush),刷新路由缓存的最大延时,默认为10秒.
max_size : default (rt_hash_mask + 1) * 16
description:
路由高速缓存的最大项数,超过会进行清除旧项操作.
min_adv_mss : default 256
description:
根据第一跳路由的MTU,推荐设置的MSS,肯定不会低于这个值.
min_delay : 2 * HZ
description:
当触发刷新操作时(像echo 1 > flush),刷新路由缓存的最小延时,默认为2秒.
min_pmtu : default 552
description:
该文件表示最小路径MTU的大小.
mtu_expires : default 600 * HZ
description:
该文件表示PMTU信息缓存多长时间(秒). gc_min_interval_ms控制这种回收.
redirect_load : default HZ / 50
description:
决定是否要向特定主机发送更多的ICMP重定向的时间因子.一旦达到load时间或number个数就不再发送.
redirect_number : default 9
description:
决定是否要向特定主机发送更多的ICMP重定向的数量因子.一旦达到load时间或number个数就不再发送.
redirect_silence : default ((HZ / 50) << (9 + 1))
description:
重定向的超时.经过这么长时间后,重定向会重发,而不管是否已经因为超过load或者number限制而停止.
secret_interval : default 600 * HZ
description:
缓存刷新的时间间隔,默认600秒.
ipv4/netfilter(2.6.18)或netfilter(2.6.23以上)
在2.6.18内核中还叫ip_conntrack到了2.6.23内核以上都该为nf_conntrack.
同时netfilter目录从i/proc/sys/net/pv4/下面改变到/proc/sys/net/目录下面.
所有一ip_XXX为头的选项改为以nf_XXX为开头.
nf_conntrack_buckets : 只读
description:
描述当前系统的ip_conntrack的hash table大小.
nf_conntrack_checksum : default 1
description:
验证协议是否错误是,是否对协议进行校验和验证,默认开启.
nf_conntrack_count : 只读
description:
内存中ip_conntrack结构的数量.
nf_conntrack_generic_timeout : default 600 * HZ
description:
通用或未知协议的conntrack被设置的超时时间(每次看到包都会用这值重新更新定时器),一旦时间到conntrack将被回收.
nf_conntrack_icmp_timeout : default 30 * HZ
description:
icmp协议的conntrack被设置的超时时间,一旦到时conntrack将被回收.
nf_conntrack_log_invalid : default 0
description:
调试时使用,可以指定一个数字,这个数字是内核定义的协议号比如IPPROTO_TCP是6,当指定协议解析时发现一些错误包会打印相关的错误信息到dmesg中.
最小值0,最大值255,默认不打印.
nf_conntrack_max : default 8 * ip_conntrack_htable_size(hash table大小)
description:
内存中最多ip_conntrack结构的数量.
nf_conntrack_tcp_be_liberal : default 0
description:
当开启只有不在tcp窗口内的rst包被标志为无效,当关闭(默认)所有不在tcp窗口中的包都被标志为无效.
nf_conntrack_tcp_loose : default 3
description:
当想追踪一条已经连接的tcp会话, 在系统可以假设sync和window追逐已经开始后要求每个方向必须通过的包的数量.
如果为0,从不追踪一条已经连接的tcp会话.
nf_conntrack_tcp_max_retrans : default 3
description:
没有从目的端接收到一个ack而进行包重传的次数,一旦达到这限制nf_conntrack_tcp_timeout_max_retrans将作为ip_conntrack的超时限制.
nf_conntrack_tcp_timeout_max_retrans : default 5 * 60 * HZ
description:
当我们看到残废的会话时ip_conntrack的超时限制(默认5分钟).
nf_conntrack_tcp_timeout_close : default 10 * HZ (10秒)
nf_conntrack_tcp_timeout_close_wait : default 60 * HZ (60秒)
nf_conntrack_tcp_timeout_established : default 5天
nf_conntrack_tcp_timeout_fin_wait : default 2 * 60 * HZ (2分钟)
nf_conntrack_tcp_timeout_last_ack : default 30 * HZ (30秒)
nf_conntrack_tcp_timeout_syn_recv : default 60 * HZ (60秒)
nf_conntrack_tcp_timeout_syn_sent : default 260HZ (2分钟)
nf_conntrack_tcp_timeout_time_wait : default 260HZ (2分钟)
description:
这些选择表示tcp在相关的状态下,ip_conntrack进行追踪的超时时间.一旦超时ip_conntrack将被回收.
nf_conntrack_udp_timeout : default 30 * HZ
descripton:
icmp协议的conntrack被设置的超时时间(每次看到包都会用这值重新更新定时器),一旦到时conntrack将被回收.
nf_conntrack_udp_timeout_stream : default 180 * HZ
description:
当看到一些特殊的udp传输时(传输在双向)设置的ip_conntrack超时时间(每次看到包都会用这值重新更新定时器).
core
该目录下的配置文件主要用来控制内核和网络层之间的交互行为.
dev_weight : default 64
netdev_budget : default 300
description:
同时一次处理的数据报的数量不得超过backlog_dev->quota和netdev_budget两个值中较小的那个值,backlog_dev->quota
由netif_rx_schedule初始化为变量backlog_dev->weight的值,缺省为 64,当用NAPI时可以自己指定backlog_dev->weight这个值.
message_burst : default 10
description:
写新的警告消息所需的时间(以 1/10 秒为单位),在这个时间内系统接收到的其它警告消息会被丢弃.
这用于防止某些企图用消息“淹没”系统的人所使用的拒绝服务攻击.
message_cost : default 5*HZ
description:
该文件表示写每个警告消息相关的成本值。该值越大,越有可能忽略警告消息.
netdev_max_backlog : default 1000
description:
表示在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目.
optmem_max : default 10240
description:
表示每个套接字所允许的最大选项缓冲区的大小(一般用于特殊功能).
wmem_default 和 rmem_default : default (sizeof(struct sk_buff) + 256) * 256
description:
该文件指定了接收或发送套接字缓冲区大小的缺省值(以字节为单位).
wmem_max 和 rmem_max : default 131071
description:
该文件指定了接收或发送套接字缓冲区大小的最大值(以字节为单位).
如果通过setsockopt设置接收或发送缓冲区超过这值,会强制设置成这个值的两倍.
somaxconn : default 128
description:
调用listen(int fd, int backlog)函数时第二个参数的最大限制.
warnings : default 1
description:
是否开启debug(NETDEBUG, LIMIT_NETDEBUG)信息,默认开启.
xfrm_acq_expires : default 30
description:
hard timeout in seconds for acquire requests
xfrm_aevent_etime : default 10
description:
used to provide default values for the XFRMA_ETIMER_THRESH in incremental
units of time of 100ms. The default is 10 (1 second)
xfrm_aevent_rseqth : default 2
description:
used to provide default values for XFRMA_REPLAY_THRESH parameter
in incremental packet count. The default is two packets
xfrm_larval_drop : default 0
description:
defaults to 0 in newer kernels, which apparently causes io over an ipsec connection block when the link is unavailable.
It would seem bind, at least as of 9.4.1, does not anticipate this behavior, and hangs rather dramatically in the process
bridge
bridge-nf-call-arptables : net/bridge/br_netfilter.c default 1
description:
是否允许桥传输arp协议到arptable的FORWARD链.默认允许.
bridge-nf-call-iptables : net/bridge/br_netfilter.c default 1
description:
是否允许桥传输ip协议到iptable链.默认允许.
bridge-nf-call-ip6tables : net/bridge/br_netfilter.c default 1
description:
是否允许桥传输ip协议到i相关的ip6table链.默认允许.
bridge-nf-filter-pppoe-tagged : default 1
description:
是否允许桥传输pppoe-tagged IP/IPv6协议到相应的{ip,ip6}tables.默认允许.
bridge-nf-filter-vlan-tagged : net/bridge/br_netfilter.c default 1
description:
是否允许桥传输vlan-tagged ARP/IP协议到相应的iptables/arptables.默认允许.
token-ring
rif_timeout : default 6010HZ
description:
Controls the number of hundredths of seconds before RIF routing cache entries for the token ring subsystem are purged.
unix
max_dgram_qlen : default 10
description:
允许域套接字中数据包的最大个数,在初始化unix域套接字时的默认值.
在调用listen函数时第二个参数会复盖这个值.
ipv4/vs
am_droprate : default 10
description:
丢包率.
amemthresh:default 1024
description:
可用内存阈值.
cache_bypass: default 0
description:
是否建立旁路cache项.
debug_level:
description:
调试级别.
drop_entry:default 0
description:
确定删除连接处理级别.
drop_packet: default 0
descripton:
丢包级别.
expire_nodest_conn:default 0
descripton:
是否删除没有目的服务器的连接,默认不删除.
lblc_expiration:
descripton:
lblc算法的到期时间(缺省1天)
nat_icmp_send:default 0
descripton:
NAT模式下连接异常时发送ICMP包,默认不发送.
secure_tcp:default 0
descripton:
更安全的TCP状态转换. 3最安全.
sync_threshold: default [3, 50]
descripton:
连接同步时的包数阈值数值.
timeout_close:
descripton:
TCP sCL状态超时.
timeout_closewait:
descripton:
TCP sCW状态超时.
timeout_established:
descripton:
TCP sES状态超时.
timeout_finwait:
descripton:
TCP sFW状态超时.
timeout_icmp:
descripton:
ICMP超时.
timeout_lastack:
descripton:
TCP sLA状态超时.
timeout_listen:
descripton:
TCP sLI状态超时.
timeout_synack:
descripton:
TCP sSA状态超时.
timeout_synrecv:
descripton:
TCP sSR状态超时.
timeout_synsent:
descripton:
TCP sSS状态超时.
timeout_timewait:
descripton:
TCP sTW状态超时.
timeout_udp:
descripton:
UDP超时.
/proc/sys/vm
block_dump : mm/page-writeback.c default 0
description:
表示是否打开Block Debug模式,用于记录所有的读写及Dirty Block写回动作.默认关闭
dirty_background_ratio : mm/page-writeback.c default 10
description:
表示脏数据到达系统整体内存的百分比,一旦超过就会触发pdflush进程把脏数据写回磁盘.
dirty_expire_centisecs : mm/page-writeback.c default 30 * HZ
description:
表示如果脏数据在内存中驻留时间超过该值,pdflush进程在将把这些数据写回磁盘.
dirty_ratio : mm/page-writeback.c default 40
description:
表示如果进程产生的脏数据到达系统整体内存的百分比,此时进程自行把脏数据写回磁盘.
dirty_writeback_centisecs : mm/page-writeback.c default 5 * HZ
description:
表示pdflush进程周期性间隔多久把脏数据写回磁盘.
drop_caches : fs/drop_caches.c default 0
description:
写这文件会让kernel释放或抛弃所有保存在内存中的可能有用,但是目前没有用到的信息,包括高速缓存页,目录项和 i 节点.
当写的值为1时会释放所有高速缓存页,为2时会释放所有目录项和 i 节点(紧缩 slab ?),为3时释放前面说的全部.
hugepages_treat_as_movable : default 0
description:
This parameter is only useful when kernelcore= is specified at boot time to
create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages
are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero
value written to hugepages_treat_as_movable allows huge pages to be allocated from ZONE_MOVABLE.
Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge
pages pool can easily grow or shrink within. Assuming that applications are
not running that mlock() a lot of memory, it is likely the huge pages pool
can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value
into nr_hugepages and triggering page reclaim.
hugetlb_shm_group : fs/hugetlbfs/inode.c default 0
description:
表示允许使用hugetlb页创建System VIPC共享内存段的系统组ID, 默认0只有root组可以.
laptop_mode : mm/page-writeback.c default 0
description:
是否开启膝上型电脑模式,默认关闭.
膝上型电脑模式的页回写行为与传统方式相比只有一处变化。除了当缓存中的页面太旧时要执行回写脏页以外,pdflush还会找准磁盘运转的时机,
把所有其他的物理磁盘I/O、刷新脏缓冲等统统写回到磁盘,以便保证不会专门为了写磁盘而去主动激活磁盘运行。
上述回写行为变化要求dirty_expire_centisecs和dirty_writeback_centisecs两阈值必须设置的更大,比如10分钟。因为磁盘运转并不很频繁,
所以用这样长的回写延迟才能保证膝上型电脑模式可以等到磁盘运转机会写入数据。 多数Linux发布板会在电脑接上电池或拔掉电池时,
自动开启或禁止膝上型电脑模式以及其他需要的pdflush可调节开关。因此机器可在使用电池电源时自动进入膝上型电脑模式;
而在插上交流电源时恢复到常规的页回写模式.
legacy_va_layout : kernel/sysctl.c default 0
description:
选择线性区布局,布局之间只在文件内存映射与匿名映射线性区的位置上有区别.
当内核能用过RLIMIT_STACK资源限制来限定用户态堆栈的大小时,通常使用灵活布局.这个空间不能小于128M或大于2.5G (是吗?).
如果RLIMIT_STACK的资源设置为无限,或将这个值设置为1,内核无法确定用户态堆栈的上限,就使用经典布局.
0,使用灵活布局,文件内存映射和匿名映射的线性区是紧接用户态堆栈尾的.
1,使用经典布局,这些区域从整个用户态地址空间的1/3开始,通常在地址0x40000000.
lowmem_reserve_ratio : mm/page_alloc.c 256 256 32
description:
用于调节较低zone的保留页数量对于较高zone,以防止页在zone之间迁移.
第一个值:用于调节dma zone的最低内存保留对于更高一级的normal zone,在64位机器上是dma32 zone.
第二个值:用于调节dma32(64位机器)的最低内存保留对于更高一级的normal zone.
第三个值:用于调节normal的最低内存保留对于更高一级的highmem zone.
当在较低zone中分配内存以满足较高zone的分配请求时设置一个保留内存数量.这个参数在设置保留数量时对于相对的zone作除数.
例如:
当在DMA zone分配内存以满足NORMAL zone的分配请求时, 根据分配内存的权限取相应的zone->min,zone->low或zone->high值
在加上这个保留值,如果大于空闲内存数量那么这个DMA zone的内存不能为NORMAL zone分配.
max_map_count : mm/mmap.c default 65536
description:
进程能分配的最大虚拟内存域(struct vm_struct)的数量.
min_free_kbytes : default 1024
description:
表示强制Linux最低保留多少空闲内存,为原子分配内存准备.
zone的pages_min存储了zone内保留页框的数目. pages_low被设为pages_min值的5/4,而pages_high被设为pages_min的3/2.
mmap_min_addr : default 0
description:
This file indicates the minimum address of address space which a user process will be restricted from mmaping.
Since kernel null dereference bugs could accidentally operate based on the information in the first couple of pages of memory userspace,
processes should not be allowed to write to them.
By default this value is set to 0 and no protections will be enforced by the security module.
Setting this value to something like 64k will allow the vast majority of applications to work correctly and
provide defense in depth against future potential kernel bugs.
nr_hugepages : mm/hugetlb.c default 0
description:
在Huge TLB Filesystem中,系统保留的huge page页数.
nr_pdflush_threads : 只读 default 2
description:
表示当前正在运行的pdflush进程数量,在I/O负载高的情况下,内核会自动增加更多的pdflush进程.
overcommit_memory : mm/mmap.c default 0
description:
该文件指定了内核针对内存分配的策略,其值可以是0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程.
1, 表示内核允许内存分配时不做空间的检查,也就是可以分配超过实际现有空闲内存的大小.
2, 总的内存空间大小使用不能超过交换区大小加上物理内存的 %50(参照overcommit_ratio).
overcommit_ratio : mm/mmap.c default 50
description:
如果overcommit_memory=2,可以使用内存的调节百分比,通过以下公式来计算系统整体可用内存.
系统可分配内存=交换空间+物理内存*overcommit_ratio/100
page-cluster : mm/swap.c default 3
description:
表示在写一次到swap区的时候写入的页面数量,0表示1页,1表示2页,2表示4页等.
panic_on_oom : mm/oom_kill.c default 0
description:
当系统内存十分紧缺时,kernel会kill一个进程来释放一些内存.当这个值为1时,kernel不会kill进程而是panic.
默认为kill一个进程.
percpu_pagelist_fraction : mm/page_alloc.c default 0
description:
表示每cpu页框高速缓存的高水位和批量调节因子.当每cpu页框高速缓存的页框数量高于高水位时就会向伙伴系统释放批量指示的页框数量.
默认是0,kernel在启动时还没有用到这个值.
高水位的计算方法为,单个zone拥有的页框数除以这个变量值 : high = zone->present_pages / percpu_pagelist_fraction.(这个值最小是8)
批量的计算方法为 : pcp->batch = max(1UL, high/4);
stat_interval : default 1
description:
With this tunable you can configure VM statistics update interval. The default value is 1. This tunable first appeared in 2.6.22 kernel.
swappiness : mm/vmscan.c default 60
description:
表示系统进行交换行为的程度,数值(0-100)越高,越可能发生磁盘交换.
细节说明看《深入理解linux内核》688页.
swap_tendency = mapped_ratio / 2 + distress + sc->swappiness;
mapped_ratio : 用户态地址空间所有内存管理区的页占所有可分配页框数的百分比.
distress : 表示PFRA在管理区中回收页框的效率.依据是上一次PFRA运行时管理区的扫描优先级.
vdso_enabled : arch/i386/kernel/sysenter.c default 1
description:
默认开启kernel映射一个vDSO页.这个映射的页在进程发出execve()系统调用是会被自动的连接到进程的地址空间,以用来支持通过sysenter指令发出系统调用.
vDSO 是一个虚拟(dynamic shared object),它的目的是加速系统调用,这个映射的地址被固定在0xffffe000,但是从2.6.18开始这地址随机化了.
(为了安全问题和更容易帮助debugers)
vfs_cache_pressure : fs/dcache.c default 100
description:
该文件表示内核回收用于directory和inode 高速缓存的倾向;
缺省值100表示内核将根据pagecache和swapcache,把directory和inode高速缓存保持在一个合理的百分比;
降低该值低于100,将导致内核倾向于保留directory和inode 高速缓存;
增加该值超过100,将导致内核倾向于回收directory和inode 高速缓存;
pagecache: default 100
description:
如果文件高速缓存页的数量超过了一个百分比那么内核就会不在进行文件页的高速缓存,当符合了一定的条件页就会被换出。