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

文档序号:18009346发布日期:2019-06-25 23:48阅读:165来源:国知局
一种报文处理方法和装置与流程

本申请涉及计算机网络技术领域,特别是涉及一种报文处理方法和装置。



背景技术:

随着网络规模的不断扩大,为了保证网络的稳定性,避免单一链路故障而导致整个网络业务中断,网络中通常可以部署多个链路。相关技术中,负载均衡设备可以将业务流量分摊到各链路中,以实现各链路的负载均衡。

一种实现方式中,负载均衡设备可以通过逐包负载分担的方式对报文进行转发。参见图1,第一负载均衡设备101与第二负载均衡设备102之间存在第一链路105和第二链路106。当第二负载均衡设备102先后接收到第二用户设备104发送的多个报文p1、p2、p3和p4时,第二负载均衡设备102可以通过第一链路105向第一负载均衡设备101发送报文p1,然后,可以通过第二链路106向第一负载均衡设备101发送报文p2,通过第一链路105向第一负载均衡设备101发送报文p3,通过第二链路106向第一负载均衡设备101发送报文p4。相应的,在接收到第二负载均衡设备102发送的报文后,第一负载均衡设备101可以按照接收报文的顺序,将报文转发至第一用户设备103。

然而,由于不同链路传输报文的性能存在差异,可能会导致第一负载均衡设备101接收报文的顺序,与第二负载均衡设备102发送报文的顺序不一致,第一负载均衡设备101按照接收报文的顺序对报文进行转发处理,可能会导致网络业务出错。



技术实现要素:

本申请实施例的目的在于提供一种报文处理方法和装置,可以在一定程度上避免网络业务中断。具体技术方案如下:

第一方面,为了达到上述目的,本申请实施例公开了一种报文处理方法,所述方法应用于第一网络设备,所述方法包括:

接收并解析第二网络设备发送的第一报文,获得所述第一报文包括的第一序列号和数据报文,其中,所述第一序列号为根据所述第二网络设备接收所述数据报文的顺序确定;

当所述第一序列号不小于本地记录的期望序列号且不大于所述期望序列号与预设缓存数目的和值时,判断是否接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文;

若未接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文,则缓存所述数据报文,记录所述数据报文的序列号为所述第一序列号,并在接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

第二方面,为了达到上述目的,本申请实施例公开了一种报文处理方法,所述方法应用于第二网络设备,所述方法包括:

接收数据报文,并为所述数据报文封装携带有第一序列号的报文头,生成第一报文,其中,所述第一序列号为根据所述第二网络设备获取所述数据报文的顺序确定;

向第一网络设备发送所述第一报文,以使所述第一网络设备在所述第一序列号不小于所述第一网络设备本地记录的期望序列号且不大于所述期望序列号与预设缓存数目的和值的情况下,若所述第一网络设备未接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文,缓存所述数据报文,记录所述数据报文的序列号为所述第一序列号,并在接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

第三方面,为了达到上述目的,本申请实施例公开了一种报文处理装置,所述装置应用于第一网络设备,所述装置包括:

接收模块,用于接收并解析第二网络设备发送的第一报文,获得所述第一报文包括的第一序列号和数据报文,其中,所述第一序列号为根据所述第二网络设备接收所述数据报文的顺序确定;

判断模块,用于当所述第一序列号不小于本地记录的期望序列号且不大于所述期望序列号与预设缓存数目的和值时,判断是否接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文;

第一处理模块,用于若未接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文,则缓存所述数据报文,记录所述数据报文的序列号为所述第一序列号,并在接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

第四方面,为了达到上述目的,本申请实施例公开了一种报文处理装置,所述装置应用于第二网络设备,所述装置包括:

生成模块,用于接收数据报文,并为所述数据报文封装携带有第一序列号的报文头,生成第一报文,其中,所述第一序列号为根据所述第二网络设备获取所述数据报文的顺序确定;

发送模块,用于向第一网络设备发送所述第一报文,以使所述第一网络设备在所述第一序列号不小于所述第一网络设备本地记录的期望序列号且不大于所述期望序列号与预设缓存数目的和值的情况下,若所述第一网络设备未接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文,缓存所述数据报文,记录所述数据报文的序列号为所述第一序列号,并在接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

第五方面,为了达到上述目的,本申请实施例公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现第一方面所述的方法步骤。

