一种报文处理方法及装置与流程

文档序号:20883418发布日期:2020-05-26 17:19阅读:154来源:国知局
一种报文处理方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种报文处理方法及装置。



背景技术:

随着云计算技术的快速发展,各类传统业务逐渐整合到云计算平台中,为客户提供服务。

以云计算弹性文件存储系统数据面结构为例,具体来讲,客户端虚拟机和裸金属服务器通过软件定义网络sdn(softwaredefinednetwork)访问文件存储服务器所在的nas网络,该文件存储服务器通过业务ip地址提供文件存储业务的访问。对于文件存储服务集群高可用一般通过业务ip地址切换来实现,比如,若文件存储服务集群中某一文件存储服务器失效后,其对应的业务ip地址将切换至另一台正常服务的文件存储服务器,以此来保证文件存储业务的顺利切换。

如图1所示为现有基于tcp连接的业务切换过程示意图。具体来讲,客户端的虚拟机向第一服务器端的业务ip地址发送tcp分片数据,该第一服务器端正常接收到该tcp数据并作出业务响应。若该第一服务器端发生故障失效,则向虚拟机发送一个tcpreset报文。若该tcpreset报文的序列号不在虚拟机的接收窗口范围内,根据tcp协议,虚拟机将忽略该tcpreset报文。与此同时,业务ip地址发生切换,相应的网络层通路也发生切换。然而,虚拟机继续向原业务ip地址发送tcp分片数据。一旦业务ip地址切换完成,该tcp分片数据将被发送到第二服务器端。由于虚拟机和第二服务器端并未建立tcp连接,根据tcp协议,第二服务器端将丢弃这些tcp分片数据,并向虚拟机返回tcpreset报文。虚拟机接收到该tcpreset报文,将与第二服务器端重新建立tcp连接,虚拟机继续向第二服务器端发送该tcp分片数据,从而实现了ip业务的切换。

然而,现有基于tcp连接的业务切换过程,由于客户端的虚拟机或裸金属服务器访问存储服务的路径往往要通过sdn,而sdn转发设备如接入侧交换设备一般存在基本的网络安全层面的限制,比如,连接状态表。具体来讲,所有客户端的虚拟机和裸金属服务器与外面服务器端之间的网络连接,都被记录在连接状态表中,连接状态表一般根据flag标记位来更新tcp连接状态。

如此一来,由于第一服务器端失效之前经常会向客户端返回一个非法的tcpreset报文(flag标记为reset),这个报文会更改连接状态表当前tcp连接的状态,关闭当前tcp连接。而客户端基于tcp协议将忽略该非法的tcpreset报文,并不改变客户端的tcp连接状态。

在客户端向切换后的第二服务器端发送tcp分片数据时,会由于该数据不匹配连接状态表(此时tcp连接已关闭),第二服务器端丢弃该分片数据,从而导致上述业务切换过程中断。客户端将通过tcp重传机制不断重传tcp分片数据,然而,由于这些重传分片数据都不匹配连接状态表而被丢弃,直到客户端重传机制超时后,客户端重新与第二服务器端建立tcp连接,客户端将tcp分片数据发送至第二服务器端,从而完成整个业务切换过程。

可见,现有业务切换效率低,用户体验差。



技术实现要素:

本发明实施例提供一种报文处理方法及装置,用于解决现有业务切换效率低,用户体验差的技术问题。

第一方面,本发明实施例提供了一种报文处理方法,应用于软件定义网络sdn转发设备,所述方法包括:

在第一服务器端与客户端基于所述snd转发设备建立第一传输控制协议tcp连接之后,通过所述第一tcp连接接收来自所述客户端的tcp分片报文,并将所述tcp分片报文发送至所述第一服务器端;

若所述第一服务器端发生故障,接收来自所述第一服务器端的tcpreset报文;

若检测到所述tcpreset报文与可信域表中的条目匹配,则将所述tcpreset报文发送至所述客户端;

建立所述客户端与第二服务器端的第二tcp连接,通过所述第二tcp连接接收所述tcp分片报文,并将所述tcp分片报文发送至所述第二服务器端。

