一种网络连接跟踪方法及其系统转让专利

申请号 : CN200810226986.9

文献号 : CN101635639B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 米嘉梁志勇陶涛刘林周知远陈鑫

申请人 : 北京网康科技有限公司

摘要 :

本发明披露了一种网络连接跟踪方法及系统,所述方法包括连接跟踪逻辑,其中所述连接跟踪逻辑包括处理未确认连接的表和处理已确认连接的表,所述方法包括以下步骤:对于未确认连接,判断是否满足确认条件;满足确认条件的话,迁移到处理已确认连接的表中;把处理已确认连接的表中的连接依次进行协议栈后继处理。本发明利用两级连接跟踪表结构使无效连接或无意义连接占用有限的网络资源降到最低,同时提前对数据包加以区别以便跟踪其连接状态。

权利要求 :

1.一种包括连接跟踪逻辑的网络连接跟踪方法,其中所述连接跟踪逻辑包括处理未确认连接的表(T1)和处理已确认连接的表(T2),所述方法包括以下步骤:步骤1,在该处理已确认连接的表(T2)中进行查找与数据包相关的连接,如果该连接已在该处理已确认连接的表(T2)中,则直接执行下述步骤5;

步骤2,对于不属于已确认连接的数据包,在该处理未确认连接的表(T1)中进行查找与该数据包相关的连接,如果没有相关表项,则确认其属于新建连接,并在该处理未确认连接的表(T1)创建对应的连接表项;

步骤3:对于未确认连接(C),判断是否满足确认条件(CC);

步骤4:满足确认条件(CC)的话,迁移到处理已确认连接的表(T2)中;其中,该确认条件(CC)为网络层的协议状态和统计信息、传输层的协议状态和统计信息、应用层的协议状态和统计信息中的一个或多个;

步骤5:把处理已确认连接的表(T2)中的连接依次进行协议栈后继处理。

2.如权利要求1所述的网络连接跟踪方法,所述处理未确认连接的表(T1)和处理已确认连接的表(T2)均为Hash表。

3.如权利要求2所述的网络连接跟踪方法,所述未确认连接从处理未确认连接的表(T1)到处理已确认连接的表(T2)的迁移为从处理未确认连接的表(T1)中相应的Hash链中删除,移动到处理已确认连接的表(T2)中相应的Hash链。

4.如权利要求1所述的网络连接跟踪方法,所述网络层的协议状态和统计信息为以下一种或两种:连接的两个方向均至少有一个数据包;

连接双方至少交换了一定规模的字节。

5.如权利要求1所述的网络连接跟踪方法,所述传输层的协议状态和统计信息为TCP完成三次握手。

6.如权利要求1所述的网络连接跟踪方法,所述应用层的协议状态和统计信息为FTP成功登陆。

7.如权利要求1至6任一项所述的网络连接跟踪方法,还包括以下步骤:周期性清理处理未确认连接的表(T1)中不活跃时间超过时间阈值的未确认连接。

8.如权利要求7所述的网络连接跟踪方法,所述周期性清理每隔一个周期进行,周期由定时器触发确定,或者由若干次处理未确认连接的表(T1)更新操作确定。

9.如权利要求8所述的网络连接跟踪方法,所述连接用IP和PORT表示,并且/或者,在表查询操作中以IP和PORT信息为关键字。

10.一种网络连接跟踪系统,包括:

处理未确认连接的表(T1)和处理已确认连接的表(T2),以及连接创建模块(406),对于属于新建连接的数据包,在处理未确认连接的表(T1)中创建相应的表项;

连接迁移模块(402),判断该处理未确认连接的表(T1)中的未确认连接是否满足确认条件(CC),在未确认连接满足确认条件(CC)时,将未确认连接迁移到该处理已确认连接的表(T2)中;其中,所述确认条件(CC)为网络层的协议状态和统计信息、传输层的协议状态和统计信息、应用层的协议状态和统计信息中的一个或多个;和后继处理模块(410),把处理已确认连接的表(T2)中的连接进行协议栈后继处理。

11.如权利要求10所述的网络连接跟踪系统,还包括连接替换模块(404),在新建连接数超过限制阈值时,新建连接依照替换策略替换已有的连接。