第六方面,为了达到上述目的,本申请实施例公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现第二方面所述的方法步骤。

第七方面,提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现第一方面所述的方法步骤。

第八方面,提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现第二方面所述的方法步骤。

第九方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法步骤。

第十方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面所述的方法步骤。

本申请实施例提供了一种报文处理方法,第一网络设备可以接收并解析第二网络设备发送的第一报文,获得第一报文包括的第一序列号和数据报文,当第一序列号不小于第一网络设备本地记录的期望序列号且不大于期望序列号与预设缓存数目的和值时,若第一网络设备未接收到携带期望序列号和第一序列号之间的所有序列号的报文,第一网络设备可以缓存数据报文,记录该数据报文的序列号为第一序列号,并在接收到携带期望序列号和第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。基于上述处理,第一网络设备发送报文的顺序,与第二网络设备向第一网络设备发送报文的顺序一致,进而,能够在一定程度上避免网络业务出错。

当然,实施本申请的任一产品或方法并不一定需要同时达到以上的所有优点。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种组网架构的结构图;

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

图3为本申请实施例提供的一种报文处理方法的流程图;

图4为本申请实施例提供的一种报文处理方法示例的流程图;

图5为本申请实施例提供的一种报文处理装置的结构图;

图6为本申请实施例提供的一种报文处理装置的结构图;

图7为本申请实施例提供的一种电子设备的结构图;

图8为本申请实施例提供的一种电子设备的结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

相关技术中,参见图1,图1为本申请实施例提供的一种组网架构的结构图,该组网可以包括:第一负载均衡设备101、第二负载均衡设备102、第一用户设备103和第二用户设备104,第一负载均衡设备101与第二负载均衡设备102之间存在第一链路105和第二链路106。

当第二负载均衡设备102接收到第二用户设备104发送的多个数据报文时,第二负载均衡设备102可以采用逐包发送的方式,通过第一链路105和第二链路106,将接收到的数据报文逐个转发至第一负载均衡设备101。由于第一链路105和第二链路106传输报文的性能存在差异,有可能导致第一负载均衡设备101接收数据报文的顺序,与第二负载均衡设备102发送数据报文的顺序不一致。若第一负载均衡设备101根据接收数据报文的顺序,将接收到的数据报文转发至第一用户设备103,可能会导致网络业务出错。

为了解决上述问题,本申请实施例提供了一种报文处理方法,针对图1的组网架构,在第二负载均衡设备102接收到第二用户设备104发送的数据报文时,第二负载均衡设备102可以根据获取该数据报文的顺序,确定该数据报文的序列号(即第一序列号),并为该数据报文封装携带有第一序列号的报文头,得到第一报文,然后,第二负载均衡设备102可以向第一负载均衡设备101发送第一报文。

第一负载均衡设备101则可以接收并解析第一报文,获得第一序列号和该数据报文。当第一序列号不小于第一负载均衡设备101本地记录的期望序列号且不大于期望序列号与预设缓存数目的和值时,第一负载均衡设备101可以判断是否接收到携带期望序列号和第一序列号之间的所有序列号的报文。

如果第一负载均衡设备101未接收到携带期望序列号和第一序列号之间的所有序列号的报文,第一负载均衡设备101可以缓存该数据报文,记录该数据报文的序列号为第一序列号,后续,在第一负载均衡设备101接收到携带期望序列号和第一序列号之间的所有序列号的报文的情况下,第一负载均衡设备101可以将缓存的报文按照序列号的大小顺序发送。

基于上述处理,第一负载均衡设备101发送报文的顺序,与第二负载均衡设备102向第一负载均衡设备101发送报文的顺序一致,进而,能够在一定程度上避免网络业务出错。

参见图2,图2为本申请实施例提供的一种报文处理方法的流程图,该方法可以应用于第一网络设备,第一网络设备可以是图1中的第一负载均衡设备101,也可以是其他类型的设备,本申请实施例并不作特别限定,第一网络设备能够实现本申请实施例提供的方法即可。图2所示方法可以包括以下步骤。

s201:接收并解析第二网络设备发送的第一报文,获得第一报文包括的第一序列号和数据报文。

其中,第一序列号为根据第二网络设备获取该数据报文的顺序确定。

第一网络设备和第二网络设备可以均为负载均衡设备。第一网络设备与第二网络设备之间可以存在一条链路,也可以存在多条链路。