在本发明实施例的技术方案中,在第一服务器端与客户端基于sdn转发设备建立第一tcp连接之后,该sdn转发设备将通过该第一tcp连接接收来自客户端的tcp分片报文,并将该tcp分片报文发送至第一服务器端;若第一服务器端发生故障,该sdn转发设备将接收来自第一服务器端的tcpreset报文。一旦检测到该tcpreset报文与可信域表中的条目匹配,该sdn转发设备直接将该tcpreset报文发送至客户端,直接建立该客户端与第二服务器端的第二tcp连接,这样的话,sdn转发设备便可以通过第二tcp连接成功接收该tcp分片报文,并将该tcp分片报文发送至第二服务器端。可见,整个过程在第一服务器端发生故障,sdn转发设备接收来自第一服务器端的tcpreset报文之后,将该tcpreset报文与可信域表中的条目进行匹配,若匹配成功,则不再匹配连接状态表,直接将该tcpreset报文发送至客户端,并建立客户端与第二服务器端间的第二tcp连接,整个过程无需重传机制,sdn转发设备便通过第二tcp连接将该tcp分片报文发送至第二服务器端,从而提高了业务切换效率,用户体验效果好。

可选地,所述可信域表包括至少一个入口报文条目,每个入口报文条目所对应的字段包括报文方向、源ip地址和目的ip地址,其中,每个源ip地址和每个目的ip地址均包括具体的ip地址和带掩码的ip地址段,每个报文方向用于表征数据报文进入所述客户端的方向。

可选地,所述方法还包括:

若所述可信域表中与所述tcpreset报文匹配的第一入口报文条目的源ip地址为所述第一服务器端的业务ip地址,所述第一入口报文条目的目的ip地址为所述客户端的ip地址,则确定所述tcpreset报文与所述可信域表的条目匹配。

可选地,所述可信域表包括至少一对报文条目,每对报文条目包括入口报文条目和出口报文条目,每对报文条目中的入口报文条目的源ip地址与出口报文条目的目的ip地址相同,每对报文条目中的入口报文条目的目的ip地址与出口报文条目的源ip地址相同,以使进出所述客户端的入口数据报文和出口报文数据均能匹配到所述可信域表中的条目,其中,每对报文条目中的出口报文条目的报文方向为出口数据报文从所述客户端出来的方向。

在本发明实施例中,可信域表包括至少一对报文条目,每对报文条目包括入口报文和出口报文条目,也就是说,成对配置可信域表的报文条目。而且每对报文条目中的入口报文条目的目的源ip地址与出口报文条目的ip地址必须相同,入口报文条目的目的ip地址和出口报文条目的目的源ip地址必须相同,从而保证了通过可信域表可以同时对进出客户端的数据报文进行匹配检测,保证了报文双向处理的效率。

可选地,所述方法还包括:

若检测到所述tcpreset报文与可信域表匹配失败,则检测所述tcpreset报文是否匹配连接状态表,其中,所述连接状态表用于表征所述客户端与包括所述第一服务端和所述第二服务端在内的至少两个服务器端间的网络连接状态;

若检测到所述tcpreset报文匹配所述连接状态表,则更改所述连接状态表中当前tcp连接的状态,关闭所述第一tcp连接;

接收并丢弃所述客户端通过tcp重传机制不断重传的所述tcp分片报文;

若重传超时,建立所述客户端与所述第二服务器端间的所述第二tcp连接,通过所述第二tcp连接接收所述tcp分片报文,并将所述tcp分片报文发送至所述第二服务器端。

第二方面,本发明实施例还提供了一种报文处理装置,应用于软件定义网络sdn转发设备,所述装置包括:

第一接收单元,在第一服务器端与客户端基于所述snd转发设备建立第一传输控制协议tcp连接之后,通过所述第一tcp连接接收来自所述客户端的tcp分片报文,并将所述tcp分片报文发送至所述第一服务器端;

第二接收单元,若所述第一服务器端发生故障,接收来自所述第一服务器端的tcpreset报文;

发送单元,若检测到所述tcpreset报文与可信域表中的条目匹配,则将所述tcpreset报文发送至所述客户端;

第一建立单元,用于建立所述客户端与第二服务器端的第二tcp连接,通过所述第二tcp连接接收所述tcp分片报文,并将所述tcp分片报文发送至所述第二服务器端。

