WEB开发网
开发学院网络安全防火墙 关于iptables中ip_conntrack_max和hash表的关系及... 阅读

关于iptables中ip_conntrack_max和hash表的关系及调整

 2007-03-12 12:41:42 来源:WEB开发网   
核心提示: 在i386架构上,HASHSIZE = CONNTRACK_MAX / 8 = RAMSIZE (以bytes记) / 131072 = RAMSIZE (以MegaBytes记) * 8,关于iptables中ip_conntrack_max和hash表的关系及调整(3), 举例来说,一

在i386架构上,HASHSIZE = CONNTRACK_MAX / 8 =

RAMSIZE (以bytes记) / 131072 = RAMSIZE (以MegaBytes记) * 8。

举例来说,一个32位、带512M内存的PC可以存储512*1024^2/128/1024 =

512*8 = 4096 个桶(链接表)

但是真正的公式是:

HASHSIZE = CONNTRACK_MAX / 8 = RAMSIZE (以bytes记) / 131072 / (x / 32)

这里x是指针的bit数,(例如,32或者64bit)

请注意:

-默认HASHSIZE的值不会小于16

-对于带有超过1G内存的系统,HASHSIZE的默认值会被限制在8192(但是可以手工设置成更大的值)

读取CONNTRACK_MAX和HASHSIZE

==================================

现在通过/proc文件系统我们可以在运行时读取CONNTRACK_MAX的值。

在Linux kernel 2.4.23版本前,使用:

# cat /proc/sys/net/ipv4/ip_conntrack_max

在Linux kernel 2.4.23版本后,使用:

# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max

(旧的 /proc/sys/net/ipv4/ip_conntrack_max是不建议使用的!)

当前的HASHSIZE总是可以在syslog信息中找到(对任何一个内核版本),桶(也就是HASHSIZE)的数目是在ip_conntrack初始化的时候显示出来的。

对于linux内核2.4.24以后,当前的HASHSIZE值可以在运行时使用下面的命令读取:

# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_buckets

修改CONNTRACK_MAX和HASHSIZE

====================================

默认的CONNTRACK_MAX和HASHSIZE的值都会因主机的不同而不同,但你可以在只做防火墙的高负载的系统上增加他们。

上一页  1 2 3 4 5  下一页

Tags:关于 iptables ip

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接