在申请实施例中,第二网络设备可以获取该数据报文,然后,第二网络设备可以根据获取该数据报文的顺序,确定该数据报文的序列号(即第一序列号),并通过第二网络设备与第一网络设备之间链路,向第一网络设备发送包含有该数据报文和第一序列号的第一报文。

相应的,第一网络设备则接收第一报文,并解析第一报文,得到第一报文中包含的第一序列号和该数据报文。

一种实现方式中,第二网络设备对该数据报文进行gre(genericroutingencapsulation,通用路由封装),封装的gre头中携带有第一序列号。在第一网络设备接收并解析第一报文后,第一网络设备可以从第一报文的gre头中,提取得到第一序列号。

第二网络设备对该数据报文进行处理的方法,将在后续实施例中详细介绍。

s202:当第一序列号不小于本地记录的期望序列号且不大于期望序列号与预设缓存数目的和值时,判断是否接收到携带期望序列号和第一序列号之间的所有序列号的报文。

其中,期望序列号可以用于表示第一网络设备当前期望接收到的报文的序列号。预设缓存数目表示能够缓存的报文的个数,具体实施时可以由技术人员根据经验进行设置。例如,预设缓存数目可以根据第一网络设备的内存空间大小确定。

一种实现方式中,期望序列号可以为第一网络设备已发送报文中的最大序列号的下一序列号。例如,用n表示期望序列号,m表示预设缓存数目。如果当前n=100,m=5,即,第一网络设备上一次发送的报文的序列号为99,若要使第一网络设备发送报文的顺序与第二网络设备发送报文的顺序一致,后续第一网络设备应该发送序列号为100的报文。

在申请实施例中,在第一网络设备提取到第一序列号后,当第一网络设备判定第一序列号不小于期望序列号且不大于期望序列号与预设缓存数目的和值时,第一网络设备可以进一步判断当前是否接收到携带期望序列号和第一序列号之间的所有序列号的报文。

s203:若未接收到携带期望序列号和第一序列号之间的所有序列号的报文,则缓存数据报文,记录该数据报文的序列号为第一序列号,并在接收到携带期望序列号和第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

在申请实施例中,如果第一序列号不小于期望序列号且不大于期望序列号与预设缓存数目的和值,且第一网络设备当前未接收到携带期望序列号和第一序列号之间的所有序列号的报文,则第一网络设备缓存该数据报文,并记录该数据报文的序列号为第一序列号。

后续,当第一网络设备接收到携带期望序列号和第一序列号之间的所有序列号的报文时,第一网络设备再将缓存的报文按照序列号的大小顺序发送。

一种实现方式中,用n表示期望序列号,m表示预设缓存数目。如果当前n=100,m=5,当第一网络设备接收到序列号为103的报文时,如果第一网络设备未接收到序列号为100、101和102的报文,第一网络设备可以缓存序列号为103的报文包含的数据报文,后续,当第一网络设备接收到序列号为100、101和102的报文时,第一网络设备可以将序列号为100、101、102和103的报文包含的数据报文,按照序列号的大小顺序发送。一个示例中,可以按照序列号由小到大的顺序,发送报文。

本步骤中,如果第一网络设备接收到具有期望序列号的报文,则第一网络设备可以直接发送该报文包含的数据报文。另外,第一网络设备还可以根据预设增长值更新期望序列号。

其中,预设增长值可以由技术人员根据业务需求进行设置。例如,预设增长值可以为1,也可以为2,但并不限于此。

一种实现方式中,如果预设增长值为1,期望序列号的初始数值可以为1,当第一网络设备接收到序列号为1的报文时,第一网络设备发送序列号为1的报文包含的数据报文。

若要使第一网络设备发送报文的顺序与第二网络设备发送报文的顺序一致,后续第一网络设备应该发送序列号为2的报文包含的数据报文,因此,第一网络设备将期望序列号更新为2,当第一网络设备接收到序列号为2的报文时,第一网络设备发送序列号为2的报文包含的数据报文。同理,第一网络设备将期望序列号更新为3,以此类推。

另外,由于第一网络设备在接收到具有期望序列号的报文时,可能已缓存有其他报文,因此,如果第一序列号等于期望序列号,在第一网络设备发送当前接收到的报文包含的数据报文,并更新期望序列号后,第一网络设备还可以对已缓存的报文进行处理。

