一种刷新会话表的方法

文档序号:7957350阅读:178来源:国知局
专利名称:一种刷新会话表的方法
技术领域
本发明涉及数据流的刷新方法,更具体地,涉及一种刷新会话表的方法。
背景技术
目前数据通信设备对数据报文的转发处理通常有两种方式一种是基于包转发,即对所有通过该数据通信设备的数据报文逐包进行规则过滤,安全检查等操作。此种方式常见于路由器、交换机等设备,优点是只需要对报文的二、三层(OSI网络模型的链路层、网络层协议)报文内容进行处理,而对报文的四层以上内容则很少关心。但这种方式也有缺点,对报文逐包检查,转发性能会受一定的影响。
另一种是基于流转发,即对具有相同五元组的数据报文划分成数据流。数据通信设备对数据流进行统一处理,建立会话表,进行攻击防范、安全检查、日志输出等操作。这种处理需要对报文的第四层(OSI网络模型的传输层协议)以上内容进行解析。此种方式常见于防火墙等网络设备。数据流会话是指五元组相同的一组数据流,五元组包括会话的源IP地址、源端口号、目的IP地址、目的端口号及协议号。
本发明是基于流转发的数据报文处理方式。
对于每一条数据流,如果允许通过,则建立一会话表用来标识数据流相关信息,后续报文只有匹配会话表才允许通过。会话表包括数据流的协议类型、上一次报文通过时间、老化时间、转发信息和上一级父会话索引KEY值(端口号、IP地址和协议类型)。
a.会话关联若会话间满足一定约束条件的会话,则彼此之间存在关联关系。
以FTP(文件传输协议)服务为例,客户端PC访问FTP服务器,首先需要和服务器建立控制协商通道,通常情况下,对于从客户端发出的目的端口为21的数据流,我们统称为控制通道报文。经过TCP协议的三次握手后,控制通道协商完成。接下来会由客户端和FTP服务器进行用户身份的认证,以FTP的Port方式(主动方式)为例,由客户端PC发起目的端口为20、包含有认证信息的数据流,我们统称这种承载FTP数据内容的数据流为数据通道报文。
数据通道建立后,用户和服务器端可以进行身份认证、文件传输等操作。而数据通道的端口号等信息,则是通过客户端和服务器互发控制通道报文,动态协商产生的。
数据通道和控制通道存在关联关系,且数据通道是由控制通道派生出来的。一旦控制通道中断,新的数据通道便无法协商建立。
所以,在数据通信设备中需要对这种彼此关联的会话,建立关联信息。由于会话的五元组包括了传输层定义的端口号概念,所以对于OSI七层网络模型来说,会话是传输层以上的概念。
b.老化和刷新对于网络设备来说,会话的容量是有限的,如何利用有限的空间承载更多的服务也是衡量一个设备好坏的标准之一。在应用层协议实现过程中,一个应用程序通常需要建立多条会话。对于每条会话都设定一个老化时间和一个最后一次命中时间戳,如果该最后一次命中时间戳和当前时间差值大于老化时间,则清除会话表。因此为了避免会话表被不恰当地清除,需要延缓会话表的老化,即需要对会话表予以刷新,具体来说就是要更新会话表的时间戳。换句话说,当判断会话表老化时间大于当前时间与上一次命中时间戳的差时,需要对会话表予以刷新。
通常地是逐包地刷新关联会话表。
具体来说,对通过网络设备的报文,逐包查找是否存在其上一级父会话,如果存在上一级父会话,则索引到上一级父会话,并刷新上一级父会话表的时间戳,于是可以防止会话表被清除。
如图1所示的,以FTP为例,建立控制通道会话后,通过协商建立数据通道会话。当数据通道有报文传输时,索引并刷新控制通道。
但是上述的刷新过程是基于逐包刷新的,而逐包刷新会话表会增加报文的处理难度,影响设备转发的性能;并且会话表由于只保留一个上一级父会话表的索引KEY值,所以在刷新时,只能索引到上一级父会话,因此只能刷新上一级父会话表。而对于多级会话级联的情况,上述方法就不适用。
例如如图2所示的,H323协议会话派生H224协议会话;H224协议会话派生H245协议会话。
对于正在处理的H245报文来说,目前的逐包刷新方法只能刷新其上一级父会话表即H224协议会话表而不能刷新再上一级会话表即H323会话表。

