一种分流方法及装置与流程

文档序号:11206092阅读:554来源:国知局
一种分流方法及装置与流程
本发明涉及网络通信
技术领域
,尤其涉及一种分流方法及装置。
背景技术
:为适应业务流量较大的网络环境,通常可在一台网络设备上安插多块业务板,来分摊业务流量的压力。而在有些情况下,比如当网络设备为安全类设备时,则有必要将一组源设备与目的设备之间传输的正、反向报文分流至同一业务板,以在一块业务板上实现源设备与目的设备之间所传输流量的全程跟踪。其中,正向报文为源设备发送至目的设备的报文;反向报文为目的设备返回至源设备的报文。相关技术中,可将报文的源ip地址和目的ip地址作为哈希hash因子进行hash计算,确定报文待分流至的目标业务板。此后,若正向报文在目标业务板上未经过nat(networkaddresstranslation,网络地址转换)即被发送至目的设备,则由于反向报文的源ip地址和目的ip地址仅分别为正向报文中源ip地址和目的ip地址的对调,故正、反向报文的hash因子相同,计算出的目标业务板也相同;但是,若正向报文在目标业务板上完成nat后被发送至目的设备,则由于接收到的反向报文中,用于hash计算的hash因子不同于正向报文中的hash因子,所以计算出的目标业务板也与正向报文的目标业务板不同,从而导致正、反向报文被分流至不同的业务板。技术实现要素:有鉴于此,本发明提供一种分流方法及装置,以在正向报文在目标业务板上完成nat后被发送至目的设备的情况下,依然保证正、反向报文被分流至同一业务板。根据本发明实施例的第一方面,提供一种分流的方法,所述方法应用于网络设备,所述网络设备包括分流板卡和至少两块业务板,所述方法包括:分流板卡接收正向报文,根据所述正向报文确定目标业务板,将所述正向报文发送至所述目标业务板;所述目标业务板确定属于自身的端口集合,从所述端口集合中选择一个端口;将所述正向报文中的源端口替换为所选择的端口,并发送修改后的正向报文;所述分流板卡接收对应于所述修改后的正向报文的反向报文,根据所述反向报文中的目的端口,确定所述目标业务板,将所述反向报文发送至所述目标业务板。根据本发明实施例的第二方面,提供一种分流的装置,所述装置应用于网络设备,所述网络设备包括分流板卡和至少两块业务板,所述装置包括:分流板卡,用于接收正向报文,根据所述正向报文确定目标业务板,将所述正向报文发送至所述目标业务板;以及用于接收对应于所述修改后的正向报文的反向报文,根据所述反向报文中的目的端口,确定所述目标业务板,将所述反向报文发送至所述目标业务板;从所述业务板中确定出的目标业务板,用于确定属于自身的端口集合,从所述端口集合中选择一个端口;将所述正向报文中的源端口替换为所选择的端口,并发送修改后的正向报文。本发明实施例中,网络设备上新增加了一块分流板卡。分流板卡在将正向报文发送至目标业务板后,目标业务板可以在属于自身的端口集合中选择一个端口,替换正向报文中的源端口,并发送修改后的正向报文;当分流板卡接收到对应于上述正向报文的反向报文后,可以根据反向报文中的目的端口确定出上述目标业务板,从而实现了将正向报文和反向报文分流至同一块业务板的目的。附图说明图1是本发明一种分流方法的示意图;图2是本发明一种分流方法的一个实施例流程图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。为了使本
技术领域
的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。参见图2,图2是本发明一种分流方法的一个实施例流程图,该流程图可以包括以下步骤:步骤201:分流板卡接收正向报文,根据上述正向报文确定目标业务板,将上述正向报文发送至上述目标业务板。步骤202:目标业务板确定属于自身的端口集合,从上述端口集合中选择一个端口;将上述正向报文中的源端口替换为所选择的端口,并发送修改后的正向报文。本实施例中,属于上述目标业务板的端口集合可以为:{端口|k×n+(n-1),k为正整数,n为业务板的总数,n为目标业务板的序列号};作为一个实施例,业务板的端口集合可以预先存储在nat规则中,业务板在接收到正向报文后,可在上述nat规则中对上述端口集合进行查找。步骤203:分流板卡接收对应于修改后的正向报文的反向报文,根据上述反向报文中的目的端口,确定上述目标业务板,将上述反向报文发送至上述目标业务板。对应于上述步骤202中目标业务板的端口集合{端口|k×n+(n-1),k为正整数,n为业务板的总数,n为目标业务板的序列号},目标业务板可根据计算(m+1)/n所得的余数,确定上述目标业务板,其中,m为上述反向报文中的目的端口。本实施例中,若为源网络地址转换snat场景,则在上述步骤201中,分流板卡在接收正向报文后,可以根据正向报文中的源ip地址和目的ip地址进行hash计算,并根据hash计算结果,确定目标业务板,然后将上述正向报文发送至上述目标业务板。本实施例中,若为snat和目的网络地址转换dnat场景,则在上述步骤201中,分流板卡在接收正向报文后,可首先获取正向报文中的目的ip地址对应的目标目的ip地址,根据上述目标目的ip地址和上述正向报文中的源ip地址进行hash计算,并根据hash计算结果,确定目标业务板。在此之后,将上述目标目的ip地址携带在上述正向报文中,并将携带有上述目标目的ip地址的正向报文发送至上述目标业务板。则在步骤202中,目标业务板不仅需要将携带有目标目的ip地址的正向报文中的源端口替换为所选择的端口,还需要将该正向报文中的目的ip地址替换为所携带的目标目的ip地址。本实施例中,若为alg(applicationlayergateway,应用层网关)场景,则网络设备可以通过以下方式,完成alg报文的处理:分流板卡接收alg控制报文,根据alg控制报文确定第一目标业务板,将alg控制报文发送至第一目标业务板;第一目标业务板获得上述alg控制报文中的第一nat信息,确定第一nat信息对应的第二nat信息,生成alg表项,该alg表项记录第一nat信息和第二nat信息的对应关系;将上述alg表项发送至分流板卡;分流板卡接收对应于上述alg控制报文的alg数据报文,根据alg数据报文确定第二目标业务板;在根据alg数据报文中的第二nat信息查找到上述alg表项后,将alg表项中的第一nat信息携带在alg数据报文中,将携带有上述第一nat信息的alg数据报文发送至第二目标业务板;第二目标业务板将携带有第一nat信息的alg数据报文中的第二nat信息,替换为所携带的第一nat信息,并发送修改后的alg数据报文。本发明实施例中,网络设备上新增加了一块分流板卡。分流板卡在将正向报文发送至目标业务板后,目标业务板可以在属于自身的端口集合中选择一个端口,替换正向报文中的源端口,并发送修改后的正向报文;当分流板卡接收到对应于上述正向报文的反向报文后,可以根据反向报文中的目的端口确定出上述目标业务板,从而实现了将正向报文和反向报文分流至同一块业务板的目的。以下将分别对snat场景下、snat和dnat场景下以及alg场景下的具体实施例进行描述。以下实施例均应用于网络设备,该网络设备可以包括1块分流板卡和n块业务板,其中,n为大于1的整数,业务板有自己的序列号n,其中,n为大于0且小于等于n的整数。snat场景下的实施例描述,可参见图1。具体地,本实施例可以包括以下步骤:步骤1:分流板卡接收正向报文,根据正向报文中的源ip地址和目的ip地址进行hash计算,并根据hash计算结果,确定目标业务板,将正向报文发送至上述目标业务板。本实施例中,若分流板卡根据正向报文中的源ip地址和目的ip地址计算出的hash值为1,则可将序列号为1的业务板确定为目标业务板。步骤2:目标业务板确定属于自身的端口集合:{端口|k×n+(n-1),k为正整数,n为业务板的总数,n为目标业务板的序列号},从上述端口集合中选择一个端口;将正向报文中的源端口替换为所选择的端口,并发送修改后的正向报文。作为一个实施例,k可以为区间[0,(q-p)/n]内的正整数,其中,q为本网络设备中最大的端口序号,p为本网络设备中最小的端口序号。若假设q=1000,p=0,n=5,则k的取值范围为[0,200],属于序列号为1的目标业务板的端口集合为{0、5、10、15……990、995、1000};属于序列号为2的目标业务板的端口集合为{1、6、11、16……991、996};属于序列号为3的目标业务板的端口集合为{2、7、12、17……992、997};属于序列号为4的目标业务板的端口集合为{3、8、13、18……993、998};属于序列号为5的目标业务板的端口集合为{4、9、14、19……994、999}。本实施例中,目标业务板在从端口集合中选择端口时,可以从k=0开始依次计算,并判断计算出的端口是否未被占用,且端口的序列号小于等于q,若计算出的端口满足上述两个条件,则将该计算出的端口确定为从端口集合中所选择的端口;若不满足上述两个条件,则将当前k值加1,重新计算,或者从k=0开始,再次计算。作为一个实施例,若为保证计算出的端口的序列号大于等于p,则可使得上述端口集合为{端口|p+k×n+(n-1),p为本网络设备中最小的端口序号,k为正整数,n为业务板的总数,n为目标业务板的序列号}。本实施例中,目标业务板除将正向报文中的源端口替换为所选择的端口外,还可以将上述正向报文中的源ip地址进行snat转换,并发送修改后的正向报文。步骤3:分流板卡接收对应于修改后的正向报文的反向报文,计算(m+1)/n所得的余数,确定上述目标业务板,将上述反向报文发送至上述目标业务板。本实施例中,m即为上述反向报文中的目的端口。本实施例中,若在上述步骤1中所确定的目标业务板的序列号为1,且在步骤2中上述目标业务板所选择的端口号为15,则在本步骤3中,分流板卡可以在接收到的反向报文的目的端口字段中解析到端口号15,此时,通过计算得到(15+1)/5所得的余数1,可以确定目标业务板的序列号为1,即实现了上述正向报文和反向报文均被分流到了序列号为1的业务板。本发明实施例中,网络设备上新增加了一块分流板卡。分流板卡在将正向报文发送至目标业务板后,目标业务板可以在属于自身的端口集合中选择一个端口,替换正向报文中的源端口,并发送修改后的正向报文;当分流板卡接收到对应于上述正向报文的反向报文后,可以根据反向报文中的目的端口确定出上述目标业务板,从而实现了将正向报文和反向报文分流至同一块业务板的目的。snat和dnat场景下的实施例描述,可参见图1。具体地,本实施例可以包括以下步骤:步骤1:分流板卡接收正向报文,获取正向报文中的目的ip地址对应的目标目的ip地址,根据上述目标目的ip地址和上述正向报文中的源ip地址进行hash计算,并根据hash计算结果,确定目标业务板,将上述目标目的ip地址携带在上述正向报文中,并将携带有上述目标目的ip地址的正向报文发送至上述目标业务板。本实施例中,分流板卡可在地址池中,获取正向报文中的目的ip地址对应的目标目的ip地址,也可将本网络设备的ip地址作为正向报文中的目的ip地址对应的目标目的ip地址。其中,根据实际情况,地址池中的ip地址可包括正向报文所访问的目的设备的私网ip地址,比如正向报文所访问的校园网服务器的私网ip地址。步骤2:目标业务板确定属于自身的端口集合,从上述端口集合中选择一个端口,将携带有目标目的ip地址的正向报文中的源端口替换为所选择的端口,将该正向报文中的目的ip地址替换为所携带的目标目的ip地址,并发送修改后的正向报文。其中,目标业务板确定属于自身的端口集合,从上述端口集合中选择一个端口,可参见上述snat场景下的步骤2,在此不再赘述。本实施例中,目标业务板还可以对上述正向报文中的源ip地址进行snat转换,目的端口进行dnat转换。步骤3:分流板卡接收对应于修改后的正向报文的反向报文,根据上述反向报文中的目的端口,确定上述目标业务板,将上述反向报文发送至上述目标业务板。其中,本步骤3可参见上述snat场景下的步骤3,在此不再赘述。优选地,在上述两个实施例中,分流板卡可以通过以下方式确定接收到的报文是正向报文还是反向报文:分流板卡判断接收到的报文中的目的ip地址,是否为地址池中的ip地址或者本网络设备的ip地址,若是,则确定接收到的报文为反向报文,并按照实施例中记录的反向报文的处理方式对接收到的报文进行处理;否则,确定接收到的报文为正向报文,并按照实施例中记录的正向报文的处理方式对接收到的报文进行处理。需要指出的是,在本发明的网络设备中,对于不需要进行nat转换的报文,分流板卡则可对正向报文中的源ip地址和目的ip地址进行hash计算、对反向报文中的源ip地址和目的ip地址进行hash计算,从而确定该报文待分流至的目标业务板,由于反向报文的源ip地址和目的ip地址仅分别为正向报文中源ip地址和目的ip地址的对调,故正、反向报文的hash因子相同,计算出的目标业务板也相同。本发明实施例中,网络设备上新增加了一块分流板卡。分流板卡在将正向报文发送至目标业务板后,目标业务板可以在属于自身的端口集合中选择一个端口,替换正向报文中的源端口,并发送修改后的正向报文;当分流板卡接收到对应于上述正向报文的反向报文后,可以根据反向报文中的目的端口确定出上述目标业务板,从而实现了将正向报文和反向报文分流至同一块业务板的目的。alg场景下的实施例描述,具体地,本实施例可以包括以下步骤:步骤1:分流板卡接收alg控制报文,根据alg控制报文确定第一目标业务板,将alg控制报文发送至第一目标业务板;本实施例中,分流板卡根据alg控制报文确定第一目标业务板,可参见上述snat场景下的步骤2,在此不再赘述。步骤2:第一目标业务板获得上述alg控制报文中的第一nat信息,确定第一nat信息对应的第二nat信息,生成alg表项,alg表项记录第一nat信息和第二nat信息的对应关系;将上述alg表项发送至分流板卡;本实施例中,alg控制报文中携带第一nat信息,该第一nat信息可以包括第一ip地址和第一端口,用于告知目的设备,比如ftp(filetransferprotocol,文件传输协议)服务器,将后续的alg数据报文发送至该第一ip地址和第一端口。本实施例中,在需要进行nat场景下,第一目标业务板需要为上述第一nat信息确定用于nat的第二nat信息。本实施例中,若上述第一nat信息为ip1,port1,第二nat信息为ip2,port2,则生成的alg表项可以表示为如下表1所示的形式:第一nat信息第二nat信息ip1,port1ip2,port2表1第一目标业务板将alg控制报文中的第一nat信息转换为第二nat信息,并发送修改后的alg控制报文。本实施例中,根据nat场景的不同,对alg控制报文报头部分的nat转换,可参见上述snat场景、或者snat和dnat的场景,在此不再赘述。步骤3:分流板卡接收对应于上述alg控制报文的alg数据报文,根据alg数据报文确定第二目标业务板;在根据alg数据报文中的第二nat信息查找到上述alg表项后,将alg表项中的第一nat信息携带在alg数据报文中,将携带有第一nat信息的alg数据报文发送至上述第二目标业务板;本实施例中,针对每一个对应于上述alg控制报文的alg数据报文,分流板卡可以根据alg数据报文中的源ip地址和目的ip地址进行hash计算,根据计算结果确定第二目标业务板;也可以根据alg数据报文中的源ip地址和查找到的alg表项中第一nat信息中的ip地址进行hash计算,并根据计算结果确定第二目标业务板。步骤4:第二目标业务板将携带有第一nat信息的alg数据报文中的第二nat信息,替换为所携带的第一nat信息,并发送修改后的alg数据报文。本发明实施例中,第一目标业务板将生成的alg表项发送至分流板卡,可以使分流板卡在接收到对应于先前接收的alg控制报文的alg数据报文后,将上述alg表项中的第一nat信息携带在上述alg数据报文中,发送至第二目标业务板,使得第二目标业务板可以根据该第一nat信息对上述alg数据报文中的第二nat信息进行替换,从而实现对正确替换后的alg数据报文的发送,实现了alg场景下对报文的正常处理。与前述一种分流方法的实施例相对应,本发明还提供了一种分流装置的实施例,本装置实施例应用于网络设备,该网络设备可以包括1块分流板卡和至少两块业务板,该装置可以包括:分流板卡和从上述业务板中确定出的目标业务板。其中,分流板卡,用于接收正向报文,根据上述正向报文确定目标业务板,将上述正向报文发送至上述目标业务板;以及用于接收对应于上述修改后的正向报文的反向报文,根据上述反向报文中的目的端口,确定上述目标业务板,将上述反向报文发送至上述目标业务板;目标业务板,用于确定属于自身的端口集合,从上述端口集合中选择一个端口;将上述正向报文中的源端口替换为所选择的端口,并发送修改后的正向报文。在snat场景下,上述分流板卡,可具体用于:根据上述正向报文中的源ip地址和目的ip地址进行hash计算,根据hash计算结果,确定目标业务板。在snat和dnat场景下,上述分流板卡,可具体用于:获取上述正向报文中的目的ip地址对应的目标目的ip地址,根据上述目标目的ip地址和上述正向报文中的源ip地址进行hash计算,根据hash计算结果,确定目标业务板,将上述目标目的ip地址携带在上述正向报文中,将携带有上述目标目的ip地址的正向报文发送至上述目标业务板;上述目标业务板,可具体用于:将上述携带有目标目的ip地址的正向报文中的源端口替换为所选择的端口、目的ip地址替换为所携带的目标目的ip地址。作为一个优选的实施例,若属于上述目标业务板的端口集合为:{端口|k×n+(n-1),k为正整数,n为业务板的总数,n为目标业务板的序列号};则上述分流板卡,具体用于:根据计算(m+1)/n所得的余数,确定上述目标业务板,其中,m为上述反向报文中的目的端口。本发明实施例中,网络设备上新增加了一块分流板卡。分流板卡在将正向报文发送至目标业务板后,目标业务板可以在属于自身的端口集合中选择一个端口,替换正向报文中的源端口,并发送修改后的正向报文;当分流板卡接收到对应于上述正向报文的反向报文后,可以根据反向报文中的目的端口确定出上述目标业务板,从而实现了将正向报文和反向报文分流至同一块业务板的目的。作为一个实施例,上述分流板卡,还可用于接收alg控制报文,根据alg控制报文确定第一目标业务板,将上述alg控制报文发送至上述第一目标业务板;以及用于接收对应于上述alg控制报文的alg数据报文,根据上述alg数据报文确定第二目标业务板;在根据上述alg数据报文中的第二nat信息查找到上述alg表项后,将上述alg表项中的第一nat信息携带在上述alg数据报文中,将携带有上述第一nat信息的alg数据报文发送至第二目标业务板;则上述装置还可以包括:从上述业务板中确定出的第一目标业务板和第二目标业务板:其中,第一目标业务板,可用于获得上述alg控制报文中的第一nat信息,确定第一nat信息对应的第二nat信息,生成alg表项,上述alg表项记录上述第一nat信息和上述第二nat信息的对应关系;将上述alg表项发送至上述分流板卡;第二目标业务板,可用于将上述携带有第一nat信息的alg数据报文中的第二nat信息,替换为所携带的第一nat信息,并发送修改后的alg数据报文。需要说明的是,上述目标业务板、第一目标业务板、第二目标业务板均是网络设备中的某一块被指定的业务板,其指定过程由网络设备中的分流板卡决定。本发明实施例中,第一目标业务板将生成的alg表项发送至分流板卡,可以使分流板卡在接收到对应于先前接收的alg控制报文的alg数据报文后,将上述alg表项中的第一nat信息携带在上述alg数据报文中,发送至第二目标业务板,使得第二目标业务板可以根据该第一nat信息对上述alg数据报文中的第二nat信息进行替换,从而实现对正确替换后的alg数据报文的发送,实现了alg场景下对报文的正常处理。对于上述装置实施例的说明,可具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1