分页: 1 / 1

《15. OpenBSD PF用户指南之附属议题——性能》

发表于 : 2010-01-21 10:18
leo
PF: 性能

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

"PF能处理多大的带宽?"
"我需要多少计算机处理我的Internet连接?"
无法简单地回答这些问题。对一些应用来说, 一台486/66带两块好的ISA网卡可以过滤和转换大约5Mbps流量, 但对另一些应用来说一台快很多的计算机和更加高效的PCI网卡可能也不够。 真正的问题不是每秒能处理多少字节的流量, 而是使用每秒能处理多少个数据包以及规则集的复杂程度。

PF 的性能由一些因素决定:

每秒的数据包数量 —— 1500字节的数据包和只有1字节数据包所需的处理次数几乎是一样的。每秒多少个数据包意味着每秒多少次状态表和, 假设没有匹配, 过滤规则一刻不停地被评估, 意味着对系统性能的有效需求。
你系统总线的性能 —— ISA总线最大带宽为 8MB/sec, 并且当处理器访问它时, 它不得不把自己的有效速度降到80286的8MHz, 不管你的处理器多快。PCI总线有好的多有效带宽和兼容性。
网卡的效率 —— 一些网卡就是比其它的高效, 基于Realtek 8139 (rl(4))的卡较差, 而基于Intel 21143 (dc(4))的很好。为了追求最高的性能, 请考虑千兆以太网卡, 即使不是连接到千兆网络上, 因为千兆网卡有更多的缓存。
规则集的复杂性和设计 —— 规则集越复杂越慢。越多的数据包被keep state和quick规则过滤性能越好。需要评估的规则行数越多性能越差。
勉强的影响因素:CPU和内存 —— 因为PF是基于内核的程序, 它不使用交换空间, 因此, 如果你有足够的内存它就可以运行, 如果内存少, 会导致 pool(9) 耗尽性能变差。也不需要大量的内存—— 32MB 可提供约30, 000个状态, 对小型办公环境和家庭应用来说这是很大的数量了。多数用户会发现一台"再利用" 的计算机足以应付PF系统—— 如果设定好网卡和规则集, 一台300MHz的系统就可以迅速传送大量的数据包。
多处理器可以提高性能吗?
PF只用一个处理器, 所以多处理器(或多核)不能改善PF的性能。然而, 在某些环境下因为中断处理的差别, 用SMP版本的OpenBSD(bsd.mp替代bsd)将获得更好的性能。多数情况下使用bsd.mp 将降低PF的性能。如果你发现性能上有问题, 可以试验一下, 别太费心, 一般情况下不会出现奇迹。
有没有基准?
人们经常询问PF的基准。唯一有效的基准就是在你的环境下你的系统性能。一个没有复制你环境的基准并不能适当地帮助你设计自己的防火墙。最好的做法是自己制定自己基准, 在与防火墙实际使用相同或尽可能接近的网络条件下使用相同的硬件进行测试调整。

PF运行在一些非常大型、高流量的应用上, 并且开发者是PF的"超级用户", 还有, 就是它会为你做得很完美。