QUOTE:原帖由 platinum 于 2007-4-19 17:47 发表于 3楼
这是逻辑上的冗余,那条规则是个废规则
这些东西如果不知道是什么意思不要去改,否则会出现相反的不稳定的结果
另外,你用的是 SNAT,他用的是 MASQUERADE,这点你比他的效率要略微高一些
从上面三点 ...
这是我查的内核参数的说明,看的不是很明白,大家帮忙分析分析,多谢了!
echo "0" > /proc/sys/net/ipv4/tcp_timestamps
缺省值为1
Timestamps 用在其它一些东西中﹐可以防范那些伪造的 sequence 号码。一条1G的宽带线路或许会重遇到带 out-of-line数值的旧sequence号码(假如它是由于上次产生的)。Timestamp 会让它知道这是个 '旧封包'。(该文件表示是否启用以一种比超时重发更精确的方法(RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。)
echo "2000000" > /proc/sys/net/ipv4/tcp_max_tw_buckets
默认值是180000
系统在同时所处理的最大 timewait sockets 数目。如果超过此数的话﹐time-wait socket 会被立即砍除并且显示警告信息。之所以要设定这个限制﹐纯粹为了抵御那些简单的 DoS 攻击﹐千万不要人为的降低这个限制﹐不过﹐如果网络条件需要比默认值更多﹐则可以提高它(或许还要增加内存)。(事实上做NAT的时候最好可以适当地增加该值)
echo "30000000" > /proc/sys/net/ipv4/tcp_rmem
(3个INTEGER变量): min, default, max
min:为TCP socket预留用于接收缓冲的内存数量,即使在内存出现紧张情况下tcp socket都至少会有这么多数量的内存用于接收缓冲,默认值为8K。
echo "30000000" > /proc/sys/net/ipv4/tcp_wmem
(3个INTEGER变量): min, default, max
min:为TCP socket预留用于发送缓冲的内存最小值。每个tcp socket都可以在建议以后都可以使用它。默认值为4096(4K)。
echo "30000000" > /proc/sys/net/ipv4/tcp_mem
(3个INTEGER变量):low, pressure, high
low:当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存。(理想情况下,这个值应与指定给 tcp_wmem 的第 2 个值相匹配 - 这第2 个值表明,最大页面大小乘以最大并发请求数除以页大小 (131072 * 300 / 4096)。 )
echo "10000000" > /proc/sys/net/core/rmem_max
该文件指定了接收套接字缓冲区大小的最大值(以字节为单位)
echo "10000000" > /proc/sys/net/core/rmem_default
该文件指定了接收套接字缓冲区大小的缺省值(以字节为单位)
echo "10000000" > /proc/sys/net/core/wmem_max
该文件指定了发送套接字缓冲区大小的最大值(以字节为单位)
echo "10000000" > /proc/sys/net/core/wmem_default
该文件指定了发送套接字缓冲区大小的缺省值(以字节为单位)
echo "10000000" > /proc/sys/net/core/optmem_max
该文件指定了每个套接字所允许的最大缓冲区的大小。
echo "30000" > /proc/sys/net/core/netdev_max_backlog
该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
[ 本帖最后由 power1981 于 2007-4-19 21:11 编辑 ]