CN102970228B - 一种基于IPsec的报文传输方法和设备 - Google Patents

一种基于IPsec的报文传输方法和设备 Download PDF

Info

Publication number
CN102970228B
CN102970228B CN201210478002.2A CN201210478002A CN102970228B CN 102970228 B CN102970228 B CN 102970228B CN 201210478002 A CN201210478002 A CN 201210478002A CN 102970228 B CN102970228 B CN 102970228B
Authority
CN
China
Prior art keywords
ipsec
message
information
flow table
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210478002.2A
Other languages
English (en)
Other versions
CN102970228A (zh
Inventor
李佳
韩迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Semiconductor Technology Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201210478002.2A priority Critical patent/CN102970228B/zh
Publication of CN102970228A publication Critical patent/CN102970228A/zh
Application granted granted Critical
Publication of CN102970228B publication Critical patent/CN102970228B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于IPsec的报文传输方法和设备,该方法包括:FPGA在获得报文后,利用所述报文中携带的转发信息查询IPsec流表;如果所述IPsec流表中有所述转发信息对应的记录,则所述FPGA从所述IPsec流表中获得所述转发信息对应的SA信息;所述FPGA将所述报文和所述SA信息发送给CPU,由所述CPU利用所述SA信息对所述报文进行加密或解密处理;所述FPGA接收来自所述CPU的加密或解密处理后的报文,并发送所述加密或解密处理后的报文。本发明实施例中,提高了IPsec的处理性能。

Description

一种基于IPsec的报文传输方法和设备
技术领域
本发明涉及通信技术领域,尤其涉及一种基于IPsec(IPsecurity,IP安全)的报文传输方法和设备。
背景技术
IPsec是三层隧道加密协议,用于在IP层提供以下安全服务:(1)数据机密性:发送方在通过网络传输报文之前对报文进行加密;(2)数据完整性:接收方对接收的报文进行认证,以确保报文在传输过程中没有被篡改;(3)数据来源认证:接收方可以认证发送IPsec报文的发送方是否合法;(4)防重放:接收方可以检测并拒绝接收过时或者重复的报文。
为了实现上述安全服务,IPsec提供了认证和加密等两种安全机制;认证机制使IP通信的接收方能够确认报文发送方的真实身份以及报文在传输过程中是否遭篡改;加密机制通过对报文进行加密运算来保证报文的机密性,防止报文在传输过程中被窃听。其中,IPsec协议中的AH(AuthenticationHeader,验证头)协议定义了认证的应用方法,ESP(EncapsulatingSecurityPayload,封装安全载荷)协议定义了加密和可选认证的应用方法;在实际进行IP通信时,可以根据实际安全需求同时使用AH和ESP,或者选择使用其中一种。
在采用FPGA(FieldProgrammableGateArray,现场可编程阵列)作为核心完成报文转发的网络设备(如路由器、防火墙)中,需要将由CPU(CentralProcessingUnit,中央处理单元)软件实现的报文转发、业务处理等移到FPGA上实现高速转发。其中,FPGA能够快速处理报文,但是FPGA难以支撑复杂业务,如果在FPGA上实现IPsec算法,则复杂度极高,需要占用大量FPGA资源,因此现有技术中不支持在FPGA中进行IPsec处理。
如图1所示,为IPsec解密处理的示意图,对于需要进行IPsec解密的流量,CPU不向FPGA下发入方向流表;FPGA在收到报文后,查找入方向流表失败,将报文上送CPU处理;CPU在接收到报文后,进行IP转发处理,即查找转发信息表,根据转发信息判断出需要进行解封装处理;之后CPU根据当前配置和报文特征,判断出报文需要进行IPsec解密,则对报文进行IPsec解密处理;在解密完成后,CPU根据原始报文进行普通IP转发,并最终通过FPGA发送出去。
如图2所示,为IPsec加密处理的示意图,对于需要进行IPsec加密的流量,CPU不向FPGA下发入方向流表;FPGA在收到报文后,查找入方向流表失败,将报文上送CPU处理;CPU在接收到报文后,进行IP发送处理,即查找转发信息表,根据转发信息判断需要进行加封装处理;之后CPU根据当前配置和报文特征,判断出报文需要进行IPsec加密,则对报文进行IPsec加密处理;在加密完成后,CPU根据封装后报文进行普通IP转发,并最终通过FPGA发送出去。
综上所述,对于需要进行IPsec加密或者IPsec解密处理的报文,相应的转发流程和IPsec业务处理流程都需要在CPU上进行处理,FPGA只作为接收和发送报文的物理通道,从而导致报文的处理受限于CPU的软件转发能力,不能利用FPGA高速转发的性能优势,对报文的处理性能较低。
发明内容
本发明实施例提供一种基于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的复杂度。
附图说明
图1是现有技术中IPsec解密处理的示意图;
图2是现有技术中IPsec加密处理的示意图;
图3是本发明实施例提供的一种基于IPsec的报文传输方法流程示意图;
图4是本发明实施例提供的一种IPsec解密处理的示意图;
图5是本发明实施例提供的一种IPsec加密处理的示意图;
图6是本发明实施例提供的一种FPGA的结构示意图。
具体实施方式
本发明实施例提供一种基于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序列号不一致,则说明所述转发信息对应的记录无效。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (10)

1.一种基于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流表。
2.如权利要求1所述的方法,其特征在于,所述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处理。
3.如权利要求1所述的方法,其特征在于,所述FPGA发送所述加密或解密处理后的报文,具体包括:
所述FPGA利用所述加密或解密处理后的报文中携带的转发信息查找IP流表,并根据查找结果发送所述加密或解密处理后的报文;
其中,所述IP流表中记录了所述报文的转发信息,并用于指导所述FPGA发送携带所述转发信息的报文。
4.如权利要求1所述的方法,其特征在于,所述FPGA利用所述报文中携带的转发信息查询IPsec流表的过程,进一步包括:
如果所述IPsec流表中有所述转发信息与SA信息之间的对应关系,则所述FPGA利用所述转发信息对应的SA信息判断所述转发信息对应的记录是否有效;如果有效,则确定所述IPsec流表中有所述转发信息对应的记录;否则,确定所述IPsec流表中没有所述转发信息对应的记录;
如果所述IPsec流表中没有所述转发信息与SA信息之间的对应关系,则所述FPGA确定所述IPsec流表中没有所述转发信息对应的记录。
5.如权利要求4所述的方法,其特征在于,所述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序列号不一致,则说明所述转发信息对应的记录无效。
6.一种基于IP安全IPsec的报文传输网络设备,所述网络设备包括现场可编程阵列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流表。
7.如权利要求6所述的网络设备,其特征在于,
所述传输模块,进一步用于利用所述SA信息对所述报文进行IPsec处理,并将IPsec处理后的报文和所述SA信息发送给所述CPU;或者,
将所述报文和所述SA信息发送给所述CPU,由所述CPU利用所述SA信息对所述报文进行IPsec处理;或者,
利用所述SA信息对所述报文进行所有IPsec处理中的部分IPsec处理,并将部分IPsec处理后的报文和所述SA信息发送给所述CPU,由所述CPU利用所述SA信息对所述报文进行所有IPsec处理中的其它IPsec处理。
8.如权利要求6所述的网络设备,其特征在于,
所述传输模块,具体用于利用所述加密或解密处理后的报文中携带的转发信息查找IP流表,并根据查找结果发送所述加密或解密处理后的报文;
其中,所述IP流表中记录了所述报文的转发信息,并用于指导所述FPGA发送携带所述转发信息的报文。
9.如权利要求6所述的网络设备,其特征在于,
所述查询模块,进一步用于当所述IPsec流表中有所述转发信息与SA信息之间的对应关系时,利用所述转发信息对应的SA信息判断所述转发信息对应的记录是否有效;如果有效,则确定所述IPsec流表中有所述转发信息对应的记录;如果无效,则确定所述IPsec流表中没有所述转发信息对应的记录;当所述IPsec流表中没有所述转发信息与SA信息之间的对应关系时,确定所述IPsec流表中没有所述转发信息对应的记录。
10.如权利要求9所述的网络设备,其特征在于,所述SA信息包括SA索引,且所述IPsec流表中还记录了SA索引对应的SA序列号,其中,所述FPGA获得并保存SA表项,且所述SA表项用于记录SA索引与SA序列号之间的对应关系;其中,当有SA被删除或者老化时,所述SA表项中该SA所对应的SA序列号将被所述CPU修改;
所述查询模块,具体用于从所述IPsec流表中获得所述转发信息对应的SA索引和SA序列号,并通过获得的SA索引查询SA表项;如果查询到的SA序列号与获得的SA序列号一致,则说明所述转发信息对应的记录有效;如果查询到的SA序列号与获得的SA序列号不一致,则说明所述转发信息对应的记录无效。
CN201210478002.2A 2012-11-22 2012-11-22 一种基于IPsec的报文传输方法和设备 Active CN102970228B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210478002.2A CN102970228B (zh) 2012-11-22 2012-11-22 一种基于IPsec的报文传输方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210478002.2A CN102970228B (zh) 2012-11-22 2012-11-22 一种基于IPsec的报文传输方法和设备

Publications (2)

Publication Number Publication Date
CN102970228A CN102970228A (zh) 2013-03-13
CN102970228B true CN102970228B (zh) 2016-04-27

Family

ID=47800115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210478002.2A Active CN102970228B (zh) 2012-11-22 2012-11-22 一种基于IPsec的报文传输方法和设备

Country Status (1)

Country Link
CN (1) CN102970228B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103457952B (zh) * 2013-09-05 2017-09-01 新华三技术有限公司 一种基于加密引擎的IPSec处理方法和设备
CN105656882A (zh) * 2015-12-25 2016-06-08 深圳中兴网信科技有限公司 软硬件解码方法及装置和软硬件编码方法及装置
CN105704122B (zh) * 2016-01-08 2018-12-18 北京北方烽火科技有限公司 一种路由加密系统
CN109542633A (zh) * 2018-09-29 2019-03-29 江苏新质信息科技有限公司 一种提高网络数据包加密速度的方法
CN109450960A (zh) * 2019-01-08 2019-03-08 郑州云海信息技术有限公司 IPsec协议的处理方法、装置、设备、系统及介质
CN111245866B (zh) * 2020-03-04 2021-09-14 深圳市龙信信息技术有限公司 基于硬件加速的以太网应用层协议控制系统及方法
CN114785536B (zh) * 2022-02-28 2024-08-06 新华三信息安全技术有限公司 一种报文处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003007524A2 (en) * 2001-07-10 2003-01-23 Telecom Italia S.P.A. Virtual private network mechanism incorporating security association processor
CN102170434A (zh) * 2011-04-02 2011-08-31 京信通信系统(中国)有限公司 一种基于多核处理器实现ipsec的方法及其装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003007524A2 (en) * 2001-07-10 2003-01-23 Telecom Italia S.P.A. Virtual private network mechanism incorporating security association processor
CN102170434A (zh) * 2011-04-02 2011-08-31 京信通信系统(中国)有限公司 一种基于多核处理器实现ipsec的方法及其装置

Also Published As

Publication number Publication date
CN102970228A (zh) 2013-03-13

Similar Documents

Publication Publication Date Title
CN102970228B (zh) 一种基于IPsec的报文传输方法和设备
US9917812B2 (en) Inline inspection of security protocols
US11165604B2 (en) Method and system used by terminal to connect to virtual private network, and related device
CN107018134B (zh) 一种配电终端安全接入平台及其实现方法
CN110190955B (zh) 基于安全套接层协议认证的信息处理方法及装置
US8467532B2 (en) System and method for secure transaction of data between a wireless communication device and a server
CN102882789B (zh) 一种数据报文处理方法、系统及设备
US7917939B2 (en) IPSec processing device, network system, and IPSec processing program
CN107005400A (zh) 业务处理方法及装置
CN105516062B (zh) 一种实现L2TP over IPsec接入的方法
CN105376239A (zh) 一种支持移动终端进行IPSec VPN报文传输方法及装置
MX2008015298A (es) Metodo y aparato para comunicaciones encriptadas utilizando claves de ipsec.
CN103457952A (zh) 一种基于加密引擎的IPSec处理方法和设备
CN103227742B (zh) 一种IPSec隧道快速处理报文的方法
CN105763318A (zh) 一种预共享密钥获取、分配方法及装置
CN101521667A (zh) 一种安全的数据通信方法及装置
CN107124385B (zh) 一种基于镜像流的ssl/tls协议明文数据采集方法
CN106161386B (zh) 一种实现IPsec分流的方法和装置
KR102219018B1 (ko) 블록체인 기반의 사물인터넷 데이터 전송 방법
CN103916359A (zh) 防止网络中arp中间人攻击的方法和装置
KR101457455B1 (ko) 클라우드 네트워크 환경에서의 데이터 보안 장치 및 방법
KR101329789B1 (ko) 모바일 디바이스의 데이터베이스 암호화 방법
Glass et al. Insecurity in public-safety communications: APCO project 25
CN111835613A (zh) 一种vpn服务器的数据传输方法及vpn服务器
CN104618211A (zh) 一种基于隧道的报文处理方法和总部网关设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20190826

Address after: 610041 China (Sichuan) Free Trade Pilot Zone

Patentee after: Xinhua San Semiconductor Technology Co., Ltd.

Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee before: Xinhua three Technology Co., Ltd.

TR01 Transfer of patent right