Linux的iptables / conntrack性能问题

我有一个testing设置在实验室与4台机器:

  • 2台旧P4机器(t1,t2)
  • 1至强5420 DP 2.5 GHz 8 GB RAM(t3)Intel e1000
  • 1至强5420 DP 2.5 GHz 8 GB RAM(t4)Intel e1000

testinglinux防火墙的性能,因为在过去的几个月里,我们被一些syn-flood攻击所困扰。 所有机器运行Ubuntu 12.04 64位。 t1,t2,t3通过1GB / s交换机相互连接,t4通过额外接口与t3相连。 所以t3模拟防火墙,t4是目标,t1,t2发挥攻击者生成的分组风暴(192.168.4.199是t4):

hping3 -I eth1 --rand-source --syn --flood 192.168.4.199 -p 80 

t4会丢弃所有传入的数据包,以避免与网关混淆,t4等性能问题。我观察iptraf中的数据包统计信息。 我已经configuration了防火墙(t3),如下所示:

(当t1 + t2发送尽可能多的数据包时,我已经调整了很多以保持t3运行)。

这种努力的结果有点奇怪:

  • t1 + t2设法发送每个约200k包/秒。 在最好的情况下,t4总共会有200k,所以有一半的数据包丢失了。
  • 虽然数据包在其中stream动,但是在控制台上t3几乎不能使用(大量的软中断)
  • 路由caching垃圾回收器没有办法接近于可预测的状态,并且在默认设置中被极less的数据包/秒(<50k数据包/秒)所淹没,
  • 激活有状态的iptables规则使得到达t4的数据包速率下降到大约100k数据包/ s,有效地丢失超过75%的数据包

而这也是我主要关心的 – 两台P4旧机器发送尽可能多的数据包 – 这意味着几乎networking上的每个人都应该能够做到这一点。

所以这里是我的问题:我忽略了一些importand点在configuration或在我的testing设置? build立防火墙系统,特别是在smp系统上有没有其他的select?

我将迁移到不再具有路由caching的Kernel> = 3.6。 这应该解决你的问题的一部分。

你在T3上的日志logging设置如何? 如果所有丢弃的数据包都被logging,则磁盘I / O可能是原因。

由于这是一个testing环境,因此可以尝试closuresT3日志logging的testing。