12.如权利要求10所述的网络连接跟踪系统,还包括周期清理模块(408),周期性清理处理未确认连接的表(T1)中不活跃时间超过时间阈值的未确认连接。

13.如权利要求12所述的网络连接系统,所述周期性清理每隔一个周期进行,周期由若干次处理未确认连接的表(T1)更新操作确定。

14.如权利要求10所述的网络连接跟踪系统,所述网络层的协议状态和统计信息为以下一种或两种:连接的两个方向均至少有一个数据包;

连接双方至少交换了一定规模的字节。

15.如权利要求10所述的网络连接跟踪系统,所述传输层的协议状态和统计信息为TCP已完成三次握手。

16.如权利要求10所述的网络连接跟踪系统,所述应用层的协议状态和统计信息为FTP已成功登陆。

17.如权利要求10所述的网络连接跟踪系统,还包括连接查询模块(400),对处理未确认连接的表(T1)和/或处理已确认连接的表(T2)进行查询操作中以IP和PORT信息为关键字。

说明书 :

一种网络连接跟踪方法及其系统

技术领域

[0001] 本发明涉及一种网络连接跟踪方法及其系统。

背景技术

[0002] 任何网络连接,都离不开协议栈的作用。一个连接就是至少一个数据包从发送端到目的端的传送。这中间首先要在连接表中创建便于跟踪维护的表项,使数据包和连接关联起来,然后通过协议栈的转化。
[0003] 任何网络管理设备,如果要支持基于连接的控制,就需要维护连接信息,即对数据包进行连接跟踪,以便把数据包跟所属连接关联起来,从而在连接的层次对数据包进行控制。
[0004] 图1示出现有技术连接跟踪结构图。如图1所示,T0表即为单级连接跟踪表,一个数据包P传送过来后,首先要在T0表中进行查询,看是否已经存在该连接C。如果存在,更新该连接C的统计/状态信息;如果不存在,则需要在T0表中创建新的表项,以标示该数据包所代表的新连接C。然后,在连接跟踪表中已有的连接经过协议栈后继处理。
[0005] 协议栈的后继处理包括协议的分析转化(例如IP->TCP->HTTP)以及数据包的转换(例如NAT)以及转发(路由或桥接)。其中,协议栈对数据包的转化,比如IP->TCP->HTTP->MSN:对于接收到的IP数据包,去掉IP数据头,检测到是一个TCP数据包,就把TCP数据包传到TCP协议处理层,去掉TCP数据头,检测到是一个HTTP数据包,就把HTTP数据包传到HTTP协议处理层,经过进一步分析,发现该数据包是MSN相关的HTTP应用,则继续把数据报提交给MSN相关的处理逻辑。
[0006] 在数据包进入协议栈之前,也即协议栈对数据包的后继处理之前,要进行数据包与连接的关联。一旦有新的数据包传送过来,就会产生新的连接。随着网络软件发展,尤其是以P2P软件为代表,经常会发出大量的试探性连接,而这些连接通常只包含1至2个数据包,却占据了全部连接数量的相当大一部分。对于这样的连接,目前的连接跟踪模块不加区分的为其分配新的表项,并且与正常连接一样,需要经过较长时间才会被清除。
[0007] 目前网络连接跟踪存在的主要问题是:1.很多无意义连接占据了连接跟踪表;2.由于连接跟踪表的规模变大了,对于正常的数据包,查找相应连接表项的操作代价增大了;3.在总连接数一定的约束下,新连接找不到可用新表项的概率增大了。
[0008] 因此,需要一种新的网络连接跟踪机制,即在数据包入协议栈之前,减少无意义或无效的连接,并减小连接跟踪表的规模,在总连接数一定的条件下,增大新连接可用概率。

发明内容

