发明内容
本发明实施例提供一种基于IPsec的报文传输方法和设备,以充分利用FPGA的高速转发能力,并提高对报文的处理性能。
为了达到上述目的,本发明实施例提供一种基于IP安全IPsec的报文传输方法,该方法包括:
现场可编程阵列FPGA在获得需要加密或解密处理的IPsec报文后,利用所述报文中携带的转发信息查询IPsec流表,所述IPsec流表中记录有转发信息和安全联盟SA信息的对应关系;
如果所述IPsec流表中有所述转发信息对应的记录,则所述FPGA从所述IPsec流表中获得所述转发信息对应的SA信息;
所述FPGA将所述报文和所述SA信息发送给中央处理单元CPU,并由所述CPU利用所述SA信息对所述报文进行加密或解密处理;
所述FPGA接收来自所述CPU的加密或解密处理后的报文,并发送所述加密或解密处理后的报文。
所述FPGA接收来自所述CPU的加密或解密处理后的报文、以及该加密或解密处理后的报文所对应的SA信息,并利用所述SA信息对所述加密或解密处理后的报文进行IPsec处理,并发送IPsec处理后的报文;
所述FPGA利用所述报文中携带的转发信息查询IPsec流表,之后还包括:
如果所述IPsec流表中没有所述转发信息对应的记录,则所述FPGA将所述报文发送给所述CPU;由所述CPU在确定所述报文为IPsec报文时,获得所述报文对应的SA信息,并向所述FPGA下发IPsec流表,且所述IPsec流表中携带了所述报文的转发信息和获得的SA信息之间的对应关系;
所述FPGA接收所述CPU下发的IPsec流表。
所述CPU利用所述SA信息对所述报文进行加密或解密处理的过程之前进一步包括:
所述FPGA利用所述SA信息对所述报文进行IPsec处理,并将IPsec处理后的报文和所述SA信息发送给所述CPU;或者,
所述FPGA将所述报文和所述SA信息发送给所述CPU,由所述CPU利用所述SA信息对所述报文进行IPsec处理;或者,
所述FPGA利用所述SA信息对所述报文进行所有IPsec处理中的部分IPsec处理,并将部分IPsec处理后的报文和所述SA信息发送给CPU,由所述CPU利用所述SA信息对所述报文进行所有IPsec处理中的其它IPsec处理。
所述FPGA发送所述加密或解密处理后的报文,具体包括:
所述FPGA利用所述加密或解密处理后的报文中携带的转发信息查找IP流表,并根据查找结果发送所述加密或解密处理后的报文;
其中,所述IP流表中记录了所述报文的转发信息,并用于指导所述FPGA发送携带所述转发信息的报文。
所述FPGA利用所述报文中携带的转发信息查询IPsec流表的过程,进一步包括:如果所述IPsec流表中有所述转发信息与SA信息之间的对应关系,则所述FPGA利用所述转发信息对应的SA信息判断所述转发信息对应的记录是否有效;如果有效,则确定所述IPsec流表中有所述转发信息对应的记录;否则,确定所述IPsec流表中没有所述转发信息对应的记录;
如果所述IPsec流表中没有所述转发信息与SA信息之间的对应关系,则所述FPGA确定所述IPsec流表中没有所述转发信息对应的记录。
所述SA信息包括SA索引,且所述IPsec流表中还记录了SA索引对应的SA序列号,其中,所述FPGA获得并保存SA表项,且所述SA表项用于记录SA索引与SA序列号之间的对应关系;其中,当有SA被删除或者老化时,所述SA表项中该SA所对应的SA序列号将被所述CPU修改;
所述FPGA利用所述转发信息对应的SA信息判断所述转发信息对应的记录是否有效的过程,具体包括:
所述FPGA从所述IPsec流表中获得所述转发信息对应的SA索引和SA序列号,并通过获得的SA索引查询SA表项;如果查询到的SA序列号与获得的SA序列号一致,则说明所述转发信息对应的记录有效;如果查询到的SA序列号与获得的SA序列号不一致,则说明所述转发信息对应的记录无效。
本发明实施例提供一种网络设备,所述网络设备包括现场可编程阵列FPGA和中央处理单元CPU,该FPGA包括:
查询模块,用于在获得需要加密或解密处理的IP安全IPsec报文后,利用所述报文中携带的转发信息查询IPsec流表,所述IPsec流表中记录有转发信息和安全联盟SA信息的对应关系;
获得模块,用于当所述IPsec流表中有所述转发信息对应的记录时,从所述IPsec流表中获得所述转发信息对应的SA信息;
传输模块,用于将所述报文和所述SA信息发送给CPU,由所述CPU利用所述SA信息对所述报文进行加密或解密处理;以及,接收来自所述CPU的加密或解密处理后的报文,并发送所述加密或解密处理后的报文。
所述传输模块,进一步用于接收来自所述CPU的加密或解密处理后的报文、以及该加密或解密处理后的报文所对应的SA信息,并利用所述SA信息对所述加密或解密处理后的报文进行IPsec处理,并发送IPsec处理后的报文;
所述传输模块,还用于当所述IPsec流表中没有所述转发信息对应的记录时,将所述报文发送给所述CPU;由所述CPU在确定所述报文为IPsec报文时,获得所述报文对应的SA信息,并向所述FPGA下发IPsec流表,且所述IPsec流表中携带了所述报文的转发信息和获得的SA信息之间的对应关系;
以及,接收所述CPU下发的IPsec流表。
所述传输模块,进一步用于利用所述SA信息对所述报文进行IPsec处理,并将IPsec处理后的报文和所述SA信息发送给所述CPU;或者,
将所述报文和所述SA信息发送给所述CPU,由所述CPU利用所述SA信息对所述报文进行IPsec处理;或者,
利用所述SA信息对所述报文进行所有IPsec处理中的部分IPsec处理,并将部分IPsec处理后的报文和所述SA信息发送给所述CPU,由所述CPU利用所述SA信息对所述报文进行所有IPsec处理中的其它IPsec处理。
所述传输模块,具体用于利用所述加密或解密处理后的报文中携带的转发信息查找IP流表,并根据查找结果发送所述加密或解密处理后的报文;
其中,所述IP流表中记录了所述报文的转发信息,并用于指导所述FPGA发送携带所述转发信息的报文。
所述查询模块,进一步用于当所述IPsec流表中有所述转发信息与SA信息之间的对应关系时,利用所述转发信息对应的SA信息判断所述转发信息对应的记录是否有效;如果有效,则确定所述IPsec流表中有所述转发信息对应的记录;如果无效,则确定所述IPsec流表中没有所述转发信息对应的记录;当所述IPsec流表中没有所述转发信息与SA信息之间的对应关系时,确定所述IPsec流表中没有所述转发信息对应的记录。
所述SA信息包括SA索引,且所述IPsec流表中还记录了SA索引对应的SA序列号,其中,所述FPGA获得并保存SA表项,且所述SA表项用于记录SA索引与SA序列号之间的对应关系;其中,当有SA被删除或者老化时,所述SA表项中该SA所对应的SA序列号将被所述CPU修改;
所述查询模块,具体用于从所述IPsec流表中获得所述转发信息对应的SA索引和SA序列号,并通过获得的SA索引查询SA表项;如果查询到的SA序列号与获得的SA序列号一致,则说明所述转发信息对应的记录有效;如果查询到的SA序列号与获得的SA序列号不一致,则说明所述转发信息对应的记录无效。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,结合CPU的高速运算能力以及FPGA的高速转发能力实现IPsec加密或解密处理,从而能够充分利用FPGA的高速转发能力,提高对报文的处理性能,并提高了IPsec的处理性能,降低了FPGA实现IPsec的复杂度。
具体实施方式
本发明实施例提供一种基于IPsec的报文传输方法,用于在采用FPGA作为核心完成报文转发的网络设备(如路由器、防火墙)中,对IPsec报文进行加密处理或解密处理,以及传输加密处理或解密处理后的IPsec报文;其中,解密处理主要包括AH解封装和ESP解封装等;加密处理主要包括AH加封装和ESP加封装等;如图3所示,该方法可以包括以下步骤:
步骤301,FPGA在获得需要处理的报文(在加密处理过程中,为获得需要发送的报文;在解密处理过程中,为获得接收到的报文)后,利用报文中携带的转发信息查询IPsec流表;如果IPsec流表中没有转发信息对应的记录,则执行步骤302;如果IPsec流表中有转发信息对应的记录,则执行步骤304。
本发明实施例中,对于需要加密或解密处理的IPsec报文,如果该报文是首包,则IPsec流表中将没有该报文中携带的转发信息所对应的记录;如果该报文不是首包,则IPsec流表中将有该报文中携带的转发信息所对应的记录。
步骤302,FPGA将报文发送给CPU。
步骤303,当CPU确定报文为IPsec报文时,获得报文对应的SA(SecurityAssociation,安全联盟)信息(即SA索引,每个SA索引唯一对应一SA,且SA可用于指示进行IPsec处理的方式、加密处理的方式和解密处理的方式等),并向FPGA下发IPsec流表,由FPGA接收并保存该IPsec流表。其中,该IPsec流表中至少携带了该报文的转发信息以及获得的SA信息之间的对应关系。
本发明实施例中,在接收到来自FPGA的报文之后,CPU可以根据当前配置以及报文特征判断出报文为IPsec报文,且该IPsec报文需要进行加密或解密处理;因此,CPU还需要利用该报文对应的SA对该报文进行IPsec处理,并利用该报文对应的SA对IPsec处理后的报文进行加密或解密处理。
之后,CPU可以利用加密或解密处理后的报文中携带的转发信息查找IP流表,并根据查找结果发送加密或解密处理后的报文;在发送加密或解密处理后的报文时,CPU是通过FPGA将加密或解密处理后的报文发送出去的。
本发明实施例中,CPU在利用加密或解密处理后的报文中携带的转发信息查找IP流表之后,还需要下发IP流表给FPGA,由FPGA保存该IP流表;该下发的IP流表中记录了报文的转发信息,并用于指导FPGA发送携带该转发信息的报文;对于该IP流表中携带的其它信息(如出端口信息,用于指导FPGA通过该出端口发送携带该转发信息的报文),在此不再详加赘述。
本发明实施例中,CPU利用该报文对应的SA对报文进行IPsec处理包括但不限于以下之一或任意组合:DPD(DeadPeerDetection,对等体存活检测)功能、防重放检查和更新、统计和超时、加封装或去封装等操作。
步骤304,FPGA确定获得的报文为IPsec报文,并从IPsec流表中获得该报文的转发信息对应的SA信息。
本发明实施例中,由于IPsec流表中记录有转发信息和SA信息的对应关系,因此如果IPsec流表中有转发信息对应的记录,则说明IPsec流表中有转发信息对应的SA信息,即可以获得该报文的转发信息对应的SA信息。
步骤305,FPGA将报文和SA信息(即报文的转发信息对应的SA信息)发送给CPU,由CPU利用该SA信息对报文进行加密或解密处理(即CPU利用该SA信息确定对应的SA,并利用该SA对报文进行加密或解密处理)。
本发明实施例中,CPU利用SA信息对报文进行加密或解密处理的过程之前进一步包括:
方式一、FPGA利用SA信息(即SA信息对应的SA)对报文进行IPsec处理,并将IPsec处理后的报文和SA信息发送给CPU。
方式二、FPGA将报文和SA信息发送给CPU,由CPU利用SA信息(即SA信息对应的SA)对报文进行IPsec处理。
方式三、FPGA利用SA信息(即SA信息对应的SA)对报文进行所有IPsec处理中的部分IPsec处理,并将部分IPsec处理后的报文和SA信息发送给CPU,由CPU利用SA信息(即SA信息对应的SA)对报文进行所有IPsec处理中的其它IPsec处理。
本发明实施例的上述方式一、方式二和方式三中,利用SA信息(即SA信息对应的SA)对报文进行IPsec处理包括但不限于以下之一或任意组合:DPD功能、防重放检查和更新、统计和超时、加封装或去封装等操作;在具体实现中,可以由FPGA对报文进行IPsec处理,也可以由CPU对报文进行IPsec处理,还可以由FPGA和CPU同时对报文进行IPsec处理(即分别处理部分操作);例如,当FPGA有充足的资源对报文进行IPsec处理时,则由FPGA对报文进行IPsec处理,否则由CPU对报文进行IPsec处理。
例如,IPsec处理包括IPsec处理1、IPsec处理2和IPsec处理3;在具体实现时,针对上述方式一,可以由FPGA对报文进行IPsec处理1、IPsec处理2和IPsec处理3,并将经过IPsec处理1、IPsec处理2和IPsec处理3的报文发送给CPU;或者,针对上述方式二、FPGA将报文发送给CPU,由CPU对报文进行IPsec处理1、IPsec处理2和IPsec处理3;或者,针对上述方式三,FPGA对报文进行IPsec处理1,并将经过IPsec处理1的报文发送给CPU,由CPU对报文进行IPsec处理2和IPsec处理3。
本发明实施例中,CPU利用SA信息对IPsec处理后的报文进行加密或解密处理的过程中,可以在CPU中配置加密引擎,该加密引擎用于执行加密或解密处理;基于该加密引擎,CPU可以将IPsec处理后的报文按照加密引擎的要求进行组织,并发送给加密引擎;之后,由加密引擎利用SA信息对IPsec处理后的报文进行加密或解密处理,具体的处理算法在此不再赘述。
步骤306,CPU将加密或解密处理后的报文发送给FPGA,由FPGA接收CPU发送的加密或解密处理后的报文,并发送加密或解密处理后的报文。
本发明实施例中,CPU在向FPGA发送加密或解密处理后的报文时,还可以将该加密或解密处理后的报文所对应的SA信息发送给FPGA,由FPGA利用该SA信息(即SA信息对应的SA)对加密或解密处理后的报文进行IPsec处理(如防重放状态更新等),并发送IPsec处理后的报文。
本发明实施例中,FPGA发送加密或解密处理后的报文具体包括:FPGA利用加密或解密处理后的报文中携带的转发信息查找IP流表,并根据查找结果发送加密或解密处理后的报文。其中,该IP流表中记录了报文的转发信息,并用于指导FPGA发送携带该转发信息的报文。
进一步的,FPGA利用SA信息对加密或解密处理后的报文进行IPsec处理(如防重放状态更新等)之后,可以利用IPsec处理后的报文中携带的转发信息查找IP流表,并根据IP流表的查找结果发送IPsec处理后的报文。
本发明实施例中,在利用报文中携带的转发信息查询IPsec流表时,如果IPsec流表中有转发信息与SA信息之间的对应关系,则FPGA还需要利用该转发信息对应的SA信息判断转发信息对应的记录是否有效;如果有效,则说明IPsec流表中有转发信息对应的记录;如果无效,则说明IPsec流表中没有转发信息对应的记录;如果IPsec流表中没有转发信息与SA信息之间的对应关系,则说明该IPsec流表中没有该转发信息对应的记录。
进一步的,上述SA信息包括SA索引,且IPsec流表中还记录了SA索引对应的SA序列号;基于此,FPGA利用转发信息对应的SA信息判断转发信息对应的记录是否有效的一种优选实施方式具体包括以下步骤:
步骤A、FPGA获得并保存SA表项,且该SA表项用于记录SA索引与SA序列号之间的对应关系;此外,该SA表项中还可以记录其它的SA信息,如SA状态信息等,在此不再详加赘述。具体的,通过在接口上配置IPsec策略(如配置静态SA或协议触发学习到动态SA后,将SA索引和SA序列号下发到FPGA),使得FPGA能获得并保存SA表项。
本发明实施例中,当有SA被删除或者老化时,CPU还需要修改FPGA的SA表项中该SA对应的SA序列号;例如,当SA1被删除时,CPU需要将SA表项中SA1对应的SA序列号由100修改为200,SA1的SA索引为1。
步骤B、FPGA从IPsec流表中获得转发信息所对应的SA索引和SA序列号,并通过获得的SA索引查询SA表项,如果查询到的SA序列号与获得的SA序列号一致,则说明转发信息对应的记录有效;如果查询到的SA序列号与获得的SA序列号不一致,则说明转发信息对应的记录无效。
具体的,由于IPsec流表中包括SA索引和SA序列号,因此,FPGA在利用报文中携带的转发信息查找IPsec流表时,可以获得转发信息对应的SA索引(如SA索引为1)和SA序列号(如SA序列号为100),并根据该SA索引(SA索引为1)查询SA表项;假设SA1没有被删除,则SA表项中SA索引为1对应的SA序列号为100,IPsec流表中的SA序列号与SA表项中的SA序列号一致,此时说明转发信息对应的记录有效;假设SA1被删除,则SA表项中SA索引为1对应的SA序列号为200,IPsec流表中的SA序列号与SA表项中的SA序列号不一致,此时说明转发信息对应的记录无效。
以下对加密处理过程和解密处理过程分别进行详细说明。
如图4所示,为发明实施例提供的一种IPsec解密处理的示意图。
FPGA在接收到报文后,利用报文中携带的转发信息查找IPsec流表。
如果IPsec流表中没有转发信息对应的记录,则说明该报文是首包,FPGA将该报文发送给CPU,CPU根据当前配置和报文特征判断出报文需要进行IPsec解密,并对报文进行IPsec处理(如DPD功能、防重放检查和更新、统计和超时、去封装等操作),对IPsec处理后的报文进行解密处理,以及下发IPsec流表给FPGA,由FPGA保存该IPsec流表;进一步的,CPU对解密后的报文进行普通IP转发,下发IP流表到FPGA,并最终通过FPGA发送出去。
如果IPsec流表中有转发信息对应的记录,则FPGA确定收到的报文为IPsec报文,并从IPsec流表中获得该报文的转发信息对应的SA信息;之后,FPGA对报文进行IPsec处理,并将IPsec处理后的报文和SA信息发送给CPU(或者将报文和SA信息发送给CPU,由CPU对报文进行IPsec处理;或者对报文进行IPsec处理中的部分处理,将部分IPsec处理后的报文和SA信息发送给CPU,由CPU对报文进行其它IPsec处理;对报文进行IPsec处理包括DPD功能、防重放检查和更新、统计和超时、去封装等操作,在具体实现中,可以由FPGA对报文进行IPsec处理,也可以由CPU对报文进行IPsec处理,还可以由FPGA和CPU同时对报文进行IPsec处理)。
进一步的,CPU将接收到的报文按照加密引擎(该加密引擎主要负责解密运算)的要求进行组织,并发送给加密引擎,由加密引擎利用SA信息完成解密处理;之后,CPU将解密后的报文进行处理,并按照FPGA的要求发送到FPGA;FPGA接收到IPsec解密后的报文,对报文进行IPsec业务处理(如:防重放状态更新等),并根据原始报文以及IP流表进行普通IP转发。
如图5所示,为发明实施例提供的一种IPsec加密处理的示意图。
FPGA在进行报文发送时,利用报文中携带的转发信息查找IPsec流表。
如果IPsec流表中没有转发信息对应的记录,则说明该报文是首包,FPGA将该报文发送给CPU,CPU根据当前配置和报文特征判断出报文需要进行IPsec加密,并对报文进行IPsec处理(如DPD功能、防重放检查和更新、统计和超时、加封装等操作),对IPsec处理后的报文进行加密处理,以及下发IPsec流表给FPGA,由FPGA保存该IPsec流表;进一步的,CPU对加密后的报文进行普通IP转发,下发IP流表到FPGA,并最终通过FPGA发送出去。
如果IPsec流表中有转发信息对应的记录,则FPGA确定收到的报文为IPsec报文,并从IPsec流表中获得该报文的转发信息对应的SA信息;之后,FPGA对报文进行IPsec处理,并将IPsec处理后的报文和SA信息发送给CPU(或者将报文和SA信息发送给CPU,由CPU对报文进行IPsec处理;或者对报文进行IPsec处理中的部分处理,将部分IPsec处理后的报文和SA信息发送给CPU,由CPU对报文进行其它IPsec处理;对报文进行IPsec处理包括DPD功能、防重放检查和更新、统计和超时、加封装等操作,在具体实现中,可以由FPGA对报文进行IPsec处理,也可以由CPU对报文进行IPsec处理,还可以由FPGA和CPU同时对报文进行IPsec处理)。
进一步的,CPU将接收到的报文按照加密引擎(该加密引擎主要负责加密运算)的要求进行组织,并发送给加密引擎,由加密引擎利用SA信息完成加密处理;之后,CPU将加密后的报文进行处理,并按照FPGA的要求发送到FPGA;FPGA接收到IPsec加密后的报文,对报文进行IPsec业务处理(如:防重放状态更新等),并根据原始报文以及IP流表进行普通IP转发。
综上所述,本发明实施例中,在基于FPGA流表的转发模型下,可以结合CPU加密引擎的高速运算能力和FPGA的高速转发能力实现IPsec,大幅提高了IPsec的处理性能,和软件处理相比性能提升达2倍以上,并极大地降低了FPGA实现IPsec的复杂度,将IPsec处理流程与普通软件转发的流程分离,极大降低了IPsec业务处理对普通软件转发性能的影响。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种网络设备,所述网络设备包括现场可编程阵列FPGA和中央处理单元CPU,如图6所示,该FPGA包括:
查询模块11,用于在获得需要加密或解密处理的IP安全IPsec报文后,利用所述报文中携带的转发信息查询IPsec流表,所述IPsec流表中记录有转发信息和安全联盟SA信息的对应关系;
获得模块12,用于当所述IPsec流表中有所述转发信息对应的记录时,从所述IPsec流表中获得所述转发信息对应的SA信息;
传输模块13,用于将所述报文和所述SA信息发送给CPU,由所述CPU利用所述SA信息对所述报文进行加密或解密处理;以及,接收来自所述CPU的加密或解密处理后的报文,并发送所述加密或解密处理后的报文。
所述传输模块13,还用于当所述IPsec流表中没有所述转发信息对应的记录时,将所述报文发送给所述CPU;由所述CPU在确定所述报文为IPsec报文时,获得所述报文对应的SA信息,并向所述FPGA下发IPsec流表,且所述IPsec流表中携带了所述报文的转发信息和获得的SA信息之间的对应关系;以及,接收所述CPU下发的IPsec流表。
所述传输模块13,进一步用于利用所述SA信息对所述报文进行IPsec处理,并将IPsec处理后的报文和所述SA信息发送给所述CPU;或者,
将所述报文和所述SA信息发送给所述CPU,由所述CPU利用所述SA信息对所述报文进行IPsec处理;或者,
利用所述SA信息对所述报文进行所有IPsec处理中的部分IPsec处理,并将部分IPsec处理后的报文和所述SA信息发送给所述CPU,由所述CPU利用所述SA信息对所述报文进行所有IPsec处理中的其它IPsec处理。
所述传输模块13,进一步用于接收来自所述CPU的加密或解密处理后的报文、以及该加密或解密处理后的报文所对应的SA信息,并利用SA信息对所述加密或解密处理后的报文进行IPsec处理,并发送IPsec处理后的报文。
所述传输模块13,具体用于利用所述加密或解密处理后的报文中携带的转发信息查找IP流表,并根据查找结果发送所述加密或解密处理后的报文;
其中,所述IP流表中记录了所述报文的转发信息,并用于指导所述FPGA发送携带所述转发信息的报文。
所述查询模块11,进一步用于当所述IPsec流表中有所述转发信息与SA信息之间的对应关系时,利用所述转发信息对应的SA信息判断所述转发信息对应的记录是否有效;如果有效,则确定所述IPsec流表中有所述转发信息对应的记录;如果无效,则确定所述IPsec流表中没有所述转发信息对应的记录;当所述IPsec流表中没有所述转发信息与SA信息之间的对应关系时,确定所述IPsec流表中没有所述转发信息对应的记录。
所述SA信息包括SA索引,且所述IPsec流表中还记录了SA索引对应的SA序列号,其中,所述FPGA获得并保存SA表项,且所述SA表项用于记录SA索引与SA序列号之间的对应关系;其中,当有SA被删除或者老化时,所述SA表项中该SA所对应的SA序列号将被所述CPU修改;
所述查询模块11,具体用于从所述IPsec流表中获得所述转发信息对应的SA索引和SA序列号,并通过获得的SA索引查询SA表项;如果查询到的SA序列号与获得的SA序列号一致,则说明所述转发信息对应的记录有效;如果查询到的SA序列号与获得的SA序列号不一致,则说明所述转发信息对应的记录无效。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。