可选地,所述可信域表包括至少一个入口报文条目,每个入口报文条目所对应的字段包括报文方向、源ip地址和目的ip地址,其中,每个源ip地址和每个目的ip地址均包括具体的ip地址和带掩码的ip地址段,每个报文方向用于表征数据报文进入所述客户端的方向。

可选地,所述装置还包括:

确定单元,若所述可信域表中与所述tcpreset报文匹配的第一入口报文条目的源ip地址为所述第一服务器端的业务ip地址,所述第一入口报文条目的目的ip地址为所述客户端的ip地址,则确定所述tcpreset报文与所述可信域表的条目匹配。

可选地,所述可信域表包括至少一对报文条目,每对报文条目包括入口报文条目和出口报文条目,每对报文条目中的入口报文条目的源ip地址与出口报文条目的目的ip地址相同,每对报文条目中的入口报文条目的目的ip地址与出口报文条目的源ip地址相同,以使进出所述客户端的入口数据报文和出口报文数据均能匹配到所述可信域表中的条目,其中,每对报文条目中的出口报文条目的报文方向为出口数据报文从所述客户端出来的方向。

可选地,所述装置还包括:

检测单元,若检测到所述tcpreset报文与可信域表匹配失败,则检测所述tcpreset报文是否匹配连接状态表,其中,所述连接状态表用于表征所述客户端与包括所述第一服务端和所述第二服务端在内的至少两个服务器端间的网络连接状态;

更改单元,若检测到所述tcpreset报文匹配所述连接状态表,则更改所述连接状态表中当前tcp连接的状态,关闭所述第一tcp连接;

第三接收单元,用于接收并丢弃所述客户端通过tcp重传机制不断重传的所述tcp分片报文;

第二建立单元,若重传超时,建立所述客户端与所述第二服务器端间的所述第二tcp连接,通过所述第二tcp连接接收所述tcp分片报文,并将所述tcp分片报文发送至所述第二服务器端。

第三方面,本发明实施例还提供了一种软件定义网络sdn转发设备,所述sdn转发设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面所述的报文处理方法的步骤。

第四方面,本发明实施例还提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的报文处理方法的步骤。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。

图1为现有基于tcp连接的业务切换过程示意图;

图2为本发明实施例提供的一种报文处理方法的方法流程图;

图3为本发明实施例提供的一种报文处理方法中包括一对入口报文条目和出口报文条目的可信域表示意图;

图4为本发明实施例提供的一种报文处理方法中另外一种方法流程图;

图5为本发明实施例提供的数据报文进入客户端时对报文的处理流程示意图;

图6为本发明实施例提供的数据报文从客户端出来时对报文的处理流程示意图;

图7为本发明实施例提供的一种报文处理装置的结构示意图。

具体实施方式

本发明的说明书和权利要求书及上述附图中的“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。

请参考图2,本发明实施例提供了一种报文处理方法,应用于sdn转发设备,所述方法包括:

s101:在第一服务器端与客户端基于所述snd转发设备建立第一传输控制协议tcp连接之后,通过所述第一tcp连接接收来自所述客户端的tcp分片报文,并将所述tcp分片报文发送至所述第一服务器端;

s102:若所述第一服务器端发生故障,接收来自所述第一服务器端的tcpreset报文;

s103:若检测到所述tcpreset报文与可信域表中的条目匹配,则将所述tcpreset报文发送至所述客户端;

s104:建立所述客户端与第二服务器端的第二tcp连接,通过所述第二tcp连接接收所述tcp分片报文,并将所述tcp分片报文发送至所述第二服务器端。

在具体实施过程中,步骤s101至步骤s104的具体实现过程如下:

首先,在第一服务器端与客户端基于sdn转发设备建立第一tcp连接之后,sdn转发设备便可以通过该第一tcp连接接收来自客户端的tcp分片报文,此时,sdn转发设备便可以将该tcp分片报文成功发送至第一服务端。若第一服务器端发生故障,第一服务器端将向该sdn转发设备发送tcpreset报文。在该sdn转发设备接收到该tcpreset报文之后,检测该tcpreset报文是否与可信域表中的条目匹配,若匹配,该sdn转发设备便可以直接将该tcpreset报文发送至客户端。也就是说,在该tcpreset报文匹配连接状态表之前,通过可信域表对该tcpreset报文进行白名单过滤,一旦该tcpreset报文与可信域表中的条目匹配,sdn转发设备直接将该tcpreset报文发送至客户端。相较于现有技术直接将该tcpreset报文与连接状态表进行匹配检测来说,由于现有技术中该tcpreset报文的序列号不在客户端的接收窗口范围内,该客户端将忽略该tcpreset报文,从而导致业务中断。而本发明实施例的技术方案,即便是在第一服务器端故障失效时,由于该tcpreset报文与可信域表中的条目匹配,sdn转发设备可以直接将该tcpreset报文发送至客户端,从而不会导致业务中断,保证了切换效率。

