测试freebsd上的pf防火墙和linux上的iptables防火墙-zz

测试环境和测试项目
主要测试项目有
1 windows2003sp2 linux(redhat as4 32为) freebsd7(amd64) 三种系统作为路由时的数据转发能力。
2 windows2003sp2 linux(redhat as4 32位) freebsd7(amd64) 三种系统做nat时的数据转发能力。
3 linux+iptables 和freebsd+pf 的数据包过滤效率。
4 另有两台服务器直接通过交换机相连,测出数据传输速度已作为参考比较。

相关网络环境介绍
测试相关说明:
HP-360G4,作为今天测试的主服务器,配备1g内存 xeon3.0G的处理器Broadcom千兆网卡。
应该算是主流的配置。交换机用的是cisco3560g千爪交换机。整个测试环境是纯千兆的。

为了公平期间,win2003和freebsd和linux(redhat-as4)都是默认最小化安装 ,也都是为了这次测试全新安装的,没有进行任何的参数修改,freebsd编译过内核,但仅仅是为了启用pf防火墙,没有对网络参数做任何修改。Win2003启用的是自带的路由和nat功能。

作为包过滤防火墙性能的测试 我一共准备了 4千条 和4万条规则 两套方案。
防火墙默认是放行 ,所有规则都是匹配不到的拒绝规则,就是为了让数据包经历所有的对规则再放行。防火墙规则由协议 端口 ip地址 这三种最常见条件分别单独列出。其他特色功能因防火墙各异略有不同,不是测试重点,这次没有测试。
目的是为了体现多规则下的过滤效率和负载能力。

附录:
Iptables规则 (分2种 一种约4千条, 一个约4万条只有数量差别没有本质差别)

#!/bin/sh
#############################

echo "1">/proc/sys/net/ipv4/ip_forward

#############################

$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

##############################
IPT="/sbin/iptables"
#for LOCAL
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
##############################

iptables -A FORWARD -p tcp -s any/0 --sport 1 -j DROP
iptables -A FORWARD -p tcp -s any/0 --sport 2 -j DROP
iptables -A FORWARD -p tcp -s any/0 --sport 3 -j DROP
.....................................
iptables -A FORWARD -p udp -s any/0 --sport 1 -j DROP
iptables -A FORWARD -p udp -s any/0 --sport 2 -j DROP
iptables -A FORWARD -p udp -s any/0 --sport 3 -j DROP
....................................
iptables -A FORWARD -s 172.16.0.1 -j DROP
iptables -A FORWARD -s 172.16.0.2 -j DROP
iptables -A FORWARD -s 172.16.0.3 -j DROP
..................................
iptables -A FORWARD -d 172.16.246.39 -j DROP
iptables -A FORWARD -d 172.16.246.40 -j DROP
iptables -A FORWARD -d 172.16.246.41 -j DROP
iptables -A FORWARD -d 172.16.246.42 -j DROP
iptables -A FORWARD -d 172.16.246.43 -j DROP
iptables -A FORWARD -d 172.16.246.44 -j DROP
..........................

PF防火墙规则 (和iptables规则一样的,也分4k和40k两套方案)
block inet proto tcp from any to any port 1
block inet proto tcp from any to any port 2
block inet proto tcp from any to any port 3
block inet proto tcp from any to any port 4
。。。。。。。。。。。。。。。
block inet proto udp from any to any port 1
block inet proto udp from any to any port 2
block inet proto udp from any to any port 3
block inet proto udp from any to any port 4
。。。。。。。。。。。。。。。。。
block from 172.16.0.1 to any
block from 172.16.0.2 to any
block from 172.16.0.3 to any
block from 172.16.0.4 to any
。。。。。。。。。。。。
block from any to 172.16.246.42
block from any to 172.16.246.43
block from any to 172.16.246.44
block from any to 172.16.246.45
。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。
###############################################################################


