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

豆豆网   技术应用频道   2007年03月12日  【字号: 收藏本文

本文详细介绍关于iptables中ip_conntrack_max和hash表的关系及调整

  哈西表包含了HASHSIZE大小的链接条目。当条目满的时候(总的跟踪连接条目数达到了CONNTRACK_MAX),理想状态下,每个列表(在最优化的条件下)将包含大约CONNTRACK_MAX/HASHSIZE的条目数。

  不管你是否有连接,哈西表都将占用一个固定大小的非交换内核内存。但是最大连接跟踪条目会检测最多可以存储多少条目(globally into the

  linked lists),也就是说他们最多可以占用多少的内核内存。

  这篇文档将给你一些关于为了达到最好的netfilter conntracking/NAT系统性能,如何调优HASHSIZE和CONNTRACK_MAX值的提示。

  CONNTRACK_MAX和HASHSIZE的默认值

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

  一般来说,CONNTRACK_MAX和HASHSIZE都会设置在“合理”使用的值上,依据可使用的RAM的大小来计算这个值。

  CONNTRACK_MAX的默认值

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

  在i386架构上,CONNTRACK_MAX = RAMSIZE (以bytes记) / 16384 =

  RAMSIZE (以MegaBytes记) * 64,

  因此,一个32位的带512M内存的PC在默认情况下能够处理512*1024^2/16384 = 512*64 = 32768个并发的netfilter连接。

  但是真正的公式是:

  CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (x / 32)

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

  请注意:

  -默认的CONNTRACK_MAX值不会低于128

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

  HASHSIZE的默认值

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

  通常,CONNTRACK_MAX = HASHSIZE * 8。这意味着每个链接的列表平均包含8个conntrack的条目(在优化的情况并且CONNTRACK_MAX达到的情况下),每个链接的列表就是一个哈西表条目(一个桶)。

责编:豆豆技术应用

正在加载评论...