一种实现方式中,用n表示期望序列号,m表示预设缓存数目,预设增长值为1。如果当前n=100,m=5,当第一网络设备接收到序列号为101报文时,第一网络设备可以缓存序列号为101的报文包含的数据报文,并记录数据报文的序列号为101;当第一网络设备再接收到序列号为102的报文,第一网络设备可以缓存序列号为102的报文包含的数据报文,并记录数据报文的序列号为102;当第一网络设备再接收到序列号为104的报文,第一网络设备仍可以缓存序列号为104的报文包含的数据报文,并记录数据报文的序列号为104。

当第一网络设备接收到序列号为100的报文时,由于该报文的序列号等于期望序列号,第一网络设备可以直接发送序列号为100的报文包含的数据报文,并将n更新为101。

此时,第一网络设备判定当前已缓存有序列号为n(此时n=101)的数据报文,第一网络设备可以发送序列号为101的数据报文,并将n更新为102。同理,第一网络设备判定当前已缓存有序列号为n(此时n=102)的数据报文,第一网络设备可以发送序列号为102的数据报文,并将n更新为103。由于第一网络设备当前未缓存有序列号为103的数据报文,此时,第一网络设备可以继续接收报文,判断其携带的序列号是否为103。

另外,当第一序列号不满足s202中的情况时,第一网络设备可以采取不同方式对接收到的报文进行处理,具体的,可以包括以下情况。

情况一,当第一序列号大于期望序列号与预设缓存数目的和值时,将数据报文和缓存的报文按照序列号的大小顺序发送,并将第一序列号与预设增长值的和值更新为期望序列号。

在申请实施例中,在第一网络设备提取到第一序列号后,如果第一网络设备判定第一序列号大于期望序列号与预设缓存数目的和值,表明第一网络设备与第二网络设备之间的链路丢失报文的情况比较严重,如果第一网络设备继续缓存具有期望序列号和第一序列号之间的所有序列号的数据报文,则会超出第一网络设备缓存报文的限制,此时,第一网络设备将该数据报文和缓存的报文按照序列号的大小顺序发送,并将第一序列号与预设增长值的和值更新为期望序列号,以保证报文接收端能够及时接收到未丢失的数据报文。

一种实现方式中,用n表示期望序列号,m表示预设缓存数目,预设增长值为1。当前n=100,m=5,第一网络设备已缓存序列号为101、102、104和105的数据报文。

如果第一网络设备再次接收到的报文的序列号为107,由于107>n+m,第一网络设备可以确定当前无需缓存报文。第一网络设备可以按照序列号的大小顺序,对已缓存的报文(包括序列号为101、102、104和105的数据报文)以及当前接收到的数据报文(即序列号为107的数据报文)进行转发处理。

第一网络设备可以依次转发序列号为101、102、104、105、107的数据报文,然后,第一网络设备可以将n更新为108。

情况二,当第一序列号小于情况一更新后的期望序列号,且不小于情况一更新后的期望序列号与预设缓存数目的差值时,发送数据报文。

在申请实施例中,由于上述情况一中,当第一网络设备接收到的报文的序列号大于期望序列号与预设缓存数目的和值时,第一网络设备会将期望序列号的数值直接更新为接收到的报文的序列号与预设增长值的和值,然而,此时对于具有小于更新后的期望序列号,且大于或者等于更新后的期望序列号与预设缓存数目的差值的报文,第一网络设备当前可能并未接收到。

因此,在情况一中的更新期望序列号后,可能会出现第一网络设备再次接收到的报文的序列号小于期望序列号(经过情况一已发生更新的期望序列号),且大于或者等于期望序列号与预设缓存数目的差值的情况。

由于在情况一中第一网络设备已将该再次接收到的报文前后的报文包含的数据报文发送出去,因此,第一网络设备可以直接发送该再次接收到的报文包含的数据报文。

一种实现方式中,预设增长值为1,针对上述情况一中的示例,在第一网络设备将n更新为108后,第一网络设备可能会接收到序列号为106的报文,此时,第一序列号(即106)小于期望序列号(即108),且大于或者等于期望序列号与预设缓存数目的差值(即103),由于第一网络设备已将序列号为106的报文前后的报文包含的数据报文(包括序列号为105、107的数据报文)均发送出去,此时,第一网络设备可以直接发送序列号为106的报文包含的数据报文。

