单一传输层传输多个应用层会话的方法及方法预识别方法

文档序号:6556826阅读:180来源:国知局
专利名称:单一传输层传输多个应用层会话的方法及方法预识别方法
技术领域
本发明涉及一种数据通信中多层交换机的实现方法,尤其是一种多层交换机实现单一传输层传输多个应用层会话的方法。本发明还涉及一种对符合标准RFC822定义的协议请求消息中的方法的预识别方法,该方法是一种多层交换机实现单一传输层传输多个应用层会话的方法的解决方案最核心的那一部分。
在数据通信中,一般将数据通信的网络模型分为5层,如

图1所示。最下面的是物理层,然后依次是数据链路层、网络层、传输层、应用层。其中应用层主要从内容的角度去看待网络和解决问题。随着网络的发展和技术的进步,人们越来越站在“内容”的角度,也就是说“应用层”的角度去看待网络,去管理和经营网络。“内容”网络的一个需要解决的重要问题就是对于一个应用层会话的识别。
对于第4层的流识别,即传输层的流识别,人们已经进行了很多的研究工作。我们这个发明主要解决如何在传输层的流识别的基础之上,完成会话层次的识别,从而可以真正地实现在“内容级”或者说在“应用层”交换。
在这里,我们以超文本传输协议应用为例,说明我们的方法。这种方法同样适用于消息类型符合数据通信设备实现所依据的标准RFC822定义的协议。
图2是一个标准的超文本传输协议包的格式,通常的流分类主要依据IP层的源IP地址SA,目的IP地址DA,协议类型号Proto Type和TCP层的源端口号SP,目的端口号DP,TCP包类型号TCP Code或Flage。
图3是一个现有的多层交换机的系统结构,12为用户侧的接口板,11为中央的主控CPU,即多层交换机的主控模块,13为服务器侧的接口板。多层交换机,可以作为一个负载均衡设备工作在一个数据中心的多个服务器前面,对应用层的会话提供负载均衡。
目前的多层交换机的工作原理是当一个用户为了提交一个超文本传输协议请求而发起一个TCP连接时,多层交换机首先假作服务器,与用户建立起TCP连接。当得到用户的超文本传输协议请求后,多层交换机再假作用户与真正依据负载均衡的条件选定的服务器建立TCP连接,并提出超文本传输协议请求。然后,对这个超文本传输协议的会话在TCP层建立起一个直通通路,从而完成负载均衡的作用。
但是,这种TCP层的直通流的方案都是基于这样一个前提,即一个超文本传输协议会话与一个TCP的流过程是一一对应的,如图4所示。
但在超文本传输协议1.1中,为了提高超文本传输协议服务器的处理能力,和提高用户的响应速度,一个TCP流是可能与多个超文本传输协议的会话相对应的。每个超文本传输协议的会话往往是以包的形式在链路上传送的。如图5所示。在传统的多层交换机就不能解决这个问题,它不能对请求包进行识别,导致其只能处理一个TCP流上一个超文本传输协议的会话。
在RFC 2616中对于超文本传输协议1.1的协议建议中超文本传输协议消息由请求消息和响应消息组成。我们要识别的主要是超文本传输协议请求消息。在RFC 2616中,请求消息由请求行和其它的一些头组成。请求行由方法、请求RUI和超文本传输协议版本号组成。它们之间用空格分开,以一个回车换行符结束。其中“方法”由8种方法和一个扩展的方法组成。在现有技术中不能对一个TCP流上多个超文本传输协议请求消息包进行识别,是由于对于请求消息中的“方法”,很难找到一种对该“方法”的预识别方法。
本发明的目的是提供一种单一传输层传输多个应用层会话的方法,它找到了一种对超文本传输协议请求消息中的方法的预识别方法,从而能够对请求消息中的方法进行预识别,进而能够对一个TCP流上多个超文本传输协议请求消息包进行识别。本发明的目的还在于提供一种对符合标准RFC822定义的协议请求消息中的方法的预识别方法。该方法是所述单一传输层传输多个应用层会话的方法的最核心部分。
为实现上述目的,本发明的解决方案是一种单一传输层传输多个应用层会话的方法,在一个多层交换机为用户与服务器建立负载均衡的链路上,在所述的TCP流携带多个符合标准RFC822定义的协议请求的情况下,a、定义一个规则库,专门存放每个符合标准RFC822定义的协议会话所需要的流分类基础信息;b、将符合标准RFC822定义的协议请求消息中的方法组成一个矩阵,取长度最短的方法的长度为矩阵的宽度,以方法的数目为矩阵的长度;c、分别计算所述矩阵的每一列的1和0的数目的差的绝对值;d、取方法的数目以2为底的对数,按上述绝对值从小到大的顺序取大于等于该对数的最小整数个列,然后将每个方法的行上与这些列对应的值取出,看是否有重复,如无重复则将这些列取出,如有重复,继续取出一列未被取出的上述绝对值最小的列,如果上述绝对值最小的列有几个,则以选择此列后能够最大限度的分开所有方法为原则,在这些列中进行选取,然后看加上该列后,再将每个方法的行上与这些列对应的值取出后是否有重复,如有重复再进行同样的过程,直到没有重复,然后将这些选定的列取出,构成一个方法的函数,并添加到所述规则库中;e、对每一个方法而言,将该方法的行上被方法的函数取定的列的值取出,构成该函数对该方法的具体值,该具体值代表该方法,建立了一个函数具体值与该方法的映射;f、当用户发起符合标准RFC822定义的协议请求时,对于每一个符合标准RFC822定义的协议会话包,根据请求消息中的信息在所述规则库中查找,其中对请求消息中的方法的识别就通过所述函数具体值与该方法的映射来识别;g、将识别后的包括方法的信息送往多层交换机,多层交换机先与用户建立连接,然后向相应的服务器建立连接并提出请求,在用户和服务器之间建立应用层会话的直通通路。
在步骤d中,所述的以选择此列后能够最大限度的分开所有方法为原则,在这些列中进行选取包括这样的过程先将每个方法的行上与已取定的列对应的值取出,对于重复的方法的行,分别加上上述待选取的绝对值最小的列的每一列,看加上哪一列能够使上述重复的方法的行加上该列后重复的行最少,就选取该列。
在步骤g中,将识别后的包括方法的信息送往多层交换机时,在多层交换机中,首先对该方法进行一个合法性的检查,判断该信息包是否为真实的应用层会话内容请求包,如是内容请求包,则进行应用层会话的重定向工作,向相应的服务器建立连接并提出请求,在用户和服务器之间建立应用层会话的直通通路,如不是内容请求包,则是应用层会话的内容包,依据该包的传输层信息进行转发。
本发明还包括一种对符合标准RFC822定义的协议请求消息中的方法的预识别方法,它包括a、将符合标准RFC822定义的协议请求消息中的方法组成一个矩阵,取长度最短的方法的长度为矩阵的宽度,以方法的数目为矩阵的长度;b、分别计算所述矩阵的每一列的1和0的数目的差的绝对值;
c、取方法的数目以2为底的对数,按上述绝对值从小到大的顺序取大于等于该对数的最小整数个列,然后将每个方法的行上与这些列对应的值取出,看是否有重复,如无重复则将这些列取出,如有重复,继续取出一列未被取出的上述绝对值最小的列,如果上述绝对值最小的列有几个,则以选择此列后能够最大限度的分开所有方法为原则,在这些列中进行选取,然后看加上该列后,再将每个方法的行上与这些列对应的值取出后是否有重复,如有重复再进行同样的过程,直到没有重复,然后将这些选定的列取出,构成一个方法的函数,并添加到所述规则库中;d、对每一个方法而言,将该方法的行上被方法的函数取定的列的值取出,构成该函数对该方法的具体值,该具体值代表该方法,建立了一个函数具体值与该方法的映射;e、当用户发起符合标准RFC822定义的协议请求时,对请求消息中的方法的预识别就通过所述函数具体值与该方法的映射来进行。
在步骤d中,所述的以选择此列后能够最大限度的分开所有方法为原则,在这些列中进行选取包括这样的过程先将每个方法的行上与已取定的列对应的值取出,对于重复的方法的行,分别加上上述待选取的绝对值最小的列的每一列,看加上哪一列能够使上述重复的方法的行加上该列后重复的行最少,就选取该列。
由于本发明将符合标准RFC822定义的协议请求消息中的方法组成一个矩阵,计算所述矩阵的每一列的1和0的数目的差的绝对值,取方法的数目以2为底的对数,按上述绝对值从小到大的顺序取大于该对数的最小整数个列,将每一个方法的行上与方法的函数的列所对应的值取出,建立了一个函数具体值与该方法的映射,从而进行请求消息中的方法的预识别,进而也就可以对一个TCP流上多个符合标准RFC822定义的协议请求消息包进行识别。
又由于本发明将识别后的包括方法的信息送往多层交换机时,在多层交换机中,首先对该方法进行一个合法性的检查,提高了识别的可靠性。
图1是数据通信的网络层次图。
图2是标准的超文本传输协议包的格式图。
图3是现有的多层交换机系统结构及识别原理图。
图4是目前的多层交换机一个TCP流与一个符合标准RFC822定义的协议会话对应的示意图。
图5是多层交换机一个TCP流与多个符合标准RFC822定义的协议会话对应的示意图。
图6是本发明一种单一传输层传输多个应用层会话的方法的流程图。
图7是本发明改进后的系统结构及识别原理图。
图8是本发明的规则库结构图。
图9是本发明方法预识别的取列示意图。
图10是用户板的工作流程图。
图11是以方法函数在方法矩阵中取值示意图。
图12是方法函数具体值与方法的映射关系示意表。
图13是主控板工作流程图。
下面结合附图对本发明的实施例作进一步具体的说明。
图6是本发明一种单一传输层传输多个应用层会话的方法的流程图。在图中可以看到本发明的实现步骤。
本发明对系统改进后的系统结构和识别原理如图7。本发明对于原来系统结构的改进之处在于,在用户板上,增加了一个应用层会话预识别模块,在主控板上增加了一个应用层会话合法性校验模块。在用户板上的应用层会话预识别模块中,我们利用一种基于统计的算法初步识别方法的方法,使得在不降低系统性能的前提下,提供了真正的一个传输层流上的多个应用层会话的识别和交换。
本方法的具体实现方案分为两个部分第一个部分就是在用户板和服务器板上的实现,第二个部分就是在主控板上的实现。
如图10所示,是用户板的工作流程。在接收到一个新包后,首先对其进行传输层的流识别,这种识别算法已经有很多研究,在这里就不详细说明。传输层的流识别的结果是这个包已经属于的一个流的特性,如这个流的出端口,其服务质量特性等等。在这里,我们主要介绍在用户板上进行初步的会话识别的过程上面已经提到,本发明的改进之处之一在于,在用户板上,增加了一个应用层会话预识别模块。在该模块中,我们定义一个规则库,专门存放每个符合标准RFC822定义的协议会话所需要的流分类基础信息,所谓流分类基础信息包括目的IP地址、源IP地址、协议类型、目的端口号、TCP包类型和方法函数,图8示出了这样一个规则库的规则表。在接口板上,对于会话的识别,或者是说对请求消息中包含方法的信息的识别,就是通过对该已经定义好的规则库的规则表进行查找来实现的。这样,问题的关键就是如何定义这个规则库的规则表,及其查找算法。我们通过一个预统计的方法来定义这个规则库,从而使得其查找的增加量很小。
由于对一个TCP流上多个符合标准RFC822定义的协议请求消息包进行识别的关键在于对请求消息中的方法进行预识别。因此,在对于规则库的改进中,我们增加了一个F(方法)域。其中F(方法)的计算方法如下把所有的方法组成一个矩阵,如图9所示,取长度最短的方法的长度为矩阵的宽度,用W表示,以方法的数目为矩阵的长度,用L表示。
其计算的过程是我们首先得到某一列中‘0’的数目和‘1’的数目,再计算出这个值的差,F(方法)中的所有位就是利用上面计算得到差值最小的一些列所代表的位。
利用数学表达如下对于矩阵M中的每一列j,我们定义以下三个函数N0j(M)=Σ1≤i≤W,M[i,j]=0]]>N1j(M)=Σ1≤i≤W,M[i,j]=1]]>Dj(M)=|N0j(M)-N1j(M)|N0j(M)表示第j列中0的数目,N1j(M)表示第j列中1的数目,Dj(M)表示两者的差的绝对值。
则F(方法)=矩阵中D(M)最小的n个列,其中n取大于该方法数目的以2为底的对数的最小整数。
RFC 2616中,对方法的定义如下方法="OPTIONS"|"GET"|"HEAD"|"POST"|"PUT"|"DELETE"|"TRACE"|"CONNECT"|extension-方法在这里,我们只支持对已定义的方法的支持。所以,不包括Extension-方法。取长度最短的方法的长度为矩阵的宽度,用W表示,在这里,W=3*8=24Bits;以方法的数目为矩阵的长度,用L表示,在这里,L=8。由所有方法组成的方法矩阵如图11所示。
对图11的矩阵依据前面的公式进行计算得到D6(M)=D20(M)=0D4(M)=D7(M)=D8(M)=D12(M)=D15(M)=D22(M)=D24(M)=2我们取F(Method)=H6H12H20H24,首先我们计算出L的以2为底的对数为3,也就是说,我们至少要取出3列,根据Dj(M)最小的原则我们首先取出6和20两列,如图11所示,显然还不足3列,我们要继续再在4、7、8、12、15、22、24这些列中继续选取,我们先将每方法行与这两列所对应的值取出,分别是11、11、00、01、01、10、10、00,为了区别前两个行取出的值,方法的前两行与要取出的第3列所对应的值必须不同,而4、7、8、15、22、24列的前两个值都是00或11,只有第12列是10,故取出第12列,共取出6、12、20三列,每方法行与这三列对应的值分别为111、101、000、001、011、100、110、000,发现第3行和第8行还是无法区分开,需要再加上一个第3行和第8行上的数不同的列,7、8、15、22、24都符合这样的要求,在本例中取的是24。所以,最后取定6、12、20、24四列。于是F(OPTIONS)=1110.
F(GET)=1010,F(HEAD)=0001,F(POST)=0011,F(PUT)=0110,F(DELETE)=1000,F(TRACE)=1101,
F(CONNECT)=0000,我们定义一个24bits宽,有2^4=16个单元的数组,把上面的矩阵中的各个值存储于以F(方法)为下标的单元内。如图12。
为什么要按0数目与1数目的差的绝对值最小的原则来取列呢?因为这样每列差别较大,最不容易出现最后F(方法)的具体值的重复。
当用户发起符合标准RFC822定义的协议请求时,首先对该请求的包进行传输层的流识别。这种识别算法已经有很多研究,在这里就不详细说明。传输层的流识别的结果是这个包已经属于的一个流的特性,如这个流的出端口,其服务质量特性等等。然后,对于每一个符合标准RFC822定义的协议会话包,根据请求消息中的信息在所述规则库中查找,以进行请求消息的会话预识别,其中对请求消息中的方法的识别就通过所述函数具体值与该方法的映射来识别。
然后,将识别后的包括方法的信息送往多层交换机的主控模块,多层交换机的主控模块先与用户建立连接,然后向相应的服务器建立连接并提出请求,在用户和服务器之间建立应用层会话的直通通路。
我们通过F(方法)作为索引,可以直接识别出可能是具体的什么方法。请注意,在这里,我们只是识别出“可能”是某种方法。在主控板上还需要具体的合法性检查。
图13为主控板上的工作流程。由于我们这种系统的结构,在主控板上,首先要对方法进行一个合法性的检查。如果是一个合法的方法,则进行进一步的应用层会话的重定向工作;如果不是一个合法的方法,则说明,这个包是一个应用层会话的内容包,而不是应用层会话的内容请求包,这时就需要依据这个包的传输层信息来对其进行转发。
在上面我们已经提到,本发明的一个特点就是在主控板上增加了一个应用层会话合法性校验模块。上述合法性的检查就是通过该应用层会话合法性校验模块进行的。
实际上,在主控板的程序中,对方法的合法性检查是必然要进行的。所以,在用户板上的初步识别对主控板的工作的附加量并不大。但是,需要注意的是,在这种工作方式中,由用户板上交到主控板的包,还必须包含这个包的传输层的流分类结果,只有这样,在一个方法的合法性检查失败后,才能够依据其传输层的特性来对包进行转发。
另外,本发明所提出的一种对符合标准RFC822定义的协议请求消息中的方法的预识别方法只是上面一种单一传输层传输多个应用层会话的方法的核心技术,因为其本身也解决了技术问题,达到了技术效果,故作为同一申请提出。该方法的内容在介绍单一传输层传输多个应用层会话的方法时已经详细论述,故在此不再赘述。
权利要求
1.一种单一传输层传输多个应用层会话的方法,在一个多层交换机为用户与服务器建立负载均衡的链路上,在所述的传输层流携带多个符合标准RFC822定义的协议请求的情况下,a、定义一个规则库,专门存放每个符合标准RFC822定义的协议会话所需要的流分类基础信息;b、将符合标准RFC822定义的协议请求消息中的方法组成一个矩阵,取长度最短的方法的长度为矩阵的宽度,以方法的数目为矩阵的长度;c、分别计算所述矩阵的每一列的1和0的数目的差的绝对值;d、取方法的数目以2为底的对数,按上述绝对值从小到大的顺序取大于等于该对数的最小整数个列,然后将每个方法的行上与这些列对应的值取出,看是否有重复,如无重复则将这些列取出,如有重复,继续取出一列未被取出的上述绝对值最小的列,如果上述绝对值最小的列有几个,则以选择此列后能够最大限度的分开所有方法为原则,在这些列中进行选取,然后看加上该列后,再将每个方法的行上与这些列对应的值取出后是否有重复,如有重复再进行同样的过程,直到没有重复,然后将这些选定的列取出,构成一个方法的函数,并添加到所述规则库中;e、对每一个方法而言,将该方法的行上被方法的函数取定的列的值取出,构成该函数对该方法的具体值,该具体值代表该方法,建立了一个函数具体值与该方法的映射;f、当用户发起符合标准RFC822定义的协议请求时,对于每一个符合标准RFC822定义的协议会话包,根据请求消息中的信息在所述规则库中查找,其中对请求消息中的方法的识别就通过所述函数具体值与该方法的映射来识别;g、将识别后的包括方法的信息送往多层交换机,多层交换机先与用户建立连接,然后向相应的服务器建立连接并提出请求,在用户和服务器之间建立应用层会话的直通通路。
2.根据权利要求1所述的单一传输层传输多个应用层会话的方法,其特征在于在步骤a中,是在用户板的一个应用层会话预识别模块中定义规则库,步骤f对请求消息中包含方法的信息的识别也是在应用层会话预识别模块中进行的。
3.根据权利要求1所述的单一传输层传输多个应用层会话的方法,其特征在于在步骤d中,所述的以选择此列后能够最大限度的分开所有方法为原则,在这些列中进行选取包括这样的过程先将每个方法的行上与已取定的列对应的值取出,对于重复的方法的行,分别加上上述待选取的绝对值最小的列的每一列,看加上哪一列能够使上述重复的方法的行加上该列后重复的行最少,就选取该列。
4.根据权利要求1或2所述的单一传输层传输多个应用层会话的方法,其特征在于在步骤f中,当用户发起符合标准RFC822定义的协议请求时,首先对该请求的包进行传输层的流识别,然后再根据请求消息中的信息在所述规则库中查找进行所述的请求消息的会话预识别。
5.根据权利要求1所述的单一传输层传输多个应用层会话的方法,其特征在于在步骤g中,将识别后的包括方法的信息送往多层交换机的主控模块时,在多层交换机的主控模块中,首先对该方法进行一个合法性的检查,判断该信息包是否为真实的应用层会话内容请求包,如是内容请求包,则进行应用层会话的重定向工作,向相应的服务器建立连接并提出请求,在用户和服务器之间建立应用层会话的直通通路,如不是内容请求包,则是应用层会话的内容包,依据该包的传输层信息进行转发。
6.根据权利要求5所述的单一传输层传输多个应用层会话的方法,其特征在于在步骤g中,该合法性的检查是通过在多层交换机的主控板上设置一个应用层会话合法性校验模块进行的。
7.一种对符合标准RFC822定义的协议请求消息中的方法的预识别方法,它包括a、将符合标准RFC822定义的协议请求消息中的方法组成一个矩阵,取长度最短的方法的长度为矩阵的宽度,以方法的数目为矩阵的长度;b、分别计算所述矩阵的每一列的1和0的数目的差的绝对值;c、取方法的数目以2为底的对数,按上述绝对值从小到大的顺序取大于等于该对数的最小整数个列,然后将每个方法的行上与这些列对应的值取出,看是否有重复,如无重复则将这些列取出,如有重复,继续取出一列未被取出的上述绝对值最小的列,如果上述绝对值最小的列有几个,则以选择此列后能够最大限度的分开所有方法为原则,在这些列中进行选取,然后看加上该列后,再将每个方法的行上与这些列对应的值取出后是否有重复,如有重复再进行同样的过程,直到没有重复,然后将这些选定的列取出,构成一个方法的函数,并添加到所述规则库中;d、对每一个方法而言,将该方法的行上被方法的函数取定的列的值取出,构成该函数对该方法的具体值,该具体值代表该方法,建立了一个函数具体值与该方法的映射;e、当用户发起符合标准RFC822定义的协议请求时,对请求消息中的方法的预识别就通过所述函数具体值与该方法的映射来进行。
8.根据权利要求7所述的单一传输层传输多个应用层会话的方法,其特征在于在步骤d中,所述的以选择此列后能够最大限度的分开所有方法为原则,在这些列中进行选取包括这样的过程先将每个方法的行上与已取定的列对应的值取出,对于重复的方法的行,分别加上上述待选取的绝对值最小的列的每一列,看加上哪一列能够使上述重复的方法的行加上该列后重复的行最少,就选取该列。
全文摘要
一种单一传输层传输多个应用层会话的方法,将符合标准RFC822定义的协议请求消息中的方法组成一个矩阵,计算每一列的1和0的数目的差的绝对值,按从小到大的顺序选取若干个列,将方法行上被这些列取定的值取出,与该方法建立映射,进行方法的预识别,进而也就可以在单一传输层流上传输多个应用层会话。本发明还提出了一种对符合标准RFC822定义的协议请求消息中的方法的预识别方法。
文档编号G06F13/00GK1394052SQ01118899
公开日2003年1月29日 申请日期2001年6月29日 优先权日2001年6月29日
发明者齐欣 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1