附录 生成防火墙规则的c 代码 (方便懒人使用,改改就可以了)
####################################
## 参数c没有用上,主要因为生成的规则已经够多了 没必要在加其他条件了
#include
main()
{
FILE *fp;
int a=0;
int b=0;
int c=0;
fp=fopen("c:\\temp.txt","w");
loop: for(a=1;a<252;a++)
fprintf(fp,"iptables -A FORWARD -s 172.16.%d.%d -j DROP\n" ,b,a);
if(c<1)
{
if(b==250)
{c=c+1;b=1;a=1; goto loop; }
if(b<251>250 )
{ b=b+3; goto loop;}
}
}
fclose(fp);
}

#######################################


测试软件介绍
IxChariot是目前唯一成为工业界标准的 IP网络与网络设备应用层测试系统。
IxChariot 测试原理是通过主动式定量的测试方式,产生真实的流量,测试网络设备或网络系统在真实应用下端到端的性能。同时,IxChariot采用分布式的结构,可以对任何规模或形式的网络进行性能测试,

数据在汇总中


插图

参加测试的服务器


参加测试的交换机



它提供的硬盘 呵呵 别的机器都惹不起,只好找个软柿子捏

首先测试的是双机直连的带宽,为的是给以后做参考,看看经过路由转发后速度下降多少
简单说明 单向指的是一方单向发送数据。双向指的是双方对发数据(双工嘛呵呵)
测试用的脚本参数如下,为了适应1000m网络的速度 我更改了数据大小(比正常的参数大100倍)。每次测试时间基本上在20-30分钟,应该结果说比较准确。以下测试都是用着这种更改参数后测试脚本。

脚本参数如下
更改参数后的脚本

默认的脚本






×××××××××××××××××××××××××××××××××××

开始测试
1路由转发模式5线程单向测试

1路由转发模式5线程单向
这项测试是各系统作为路由器使用时的转发性能。
可以看出来 双机直连接近1000m网络的极限了,其他系统转发性能基本都在600兆左右徘徊。





×××××××××××××××××××××××××××××××××
路由转发模式双向各5线程

2路由转发模式双向各5线程
在双向发送的测试中 双机直连的传输量几乎提高了1倍,其他系统各有提高,但提高不大,可能在当前条件下转发性能已经接近极限。Windows2003可是最高的喔~~~

(单位Mbps)


×××××××××××××××××××××××××××××××××
NAT性能测试
我想大家比较关心的就是这个测试。
通过测试可以看出来 windows2003一点也不差,并不是传说中的垃圾。
(单位Mbps)

×××××××××××××××××××××××××××××
接下来的是防火墙的测试

Freebsd+pf没有通过大流量的测试,用更改参数后脚本一测试,freebsd7立刻就当机了,连控制台都死了,热启键也没有用了。不管用4k条脚本还是用40k条规则脚本都一样,一测试就死机,也许还活着但我等了几分钟没反映,我认为它挂了。以前在网上有说pf流量大有可能会当掉,看来也是无风不起浪啊。
没办法我只能换默认的脚本测试,这次通过了,但是速度下降了很多很多,只有5m多点。用40k条规则脚本后速度更慢了,ping的延迟由以前的不到1ms增加到40多ms,速度下降到不到1兆,我看和坏了也差不多了。呵呵
(单位Mbps)


××××××××××××××××××××××××××××
接下来是linux做同样的测试。

4k条规则下linux+iptables的转发性能同样下降很多,但比freebsd+pf高出近10倍左右 ,基本维持在60兆左右。并且通过了我修改参数后脚本的高负荷的测试。
Linux+iptables没有通过40k条规则的测试。
主要我实在不知道怎样把4万条规则加到iptables里面去。
Iptables 只能通过批处理来导入规则。但是我导的太多就提示
“memory allocationproblem ” 我也没有查到什么有用的资料或者解决办法。
网上有人说这是因为iptables在到如规则过快是有可能会出现死锁等问题,但也没有提出解决方法。我想可能也不会有人给iptables加几万条的过滤规则吧?

(单位Mbps)
 

转载于:https://www.cnblogs.com/fand/archive/2009/12/22/1629722.html

你可能感兴趣的:(测试freebsd上的pf防火墙和linux上的iptables防火墙-zz)