[0009] 有鉴于此,本发明把原有的单级连接跟踪表分成两级,提供了一种全新的基于两级连接跟踪逻辑的网络连接跟踪方法及其系统。
[0010] 根据本发明的第一方面,提供了一种包括连接跟踪逻辑的网络连接跟踪方法,其中所述连接跟踪逻辑包括处理未确认连接的表和处理已确认连接的表,所述方法包括以下步骤:
[0011] 步骤1,在该处理已确认连接的表中进行查找与数据包相关的连接,如果该连接已在该处理已确认连接的表中,则直接执行下述步骤5;
[0012] 步骤2,对于不属于已确认连接的数据包,在该处理未确认连接的表中进行查找与该数据包相关的连接,如果没有相关表项,则确认其属于新建连接,并在该处理未确认连接的表创建对应的连接表项;
[0013] 步骤3:对于未确认连接,判断是否满足确认条件;
[0014] 步骤4:满足确认条件的话,迁移到处理已确认连接的表中;其中,该确认条件为网络层的协议状态和统计信息、传输层的协议状态和统计信息、应用层的协议状态和统计信息中的一个或多个;
[0015] 步骤5:把处理已确认连接的表中的连接依次进行协议栈后继处理。
[0016] 根据本发明的第二方面,提供了一种网络连接跟踪系统,包括:
[0017] 处理未确认连接的表和处理已确认连接的表,以及
[0018] 连接创建模块,对于属于新建连接的数据包,在处理未确认连接的表中创建相应的表项;
[0019] 连接迁移模块,判断处理未确认连接的表中的未确认连接是否满足确认条件,在未确认连接满足确认条件时,将未确认连接迁移到处理已确认连接的表中;其中,所述确认条件(CC)为网络层的协议状态和统计信息、传输层的协议状态和统计信息、应用层的协议状态和统计信息中的一个或多个;和
[0020] 后继处理模块,把处理已确认连接的表中的连接依次进行协议栈后继处理。
[0021] 本发明在数据包入协议栈之前,把单级连接跟踪表改进为两级连接跟踪表,减少每一级连接跟踪表的规模,并使无效连接或无意义连接占用有限的网络资源降到最低,同时提前对数据包加以区别以便跟踪其连接状态。

附图说明

[0022] 下面将参照附图对本发明的具体实施方案进行更详细的说明,其中:
[0023] 图1是现有技术连接跟踪结构图;
[0024] 图2是本发明的连接跟踪结构图;
[0025] 图3是本发明一个实施例的连接跟踪实施流程图;以及
[0026] 图4是本发明一个实施例的模块关系图。

具体实施方式