然后,通过sdn转发设备建立客户端与第二服务器端的第二tcp连接,该sdn转发设备便可以通过该第二tcp连接接收该tcp分片报文,并将该tcp分片报文发送至第二服务器端,从而实现了tcp分片报文对应的业务由第一服务器端到第二服务器端的快速切换,提高了业务切换效率。

在本发明实施例中,所述可信域表包括至少一个入口报文条目,每个入口报文条目所对应的字段包括报文方向、源ip地址和目的ip地址,其中,每个源ip地址和每个目的ip地址均包括具体的ip地址和带掩码的ip地址段,每个报文方向用于表征数据报文进入所述客户端的方向。也就是说,可信域表中入口报文条目中的报文方向能够表征数据报文为进入客户端方向的报文。

在本发明实施例中,由于该tcpreset报文为进入客户端方向的报文,若可信域表中与tcpreset报文匹配的第一入口报文条目的源ip地址为第一服务器端的业务ip地址,该第一入口报文条目的目的ip地址为该客户端的ip地址,则确定该tcpreset报文与该可信域表的条目匹配。

在本发明实施例中,为了提高报文双向处理的效率,该可信域表包括至少一对报文条目,每对报文条目包括入口报文条目和出口报文条目,每对报文条目中的入口报文条目的源ip地址与出口报文条目的目的ip地址相同,每对报文条目中的入口报文条目的目的ip地址与出口报文条目的源ip地址相同,以使进出所述客户端的入口数据报文和出口报文数据均能匹配到所述可信域表中的条目,其中,每对报文条目中的出口报文条目的报文方向为出口数据报文从所述客户端出来的方向。比如,如图3所示为包括一对入口报文条目和出口报文条目的可信域表的示意图,其中,“ingress”表示数据报文进入客户端的方向,“egress”表示数据报文从客户端出来的方向,第一行报文条目对应入口报文条目,其对应的源ip地址为2.2.2.0/24,目的ip地址为。第二行报文条目对应出口报文条目,其对应的源ip地址为1.1.1.1,目的ip地址为2.2.2.0/24。当然,本领域技术人员可以根据实际需要来设计可信域中所包括的每对报文条目,在此就不不再赘述了。

在本发明实施例中,为了提高报文处理的性能,请参考图4,所述方法还包括:

s201:若检测到所述tcpreset报文与可信域表匹配失败,则检测所述tcpreset报文是否匹配连接状态表,其中,所述连接状态表用于表征所述客户端与包括所述第一服务端和所述第二服务端在内的至少两个服务器端间的网络连接状态;

s202:若检测到所述tcpreset报文匹配所述连接状态表,则更改所述连接状态表中当前tcp连接的状态,关闭所述第一tcp连接;

s203:接收并丢弃所述客户端通过tcp重传机制不断重传的所述tcp分片报文;

s204:若重传超时,建立所述客户端与所述第二服务器端间的所述第二tcp连接,通过所述第二tcp连接接收所述tcp分片报文,并将所述tcp分片报文发送至所述第二服务器端。

在具体实施过程中,步骤s201至步骤s204的具体实现过程如下:

若检测到该tcpreset报文与可信域表匹配失败,sdn转发设备将进一步检测该tcpreset报文是否匹配连接状态,其中,该连接状态表用于表征客户端与包括第一服务器端和第二服务端在内的至少两个服务器端的网络连接状态。一旦检测到该tcpreset报文匹配该连接状态表,该tcpreset报文将更改连接状态表当前tcp连接的状态,关闭当前第一tcp连接。而客户端基于tcp协议将忽略该tcpreset报文,并不改变客户端的tcp连接状态。在客户端向切换后的第二服务器端发送tcp分片数据时,会由于该数据不匹配连接状态表(此时第一tcp连接已关闭),第二服务器端将丢弃该tcp分片数据。然后,客户端将通过tcp重传机制不断重传该tcp分片数据至sdn转发设备,然而,由于这些重传分片数据都不匹配连接状态表而被丢弃,直到客户端重传机制超时后,通过sdn转发设备客户端重新与第二服务器端建立第二tcp连接,该sdn转发设备将通过该第二tcp连接接收客户端发送的tcp分片数据并发送至第二服务器端,从而实现了在tcpreset报文不匹配可信域表时对业务切换的处理性能。

