具体实施方式
本发明不同于现有技术笼统限制用户会话数的方式,对各类应用的会话数分别进行限制,从而避免由某类应用(例如:P2P)占用过多会话资源而导致无法进行其余应用的问题。
正如前面分析,现有技术没有对各类应用进行区分,而是笼统的限制用户会话数,对于设备(例如:NAT)而言,确实能够将会话数限制在其允许的一个范围内;然而,从用户角度来看,则认为是网络出现了问题:有时能够连接,有时则不能连接。对于浏览网页的应用,由于浏览一个网页通常要建立多个会话才能完成,当存在P2P类应用的影响时,会导致网页显示不全,或根本无法连接,给用户带来很大不便。
本发明正是从现有技术的问题出发,按照不同应用类型,对用户的会话数分别进行限制。
概括而言,本发明包括以下步骤:
1、配置由一条或多条访问控制列表(Access Control List,ACL)组成的限制组,并为每个限制组设定计数器及会话数最大值;
2、接收并解析会话建立请求,对所述请求进行限制组匹配;
3、判断所述请求所匹配的限制组的计数器值是否小于或等于该限制组的会话数最大值,若是,建立会话,并增加计数器值,否则,禁止建立会话。
其中,ACL早期用于对用户的访问进行限制,提高系统性能,后来逐步扩大到对数据流进行分类,满足配置规则的数据流就属于一类,继而进行分别处理。在本发明中,ACL可以按照IP五元组进行设置,IP五元组由“源IP、源端口、协议类型、目的IP和目的端口”构成。ACL可以按照IP五元组中一个或多个元素进行设置,一般是按照数据流出口方向“协议类型、目的IP和目的端口”设置。本发明中,一个限制组就对应一类应用,对各类型应用的会话数分别限制,从而避免某一类应用(P2P)占用过多会话资源而导致其余应用无法进行的问题。
本发明提供的方法和装置适用于各种会话数限制场合和设备,例如,可用来限制路由器会话数、提供状态检测的防火墙会话数和NAT会话数。下面以NAT为例,对本发明方法和装置的详细实现进一步阐述,对于其余应用与NAT类似,本文不再一一赘述。
首先,介绍本发明方法实施例一:
(1)要为各类应用配置会话数最大值以及计数器,每类应用对应一个限制组,那么多个限制组可构成一个会话限制配置表。
参见表1,为利用“协议类型、目的IP和目的端口”设置ACL从而构成的会话限制配置表的一个典型示例。
表1
限制组号 |
协议类型 |
目的IP |
目的端口 |
会话数最大值 |
计数器值 |
1 |
TCP |
- |
- |
200 |
默认值 |
2 |
TCP |
- |
80 |
300 |
默认值 |
TCP |
- |
443 |
3 |
TCP |
- |
100 |
400 |
默认值 |
其中,每一个限制组号代表一个限制组,也即表示一种应用。每个限制组可包含一条ACL,例如限制组1;也可以包含多条ACL,例如,限制组2,它就由“协议类型:TCP,目的端口:80”和“协议类型:TCP,目的端口:443”两条ACL组成。假设限制组2所包含的ACL表示HTTP协议,也即只有满足上述条件的数据流(发起HTTP连接的数据流)才会匹配上该项限制组。
在实际配置时,也可将上述表1拆分为两个表进行两次配置,首先配置“限制组号”和“ACL”,也即对ACL分类;然后再配置各限制组号对应的会话数最大值以及计数器,也即对各个限制组进行统计配置。
在配置阶段,各ACL的计数器值都是默认值,例如默认0。
(2)为每一个请求建立会话的用户按照表1进行匹配,查找其对应的限制组,从而获知该限制组的会话数最大值,以及计数器当前值。
在对表1所示的会话限制配置表进行匹配时,可采用不同的匹配方式。一种是采用精度匹配,该方式是指优先配置精度高的限制组,例如,某用户发起“协议类型为TCP、目的端口为80”的访问,通过匹配表1,则限制组号为1和2的两项都满足,然而限制组1中未对目的端口做要求,而限制组2明确要求目的端口为80,因此限制组2的匹配精度高,则认为匹配项为限制组2。另一种是顺序匹配,该方式是指各限制组中,优先匹配顺序靠前的限制组,例如上述“协议类型为TCP、目的端口为80”的访问,则匹配项为限制组1。
当用户第一次请求建立某应用的会话时,该应用对应的限制组的计数器必然为默认值,自然小于会话数最大值,也即允许该用户建立会话。
当用户后续再请求建立某应用的会话时,此时限制组的计数器已具有一定的值,是否允许建立会话则需要进一步判断。
(3)判断匹配的限制组的计数器值是否小于或等于该限制组的会话数最大值,如果是,则建立会话,并对计数器增加,例如加1;否则,则认为该用户建立的某应用(限制组)会话数已经达到会话数最大值,则不再允许为其建立会话。
实际上,可以通过一张连接限制表对每个用户的会话数进行维护。参见表2,为某用户的连接限制表示例。
表2
用户ID(源IP) |
限制组号 |
会话数最大值 |
计数器值 |
255.45.56.3 |
1 |
200 |
150 |
2 |
300 |
180 |
3 |
400 |
220 |
其中,用户ID是用户的唯一标识,可以采用源IP地址表示。对于源IP,可以采用“模糊”配置方式,即仅配置一个源IP范围,满足该范围的所有用户都认为采用一个连接限制表。
对于表2所示的连接限制表,可以在用户第一次请求建立会话时动态生成,动态生成的好处在于可以节约资源,只为当前用户建立表项;或者,在用户数不是很多的情况下,也可以事先静态配置完成,在具体匹配限制组后,再动态维护。
由于在维护表2时,必然要维护计数器值,因此在配置表1时,可以不配置计数器值一项。
正如前面(2)介绍,用户请求建立会话,可分为首次请求和后续请求,两种情况处理方式大致相同,只不过对于后续请求的情况,不需要建立连接限制表(表2),而直接利用首次请求时建立的即可。
参见图1,为用户首次建立会话流程图。
包括:
步骤101:用户首次请求建立NAT会话,即首次接收到用户建立会话的数据包;
步骤102:查询NAT规则,确定需要进行NAT转换;
步骤103:查询会话限制配置组表(表1),匹配限制组,从而获知该限制组的会话数最大值;
步骤104:为用户建立连接限制表(表2),其中包括计数器;
步骤105:判断计数器值是否小于或等于会话数最大值,若是,执行步骤106,否则执行步骤109;
步骤106:对计数器加1;
步骤107:建立NAT会话,完成NAT地址转换;
步骤108:转发数据包;
步骤109:禁止建立NAT会话。
参见图2,为用户后续建立会话流程图。
包括:
步骤201:用户后续数据包进入;
步骤202:查询NAT规则,确定需要进行NAT转换;
步骤203:查询会话限制配置表(表1),匹配限制组,从而获知该限制组的会话数最大值;
步骤204:查询该用户的连接限制表(表2),获知当前计数器值;
步骤205:判断计数器值是否小于或等于会话数最大值,若是,执行步骤206,否则执行步骤209;
步骤206:对计数器加1;
步骤207:建立NAT会话,完成NAT地址转换;
步骤208:转发数据包;
步骤209:禁止NAT转换。
实际上,可以将表2添加到表1中,一并进行维护。合并后参见表3,表3所示称为“会话配置限制表”。
表3
用户ID |
限制组号 |
协议类型 |
目的IP |
目的端口 |
会话数最大值 |
计数器值 |
255.45.56.3 |
1 |
TCP |
- |
- |
200 |
150 |
2 |
TCP |
- |
80 |
300 |
180 |
TCP |
- |
443 |
3 |
TCP |
- |
100 |
400 |
220 |
255.45.56.5 |
1 |
TCP |
- |
- |
200 |
100 |
2 |
TCP |
- |
80 |
300 |
254 |
TCP |
- |
443 |
3 |
TCP |
- |
100 |
400 |
286 |
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
之前介绍的采用表1和表2的方式,由于分别为每个用户维护一个表项较少的连接限制表,从而占用资源少,但是由于各用户的连接限制表是分别维护的,访问效率不高;而采用表3的方式,由于针对每个用户都需要再维护一遍表1中的各项参数,则会占用相对多一些的资源,但是由于各用户都统一存在与一个表中,访问效率提高。两种方式各有优劣,可根据具体实际情况,选择一种合适的实现方式。
下面,介绍本发明方法实施例二:
本实施例在实施例一的基础上,增加删除会话情况的实现。
需要删除会话的情况包括两种,一种是用户主动请求删除,例如,接收到TCP的删除控制包后进行的会话删除;另外一种是NAT会话表老化,继而需要对会话进行删除。
其中,上述提到的NAT会话表,是本领域一般所指会话表,它是为了记录一个数据流的NAT变换关系,建立的一个正、反两个方向的会话记录,只要符合会话的正反向数据流就按统一的方式进行地址转换。通常NAT会话表由转换前的IP五元组作为索引(key),以转换后的IP五元组作为结果。
在了解了NAT会话表的基础上,分别对两种删除会话的情况予以详细介绍。
一、用户主动请求删除
①当接收到删除会话请求(例如,TCP的删除控制包)后,可以查询会话限制配置表(表1)和连接限制表(表2),或者单独查询会话配置限制表(表3),得到匹配删除请求的各表项,然后将匹配的限制组的计数器值进行减小,例如减1,同时,删除会话。此外,对于联合查询表1和表2的情况,如果表2为动态建立的,则可以判断用户是否在一定时间段内没有建立会话的请求,如果是,则可以将表2删除,以节省资源;对于静态建立表2的情形,一般是保留表2。
②此外,除了上述介绍的查询表1和表2、或者表3,还可以查询NAT会话表。但是这有一个前提,即在配置表1或表3时,将限制组号保存到NAT会话表中,这样,会话删除时可以直接从会话表中得到限制组号,继而再查询表2或表3,方便进行计数器值的减操作。
参见图3,为采用上述方式②来进行的用户请求删除会话流程图。
包括:
步骤301:用户请求删除会话,即接收到用户删除数据包;
步骤302:查询NAT会话表;
步骤303:从NAT会话表中得到限制组号;
步骤304:根据限制组号,从连接限制表(表2)或会话配置限制表(表3)中得到限制组号对应的计数器值,并执行计数器减操作;
步骤305:删除NAT会话,完成NAT地址转换;
步骤306:转发数据包。
二、老化删除
对于会话表定时老化删除会话的情况,同样可以采用上述①或②的方式来对计数器值进行减操作。
参见图4,为采用上述方式②来进行的老化删除会话流程图。
包括:
步骤401:会话表老化定时器超时;
步骤402:查询NAT会话表;
步骤403:确定需要老化会话;
步骤404:从NAT会话表中得到限制组号;
步骤405:根据限制组号,从连接限制表(表2)或会话配置限制表(表3)中得到限制组号对应的计数器值,并执行计数器减操作;
步骤406:删除NAT会话,完成NAT地址转换。
在实施例一和实施例二的基础上,下面以一个具体应用实例来对上述实施例提供的方法进行说明。
例如,为了保证网页浏览不受其他应用的影响,设置了限制组1;为了保证TCP连接不受其他应用影响,设置了限制组2;设置缺省限制组3。具体如表4所示。
表4
限制组号 |
协议类型 |
目的IP |
目的端口 |
会话数最大值 |
1 |
TCP |
- |
80 |
200 |
TCP |
- |
443 |
2 |
TCP |
- |
- |
300 |
3 |
- |
- |
- |
400 |
假设“协议类型TCP+目的端口80”为HTTP协议;“协议类型TCP+目的端口443”为HTTPS协议,即限制组1表示“网页浏览”应用。并假设对表4的匹配方式采用精度匹配。
当用户A发起HTTP访问浏览网页时,会查询表4,匹配限制组1,得到会话数最大值200,此时,为用户A建立连接限制表,连接限制表中包括限制组1的计数器值。然后判断计数器值是否达到限制组1会话数最大值,由于是HTTP第一个连接,显然没有达到,此时将限制组1计数器值加1,同时建立HTTP连接。当用户A再发起BT访问时,此处假设BT采用TCP协议,会查询表4,匹配限制组22,然后再为用户A建立的连接限制表中添加限制组2表项,判断计数器值是否达到限制组2会话数最大值,由于是BT第一个连接,显然没有达到,此时将限制组2计数器值加1,同时建立BT连接。包含限制组1(HTTP)和限制组2(BT)访问的用户A的连接限制表参见表5。
表5
用户ID |
限制组号 |
会话数最大值 |
计数器值 |
A |
1 |
200 |
1 |
2 |
300 |
1 |
对于用户A后续继续发起访问,则动态维护表5,主要是确定计数器值小于或等于会话数最大值时,对计数器值进行增加操作;对于用户A后续删除会话,则也需要对表5进行维护,主要是对计数器值进行减操作。
一般而言,BT访问会大量建立连接,很快会达到限制组2的会话数最大值300,此时,即不再允许BT访问。而由于HTTP和HTTPS是单独的限制组,不会受到BT访问的影响,这样启动BT下载将不会对用户浏览网页造成任何影响。
另外,本发明还可以降低计算机病毒的影响。例如,一些病毒会对外进行TCP建链攻击,或者进行端口扫描,采用本发明,不会允许其无限制建链,在病毒建立会话数达到设定的会话数最大值后,即禁止建立会话,从而限制了病毒的进一步入侵,也保证了其他应用的正常运行。
下面,介绍本发明方法实施例三:
上述的实施例一和实施例二,都是针对单个用户而言,进行的会话数限制,而本实施例是针对支持多实例的虚拟专用网(Virtual Private Network,VPN)进行会话数限制。
实施例一或实施例二仅针对用户进行会话数限制,而实施例三是针对包括多个用户的一个VPN进行限制,指示限制对象不同,其实现原理和细节是类似的。
下面仍以一个具体应用实例来对实施例三提供的方法进行说明。
例如,为了保证网页浏览不受其他应用的影响,设置了限制组1;为了保证TCP连接不受其他应用影响,设置了限制组2;设置缺省限制组3。具体如表6所示。
表6
限制组号 |
协议类型 |
目的IP |
目的端口 |
会话数最大值 |
1 |
TCP |
- |
80 |
20000 |
TCP |
- |
443 |
2 |
TCP |
- |
- |
30000 |
3 |
- |
- |
- |
40000 |
假设“协议类型TCP+目的端口80”为HTTP协议;“协议类型TCP+目的端口443”为HTTPS协议,即“网页浏览”。并假设对表6的匹配方式采用精度匹配。
当VPN_A的用户A发起HTTP访问浏览网页时,会查询表6,匹配限制组1,得到会话数最大值20000,此时,为VPN_A建立连接限制表,连接限制表中包括限制组1的计数器值。然后判断计数器值是否达到限制组1会话数最大值,由于是VPN_A第一个HTTP连接,显然没有达到,此时将限制组1计数器值加1,同时为用户A建立HTTP连接。当VPN_A的用户B再发起HTTP访问时,也匹配限制组1,判断限制组1计数器值是否达到会话数最大值,如果没有,将限制组1计数器值加1,同时为用户B建立HTTP连接,否则,拒绝为用户B建立HTTP连接。
VPN_A的连接限制表参见表7。
表7
VPN标识 |
限制组号 |
会话数最大值 |
计数器值 |
A |
1 |
20000 |
2 |
对于VPN_A中用户后续继续发起访问,则动态维护表7,主要是确定计数器值小于或等于会话数最大值时,对计数器值进行增加操作;对于VPN_A中用户后续删除会话,则也需要对表7进行维护,主要是对计数器值进行减操作。
与方法相对应,本发明还提供一种限制会话数的装置,该装置用于限制防火墙会话数、NAT会话数或者路由器会话数,可以针对用户或VPN进行限制。
参见图5,为该装置内部结构示意图,包括
限制组配置单元501,用于配置由一条或多条ACL组成的限制组,并为每个限制组设定计数器及会话数最大值;
请求接收解析单元502,用于接收并解析会话建立请求;
匹配单元503,用于对所述请求进行限制组匹配;
判断单元504,用于判断所匹配的限制组的计数器值是否小于或等于该限制组的会话数最大值,若是,发出允许建立会话指示,否则,发出禁止建立会话指示;
会话执行单元505,当判断单元504指示允许建立会话时,建立会话,并通知所述限制组配置单元501增加所匹配的限制组的计数器值,当判断单元504指示禁止建立会话时,禁止建立会话。
当用户或VPN主动请求删除会话时,各单元增加以下功能:
请求接收解析单元502,进一步用于接收会话删除请求;
匹配单元503,进一步用于对会话删除请求进行限制组匹配;
会话执行单元505,删除会话,并通知限制组配置单元501减小所匹配的限制组的计数器值。
当由于老化需要删除会话时,各单元增加以下功能:
请求接收解析单元502,进一步用于接收会话老化通知;
匹配单元503,进一步用于对所述老化的会话进行限制组匹配;
会话执行单元505,删除会话,并通知所述限制组配置单元501减小所匹配的限制组的计数器值。
本发明提供的装置具体实现细节可参见方法实施例,在此不再赘述。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。