[0027] 为了使无效连接或无意义连接占用有限的网络资源降到最低,本发明提供了一种网络连接跟踪方法及其系统。接下来将具体说明该网络连接跟踪方法及其系统,其中,数据包(Packet)表示为P,其所对应的连接(connection)表示为C,其迁移的确认条件(Confirm Condition)表示为CC。
[0028] 图2示出本发明的连接跟踪结构图。如图2所示,用两级连接跟踪表T1和T2替换如图1所示的单级连接跟踪表T0。新连接C的数据包P传送过来后,首先在处理未确认连接的表T1进行状态的维护,在C满足迁移确认条件时,把C从处理未确认连接的表T1迁移到处理已确认连接的表T2中。
[0029] 然后在处理已确认连接的表T2中依照类似于表T0的逻辑进行连接C在数据包P上的后继处理。
[0030] 经过处理未确认连接的表T1对新连接C进行缓冲后,只有满足确认条件CC的连接才会进入处理已确认连接的表T2中。这样的缓冲处理,确保了T2表中不会含有无用的探测连接,即T2中表项数目会比T0少很多;并且,对于正常流量上的数据包,基于T2的查找比基于T0的查找要快;同时,T1表的大小可以根据用户对新建连接速率的需求进行配置。
[0031] 图3示出本发明一个实施例的连接跟踪实施流程图。如图3所示,在步骤302开始,在步骤304中接收数据包P,按数据包的源地址IP和端口Port信息在T2表中查找对应表项。
[0032] 紧接着,在步骤306中判断能否在T2表中查找到P所对应的C。如果能,则跳转到步骤326,按照一定逻辑对T2表中的P进行后继处理。
[0033] 如果步骤306判断为不能,则进入步骤308中,P属于未确认连接,并在T1中进行查找,在步骤310如果在T1表中查找失败,则P属于新建连接,在步骤312中尝试在T1中为其分配新的表项。
[0034] 需要补充说明的是,未确认连接包括未确认已有连接和新建连接,其中未确认已有连接已经在处理未确认连接表T1中,而新建连接是要在处理未确认连接表T1中待建立的连接。
[0035] 在步骤310中,如果找到相应的连接,则直接跳转到步骤320,针对P更新该连接C的统计/状态信息。
[0036] 在步骤314中,对分配结果进行判断,看是否分配失败。如果是,说明T1表中表项已满,则进入步骤316,可以按照一定的策略替换一条较早的连接表项,然后再进入步骤318;如果不是,直接进入步骤318,记录连接生成时间以及连接之间的先后顺序。
[0037] 在步骤320中,针对P更新连接C的统计/状态信息,接着在步骤322中,判断P所对应的C是否满足确认条件CC。如果否,则跳转到步骤320中,重新执行等待并不断更新该连接C的统计/状态信息。
[0038] 在步骤322的判断中,如果是,则进入步骤324中,把P所对应的连接C从T1表中迁移到T2表中。然后再在步骤326中,按照一定的逻辑对T2中的C及所对应的P进行协议栈的后继处理。
[0039] 在步骤328中,每隔一定周期,清理T1表中不活跃时间超过时间阈值的连接。在对数据包以及相应连接工作均处理后,进入步骤330中,结束整个工作流程。
[0040] 在一个实施例中,所述处理未确认连接的表T1按周期性清理其中不活跃时间超过时间阈值的未确认连接。清理周期可以由若干次处理未确认连接的表T1的更新操作确定,或者用定时器触发控制。
[0041] 另外一种方式是用定时器进行周期性触发。当清理周期时间到了,对表T1进行一次遍历,找出其中不活跃时间超过时间阈值的连接表项。
[0042] 需补充说明的是,连接表中的不活跃时间的判定可以是通过该表项的最后一次更新/统计信息的操作获取。不活跃时间是当前时间与最后一次更新/统计信息的操作时间的差值。
[0043] 在本发明中,所述确认条件(CC)包括以下一种或多种:网络层的协议状态和统计信息、传输层的协议状态和统计信息以及应用层的协议状态和统计信息。
[0044] 在网络层的协议状态和统计信息方面,比如连接的两个方向均至少有一个数据包,或者,连接双方至少交换了一定规模的字节。
[0045] 至于传输层的协议状态和统计信息,例如TCP已完成三次握手。
[0046] 关于应用层的协议状态和统计信息,比如FTP应用中用户名和密码正确已经成功登录;HTTP应用中发送完整的请求;Email使用中成功登录邮箱。需要注意的是,不同层次的实现方式有不同的时间复杂度,影响数据包P的处理延迟以及连接C在T1中的滞留时间。
[0047] 在本发明中,需补充说明的是,关于步骤320中针对P更新连接C的统计/状态信息,所述统计/状态信息与确认条件采取的策略有关。不同的确认条件(CC)导致不同的统计/状态信息,连接的统计/状态信息因确认条件的策略变化而变化。
[0048] 在所有的实施中连接表中任一表项状态的维护也与确认条件采取的策略有关。其表项的状态比如包括该表项对应的连接传输了多少字节,传输到什么状态,该连接所处应用是否满足等。
[0049] 在一个实施例中,T1和T2都采用Hash表组织,以尽量缩小查询P所在连接的开销。对于正常连接的数据包P,需要在T2里查一次,这次查找在T0里也是需要的,但由于T2的规模比T0小,因此平均查找时间要少。对于未确认连接迁移之前的数据包,增加了T1的查找部分,由于T1本身比T0或T2要小(未确认连接数要小于并发连接数)且未迁移部分一般只涉及连接初始的少数几个数据包,因此不会显著增大开销。
[0050] 在一个实施例中,针对连接C的迁移的具体过程是:把C从T1表中相应的Hash链中删除,移动到T2表中相应的Hash链。
[0051] 图4是本发明一个实施例的模块关系图。如图4所示,该网络连接跟踪系统包括处理未确认连接的表T1和处理已确认连接的表T2以及连接迁移模块402和后继处理模块410。
[0052] 连接迁移模块402,判断处理未确认连接的表T1中的未确认连接是否满足确认条件(CC),在未确认连接满足确认条件(CC)时,将未确认连接迁移到处理已确认连接的表T2中。
[0053] 后继处理模块410,把处理已确认连接的表T2中的连接依次进行协议栈后继处理。
[0054] 其中,连接迁移模块402相关的是迁移策略(确认条件CC)的确定:当T1中的连接更新后,执行CC判断,满足条件的连接被认定为正常连接,并实施从T1到T2的迁移。CC可以参考不同层次的统计信息,下面从各层举例说明:
[0055] ◆网络层方面:双方至少互相交换了X个数据包,例如至少交换了2个;或者双方至少交换了Y字节的数据,例如1000字节。
[0056] ◆传输层方面:对TCP而言,双方至少完成了TCP的握手过程;或者进一步的,在握手之后的X个包里至少有Y个有效负载非0的数据包,例如在握手后的前4个包中至少有2个非纯ACK的包;对UDP,也可以用类似的条件,例如前5个包中至少有3个有效载包。
[0057] ◆应用层方面:可以结合应用协议识别的内部状态机,例如,对FTP/SMTP/POP3等含有登录概念的应用,可以把CC定义为针对本协议的正常登录被服务器验证通过;进一步的,如果系统关注于产生数据传输的连接,可以把CC扩展为真正传输行为的开始(如FTP上传/下载、邮件的发送/接收等)。
[0058] 在一个实施例中,还包括周期清理模块408。与周期清理模块408相关的是不活跃时间阈值和清理周期。每隔一个周期,便对表T1进行遍历,清理其不活跃时间超过时间阈值的连接。
[0059] 其中,不活跃时间阈值可如下设定,例如一条连接在T1表中的存在时间超过P1后即可判定为不活跃/非正常连接,在下一个清理周期中便可以被释放。例如对TCP连接1~5秒,对UDP连接1~3秒。
[0060] 清理周期可如下设定,例如两次对T1执行不活跃检查的间隔,可以有两种定义方式:a.每隔一定时间,例如1~5分钟;b.每隔若干次对T1表的更新操作,例如500-2000次。
[0061] 在一个实施例中,还包括连接查找模块400。该模块的作用是对于一个不知道属于新建连接还是已有的确认连接或未确认连接的数据包,在T2和T1中进行查找,已确定最优的关联。
[0062] 对于这个数据包P,先在T2表中进行查找,如果找到相应的连接C,则直接交给后继处理模块410进行后继的处理。如果在T2表中没有找到相应的连接C,则继续在T1表中进行查找,如果找到T1表中相应的连接C,则要在T1表中维护状态,等待连接迁移模块402的确认和迁移;如果在T1表中没有找到相应的连接C,则可以确认其属于新建连接C,需要在T1表中创建相应的表项。
[0063] 在一个实施例中,还包括连接创建模块406。该模块可以对不属于T2表和T1表的连接的数据包,在T1表中创建新的表项,也即其对应的连接。
[0064] 其中,新建连接数C需要进行一定的限制。新建连接数C决定了T1表的规模,即T1表中维护的最大连接数,例如1000-10000。具体的数值又和用户期望的新建连接速率(C1)和正常连接的平均确认时间(C2)有关,例如C1=5000/秒,C2=0.5秒,则C可以设为C1*C2=2500。
[0065] 在一个实施例中,还包括连接替换模块404。该模块依据替换策略对T1表中的连接进行替换。需要进一步说明的是其替换策略。当T1的连接数达到C限制阈值时,如何选取一条不活跃连接并释放,以满足后继新建连接的需求。
[0066] 最简单的方案是选择最不活跃的连接。可以参考Cache的替换策略比如LRU/LFU/FIFO等。也可以与用户信息相结合,不是全局的替换最不活跃的连接,而是从特定用户的连接中替换最不活跃的;其中特定用户的选取又可以分为多种情况:
[0067] 1)最不活跃的用户;
[0068] 2)存活时间最长的用户;
[0069] 3)不活跃连接最多的用户;
[0070] 4)连接数最多的用户(连接数越多越有可能在用P2P)等。
[0071] 本发明的网络连接跟踪系统可工作在数据包入协议栈前的网络环节,比如路由、网卡以及网络计算机设备中。
[0072] 以上对本发明的具体描述旨在说明具体实施方案的实现方式,不能理解为是对本发明的限制。本领域普通技术人员在本发明的教导下,可以在详述的实施方案的基础上做出各种变体,这些变体均应包含在本发明的构思之内。本发明所要求保护的范围仅由所述的权利要求书进行限制。