在本发明实施例中,如图5所示为数据报文进入客户端时对报文的整个处理流程示意图,如图6所示为数据报文从客户端出来时对报文的整个处理流程示意图,由于sdn转发设备对从客户端出来的出口数据报文的处理方式,与sdn转发设备入口数据报文进入客户端的处理方式大致相同,且由于上文中已对进入客户端的tcpreset报文的整个处理流程进行了详细的描述,在此就不再赘述了。

基于同样的发明构思,请参考图7,本发明实施例还提供了一种报文处理装置,应用于软件定义网络sdn转发设备,所述装置包括:

第一接收单元10,在第一服务器端与客户端基于所述snd转发设备建立第一传输控制协议tcp连接之后,通过所述第一tcp连接接收来自所述客户端的tcp分片报文,并将所述tcp分片报文发送至所述第一服务器端;

第二接收单元20,若所述第一服务器端发生故障,接收来自所述第一服务器端的tcpreset报文;

发送单元30,若检测到所述tcpreset报文与可信域表中的条目匹配,则将所述tcpreset报文发送至所述客户端;

第一建立单元40,用于建立所述客户端与第二服务器端的第二tcp连接,通过所述第二tcp连接接收所述tcp分片报文,并将所述tcp分片报文发送至所述第二服务器端。

在本发明实施例中,所述可信域表包括至少一个入口报文条目,每个入口报文条目所对应的字段包括报文方向、源ip地址和目的ip地址,其中,每个源ip地址和每个目的ip地址均包括具体的ip地址和带掩码的ip地址段,每个报文方向用于表征数据报文进入所述客户端的方向。

在本发明实施例中,所述装置还包括:

确定单元,若所述可信域表中与所述tcpreset报文匹配的第一入口报文条目的源ip地址为所述第一服务器端的业务ip地址,所述第一入口报文条目的目的ip地址为所述客户端的ip地址,则确定所述tcpreset报文与所述可信域表的条目匹配。

在本发明实施例中,所述可信域表包括至少一对报文条目,每对报文条目包括入口报文条目和出口报文条目,每对报文条目中的入口报文条目的源ip地址与出口报文条目的目的ip地址相同,每对报文条目中的入口报文条目的目的ip地址与出口报文条目的源ip地址相同,以使进出所述客户端的入口数据报文和出口报文数据均能匹配到所述可信域表中的条目,其中,每对报文条目中的出口报文条目的报文方向为出口数据报文从所述客户端出来的方向。

在本发明实施例中,所述装置还包括:

检测单元,若检测到所述tcpreset报文与可信域表匹配失败,则检测所述tcpreset报文是否匹配连接状态表,其中,所述连接状态表用于表征所述客户端与包括所述第一服务端和所述第二服务端在内的至少两个服务器端间的网络连接状态;

更改单元,若检测到所述tcpreset报文匹配所述连接状态表,则更改所述连接状态表中当前tcp连接的状态,关闭所述第一tcp连接;

第三接收单元,用于接收并丢弃所述客户端通过tcp重传机制不断重传的所述tcp分片报文;

第二建立单元,若重传超时,建立所述客户端与所述第二服务器端间的所述第二tcp连接,通过所述第二tcp连接接收所述tcp分片报文,并将所述tcp分片报文发送至所述第二服务器端。

基于同一发明构思,本发明实施例中提供了一种软件定义网络sdn转发设备,包括:处理器,所述处理器用于执行存储器中存储的计算机程序时实现如上面所述的报文处理方法的步骤。

基于同一发明构思,本发明实施例还提一种可读存储介质,包括:

其上存储有计算机程序,所述计算机程序被处理器执行时实现如上面所述的报文处理方法的步骤。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1