情况三,当第一序列号小于期望序列号与预设缓存数目的差值时,将数据报文和缓存的报文按照序列号的大小顺序发送,并将第一序列号与预设增长值的和值更新为期望序列号。

在申请实施例中,在第一网络设备提取到第一序列号后,如果第一网络设备判定第一序列号小于期望序列号与预设缓存数目的差值,表明第二网络设备为报文添加的序列号已重新从初始数值开始计算。为了避免网络业务出错,第一网络设备可以将该数据报文和缓存的报文按照序列号的大小顺序发送,并将第一序列号与预设增长值的和值更新为期望序列号。

可以理解的是,由于序列号的位数限制,报文中携带的序列号具有最大数值。例如,预设增长值为1,第二网络设备为报文添加的gre头中的序列号的最大数值可以为232-1=4294967295。在第二网络设备为某一报文添加4294967595的序列号后,第二网络设备为后续接收到的报文添加的序列号可以重新从1开始计算。因此,可能会导致第一网络设备提取到的第一序列号,小于期望序列号与预设缓存数目的差值的情况。

一种实现方式中,用n表示期望序列号,m表示预设缓存数目,预设增长值为1。如果当前n=4294967292,m=5,第一网络设备已缓存序列号为4294967293、4294967294和4294967295的数据报文。

如果第一网络设备再次接收到的报文的序列号为2,由于2<n-m,第一网络设备可以确定第二网络设备为报文添加的序列号已重新从1开始计算。第一网络设备可以按照序列号的大小顺序,对已缓存的报文(包括序列号为4294967293、4294967294和4294967295的数据报文)以及当前接收到的数据报文(即序列号为2的数据报文)进行转发处理。

然后第一网络设备按照第二网络设备发送报文的顺序,转发缓存的报文。在这里,第一网络设备发送报文的顺序从序列号角度来说,则是先按照序列号由小到大的顺序发送大于期望序列号的数据报文,再按照序列号由小到大的顺序发送小于期望序列号的数据报文。以上述示例为例,第一网络设备可以依次转发序列号为4294967293、4294967294、4294967295、2的数据报文,然后,第一网络设备可以将n更新为3。

另外,在实际的网络环境中,第一网络设备与第二网络设备之间的链路可能会发生报文丢失的情况,因此,第一网络设备可以定时对已缓存的数据报文进行转发,以尽可能地保证报文接收端能够及时获取到未丢失的数据报文。

可选的,上述方法还可以包括以下步骤:

步骤一,当计时时长达到预设时长时,将缓存的报文按照序列号的大小顺序发送。

其中,预设时长可以由技术人员根据经验进行设置。

一种实现方式中,预设时长可以根据第一网络设备与第二网络设备之间的链路的延时时长确定。例如,预设时长可以为第一网络设备与第二网络设备之间的链路的最大延时时长与预设系数的乘积(可以称为备选时长)。预设系数可以由技术人员根据经验进行设置,例如,预设系数可以为2,也可以为3,但并不限于此。

或者,在确定备选时长后,第一网络设备还可以根据备选时长和候选时长,确定预设时长。候选时长可以由技术人员根据经验进行设置,例如,候选时长可以为100ms。为了避免预设时长的数值过大,第一网络设备可以将备选时长和候选时长中数值较小的时长,作为预设时长。

在申请实施例中,第一网络设备可以在当前未缓存数据报文,但需要缓存数据报文时(即在第一序列号不小于本地记录的期望序列号且不大于期望序列号与预设缓存数目的和值的情况下),开始计时,以对缓存数据报文的时间进行计时。

一种实现方式中,如果第一网络设备当前未缓存数据报文,第一网络设备接收到的第一报文中的第一序列号大于期望序列号,且不大于期望序列号与预设缓存数目的和值,则第一网络设备可以缓存第一报文中包含的数据报文,并启动计时器。

例如,第一网络设备可以在组网初始化完成,需要缓存第一个数据报文时,开始计时。另外,在组网运行过程中,当第一网络设备将已缓存的数据报文全部发送出去,且再次需要缓存数据报文时,第一网络设备可以开始计时。

在第一网络设备开始计时后,当计时时长达到预设时长时,第一网络设备可以将缓存的数据报文按照序列号的大小顺序发送,另外,第一网络设备还可以重新开始计时。

