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

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

 2007-03-12 12:41:42 来源:WEB开发网   
核心提示: 因此CONNTRACK_MAX和HASHSIZE值如果需要的话可以手工更改, 读取桶是一个连续性的操作(我们的兴趣在于得到一个哈西列表),关于iptables中ip_conntrack_max和hash表的关系及调整(4),请记得内核需要不停的遍历一个链接的列表去查找一个跟踪连接条目,因此

因此CONNTRACK_MAX和HASHSIZE值如果需要的话可以手工更改。

读取桶是一个连续性的操作(我们的兴趣在于得到一个哈西列表),请记得内核需要不停的遍历一个链接的列表去查找一个跟踪连接条目。因此一个链接列表(CONNTRACK_MAX/HASHSIZE的值在优化的状态下并且达到上限)的平均值不能设置太大。这个比值默认值是8(当值是自动计算的时候)。

在系统有足够的内存并且性能真的很重要的时候,你可以试着使平均值是一个跟踪连接条目配一个哈西桶,这意味着HASHSIZE = CONNTRACK_MAX。

设置CONNTRACK_MAX

---------------------

跟踪连接的条目是存储在链接的表中的,因此最大的跟踪链接条目(CONNTRACK_MAX)可以很容易的动态调整。

linux内核2.4.23之前,使用:

# echo $CONNTRACK_MAX > /proc/sys/net/ipv4/ip_conntrack_max

linux内核2.4.23之后,使用:

# echo $CONNTRACK_MAX > /proc/sys/net/ipv4/netfilter/ip_conntrack_max

这里$CONNTRACK_MAX是一个整数。

设置HASHSIZE

----------------

因为数学上的原因,哈西表占有固定的大小。因此HASHSIZE必须在哈西表被创建和开始填充之前就确定。

在linux内核2.4.21之前,必须使用素数作为哈西表的大小,而且要保证这个哈西表能够有效并通用。非素数的奇数或者其他的数值都是强烈不推荐使用的,因为这样哈西的分配不能达到最优化的状态。

从linux内核2.4.21(还有2.6内核)跟踪连接使用jenkins2b算法,这样就可以使用所有的数值,但是使用2^n次方运作的最有效。

如果netfilter的跟踪连接是被编译进内核中的,哈西表的大小就可以在编译的时候设置,或者(2.6内核之后)可以作为一个启动选项ip_conntrack.hashsize=$HASHSIZE。

上一页  1 2 3 4 5  下一页

Tags:关于 iptables ip

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