Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4450762
  • 博文数量: 1214
  • 博客积分: 13195
  • 博客等级: 上将
  • 技术积分: 9105
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-19 14:41
个人简介

C++,python,热爱算法和机器学习

文章分类

全部博文(1214)

文章存档

2021年(13)

2020年(49)

2019年(14)

2018年(27)

2017年(69)

2016年(100)

2015年(106)

2014年(240)

2013年(5)

2012年(193)

2011年(155)

2010年(93)

2009年(62)

2008年(51)

2007年(37)

分类: LINUX

2010-11-23 15:30:16

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ccie119.blog.51cto.com/663207/421535
因为一直有和各种防火墙打交道
涉及到用户会话数这个敏感词
防火墙能支持多少数量的会话标称,本来是标示防火墙性能的一个重要指标。
那么,防火墙的会话,到底是一种怎么样的性能呢?
如果是普通的包过滤防火墙,无所谓会话。这种防火墙通常见第一代的国产防火墙,很多就是用ipchains改造过来的。
对于这种防火墙,重要的性能指标是防火墙的吞吐量,或称滤通量;以及包过滤的时延。会话,只对提供状态检测的防火墙才有意义。
但现在的防火墙都要求提供网络连接检测。众所周知,TCP是有状态的连接,状态检测的防火墙能根据该IP包所属的连接是新的还是旧的,决定该IP包是否符合防火墙的政策约定。
因此,防火墙必须在内存中保留这一记录,这就是会话的由来,每一个连接,就是一个会话。
由于目前的防火墙一般工作中转接网关,存在着大转小这样的情况,如内部网是百兆,而上网的ADSL拨号和专线是2MB/10MB这种。因此,由于网络变窄,部分连接请求不能马上实施,只能在内部队列中一个个地招待,这样,对于没有连接状态的部分请求,在保持在防火墙内存排队时,目前也算是一个会话。
大部分防火墙都是由linux或类似的操作系统发展来的,包括screen OS和checkpoint,因此,他们的原理有共通性。这里就以netfilter作一个例子进行说明。只要在netfilter中编译进mod_conntrack模块,防火墙就具备了进行状态检测,或称状态跟踪的功能。
防火墙支持多少会话,仅取决于防火墙的内存多少,系统会自动采用所有内存,直接内存用光,系统崩溃为止。因此,许多防火墙根据自已的内存的多少,设定一个参数ip_conntrack_max的大小。有这个限制,一旦系统记录的会话达到这个数值,系统就不再建立新的会话。所以,一个防火墙如果单纯希望增大这个参数,仅需要增加内存(10万会话约消耗45M内存),然后不顾一切地把ip_conntrack_max设定大大的,别说一百万,就是算一千万也是可以达到的。
那么一般防火墙需要多少会话呢?用两种应用举个例子。
象http,每一个href都将是一个连接,包括每一个的图片,打开一个静态网页,需要2条会话,,因此,浏览一个网页,常常是同时出现二十个连接以上。这种连接迅速而来,又迅速完成(网页下载都有一个速度要求)。
而ftp和telnet就是另一个例子,就算下载上百兆的文件,也只是一个连接;而使用多线程下载工具,象netant,每一个线程都是一个连接。
因此,假设是一个500人的网络需要上网,其中同时浏览的有100人(平均20秒刷新一次),另外200人打QQ,50人使用十个线程下载文件,还有50 人进行如telnet,数据库访问这样的会话;如果没有出口瓶颈,那么,实际的会话数估计是在千以上附近。
 

把握这个控制的度非常重要   不然会出现丢包 无法正常打开页面等问题
但如果有出口限制,那么就可能升级到万以上。但无论是多大的网,达到几万以上的也是极为罕见的,真的出现了这种情况,很可能是感染了如冲击波这类的病毒。
 

防火墙最通常使用是内部的子网分隔,这部分也会产生一部分会话请求。对于百兆/千兆这种一般的网络环境来说,大致有十万以上的会话能力的防火墙,也基本上足够了。保持太多的会话对防火墙没有必要,相反,当系统资源过多地用在会话保持的话,会相应损害每秒生成会话的能力,这是一个同样重要的性能指标。设定过高的会话数量,却降低了每秒生成会话的能力,其结果,只能是保留一些永远用不到的会话虚数而已。
每秒生成会话能力,也称会话速率,主要与CPU处理能力/寄存器的数量,以及操作系统内核是否利用这一处理能力有关。相对而言,这是使用X86的系统比较弱的部分,包括nokia,而使用RISC的系统,速动会话的能力就比较高,相应地,保持最大会话的能力也比较弱。 对于X86/Linux/BSD的防火墙来说,会话最大保持在10万到30万是比较合理的。如果使用非常强大的主板,而且linux针对这种主板进行了一些底层优化(主要是优化对寄存器-内存之间访问的过程),可以在不损害会话速率等性能的情况下把会话达到50万到60万。
这是目前本人所知的最大极限。 会话的性能需要内存,如果考虑防火墙和操作系统本身展开需要128M内存左右的话,那么40万会话就要消耗约180M,意味着是300M内存以上才有可能。由此,也可以知道一些产品的标称是否有弄虚作假的成分。
阅读(762) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~