一种实现方式中,用n表示期望序列号,m表示预设缓存数目,预设增长值为1。当前n=100,m=5,第一网络设备依次缓存序列号为101、102、104和105的数据报文,即,第一网络设备可以在缓存序列号为101的数据报文时,开始计时。

当计时时长达到预设时长时,如果第一网络设备仍未接收到序列号为100的报文,此时,第一网络设备仍缓存有序列号为101、102、104和105的数据报文。第一网络设备可以依次发送序列号为101、102、104和105的数据报文,然后,第一网络设备可以重新开始计时。

步骤二,将记录的序列号中最大的序列号与预设增长值的和值更新为期望序列号。

在申请实施例中,在第一网络设备将缓存的数据报文按照序列号的大小顺序发送后,第一网络设备还可以确定记录的数据报文的最大序列号,并将获取的最大序列号与预设增长值的和值更新为期望序列号。

一种实现方式中,针对上述步骤一中的示例,在第一网络设备依次发送序列号为101、102、104和105的数据报文后,第一网络设备可以将期望序列号的数值更新为106。

参见图3,图3为本申请实施例提供的一种报文处理方法的流程图,该方法可以应用于第二网络设备,第二网络设备可以是图1中的第二负载均衡设备102,也可以是其他类型的设备,本申请实施例并不作特别限定,第二网络设备能够实现本申请实施例提供的方法即可。该方法可以包括以下步骤。

s301:接收数据报文,并为数据报文封装携带有第一序列号的报文头,生成第一报文。

其中,第一序列号为根据第二网络设备获取该数据报文的顺序确定。

在申请实施例中,第二网络设备可以获取该数据报文,然后,第二网络设备可以根据获取该数据报文的顺序,确定该数据报文的序列号(即第一序列号),并为该数据报文封装携带有第一序列号的报文头,得到第一报文。

一种实现方式中,第一网络设备与第二网络设备之间可以建立gre隧道。在第二网络设备发送该数据报文时,第二网络设备可以对该数据报文进行封装,即,第二网络设备为该数据报文添加gre头,gre头中的序列号即为确定出的第一序列号,然后,第二网络设备可以为已添加gre头的数据报文添加ip头,得到封装后的报文(即第一报文)。

可以理解的是,由于序列号的位数限制,第二网络设备为报文添加的序列号具有最大数值。例如,gre头中序列号的最大数值可以为232-1=4294967295,因此,在第二网络设备为某一报文添加4294967595的序列号后,第二网络设备为后续接收到的报文添加的序列号可以重新从1开始计算。

s302:向第一网络设备发送第一报文,以使第一网络设备在第一序列号不小于第一网络设备本地记录的期望序列号且不大于期望序列号与预设缓存数目的和值的情况下,若第一网络设备未接收到携带期望序列号和第一序列号之间的所有序列号的报文,缓存数据报文,记录数据报文的序列号为第一序列号,并在接收到携带期望序列号和第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

其中,期望序列号可以用于表示第一网络设备当前期望接收到的报文的序列号。预设缓存数目表示第一网络设备能够缓存的报文的个数,具体实施时可以由技术人员根据经验进行设置。例如,预设缓存数目可以根据第一网络设备的内存空间大小确定。

在申请实施例中,在第二网络设备得到第一报文后,第二网络设备可以向第一网络设备发送第一报文,相应的,第一网络设备可以接收并解析第一报文,获得第一报文包括的第一序列号和数据报文。

然后,在第一序列号不小于第一网络设备本地记录的期望序列号且不大于期望序列号与预设缓存数目的和值的情况下,若第一网络设备未接收到携带期望序列号和第一序列号之间的所有序列号的报文,第一网络设备可以缓存数据报文,记录该数据报文的序列号为第一序列号,并在接收到携带期望序列号和第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。第一网络设备的处理方法可以参考上述实施例的详细介绍,此处不再赘述。

可选的,如果第二网络设备与第一网络设备之间存在多条链路,为了保证第一网络设备与第二网络设备之间链路的负载均衡,s302可以包括以下步骤。

步骤1,从多条链路中确定剩余带宽最大的目标链路。

在申请实施例中,第二网络设备可以从与第一网络设备之间的多条链路中,确定出剩余带宽最大的链路,作为目标链路,用于发送第一报文。