发明内容
因此本发明的目的在于针对应用协议产生多级会话级联的情况,提供一种刷新会话表的方法。
本发明采用独立于报文处理过程的线程来刷新会话表,该方法包括步骤每隔一定时间间隔,启动遍历会话表的线程;判断是否存在当前会话的上一级父会话;如果存在,则刷新该上一级父会话,重复以上操作直到不存在当前会话的上一级父会话则结束该次刷新操作。
上述方法中,当判断存在上一级父会话时,利用上一级父会话表中的索引KEY值索引到该上一级父会话。由于采用独立于报文处理过程的线程刷新会话表,该线程与报文的处理过程是相互独立的,因此不会降低对报文的处理性能。此外该定时器触发独立于包文处理过程的线程的时间间隔可以通过硬件或者软件方法实现。
本发明的特点和细节将可通过下面结合附图的具体说明中进一步地了解。


图1是显示级联会话的示例;图2是现有技术中存在多级会话时的刷新情况的示例;图3是本发明的刷新方法中建立会话表的流程图;图4是本发明的采用独立于报文的线程刷新会话表的流程图。
具体实施例方式
下面将结合附图具体说明本发明的实施方式。
本发明针对应用协议产生多级会话的情况,提供一种采用独立于报文的线程刷新会话表的方法。该方法采用了相对于报文处理过程独立的线程,通过硬件或软件方法来设定启动的时间间隔、用定时器触发该独立于报文处理过程的线程,从而用独立于报文处理过程的线程来刷新会话表。
如图4中的流程图所表示的,每隔一定时间间隔,用定时器触发遍历会话表的线程。在刷新当前会话表时,从会话表储存的信息中,判断是否存在上一级父会话。如果存在上一级父会话,利用会话表中储存的上一级父会话索引KEY值,索引到上一级父会话且更新该上一级父会话上一次通过报文的时间为当前时间,即刷新其时间戳。重复这样的过程直到遍历完每一级会话表,从而可以实现多级会话表的刷新。其中索引KEY值包括会话的源IP地址、源端口号、目的IP地址、目的端口号及协议号。
图3显示了上述刷新方法中建立会话表的流程图,其中包含当判断存在级联会话时在会话表中保存上一级父会话的信息及建立会话表的步骤。之后进行正常的报文转发,即在原报文处理过程中不刷新上一级父会话表,而以独立的线程与报文处理过程并行地进行定时器刷新处理。刷新线程在设备正常运行时总是会定时启动,在刷新任务完成时释放。报文处理过程只在有报文经过网络设备时启动,在报文处理完成时释放。
由此可见,通过本发明的刷新会话表的方法,解决了逐包刷新上一级父会话表带来的转发性能降低的问题,减少了报文转发处理的复杂度,提高了转发性能,还解决了逐包刷新上一级父会话表不能同时刷新多级父会话表的问题。
根据本发明的思想做出的任何改进或变动都应包含在后附的权利要求定义的本发明的保护范围之内。
权利要求
1.一种刷新会话表的方法,其特征在于,采用独立于报文处理过程的线程来刷新会话表。
2.根据权利要求1的刷新会话表的方法,其特征在于,所述独立于报文处理过程的线程是由定时器触发的。
3.根据权利要求1或2的刷新会话表的方法,其特征在于,可以刷新多级会话表。
4.根据权利要求2的刷新会话表的方法,其特征在于,所述独立于报文处理过程的线程刷新会话表的过程包括步骤每隔一定时间间隔,启动遍历会话表的线程;判断是否存在当前会话的上一级父会话;如果存在,则刷新该上一级父会话表。
5.根据权利要求4的刷新会话表的方法,其特征在于,当判断存在上一级父会话时,利用上一级父会话表中的索引KEY值索引到该上一级父会话。
6.根据权利要求5的刷新会话表的方法,其特征在于所述索引KEY值包括会话的源IP地址、源端口号、目的IP地址、目的端口号及协议号。
7.根据权利要求4的刷新会话表的方法,其特征在于所述定时器触发独立于报文处理过程的线程的时间间隔用硬件或者软件方法实现。
全文摘要
针对应用协议产生多级会话的情况,本发明提供一种刷新会话表的方法,采用独立于报文处理过程的线程来刷新会话表,该方法包括步骤每隔一定时间间隔,启动遍历会话表的线程;判断是否存在当前会话的上一级父会话;如果存在,则刷新该上一级父会话表。此方法解决了逐包刷新上一级父会话表带来的性能下降的问题,还解决了逐包刷新上一级父会话表时不能同时刷新多级父会话表的问题。
文档编号H04L29/08GK101043434SQ20061006144
公开日2007年9月26日 申请日期2006年6月30日 优先权日2006年6月30日
发明者张雷 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1