资源描述:
《内核网络优化》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、在/proc/sys/net/ipv4/目录下,包含的是和tcp/ip协议相关的各种参数,下面我们就对这些网络参数加以详细的说明。 参数名参数类型 参数值(如无特别标注,内存类的单位为byte,关于时间的单位为秒) 官方详细说明(skylove对该参数的个人心得或补充说明) ip_forward:BOOLEAN 0-关闭(默认值) 非0值-打开ip转发 在网络本地接口之间转发数据报。该参数非常特殊,对该参数的修改将导致其它所有相关配置参数恢复其默认值(对于主机参阅RFC1122,对于路由器参见RFC1812)(在其他一些操作系统中,这个
2、参数不是boolean型,而是INTEGER型,设置为0为不转发,1为根据接口情形决定是否转发,2是始终转发) ip_default_ttl:INTEGER 默认值为64 表示IP数据报的TimeToLive值(在网络传递中,每经过一"跳",该值减少1,当ttl为0的时候,丢弃该包.该值越大,即在网络上可以经过的路由器设备的数量越多,但一个错误的包,也会越发浪费生存周期.根据目前的实际情形而看,设置为32已经足够普通网络访问Internet的需求了) ip_no_pmtu_disc:BOOLEAN 默认值为FALSE(0) 关闭路径MTU
3、探测(典型的瓶颈原理,一次成功的传输中,mtu是由网络上最"窄"的位置决定的.如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation),把数据报分成若干片,这样每一片都小于MTU。 几种常见网络的MTU值: 超通道 65535 16Mb/s令牌网(IBM) 17914 4Mb/s令牌网(IEEE802.5) 4464 FDDI 4352 以太网 1500 IEEE802.3/802.2 1492 X.25
4、 576 点对点(低延时) 296 ipfrag_high_thresh:INTEGER 默认值为262144 用来组装分段的IP包的最大内存量。两个文件分别表示用于重组IP分段的内存分配最低值和最高值,一旦达到最高内存分配值,其它分段将被丢弃,直到达到最低内存(ipfrag_low_thresh见下文)分配值。(根据我个人理解,就是达到最高后,就"关门打狗",直到处理到最低值的时候才又开门放分段的ip包进来处理.如果最高/最低差距过小,很可能很快又达到限制又开始丢弃包;而设置过大,又会造成某段时间丢包时间持续过久.因此需要适当地
5、考虑,默认值中给出的最低/最高比率值为3/4.此外补充说明,kernel中,对内存的使用单位,都是以byte为单位的.当TCP数据包传输发生错误时,开始碎片整理。有效的数据包保留在内存,同时损坏的数据包被转发。我在1G内存的NAT机器上,分别设置最低为262144,最高为393216) ipfrag_low_thresh:INTEGER 默认值为196608 参见ipfrag_high_thresh。 ipfrag_time:INTEGER 默认值为30 保存一个IP分片在内存中的时间。 inet_peer_threshold:INTE
6、GER 默认值为65664 INET对端存储器某个合适值,当超过该阀值条目将被丢弃。该阀值同样决定生存时间以及废物收集通过的时间间隔。条目越多﹐存活期越低﹐GC间隔越短(GC=GrabageCollection废物收集?默认值65664=65536+128是怎么得来的呢?看include/net/inetpeer.hstructinet_peer的内容,是为了IPROUTE更快,缓冲对方IP的信息,一个对方IP一个记录.该值与 inet_peer_gc_maxtime inet_peer_gc_mintime inet_peer_maxtt
7、l inet_peer_minttl inet_peer_threshold 参数都是用来控制这个cache的大小的。似乎这个cache消耗比较大,在CU上有朋友提到过在一个26M的嵌入式Linux中,这个cache就用到了1M多内存) inet_peer_minttl:INTEGER 默认值为120 条目的最低存活期。在重组端必须要有足够的碎片(fragment)存活期。这个最低存活期必须保证缓冲池容积是否少于inet_peer_threshold。该值以jiffies为单位测量。(每次整理的时候,会考虑小于inet_peer_mint
8、tl的ip条目一定保存,而大于inet_peer_maxttl时间设置的ip条目会被释放) inet_pe