一种实现方式中,第二网络设备可以基于nqa(networkqualityanalyzer,网络质量分析)技术,对多条链路的链路状态进行探测,确定当前可用的多条链路中链路状态为up(打开)的链路。针对确定出的每一链路,第二网络设备可以获取该链路的已用带宽,计算该链路的总带宽与已用带宽的差值,作为该链路的剩余带宽。进而,第二网络设备可以在与第一网络设备之间的多条链路中选择剩余带宽最大的链路作为目标链路。

步骤2,通过目标链路,向第一网络设备发送第一报文。

在申请实施例中,在第二网络设备确定出目标链路后,第二网络设备可以通过目标链路,向第一网络设备发送第一报文。

由于目标链路的剩余带宽最大,因此,第二网络设备通过目标链路发送第一报文,能够保证各链路的负载均衡。

参见图4,图4为本申请实施例提供的一种报文处理方法示例的流程图,该方法可以应用于第一网络设备和第二网络设备,第一网络设备与第二网络设备之间存在多条链路,第一网络设备和第二网络设备可以均为负载均衡设备,该方法可以包括以下步骤。

s401:第二网络设备接收数据报文,为该数据报文封装携带有第一序列号的报文头,生成第一报文。

其中,第一序列号为根据第二网络设备获取该数据报文的顺序确定。

s402:第二网络设备从与第一网络设备之间的多条链路中,选择剩余带宽最大的目标链路。

s403:第二网络设备通过目标链路,向第一网络设备发送第一报文。

s404:第一网络设备接收并解析第一报文。

s405(a):当第一网络设备判定第一报文携带的第一序列号等于期望序列号时,第一网络设备发送第一报文包含的数据报文,并更新期望序列号,如果当前已缓存具有更新后的期望序列号的数据报文,第一网络设备转发具有更新后的期望序列号的数据报文,并更新期望序列号。

s405(b):当第一网络设备判定第一报文携带的第一序列号大于期望序列号、且不大于期望序列号与预设缓存数目的和值时,第一网络设备缓存第一报文包含的数据报文,并记录该数据报文的序列号为第一序列号。

s405(c):当第一网络设备判定第一报文携带的第一序列号大于期望序列号与预设缓存数目的和值时,第一网络设备将第一报文包含的数据报文和已缓存的数据报文,按照序列号的大小顺序发送,并更新期望序列号。

s405(d):当第一网络设备判定第一报文携带的第一序列号小于s405(c)更新后的期望序列号、且不小于s405(c)更新后的期望序列号与预设缓存数目的差值时,第一网络设备发送第一报文包含的数据报文。

s405(e):当第一网络设备判定第一报文携带的第一序列号小于期望序列号与预设缓存数目的差值时,第一网络设备将第一报文包含的数据报文和已缓存的数据报文,按照序列号的大小顺序发送,并更新期望序列号。

与图2的方法实施例相对应,参见图5,图5为本申请实施例提供的一种报文处理装置的结构图,该装置应用于第一网络设备,该装置可以包括:

接收模块501,用于接收并解析第二网络设备发送的第一报文,获得所述第一报文包括的第一序列号和数据报文,其中,所述第一序列号为根据所述第二网络设备接收所述数据报文的顺序确定;

判断模块502,用于当所述第一序列号不小于本地记录的期望序列号且不大于所述期望序列号与预设缓存数目的和值时,判断是否接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文;

第一处理模块503,用于若未接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文,则缓存所述数据报文,记录所述数据报文的序列号为所述第一序列号,并在接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

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

第二处理模块,用于当所述第一序列号大于所述期望序列号与所述预设缓存数目的和值时,将所述数据报文和缓存的报文按照序列号的大小顺序发送,并将所述第一序列号与预设增长值的和值更新为所述期望序列号。

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

发送模块,用于当所述第一序列号小于更新后的期望序列号,且不小于所述更新后的期望序列号与所述预设缓存数目的差值时,发送所述数据报文。

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

第三处理模块,用于当所述第一序列号小于所述期望序列号与所述预设缓存数目的差值时,将所述数据报文和缓存的报文按照序列号的大小顺序发送,并将所述第一序列号与预设增长值的和值更新为所述期望序列号。

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

第四处理模块,用于当计时时长达到预设时长时,将缓存的报文按照序列号的大小顺序发送;

