看似简单的问题,深究起来还是有很多问题需要思考的。俺说说俺的想法,欢迎拍砖。 防火墙三类:包转发防火墙、状态连接防火墙、应用层防火墙 这里提到会话数、新建会话,则适用于后两类防火墙,因为包转发防火墙大都数只进行包头检查,并非维护会话表。 我们现在叫常用的也是状态连接防火墙,当然有些防火墙提供一些应用层协议检测的功能。所以,着重说状态连接防火墙。 TCP的有状态连接协议,每一个TCP连接建立都需要三次握手,也就是Syn、Syn-ack、Ack。当这样握手的数据包通过防火墙时,防火墙就会为此次连接建立一个session,并把这个session存放起来,一般在内存中,则后续的数据包就会利用此次建立的session进行传递数据。第一次建立session的时候,当然要做很多检测,包的信息、是不是被防火墙策略允许、有没有做NAT等等,后续包通过防火墙的时候就会比对session表里的信息,以便提高防火墙的性能。如果另外一个包包含了新的syn信息通过,并且完成三次握手,防火墙就会建立另外一个新的session给这个连接。 所以这里可以看到,并非你多开一个网页或者打开个图片就一定会产生新的session,要看你的应用程序如何编写。如果程序利用原来的连接,就会使用原来的session,当然这样的效率是最高的。防火墙会给每个session一个过期时间,当过期时间到了以后,这个session就会被删除。为了提高效率,很多程序会自动的发送keepalive的包来维护连接,以便减少握手的次数。 对于前面同学说每个icmp包会开一个session,这种做法一般是很少的,udp、icmp这种非面向连接的协议,一般通过防火墙,防火墙就会直接转发过期,不会放到session表里,以便提高效率。当然,像checkpoint等一些防火墙,还是有些办法对方udp、icmp这种非面向连接的协议(如stateful udp、stateful icmp option等),启用这些选项必然会对性能有影响。信息安全也无非就是在安全和可用性之间在做权衡。 基于以上原因,最大会话数、新建会话数、吞吐率就成为选择防火墙性能的三个常用标准,相对来说较包转发速度或小包转发速度更为直观。 我想,用户数、通常使用的程序数量、带宽的关系应该可以给出一个semiquantitative或者行业实践的指标,不过我没有,还是等待高人拍砖吧。
阅读(4687) | 评论(0) | 转发(0) |