将记录的序列号中最大的序列号与预设增长值的和值更新为所述期望序列号。

与图3的方法实施例相对应,参见图6,图6为本申请实施例提供的一种报文处理装置的结构图,该装置应用于第二网络设备,该装置可以包括:

生成模块601,用于接收数据报文,并为所述数据报文封装携带有第一序列号的报文头,生成第一报文,其中,所述第一序列号为根据所述第二网络设备获取所述数据报文的顺序确定;

发送模块602,用于向第一网络设备发送所述第一报文,以使所述第一网络设备在所述第一序列号不小于所述第一网络设备本地记录的期望序列号且不大于所述期望序列号与预设缓存数目的和值的情况下,若所述第一网络设备未接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文,缓存所述数据报文,记录所述数据报文的序列号为所述第一序列号,并在接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

可选的,所述第二网络设备与所述第一网络设备之间存在多条链路;

所述发送模块602,具体用于从所述多条链路中确定剩余带宽最大的目标链路;

通过所述目标链路,向第一网络设备发送所述第一报文。

可见,基于本申请实施例提供的报文处理装置,第一网络设备可以接收并解析第二网络设备发送的第一报文,获得第一报文包括的第一序列号和数据报文,当第一序列号不小于第一网络设备本地记录的期望序列号且不大于期望序列号与预设缓存数目的和值时,若第一网络设备未接收到携带期望序列号和第一序列号之间的所有序列号的报文,第一网络设备可以缓存数据报文,记录该数据报文的序列号为第一序列号,并在接收到携带期望序列号和第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。基于上述处理,第一网络设备发送报文的顺序,与第二网络设备向第一网络设备发送报文的顺序一致,进而,能够在一定程度上避免网络业务出错。

本申请实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,

存储器703,用于存放计算机程序;

处理器701,用于执行存储器703上所存放的程序时,以使该电子设备执行报文处理方法的步骤,该方法包括:

接收并解析第二网络设备发送的第一报文,获得所述第一报文包括的第一序列号和数据报文,其中,所述第一序列号为根据所述第二网络设备接收所述数据报文的顺序确定;

当所述第一序列号不小于本地记录的期望序列号且不大于所述期望序列号与预设缓存数目的和值时,判断是否接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文;

若未接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文,则缓存所述数据报文,记录所述数据报文的序列号为所述第一序列号,并在接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

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

当所述第一序列号大于所述期望序列号与所述预设缓存数目的和值时,将所述数据报文和缓存的报文按照序列号的大小顺序发送,并将所述第一序列号与预设增长值的和值更新为所述期望序列号。

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

当所述第一序列号小于更新后的期望序列号,且不小于所述更新后的期望序列号与所述预设缓存数目的差值时,发送所述数据报文。

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

当所述第一序列号小于所述期望序列号与所述预设缓存数目的差值时,将所述数据报文和缓存的报文按照序列号的大小顺序发送,并将所述第一序列号与预设增长值的和值更新为所述期望序列号。

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

当计时时长达到预设时长时,将缓存的报文按照序列号的大小顺序发送;

将记录的序列号中最大的序列号与预设增长值的和值更新为所述期望序列号。

本申请实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,

存储器803,用于存放计算机程序;

处理器801,用于执行存储器803上所存放的程序时,以使该电子设备执行报文处理方法的步骤,该方法包括:

接收数据报文,并为所述数据报文封装携带有第一序列号的报文头,生成第一报文,其中,所述第一序列号为根据所述第二网络设备获取所述数据报文的顺序确定;

向第一网络设备发送所述第一报文,以使所述第一网络设备在所述第一序列号不小于所述第一网络设备本地记录的期望序列号且不大于所述期望序列号与预设缓存数目的和值的情况下,若所述第一网络设备未接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文,缓存所述数据报文,记录所述数据报文的序列号为所述第一序列号,并在接收到携带所述期望序列号和所述第一序列号之间的所有序列号的报文的情况下,将缓存的报文按照序列号的大小顺序发送。

可选的,所述第二网络设备与所述第一网络设备之间存在多条链路;

所述向第一网络设备发送所述第一报文,包括:

从所述多条链路中确定剩余带宽最大的目标链路;

通过所述目标链路,向第一网络设备发送所述第一报文。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一报文处理方法的步骤。

在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一报文处理方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

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