CN109714292A - 传输报文的方法与装置 - Google Patents
传输报文的方法与装置 Download PDFInfo
- Publication number
- CN109714292A CN109714292A CN201711006359.XA CN201711006359A CN109714292A CN 109714292 A CN109714292 A CN 109714292A CN 201711006359 A CN201711006359 A CN 201711006359A CN 109714292 A CN109714292 A CN 109714292A
- Authority
- CN
- China
- Prior art keywords
- tcp message
- message
- tcp
- accelerator card
- data
- 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.)
- Granted
Links
Landscapes
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供了一种传输报文的方法和装置,应用于配置有加速卡和处理器的第一设备中,能够减小传递带来的带宽开销和数据时延,该方法包括:加速卡接收来自该处理器的第一传输层控制协议TCP报文,该第一TCP报文中承载有待加密数据,该待加密数据属于安全套接层SSL数据;根据预先获取的映射关系,确定用于加密该第一TCP报文的加密信息,该映射关系指示承载该SSL数据的TCP连接的标识与加解密信息的对应关系,该加密信息至少包括:加密算法和加密参数;根据该加密信息对该第一TCP报文中承载的待加密数据进行加密处理,得到第二TCP报文,该第二TCP报文为加密处理后的第一TCP报文;向第二设备发送该第二TCP报文。
Description
技术领域
本申请涉及通信领域,并且更具体地,涉及传输报文的方法与装置。
背景技术
随着计算机技术的飞速发展,网络已经成为社会发展的重要保证。如何保证数据不被泄密,是影响网络发展的一个重要原因,端到端的数据加密有利于防止信息被泄密。
安全套接层(secure sockets layer,SSL)/传输层安全(transport layersecurity,TLS)技术是目前广泛使用的一种加密技术,可广泛地应用于互联网通信。例如,在以基于SSL的超文本传输协议(Hyper Text Transfer Protocol over SSL,HTTPS)访问网站时,都是基于SSL协议的。SSL数据的加解密运算可以由配置于主机(例如,服务器)中的处理器(例如,中央处理单元(Central Processing Unit,CPU))完成,但这些运算非常消耗处理器的资源,因此,一种用于在主机的处理器外部通过硬件辅助完成加解密运算的方法应运而生。由于这种硬件具有较高的运算速度,可以提高加解密的运算速度,因此这种用于辅助完成加解密运算的硬件可以称为加速卡。
当前技术中,主机的处理器(更具体地说,SSL实体)在接收到SSL数据时,便可以将数据发给加速卡进行加解密运算,加速卡在完成了加解密运算之后,将加密或解密后的数据返回给主机的处理器,再由主机的处理器对数据进行其他处理,例如,发送给对端(例如,客户端)等。
由于数据在主机的处理器与加速卡之间反复传递,使得处理器和内存的带宽开销增加,同时由于数据传递带来了一定的时延,由此抵消了加速卡带来的好处,造成该加速卡带来的加速效果并不显著。
发明内容
本申请提供一种传输报文的方法与装置,能够减少数据在主机的处理器与加速卡之间反复传递,以减少数据传递带来的带宽开销和数据时延。
第一方面,提供了一种传输报文的方法,应用于配置有加速卡和处理器的第一设备中,所述方法包括:
所述加速卡接收来自所述处理器的第一传输层控制协议(Transmission ControlProtocol,TCP)报文,所述第一TCP报文中承载有待加密数据,所述待加密数据属于安全套接层SSL数据;
所述加速卡根据预先获取的映射关系,确定用于加密所述第一TCP报文的加密信息,所述映射关系指示承载所述SSL数据的TCP连接的标识与加解密信息的对应关系,所述加密信息至少包括:加密算法和加密参数;
所述加速卡根据所述加密信息对所述第一TCP报文中承载的待加密数据进行加密处理,得到第二TCP报文,所述第二TCP报文为加密处理后的第一TCP报文;
所述加速卡向第二设备发送所述第二TCP报文。
基于上述技术方案,本申请实施例的传输报文的方法可以在处理器完成了数据报文的封装等处理后再由加速卡对待加密数据进行加密处理,相比于现有技术中先将数据发送到加速卡进行加密再返回SSL进行各协议层的封装等处理来说,减少了数据在加速卡与处理器之间来回传递的次数,有利于减小数据传递带来的处理器与内存间的带宽开销和传输时延,从而更加凸显出加速卡带来的加速效果,从整体上来说更有利于提高数据传输效率。
结合第一方面,在第一方面的某些实现方式中,所述加速卡与网卡连接,或者,所述加速卡中配置有网卡,所述加速卡向第二设备发送所述第二TCP报文,包括:
所述加速卡经由所述网卡向所述第二设备发送所述第二TCP报文。
结合第一方面,在第一方面的某些实现方式中,所述加速卡根据所述加密信息对所述第一TCP报文中承载的待加密数据进行加密处理,得到第二TCP报文,包括:
所述加速卡根据所述加密信息中的加密算法,确定加密块长度;
所述加速卡根据所述加密信息,以所述加密块长度为单位,对所述第一TCP报文中承载的待加密数据进行加密处理,得到所述第二TCP报文。
由于在本申请实施例中,加速卡是对TCP报文中所承载的数据进行加密,与现有技术中直接对SSL消息中的数据进行加密(SSL消息中的数据长度必然是加密块长度的整数倍,例如可以通过填充等方式来实现)所不同,TCP报文中所承载的数据可能不一定是加密块长度的整数倍。当加速卡以加密块长度为单位对第一TCP报文中承载的待加密数据进行加密处理时,该第一TCP报文中的待加密数据的长度有可能不能被加密块长度整除。假设所述第一TCP报文中的待加密数据的长度为L比特,所述加密块长度为m比特,且mod(L,m)=n,L、m、n均为正整数,且L>m>1,mod表示取模。
在一种可能的实现方式中,所述加速卡根据所述加密信息,以所述加密块长度为单位,对所述第一TCP报文中承载的待加密数据进行加密处理,得到所述第二TCP报文,包括:
所述加速卡根据所述加密信息,以所述加密块长度为单位,对所述第一TCP报文中的待加密数据的前L-n比特进行加密,得到所述第二TCP报文的第一部分;
所述加速卡将所述第一TCP报文中的待加密数据的最后n比特与第三TCP报文中的待加密数据的前m-n比特组合得到一个加密块,所述第三TCP报文中的待加密数据与所述第一TCP报文中的待加密数据均属于所述SSL数据,且所述第三TCP报文为所述第一TCP报文的下一个报文;
所述加速卡根据所述加密信息,对组合得到的所述加密块进行加密,得到所述第二TCP报文的第二部分,所述第二TCP报文包括所述第二TCP报文的第一部分和所述第二TCP报文的第二部分。
可选地,所述加速卡向第二设备发送所述第二TCP报文,包括:
所述加速卡同时向所述第二设备发送所述第二TCP报文的第一部分和所述第二TCP报文的第二部分,所述第二TCP报文中承载的已加密的数据长度为L比特。
可选地,所述加速卡向第二设备发送所述第二TCP报文,包括:
所述加速卡将所述第二TCP报文中承载的已加密的数据长度修改为L-n比特;
所述加速卡依次向所述第二设备发送所述第二TCP报文的第一部分和所述第二TCP报文的第二部分。
以上提供的实现方式能够解决本申请提供的加速卡直接对TCP报文中承载的数据进行加密可能带来的问题,因此,有利于提高数据传输效率。但应理解,上述列举仅为本申请提出的可能的实现方式,而不应对本申请构成任何限定。
结合第一方面,在第一方面的某些可能的实现方式中,所述加速卡根据所述加密信息对所述第一TCP报文中承载的待加密数据进行加密处理,包括:
所述加速卡根据预先记录的缓存表和所述第一TCP报文的序列号,确定所述加速卡的缓存中是否保存有所述第二TCP报文,所述缓存表中记录有至少一个已加密的TCP报文的物理地址、承载所述至少一个已加密的TCP报文的TCP连接的连接号以及所述至少一个已加密的TCP报文的序列号范围,所述至少一个已加密的TCP未被所述第二设备确认接收;
所述加速卡在所述缓存中未保存所述第二TCP报文的情况下,对所述第一TCP报文中的待加密数据进行所述加密处理。
因此,加速卡可以直接从缓存中获取重传数据所对应的加密后的数据,而不需要再次进行加密处理,避免了不必要的计算带来的消耗和再次加密处理可能带来的时延,有利于提高数据传输效率。
结合第一方面,在第一方面的某些实现方式中,在所述加速卡对所述第一TCP报文中承载的待加密数据进行所述加密处理之后,所述方法还包括:
所述加速卡在所述缓存中保存所述第二TCP报文;
所述加速卡在所述缓存表中记录承载所述第二TCP报文的TCP连接号以及所述第二TCP报文在所述缓存中的物理地址,并根据所述第二TCP报文的序列号更新所述缓存表中保存的已加密的TCP报文的序列号范围。
由于加速卡在接收到来自处理器的待加密数据时,并不知道接收到的数据是初传数据还是重传数据,但如果在缓存中将加密处理后的TCP报文暂存并做相应的记录,便可以在接到重传报文时,直接通过查缓存表来确定是否为重传报文,并在是重传报文的情况下直接从缓存中获取加密处理后的TCP报文,从而避免了不必要的计算带来的消耗和再次加密处理可能带来的时延,有利于提高数据传输效率。
结合第一方面,在第一方面的某些实现方式中,若所述第一TCP报文未被所述第二设备成功接收,所述方法还包括:
所述加速卡从所述缓存中获取所述第二TCP报文,并向所述第二设备发送所述第二TCP报文。
即,该第一TCP报文在初传未被成功接收到的情况下,需要发起重传,加速卡可直接从缓存中获取该第一TCP报文加密处理后得到的第二TCP报文。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:
所述加速卡接收来自所述第二设备的确认消息,所述确认消息中的确认号为所述第二TCP报文的序列号;
所述加速卡接收所述处理器基于所述确认消息发送的第一指令,所述第一指令指示所述第二TCP报文的序列号;
所述加速卡基于所述第一指令,从所述缓存中删除所述第二TCP报文,并更新所述缓存表。
因此,加速卡可以在报文被确认接收到的情况下释放缓存空间,减小缓存压力,并且更新缓存表,以便在接收到下一个TCP报文时能够准确地判断是否为重传报文。
第二方面,提供了一种传输报文的方法,应用于配置有加速卡和处理器的第一设备中,所述第一设备中设置有加速卡驱动,所述方法包括:
加速卡驱动实体接收来自安全套接层SSL的加密指令和待加密的SSL数据;
所述加速卡驱动实体向所述SSL实体返回所述待加密的SSL数据。
因此,通过对加速卡驱动程序的修改,使得加速卡驱动在被API接口调用以启用加速卡对数据进行加密处理时,可以通过直接返回原数据的方法,避免在此阶段将待加密数据发送到加速卡中,而在处理器完成了报文封装之后,经由加速卡向网卡发送的过程中对报文中的待加密数据进行加密处理。因此,可以兼容现有的设备,使得第一设备的处理器仍然可以按照现有技术中的方法来发送报文,而不需要改变现有的SSL协议。同时,通过减少数据在加速卡与处理器之间的传递次数,减小了数据传输时延和处理器与内存间的带宽开销,有利于提高数据传输效率。
第三方面,提供了一种传输报文的方法,应用于配置有加速卡和处理器的第一设备中,所述方法包括:
所述加速卡接收来自第二设备的至少一个传输层控制协议TCP报文,所述至少一个TCP报文中的每个TCP报文中承载有待解密数据,所述至少一个TCP报文中承载的待解密数据属于安全套接层SSL数据;
所述加速卡根据预先获取的映射关系,确定用于解密所述SSL数据的解密信息,所述映射关系指示承载所述SSL数据的TCP连接的标识与加解密信息的对应关系,所述解密信息至少包括:解密算法和解密参数;
所述加速卡根据所述解密信息对所述至少一个TCP报文进行解密处理,得到至少一个解密处理后的TCP报文,并向所述处理器发送所述至少一个解密处理后的TCP报文。
基于上述技术方案,本申请实施例的传输报文的方法可以在加速卡完成了数据的解密后再向处理器发送TCP报文,相比于现有技术中处理器先提取出待解密数据发送到加速卡进行解密再将解密后的数据返回处理器的过程来说,减少了数据在加速卡与处理器之间来回传递的次数,有利于减小数据传递带来的处理器与内存间的带宽开销和传输时延,从而更加凸显出加速卡带来的加速效果,从整体上来说更有利于提高数据传输效率。
结合第三方面,在第三方面的某些实现方式中,所述加速卡与网卡连接,或者,所述加速卡中配置有网卡,所述加速卡接收来自第二设备的至少一个TCP报文,包括:
所述加速卡经由所述网卡接收来自所述第二设备的至少一个TCP报文。
由于加速卡在接收到来自第二设备的TCP报文时,有可能会出现丢包和重传的情况。
结合第三方面,在第三方面的某些实现方式中,假设所述SSL数据承载于P个TCP报文中,P>1且P为整数。加速卡可通过以下至少一种方式接收P个TCP报文:
方式a、所述加速卡接收来自第二设备的至少一个传输层控制协议TCP报文,包括:
所述加速卡接收来自所述第二设备的P个TCP报文,所述P个TCP报文为初传报文。
方式b、所述加速卡接收来自第二设备的至少一个传输层控制协议TCP报文,包括:
所述加速卡接收来自所述第二设备的Q个TCP报文,所述Q个TCP报文为初传报文,Q<P,Q为正整数;
所述加速卡接收来自所述第二设备的T个TCP报文,所述T个TCP报文为重传报文,P-Q≤T≤P,T为正整数。
结合第三方面,在第三方面的某些实现方式中,所述加速卡根据所述解密信息对所述至少一个TCP报文进行解密处理,并向所述处理器发送所述至少一个解密处理后的TCP报文,可通过以下至少一种方式实现:
方式A、
所述加速卡根据所述P个TCP报文的序列号,对所述P个TCP报文进行排序;
所述加速卡对排序后的所述P个TCP报文进行所述解密处理,得到解密后的P个TCP报文;
所述加速卡向所述处理器发送所述解密后的P个TCP报文,具体地,加速卡将解密后的P个TCP报文发送至SSL。
方式B、
所述加速卡根据接收到的Q个TCP报文的序列号,根据所述解密信息对所述Q个TCP报文中的正常排序的S个TCP报文进行所述解密处理,得到S个解密处理后的TCP报文,S≤Q-T,S为正整数;
所述加速卡向所述处理器发送所述S个解密处理后的TCP报文和剩余的Q-S个未解密处理的TCP报文,并记录所述S个解密处理后的报文在所述Q个TCP报文中的偏移;
所述加速卡根据接收到的所述T个TCP报文的序列号,根据所述解密信息,对剩余的P-S个TCP报文进行所述解密处理,得到P-S个解密处理后的TCP报文;
所述加速卡向所述处理器发送所述P-S个解密处理后的TCP报文。
具体地,加速卡将上一次解密处理后得到的S个解密处理后的TCP报文和剩余的Q-S个未解密处理的TCP报文发送至SSL,将下一次解密处理后得到的P-S个解密处理后的TCP报文发送至加速卡驱动的缓存中。
方式C、
所述加速卡根据接收到的Q个TCP报文的序列号,根据所述解密信息对所述Q个TCP报文中的正常排序的S个TCP报文进行所述解密处理,得到S个解密处理后的TCP报文,S≤Q-T,S为正整数;
所述加速卡向所述处理器发送所述S个解密处理后的TCP报文和剩余的Q-S个未解密处理的TCP报文;
所述加速卡根据接收所述T个TCP报文的序列号,根据所述解密信息,对剩余的P-S个TCP报文进行所述解密处理,得到P-S个解密处理后的TCP报文;
所述加速卡向所述处理器发送所述S个解密处理后的TCP报文和所述P-S个解密处理后的TCP报文。
具体地,加速卡将上一次解密处理后得到的S个解密处理后的TCP报文和剩余的Q-S个未解密处理的TCP报文发送至SSL,将下一次解密处理后得到的P-S个解密处理后的TCP报文和上一次解密处理得到的S个解密处理后的TCP报文组合得到P个解密处理后的TCP报文,并发送至加速卡驱动的缓存中。
以上提供的实现方式能够解决本申请提供的加速卡直接对接收到的TCP报文进行解密可能出现的问题,因此,有利于提高数据传输效率。但应理解,上述列举仅为本申请提出的可能的实现方式,而不应对本申请构成任何限定。
结合第三方面,在第三方面的某些实现方式中,所述方法还包括:
所述加速卡对所述SSL数据进行消息认证码(Message Authentication Code,MAC)验证;
所述加速卡向所述处理器发送所述MAC验证的结果。
在完成了对P个TCP报文的解密后,加速卡可以对解密后的数据进行MAC验证,以验证数据的完整性。
结合第三方面,在第三方面的某些实现方式中,所述方法还包括:
在承载所述SSL数据的TCP报文中的至少一个TCP报文丢包的情况下,所述加速卡接收来自所述处理器的第二指令,所述第二指令指示承载所述SSL数据的TCP连接的连接号;
所述加速卡根据所述第二指令,删除所述映射关系以及接收到的所述至少一个TCP报文,并释放所述至少一个TCP报文在所述缓存中占用的存储空间,其中,所述缓存中保存有所述加速卡接收到的TCP报文。
当某一TCP报文的重传次数达到预设的重传次数阈值,或者,SSL数据的传输时间达到预设的传输时间阈值时,第二设备或第一设备可以中断用于本次SSL数据传输的TCP连接,并通知加速卡,以删除缓存中本次SSL数据传输的相关信息,减小缓存压力,以释放出更多的资源用于下一次数据传输。
第四方面,提供了一种传输数据的方法,应用于配置有加速卡和处理器的第一设备中,所述第一设备中设置有加速卡驱动,所述方法包括:
加速卡驱动实体接收来自安全套接层SSL实体的解密指令以及待解密的SSL数据;
所述加速卡驱动实体向所述SSL实体发送所述待解密的SSL数据以及所述SSL数据的消息认证码MAC验证成功的结果;或者
所述加速卡驱动实体向所述SSL实体发送所述SSL数据的MAC验证失败的结果。
因此,通过对加速卡驱动程序的修改,使得加速卡驱动在被API接口调用以启用加速卡对数据进行解密处理时,可以直接将接收到的数据(可以理解,该数据事实上是加速卡预先解密处理后的数据,但SSL实体并不知道该数据预先进行了解密处理)和MAC验证结果直接返回给SSL实体,而不再将该数据再发送给加速卡。加速卡驱动实体可根据MAC验证结果向SSL实体返回数据和验证成功结果,或直接返回验证失败结果。因此,可以兼容现有的设备,使得第一设备的处理器仍然可以按照现有技术中的方法来接收报文,而不需要改变现有的SSL协议。同时,通过减少数据在加速卡与处理器之间的传递次数,见笑了数据传输时延和处理器与内存间的带宽开销,有利于提高数据传输效率。
结合第四方面,在第四方面的某些实现方式中,在所述加速卡驱动实体向所述SSL实体发送所述待解密的SSL数据以及所述SSL数据的MAC验证的结果之前,所述方法还包括:
所述驱动实体接收来自所述加速卡的所述MAC验证的结果;
所述驱动实体保存所述SSL数据的标识以及MAC验证的结果的索引表,其中,所述SSL数据的标识包括:SSL数据的序号以及传输所述SSL数据的TCP连接的连接号。
通过在加速卡驱动实体建立索引表,便于准确地查找SSL数据的MAC验证结果,而不需要在SSL实体调用API接口时,才从加速卡中获取SSL数据的MAC验证结果,因此,在一定程度上可以减小时延,有利于提高数据传输效率。
第五方面,提供了一种传输报文的方法,应用于配置有处理器和加速卡的第一设备中,所述方法包括:
所述处理器在某一TCP报文的重传次数达到预设的重传次数阈值的情况下,或者,在安全套接层SSL数据的传输时间达到与预设的传输时间阈值的情况下,向所述加速卡发送第二指令,所述第二指令中指示承载安全套接层SSL数据的TCP连接的连接号。
第六方面,提供了一种传输报文的装置,包括用于执行上述第一至第五方面以及第一至第五方面中任一种实现方式中的传输报文的方法的各步骤的单元。
第七方面,提供了一种传输报文的设备,所述设备可以为上述方法设计中传输报文的装置,或者为配置于传输报文的装置中的芯片。所述设备:包括处理器、存储器、通信接口和总线。其中,处理器、存储器、通信接口通过总线进行通信,也可以通过无线传输等其他手段实现通信。该存储器用于存储指令,该处理器用于执行该存储器存储的指令。该存储器存储程序代码,且处理器可以调用存储器中存储的程序代码执行第一至第五方面以及第一至第五方面中任一种可能实现方式中的传输报文的方法。
第八方面,提供了一种芯片系统,该芯片系统包括处理器,用于传输报文的装置实现上述方面中所涉及的功能,例如,生成,接收,发送,或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存传输报文的装置必要的程序指令和数据。具体地,所述存储器保存的程序指令包括用于执行第一至第五方面以及第一至第五方面中任一种可能实现方式中的传输报文的方法的指令。
可选地,该芯片系统可以由芯片构成,也可以包括芯片和其他分立器件。
第九方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一至第五方面以及第一至第五方面中的方法。
第十方面,提供了一种计算机可读介质,所述计算机可读介质存储传输报文的装置执行的程序代码,所述程序代码包括用于执行第一至第五方面以及第一至第五方面中任一种可能实现方式中的传输报文的方法的指令。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1是适用于本申请实施例的传输报文的方法的系统的示意图;
图2是适用于本申请实施例的传输报文的方法的协议栈的示意图;
图3是当前技术中提出的一种传输报文的方法的示意图;
图4是本申请实施例提供的传输报文的方法的示意性流程图;
图5是对第一TCP报文和第三TCP报文进行组合的示意图;
图6是本申请另一实施例提供的传输报文的方法的示意性流程图;
图7是本申请又一实施例提供的传输报文的方法的示意性流程图;
图8是本申请再一实施例提供的传输报文的方法的示意性流程图;
图9是本申请一实施例提供的传输报文的装置的示意性框图;
图10是本申请另一实施例提供的传输报文的装置的示意性框图;
图11是本申请又一实施例提供的传输报文的装置的示意性框图;
图12是本申请实施例提供的加速卡的示意性结构图;
图13是本申请实施例提供的主机的示意性结构图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例提供的传输报文的方法和装置,可以应用于计算机上,该计算机包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。该硬件层包括中央处理器(Central Processing Unit,CPU)、内存管理单元(Memory ManagementUnit,MMU)和内存(也称为主存)等硬件。该操作系统可以是任意一种或多种通过进程(Process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。
并且,在本申请实施例中,该计算机可以是智能手机等手持设备,也可以是个人计算机等终端设备,本申请并未特别限定,只要能够通过运行记录有本申请实施例的传输报文的方法的代码的程序,以根据本申请实施例的传输报文的方法对数据进行传输即可。
本申请实施例的传输报文的方法的执行主体可以是计算机设备,或者,是计算机设备中能够调用程序并执行程序的功能模块。
此外,本申请的各个方面或特征可以实现成方法、装置或使用标准编程和/或工程技术的制品。
本申请中使用的术语“制品”涵盖可从任何计算机可读器件、载体或介质访问的计算机程序。例如,计算机可读介质可以包括,但不限于:磁存储器件(例如,硬盘、软盘或磁带等),光盘(例如,压缩盘(Compact Disc,CD)、数字通用盘(Digital Versatile Disc,DVD)等),智能卡和闪存器件(例如,可擦写可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、卡、棒或钥匙驱动器等)。
另外,本文描述的各种存储介质可代表用于存储信息的一个或多个设备和/或其它机器可读介质。其中,术语“机器可读介质”可包括但不限于,无线信道和能够存储、包含和/或承载指令和/或数据的各种其它介质。
为便于理解本申请实施例,首先结合图1详细介绍适用于本申请实施例的传输报文的方法的系统架构。
图1是适用于本申请实施例的传输报文的方法的系统100的示意图。如图1所示,该系统100可以包括:处理器111和加速卡112。该处理器111和加速卡112可以配置于同一主机110(即,第一设备的一例)中,处理器111和加速卡112可以理解为相互独立的两个硬件。换句话说,加速卡112可以理解为主机110的外设,或者说,配置于主机110外部的组件。在本申请实施例中,该主机110例如可以为服务端设备或者客户端设备。加速卡112与处理器111之间可以通过总线(例如,高速外围组件互连总线(Peripheral Component InterfaceExpress,PCIe))连接进行通信。
可选地,该加速卡112配置有网卡(或者称,网络接口卡、网络适配器等),或者该加速卡112与网卡连接。或者说,网卡可以集成于加速卡112中,或者独立于加速卡112并与加速卡112通信相连。因此,加速卡112可以经由网卡与其他外部设备(例如,下文中所列举的主机120)通过网络连接通信。
可选地,该系统100还包括主机120。主机120可以理解为第二设备的一例。在本申请中,主机120可以是与主机110对等的设备。例如,该主机120也可以为客户端设备或服务端设备。具体地,主机110可以为服务端设备,主机120可以为客户端设备;或者,主机110可以为客户端设备,主机120可以为服务端设备;或者,主机110和主机120都可以为服务端设备或者客户端设备。本申请对于主机110和主机120的具体形态不做限定。
应理解,服务端设备的构成可以包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。由于服务端设备需要提供高可靠的服务,因此,在处理能力、稳定性、可靠性、安全性、可扩展性以及可管理性等方面可能要求更高。
客户端设备例如可以为终端设备。应理解,终端设备也可以称为用户设备(userequipment,UE)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。本申请的实施例中的终端设备可以是手机(mobile phone)、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(VirtualReality,VR)终端设备、增强现实(Augmented Reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本申请中将前述终端设备及可设置于前述终端设备的芯片统称为终端设备。
在本申请实施例中,主机110和主机120可以为不同的物理设备,或者,部署于不同的物理设备中,且主机110可以经由配置于加速卡112上的网卡通过例如以太网(例如,通过光纤等通信线缆实现)等网络与主机120通信,或者,该主机110也可以经由配置于加速卡112上的网卡通过由一个或多个网络设备构成的转发网络与主机120通信;或者,该主机110还可以经由配置于加速卡112上的网卡通过无线接入网与主机120通信。本申请对此不作特别限定。
应理解,上述无线接入网可以采用各种通信系统,例如:全球移动通信(GlobalSystem of Mobile communication,GSM)系统、码分多址(Code Division MultipleAccess,CDMA)系统、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)系统、通用分组无线业务(General Packet Radio Service,GPRS)、长期演进(Long TimeEvolution,LTE)系统、先进的长期演进(LTE-Advanced,LTE-A)系统、LTE频分双工(Frequency Division Duplex,FDD)系统、LTE时分双工(Time Division Duplex,TDD)、通用移动通信系统(Universal Mobile Telecommunication System,UMTS)、全球互联微波接入(Worldwide Interoperability for Microwave Access,WiMAX)通信系统、下一代通信系统(例如,第五代(fifth-generation,5G)通信系统)、多种接入系统的融合系统,或演进系统等。其中,5G系统也可以称为新一代无线接入技术(new radio access technology,NR)系统。
需要说明的是,图1中仅为示例,将主机110和主机120之间的网络连接通过虚线来示意,也就是说,主机110和主机120之间可以通过无线网络连接,也可以通过有线网络连接,本申请对此不做限定。
可选地,该主机120包括处理器121和加速卡122。
处理器121和加速卡122可以通过总线(例如PCIe)连接进行通信,也就是说,处理器121和加速卡122可以理解为相互独立的两个硬件。其中,加速卡122可以理解为主机120的外设,或者说,加速卡122可以理解为配置于主机120外部的组件。
可选地,该加速卡122配置有网卡,或者与网卡连接。因此,加速卡122也可以网卡与其他外部设备(例如,上文中所列举的主机110)通过网络连接通信。
应理解,上文中所列举的加速卡与网卡的关系仅为示例性说明,而不应对本申请构成任何限定,本申请对于加速卡与网卡之间的连接关系不做限定。在下文示出的实施例中,为方便说明,假设该网卡配置于加速卡中。
还应理解,图1中示出的系统仅为示例性说明,而不应对本申请构成任何限定。本申请对于主机以及加速卡的数量以及部署方式并未特别限定。例如,服务端设备可以为一个,也可以为多个,即,多个服务端设备可以构成服务器集群。
还应理解,图1所示的系统只是本申请实施例的一种可能的应用场景,不应对本申请构成任何限定。例如,上述加速卡122的功能可以集成在主机120中的某一芯片上,例如,集成在南桥芯片上。主机122中的中央处理器(CPU)与南桥芯片可以通过总线(例如,PCIe)连接进行通信。这种情况下,该南桥芯片可以称为加速芯片。
还应理解,图1中仅为示例,示出了两个主机之间的通信连接关系,事实上,主机可以与更多数量的其他主机通信,本申请对此不做限定。
为了便于理解本申请实施例,下面首先简单介绍几个概念。
一、SSL:
SSL是介于应用层协议(例如,超文本传输协议(Hyper Text TransferProtocol))与传输层协议(例如,传输控制协议(Transmission Control Protocol,TCP))之间的一个可选层。图2是适用于本申请实施例的传输报文的方法的协议栈的示意图。图中示出了SSL在协议栈中的位置以及数据报文由第一设备发送至第二设备过程中的具体传输路径。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可以分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(例如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSLHandshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
具体地说,SSL握手协议是客户端和服务端用SSL连接通信是使用的第一个子协议。该协议允许服务端和客户端相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。换句话说,SSL握手协议可以是在应用程序的数据传输之前使用的,或者说,SSL握手协议可以在TCP连接建立之后使用。其中,TCP连接可以理解为用于承载一个SSL数据的连接,一个TCP连接可以通过网际协议(Internet Protocol,IP)五元组信息来确定,并可通过一个TCP连接标识(例如,TCP连接的连接号)来唯一指示。这里,IP五元组信息包括:源端口、目的端口、源IP、目的IP以及TCP协议号。
应理解,基于SSL握手协议进行认证、协商加密算法、交换加密密钥等的具体过程可以与现有技术中相同,为了简洁,这里省略对该具体过程的详细说明。
可以理解的是,在客户端和服务端基于SSL握手协议进行认证、协商加密算法、交换加密密钥之后,便可以基于相同的加密算法(可以理解的是,加密算法和解密算法可以是相对应的,在某些加密方式中,加密算法和解密算法可以是相同的)、密钥进行数据传输了。
SSL记录协议在客户端和服务端握手成功后使用,即,客户端和服务端鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议。记录协议向SSL连接提供保证性和保密性的服务。其中,保密性可以通过使用握手协议定义的加密算法和加密密钥实现;完整性可通过握手协议定义的MAC算法实现。
通常情况下,在第一设备发送数据的过程中,当应用层(例如,HTTP层)的数据到达SSL时,SSL可以调用API接口,通过软件、基于预先确定好的加密算法和加密密钥对数据进行加密处理,并通过MAC算法添加MAC,然后通过SSL的封装处理后将数据发往TCP层、IP层,经各协议层的封装处理后,得到TCP报文,并将该TCP报文发送出去。
在第一设备接收数据的过程中,当来自第二设备的TCP报文到达后,将依次经过IP层、TCP层的解封装处理,到达SSL,SSL提取出净荷后,可调用API接口,通过软件、基于预先确定好的解密算法和解密密钥对数据进行解密处理,并通过MAC算法计算MAC与原数据中携带的MAC比较以验证数据的完整性。在解密完成且MAC验证成功后,再将解密后的数据上送至应用层。
二、加速卡:
如果使用CPU对SSL的数据进行加密和MAC计算,是非常消耗CPU的资源的,当前技术中提出一种使用外加硬件加速卡来辅助完成加密和MAC计算的功能。
图3是当前技术中提出的一种传输报文的方法的示意图。图3具体示出了当前技术中提出的一种通过加速卡辅助完成加密和MAC计算的具体过程。如图3所示,第一设备中配置有CPU、网卡和加速芯片。CPU分别通过总线与网卡和加速芯片连接,也就是说,CPU可分别于加速芯片和网卡通信,但加速芯片与网卡之间并不能直接通信。
在第一设备发送数据的过程中,当应用层(例如,HTTP层)的数据到达SSL时,SSL可以调用API接口,此时,该API接口可以优先调用加速芯片进行数据加密和MAC计算。SSL将待加密数据经由总线发送给加速芯片,经加速芯片进行加密和MAC计算后,将处理后的数据经由总线发送给SSL,再通过SSL的封装处理后将数据发往TCP层、IP层,经各协议层的封装处理后,得到TCP报文,经由总线将TCP报文发送至网卡,通过网络将TCP报文发送出去。
在第一设备接收数据的过程中,当来自第二设备的TCP报文到达后,将依次经过IP层、TCP层的解封装处理,到达SSL,SSL提取出净荷后,可调用API接口,此时,该API接口可以优先调用加速芯片进行数据解密和MAC验证。SSL将待解密数据经由总线发送给加速芯片,经加速芯片进行解密和MAC验证后,将解密后的数据以及验证结果经由总线发送给SSL,SSL在MAC验证成功的情况下,进一步将解密后的数据上送到应用层。
应理解,上文中仅为便于理解,以第一设备发送数据和接收数据为例,详细说明了SSL和加速卡,但应理解,第一设备可以为通信系统中与其他设备具有网络连接关系的任意一个设备。
在上述过程中,可以看到,待处理的数据(例如,待加密数据或待解密数据)反复地在SSL和加速芯片之间传递,即,反复地经由总线在CPU和加速芯片之间传递。由于内存被用于暂存CPU与外部存储器交换的数据,因此,在数据传递的过程中,内存被频繁地使用。同时数据传递带来的时延也抵消了加速芯片带来的加速的好处。因此,加速芯片带来的加速效果并不显著,并未得到广泛应用。
有鉴于此,本申请提供一种传输报文的方法,旨在减少数据在加速卡与CPU之间的传递次数,降低时延,从而提升加速卡的加速效果。
需要说明的是,数据在各协议层的处理可以由主机中的处理器(例如,CPU)执行,更具体地说,可以由处理器中对应于各协议层的功能的模块来执行,在本申请中,可以将用于执行各协议层的功能的模块称为协议实体。为了简洁,后文中省略对相同或相似情况的说明。
还需要说明的是,在以下示出的实施例中,为方便说明,可以将对数据的加密以及MAC计算的过程简称为加密处理。应理解,基于加密算法和密钥对数据进行加密的过程以及MAC计算的过程可以与现有技术相同,基于解密算法和密钥对数据进行解密的过程以及通过MAC进行完整性验证的过程可以与现有技术相同。为了简洁,本申请中省略对该具体过程的详细说明。
还应理解,在本申请中,第一、第二、第三等仅为便于区分不同的对象,例如,区分不同的报文、区分不同的设备等,不应对本申请构成任何限定。
在下文中,将结合附图分别以发送报文的过程和接收报文的过程为例,详细说明本申请实施例提供的传输报文的方法。
图4从加速卡的角度示出了本申请一实施例提供的传输报文的方法400的示意性流程图。具体地,图4示出了第一设备对数据进行加密处理以及发送的具体过程。在以下示出的方法400中,第一设备和第二设备可以为对等且具有通信连接关系的设备。例如,第一设备可以为图1中所示的主机110,第二设备可以为图1中所示的主机120。该第一设备中配置有加速卡和处理器。例如,该加速卡可以为图1中所示的配置于主机110中的加速卡112,该处理器可以为图1中所示的配置于主机110中的处理器111。
如图4所示,该方法400包括步骤410至步骤470。下面对方法400进行详细描述。
在步骤410中,加速卡接收来自处理器的第一TCP报文。
具体地,该第一TCP报文中承载有待加密数据。在上文中结合图2的描述中已经说明,在第一设备发送数据的过程中,可以在应用层生成待发送给第二设备的数据,该数据依次经由SSL、TCP层被发送至IP层。在经过各个协议层时,分别经过各个协议层的封装等处理。换句话说,来自上一个协议层的报文可以作为下一个协议层的净荷。
例如,在SSL时,可以将来自应用层的数据切分并封装后可得到SSL消息。SSL消息可包括SSL消息头和净荷数据,其中,SSL消息的净荷数据可简称SSL数据。例如,来自应用层的数据长度为1M字节,SSL实体可以将该1M字节的数据切分为64个16k字节的SSL数据,并为每个SSL数据添加SSL消息头,得到64个SSL消息。作为示例而非限定,SSL消息头中可以包括但不限于:消息类型、SSL协议版本号、SSL的净荷长度等。
在TCP层时,可以将来自SSL的每个SSL消息切分并封装。具体地,例如,来自SSL的报文中的数据长度为16k字节,可以将该16k字节的数据切分为多个不同长度的TCP数据,并为每个TCP数据添加TCP报文头,得到多个TCP报文。也就是说,多个TCP报文的净荷构成一个SSL数据,或者说,一个SSL数据被承载在多个TCP报文中发送。作为示例而非限定,TCP报文头中可以包括但不限于:源端口号、目的端口号、TCP报文的序列号、校验和(checksum)等。
在IP层时,可以将来自TCP层的报文作为净荷,添加IP报文头,得到IP报文。IP报文头中可以包括但不限于:源IP地址、目的IP地址、校验和、版本号等。
需要说明的是,在SSL时,通常需要对数据进行加密处理。而加密处理通常是以加密块长度为单位进行,在数据长度不能够被加密块长度整除的情况下,可以通过填充的方法凑成加密块长度的整数倍的数据长度。例如,假设加密算法为高级加密标准(AdvancedEncryption Standard,AES)256,则加密块长度为256比特(bit)。若数据的长度为256bit的整数倍,则可以直接以256比特为单位,对该数据进行加密,例如,当数据的长度为16k字节(byte)时,则正好可以被256比特整除;但若数据的长度不为256比特的整数倍,可以通过填充的方式凑够256比特的整数倍个加密块,然后一256比特为单位,对该数据进行加密。在这种情况下,可以在SSL消息中增加填充字段和填充长度指示,以便于接收端设备(例如,第二设备)获知真正的数据长度。
也就是说,上文中所说的待加密数据可以仅包括来自应用层的数据,也可以包括来自应用层的数据和在SSL填充的数据(即,填充字段中的数据)。在本申请中,由于该待加密数据经过SSL的处理而得到,因此,可以将待加密数据称为SSL数据。可以理解,一个完整的SSL数据长度可以为加密块长度的整数倍。
应理解,上文列举的加密算法以及加密块长度、数据长度仅为示例性说明,而不应对本申请构成任何限定。本申请对于加密算法、加密块长度以及数据长度均不做限定。
需要说明的是,加密块长度与加密算法相关,或者说,加密块长度与加密算法之间具有对应关系,并且该对应关系可以是预先定义的。在确定了加密算法之后,便可以确定加密块长度。
在本申请实施例中,该加速卡接收到的并不是来自SSL的待加密数据,而是经过了TCP层、IP层封装处理后的报文。由于对于程序来说,可见的是TCP报文,因此,将该加速卡接收到的报文称为TCP报文。事实上,该TCP报文可以经过IP层封装后到达加速卡。
为了便于区分和说明,将该第一TCP报文中所承载的SSL数据称为第一SSL数据,可以理解该第一TCP报文中所承载的SSL数据可能并不是完整的SSL数据,而是第一SSL数据的一部分,该第一SSL数据可能被承载在包括该第一TCP报文在内的至少一个TCP报文中传输。可以理解的是,该多个TCP报文可以基于相同的TCP连接传输。事实上,只要具有相同的源端口、目的端口、源IP、目的IP以及TCP协议号,上文中所说明的来自应用层的数据都可以基于相同的TCP连接传输。
由于在本申请中,网卡被配置于加速卡中,该报文可经由加速卡中的网卡再被发送至第二设备。当报文经由配置于处理器和加速卡之间的总线到达加速卡时,加速卡可以执行步骤420和430。
在步骤420中,加速卡根据预先获取的映射关系,确定用于加密第一TCP报文的加密信息,该加密信息至少包括:加密算法和加密参数。
由上文中的描述可知,SSL实体可通过SSL握手协议协商加密算法、加密密钥等参数。在本申请实施例中,可以将通过SSL握手协议协商确定的加密算法、加密密钥等参数统称为加密信息。
在本申请实施例中,第一设备的SSL实体在与第二设备的SSL实体协商完加密信息后,可以建立一个TCP连接与加密信息的映射关系,并将该映射关系发送给加速卡,加速卡可以保存该映射关系。在本申请实施例中,该TCP连接可以由IP五元组信息表征。
当加速卡从接收到的第一TCP报文的TCP报文头以及IP报文头中获取了承载该第一TCP报文的TCP连接的IP五元组信息时,便可以将该映射关系中IP五元组信息所对应的加密信息确定为用于加密该第一TCP报文的加密信息,进而确定加密块长度。
需要说明的是,由于第一SSL数据在TCP层可能被切分并承载在多个TCP报文中,该第一TCP报文可能为该多个TCP报文中的某一个。用于承载该第一SSL数据的多个TCP报文都可以是通过同一个TCP连接来承载的,因此,用于加密的加密信息也可以是相同的。
在步骤430中,加速卡根据加密信息,以加密块长度为单位,对第一TCP报文中承载的待加密数据进行加密处理,得到第二TCP报文。
可以理解,该第二TCP报文即加密处理后的第一TCP报文。也就是说,该加速卡可以仅对第一TCP报文的净荷(可以理解,第一TCP报文的净荷为SSL消息)中的待加密数据进行加密处理,第一TCP报文中的SSL消息头、TCP报文头以及IP报文头可以不做改变。可选地,该加速卡在对待加密数据进行加密处理后,可以重新计算TCP报文头中的校验和,以替换TCP报文头中原有的校验和。
需要说明的是,校验和可用于校验报文。任何经过修改的报文都可以重新计算校验和。例如,第一TCP报文中承载的数据因经过了加密处理而被修改,可以重新计算校验和。TCP校验和可用于校验报文中的数据。应理解,校验和的具体计算方法和校验方法可以与现有技术相同。为了简洁,这里省略对其具体过程的详细说明。
在某些加密算法中,例如,密码分组链接模式(Cipher Block Chaining,CBC),需要前一个加密数据块的信息参与下一个数据块的加密计算。因此,在加密上上一个TCP报文时,该加速卡可以记录上一个TCP报文的最后一个加密的数据块的信息,以便于下一个TCP报文的加密计算。
可选地,该方法400还包括:
该加速卡保存下一个报文加密所必要的信息。
具体地,信息可包括:初始化向量或前一个TCP报文加密得到的密文等。应理解,CBC模式为现有技术中比较常用的一种加密模式,为了简洁,本申请中省略对该模式的具体方法的详细说明。
在步骤440中,加速卡向第二设备发送该第二TCP报文。
在本申请实施例中,由于将网卡与加速卡具有连接关系,加速卡可以经由网卡直接将该第二TCP报文经由网卡发送至第二设备。
在本申请实施例中,由于第一TCP报文是第一SSL数据切分得到的多个TCP报文中的一个,该第一TCP报文中的待加密数据的长度并不一定是加密块长度的整数倍。假设该第一TCP报文的待加密数据的长度为L比特,该加密块长度为m比特,mod(L,m)=n,L、m、n均为正整数,且L>m>1,n≠0,则可以通过以下方法来加密该第一TCP报文并发送。下面结合图5详细说明加速卡对第一TCP报文和第三TCP报文进行组合的具体过程。图5是对第一TCP报文和第三TCP报文进行组合的示意图。
如图所示,假设第一TCP报文的下一个报文为第三TCP报文,该第一TCP报文中承载的待加密数据和第三TCP报文中承载的待加密数据属于同一个SSL数据,则该第三TCP报文可用于与第一TCP报文组合进行加密处理。若第三TCP报文的待加密数据的长度为K比特,K≥1,K为整数,且mod(L+K)=0,则可以得到如图中所示的三部分待加密数据,第一部分待加密数据可以为第一TCP报文中的前L-n比特,第二部分待加密数据可以为第一TCP报文中的后n比特和第三TCP报文中的前m-n比特,第三部分待加密数据可以为第三TCP报文中的K-(m-n)比特。可以理解的是,当第三TCP报文中的待加密数据的数据长度较小时,上述第三部分待加密数据的长度可能为0。
可选地,步骤430具体包括:
该加速卡根据该加密信息,以该加密块长度为单位,对该第一TCP报文中的待加密数据的前L-n比特(即,图中所示的第一部分待加密数据)进行加密,得到该第二TCP报文的第一部分;
该加速卡将该第一TCP报文中的待加密数据的最后n比特与第三TCP报文中的待加密数据的前m-n比特组合得到一个加密块(即,图中所示的第二部分待加密数据),该第三TCP报文中的待加密数据与该第一TCP报文中的待加密数据均属于第一SSL数据,且该第三TCP报文为该第一TCP报文的下一个报文;
该加速卡根据该加密信息,对组合得到的加密块进行加密,得到该第二TCP报文的第二部分,该第二TCP报文包括该第二TCP报文的第一部分和该第二TCP报文的第二部分。
加速卡在完成了对第一TCP报文的加密处理后,可通过以下任意一种方式向第二设备发送第二TCP报文。
方式一、加速卡同时向第二设备发送上述第二TCP报文的第一部分和第二TCP报文的第二部分,此情况下,第二TCP报文中承载的已加密的数据长度为L比特。
即,将图5中示出的第一部分待加密数据、第二部分待加密数据加密进行加密处理后,将属于第一TCP报文的前L-n比特数据所对应的加密后数据与最后n比特数据所对应的加密后数据组合成第二TCP报文后发送。此方式中,第二TCP报文中承载的已加密数据的长度可以不变,仍然为L比特。
方式二、加速卡将第二TCP报文中承载的已加密的数据长度修改为L-n比特,依次向第二设备发送上述第二TCP报文的第一部分和第二TCP报文的第二部分。
即,将图5中示出的第一部分待加密数据进行加密处理后发送给第二设备,将图5中示出的第二部分待加密数据和第三部分待加密数据加密处理后一起发送给第二设备。此方式中,前一次发送的第二TCP报文的第一部分中承载的已加密数据的长度可以为L-n比特,后一次发送的报文可以包括第二TCP报文的第二部分(长度为n比特)以及加密后的第三TCP报文(长度为L比特),该报文中承载的已加密数据的长度可以为L+n比特,或者,后一次发送的报文可以仅包括第二TCP报文的第二部分(长度为n比特)以及加密后的第三TCP报文中的前m-n比特,而将第三TCP报文的剩余的L-(m-n)比特单独发送,也就是将原来的两个报文拆分成了加密后的三个TCP报文(即,分别对应于图5中的三个部分)。
应理解,以上列举的加密第一TCP报文和发送第二TCP报文的具体实现方式仅为本申请提出的可能的实现方式,不应对本申请构成任何限定。还应理解,以上列举的第一TCP报文、第二TCP报文以及第三TCP报文中承载的数据的长度仅为便于理解而给出的示例,不应对本申请构成任何限定。
可选地,该方法400还包括:步骤450,加速卡将第二TCP报文保存在该加速卡的缓存中。
其中,该缓存可用于保存已经发送出去但未接收到对端(例如,第二设备)的确认(Acknowledge,ACK)消息的报文。
可选地,该方法400还包括:步骤460,该加速卡在缓存表中记录该第二TCP报文的物理地址、TCP连接的连接号,更新缓存表中TCP报文的序列号范围。
为便于加速卡查找报文,该加速卡可以建立缓存表,该缓存表中可记录至少一个TCP报文的物理地址、TCP连接的连接号,以及该至少一个TCP报文的序列号范围。
该加速卡可以在每发送出一个TCP报文之后更新缓存表,增加发送出去的TCP报文的相关记录,例如,物理地址,TCP连接,并更新缓存中所保存的TCP报文的序列号范围。该加速卡还可以在接收到ACK消息后,将缓存中对应的TCP报文删除,即,释放该TCP报文在缓存中占用的存储资源,并删除缓存表中该TCP报文的物理地址、TCP连接,更新缓存中所保存的TCP报文的序列号范围。
可选地,在步骤440之后,该方法400还包括:
加速卡接收ACK消息;
该加速卡将接收到的ACK消息转发给处理器。
具体地,由于第二设备所发送的ACK消息无法被加速卡解读,可以由加速卡转发至第一设备的处理器中,由该处理器来解读并确定是否需要对已发送的报文(例如,第二TCP报文)发起重传。
若该处理器接收到的是ACK消息,则该ACK消息中的确认号用于指示被对端(例如,第二设备)成功接收到的TCP报文的序列号。具体地说,可以认为所有序列号小于该ACK消息中的确认号的TCP报文都已经被成功接收到。换句话说,该ACK消息可以理解为是针对某一个或多个TCP报文的ACK消息,或者说,用于通知第一设备未被成功接收到的TCP报文的消息,也可以被理解为是针对丢失的TCP报文的重传请求的一种实现方式。在本申请实施例中,若第二TCP报文被第二设备成功接收到,则该处理器接收到的ACK消息中的确认号大于该第二TCP报文的序列号。
应理解,这里所示例的根据ACK消息中序列号与确认号的关系确定被成功接收到的TCP报文的方法为示例性说明,而不应对本申请构成任何限定。本申请对序列号与确认号的关系并不做限定。例如,可以将序列号小于或等于确认号的TCP报文认为是被成功接收到的报文。
若该处理器在预设的时间长度内未接收到针对某一TCP报文的ACK消息,则该处理器认为该TCP报文未被对端成功接收,会自动发起对该TCP报文的重传。
在本申请实施例中,如果该第一设备的处理器接收到来自第二设备的针对第二TCP报文的ACK消息,可选地,该方法400还包括:
该加速卡从缓存中删除该第二TCP报文,并更新缓存表。
具体地,当该处理器接收到的确认消息中的确认号为该第二TCP报文的序列号时,则认为该第二TCP报文已经被第二设备成功接收到,处理器可以向加速卡发送删除缓存和更新缓存表的指令,以指示加速卡将该第二TCP报文从缓存中删除,以释放该第二TCP报文在缓存中占用的存储空间,并更新缓存表,将该第二TCP报文的物理地址、TCP连接的记录删除,并重新确定该缓存中所保存的TCP报文的序列号范围。
如果该第一设备的处理器在预设的时间长度内未接收到针对该第二TCP报文的ACK消息,可选地,该方法400还包括:
该加速卡重传该第二TCP报文。
具体地,当该处理器在预设的时间长度内未接收到针对该第二TCP报文的ACK消息时,则该处理器发起第一TCP报文的重传。即,该处理器可以重新发送第一TCP报文至加速卡。加速卡在接收到来自处理器的第一TCP报文时,并不知道该第一TCP报文是初传的报文还是重传的报文,可以直接对接收到的该第一TCP报文进行加密处理并发送,也可以根据该第一TCP报文的序列号从缓存中查找与该序列号相同的已加密的TCP报文(即,第二TCP报文)。
则,可选地,在步骤420之前,该方法400还包括:
步骤470,该加速卡根据预先记录的缓存表和第一TCP报文的序列号,确定该加速卡的缓存中是否保存第二TCP报文。
该加速卡在该缓存中保存该第二TCP报文的情况下,发送该第二TCP报文。
相对应地,该加速卡在该缓存中未保存第二TCP报文的情况下,该加速卡可以认为接收到的第一TCP报文为初传报文,需要对该第一TCP报文中承载的待加密数据进行加密处理,即,该加速卡可通过执行上述方法400中的步骤420至步骤440来完成对该第一TCP报文的加密处理。
基于上述技术方案,本申请实施例的传输报文的方法可以在处理器完成了数据报文的封装等处理后再由加速卡对待加密数据进行加密处理,相比于现有技术中先将数据发送到加速卡进行加密再返回SSL进行各协议层的封装的该处理来说,减少了数据在加速卡与处理器之间来回传递的次数,有利于减小数据传递带来的处理器与内存间的带宽开销和传输时延,从而更加凸显出加速卡带来的加速效果,从整体上来说更有利于提高数据传输效率。
图6从设备交互的角度示出了本申请另一实施例提供的传输报文的方法500的示意性流程图。具体地,图6示出了报文由第一设备发送至第二设备的具体过程。其中,在以下示出的方法500中,第一设备和第二设备可以为对等且具有通信连接关系的设备。该第一设备中配置有处理器和加速卡。
如图5所示,该方法500包括步骤501至步骤517下面对方法500进行详细描述。
在步骤501中,第一设备的应用层实体生成应用层数据,并将该应用层数据发送至SSL。
在步骤502中,SSL实体根据接收到的应用层数据,进行切分、填充,得到待加密数据。
具体地,SSL实体可以根据SSL消息的长度限制,将来自应用层的数据切分为至少一个SSL数据块。并可进一步根据预先确定的加密信息,确定加密块长度,以根据加密块长度,对接收到的应用层数据进行填充,以得到待加密数据。该待加密数据的数据长度为加密块长度的整数倍。对于下层来说,该待加密数据为SSL数据。
在步骤503中,SSL实体调用API接口,以通过API接口调用加速卡驱动。
由于SSL实体在得到了待加密数据后,希望能够将待加密数据发到加速卡进行加密处理。因此,SSL实体可以将待加密数据和调用的函数名(即,与加密算法对应的函数)发送到API接口,API接口可以进一步将待加密数据和调用的函数名发送到加速卡驱动。
需要说明的是,加速卡驱动可以理解为是API接口与加速卡交互的接口,而API接口则可以理解为是第一设备的处理器与加速卡驱动交互的接口。具体地说,当第一设备的处理器需要对数据进行加解密处理时,可以通过调用API接口来调用软件或硬件来执行加解密处理。API接口优先调用软件来执行加解密处理,因此,通过调用加速卡驱动来启用加速卡。在本申请中,加速卡驱动以及API接口都可以设置于第一设备中,可以理解为处理单元,例如,可以为处理器中用于实现不同功能的单元。在本申请中,为方便理解,将用于实现不同功能的单元称作不同的实体,例如,用于实现加速卡驱动功能的单元可以称为加速卡驱动实体。后文中,为了简洁,省略对相同或相似情况的说明。
在步骤504中,加速卡驱动实体向SSL实体返回待加密数据。
在本申请实施例中,加速卡驱动实体在接收到待加密数据时,暂未将该待加密数据发送到加速卡中,而是将原数据返回给SSL实体。而SSL实体并不知道加速卡驱动发送来的数据是未加密的数据,认为该数据已经经过了加密处理,继续执行步骤505。
在步骤505~506中,SSL实体将接收到的数据封装为SSL消息,并发送给TCP实体。
可以理解的是,来自应用层的数据在SSL层可能被切分为至少一个SSL数据块,该至少一个SSL数据块经封装后得到至少一个SSL消息。
在步骤507~508中,TCP实体对接收到的SSL消息进行切分和封装,得到多个TCP报文;并将该多个TCP报文发送给IP实体,从而发送至加速卡。
由于TCP实体在得到了SSL消息之后,可以根据TCP报文的长度限制,将来自SSL的每个SSL消息切分为至少一个TCP数据,并通过TCP层的封装处理,得到至少一个TCP报文。应理解,本申请对于TCP报文中承载的数据长度不作限定。若同一个SSL消息经TCP实体切分后得到多个TCP报文中,该多个TCP报文中的任意两个TCP报文承载的数据的长度可以相同或者不同。
经TCP实体封装后得到的TCP报文可被进一步发送至IP层,由IP实体对TCP报文进行封装处理,然后发送至加速卡。
应理解,步骤507~508中,TCP实体对数据进行切分、封装,IP实体对数据进行封装的具体过程可以与现有技术相同,为了简洁,这里省略对该具体过程的详细说明。还应理解,TCP实体、IP实体对来自上层的数据进行的处理可能并不仅限于切分和封装,上述列举的在各协议层的处理不应对本申请构成任何限定,本申请对于各协议层对数据进行的处理不做限定。由于对于程序来说,可见的是TCP报文,所以在本申请中,将处理器发送给加速卡的报文称为TCP报文。
在步骤509中,加速卡根据接收到的TCP报文的序列号,确认该接收到的TCP报文是否为重传报文。
由于加速卡在将初传的TCP报文加密处理后可以在缓存中保存备份(参见下文中步骤512),直到确认该初传的TCP报文被对端成功接收,才可能将该备份删除。因此,当加速卡接收到来自处理器的TCP报文时,加速卡可以在缓存中查找是否有与该接收到的TCP报文具有相同序列号的报文,若有,则认为该接收到的TCP报文为重传报文,可以直接执行步骤511;若没有,则认为该接收到的TCP报文为初传报文,可以先执行步骤510。
在步骤510~511中,加速卡对接收到的TCP报文进行加密处理,并将加密处理后的TCP报文发送给第二设备。
具体地,加速卡可依次对接收到的每个TCP报文进行加密处理。应理解,加速卡对TCP报文进行加密处理和发送的具体过程可以参考上文中结合图4说明的方法400中步骤420至步骤440的具体过程,为了简洁,这里不再赘述。
在步骤512中,加速卡将发送出去的已加密的TCP报文保存在缓存中,并更新缓存表。
加速卡可以将发送出去的已加密的TCP报文暂存在缓存中,在接收到针对上述已加密的TCP报文的确认消息后,将该已加密的TCP报文从缓存中删除,释放其在缓存中占用的存储空间。加速卡可以进一步更新缓存表,将新保存的TCP报文的物理地址、用于承载TCP报文的TCP连接的连接号保存在缓存表中,并更新该缓存表中保存的TCP报文的序列号范围。
在步骤513中,加速卡接收来自第二设备的ACK消息,并将该ACK消息转发给处理器。
处理器可以根据接收到的ACK消息中的确认号,确定被第二设备成功接收到的TCP报文(例如,记作TCP报文#1)的序列号。在一种可能的实现方式中,当该ACK消息中的确认号大于TCP报文的序列号时,则认为该TCP报文被成功接收到。
在步骤514中,处理器向加速卡发送第一指令,以指示加速卡删除TCP报文的缓存,并更新缓存表。
在步骤515中,加速卡根据处理器发送的第一指令,删除TCP报文,释放缓存,并更新缓存表。
处理器可以将TCP报文#1的序列号通过第一指令指示给加速卡,加速卡可以根据第一指令中所指示的TCP报文#1的序列号,从缓存中删除该TCP报文#1,并将缓存表中与TCP报文#1相关的记录删除,更新缓存表中保存的TCP报文的序列号范围。
在步骤516中,处理器在未接收到来自第二设备的ACK消息的情况下,重传上述TCP报文。
处理器可以根据接收到的ACK消息中的确认号,确定未被成功接收到的TCP报文,将未被成功接收的TCP报文重传给第二设备;处理器也可以将用于承载同一个SSL数据的至少一个TCP报文全部重传第二设备。
在步骤517中,加速卡在接收到来自处理器的重传报文时,从缓存中查找上述TCP报文所对应的已加密的TCP报文,并发送给第二设备。
在上文中结合图6示出的方法500中,从设备交互的角度示出了第一设备向第二设备发送报文的具体过程。但应理解,图中示例性地画出了方法500中的各个步骤,但并不代表该方法500中的每个步骤都要执行,各步骤是否执行以及执行的先后顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
基于上述技术方案,本申请实施例的传输报文的方法可以在处理器完成了数据报文的封装等处理后再由加速卡对待加密数据进行加密处理,相比于现有技术中先将数据发送到加速卡进行加密再返回SSL进行各协议层的封装的该处理来说,减少了数据在加速卡与处理器之间来回传递的次数,有利于减小数据传递带来的处理器与内存间的带宽开销和传输时延,从而更加凸显出加速卡带来的加速效果,从整体上来说更有利于提高数据传输效率。
图7从加速卡的角度示出了本申请又一实施例提供的传输报文的方法600的示意性流程图。具体地,图7示出了第一设备对接收到的报文进行解密处理的具体过程。在以下示出的方法600中,第一设备和第二设备可以为对等且具有通信连接关系的设备。例如,第一设备可以为图1中所示的主机110,第二设备可以为图1中所示的主机120。该第一设备中配置有加速卡和处理器。例如,该加速卡可以为图1中所示的配置于主机110中的加速卡112,该处理器可以为图1中所示的配置于主机110中的处理器111。
如图7所示,该方法600包括步骤610至步骤670。下面对方法600进行详细描述。
在步骤610中,加速卡接收来自第二设备的至少一个TCP报文。
其中,该至少一个TCP报文中的每个TCP报文中承载有待解密数据,该加速卡接收到的至少一个TCP报文可以属于同一个SSL数据,例如记作第一SSL数据。
具体地,该第一SSL数据的长度可能较小,可以承载在一个TCP报文中,也就是说,一个TCP报文的净荷中包括完整的第一SSL数据;该第一SSL数据的长度也有可能较大,可以承载在多个TCP报文中,该多个TCP报文的净荷组合后得到的数据中包括完整的第一SSL数据。这里,一个完整的SSL数据可以是第二设备在SSL生成的一个SSL消息中的净荷数据。
若该第一SSL数据仅由一个TCP报文承载,则该加速卡在步骤610中接收到的TCP报文就承载了完整的第一SSL数据,该加速卡可以直接执行步骤620和步骤630;若该第一SSL数据由多个TCP报文承载,可选地,加速卡将接收到的TCP报文暂存在缓存中,根据序列号将接收到的TCP报文进行排序,在确认接收到的多个TCP报文的净荷可以构成完整的第一SSL数据的情况下,执行步骤620和步骤630;或者,加速卡也可以在接收到该多个TCP报文中的部分报文的情况下,执行步骤620和630,同时执行步骤610中的步骤6102和步骤6103。
下面分别对各步骤进行详细描述。
在步骤620,加速卡根据预先获取的映射关系,确定用于解密该第一SSL数据的解密信息。
由上文中的描述可知,在第二设备发送数据之前,第二设备的SSL实体与第一设备的SSL实体之间便可通过SSL握手协议协商加解密算法、加解密密钥等参数。在本申请实施例中,可以将第一设备的SSL实体通过SSL握手协议协商确定的解密算法、解密密钥等参数统称为解密信息。
在本申请实施例中,第一设备的SSL实体在与第二设备的SSL实体协商完解密信息后,可以建立一个TCP连接与解密信息的映射关系,并将该映射关系发送给加速卡,加速卡可以保存该映射关系。在本申请实施例中,该TCP连接可以由IP五元组信息表征。
当加速卡从接收到的TCP报文的TCP报文头以及IP报文头中获取了承载该至少一个TCP报文的TCP连接的IP五元组信息时,便可以将该映射关系中IP五元组信息所对应的解密信息确定为用于解密该至少一个TCP报文的解密信息。
在步骤630中,该加速卡根据解密信息对接收到的至少一个TCP报文进行解密处理,得到至少一个解密后的TCP报文,并向处理器发送该至少一个解密后的TCP报文。
具体地,加速卡可以根据在步骤620中确定的解密信息,对步骤610中接收到的至少一个TCP报文进行解密处理,得到至少一个解密后的TCP报文。解密处理的过程中,各TCP报文的SSL消息头、TCP报文头和IP报文头可以不作改变。可选地,该加速卡在对待解密数据进行解密处理后,可以重新计算TCP报文头中的校验和,以替换TCP报文头中原有的校验和。
加速卡可以每解密完一个TCP报文向处理器发送一个解密后的TCP报文,加速卡也可以在完成了该第一SSL所对应的至少一个TCP报文之后,向处理器发送该至少一个解密后的TCP报文。本申请对此不做限定。
在某些加密算法中,例如,密码分组链接模式(CBC),需要前一个加密数据块的信息参与下一个数据块的加密计算。因此,在解密过程中,可能需要等待承载该第一SSL数据的TCP报文全部接收到后才能够完成解密。
可选地,步骤610具体包括:
步骤6101,加速卡接收来自第二设备的初传TCP报文,该初传TCP报文属于第一SSL数据;
步骤6102,加速卡确定承载该第一SSL数据的TCP报文是否丢包;
步骤6103,加速卡接收来自第二设备的重传TCP报文。
具体地,加速卡可通过重复执行上述步骤6102和步骤6103步骤来接收重传TCP报文,直到接收到的TCP报文构成完整的第一SSL数据。
在一种可能的实现方式中,该加速卡在接收到来自第二设备的TCP报文时,可以根据SSL数据长度,确定是否丢包。具体地,在TCP报文中,下一个TCP报文的序列号可以是上一个TCP报文的序列号与报文长度之和,例如,上一个TCP报文的序列号为200,报文长度为200,则下一个TCP报文的序列号为400。基于上述特点,加速卡可以根据接收到的TCP报文是否有丢包。
举例来说,假设该第一SSL数据的长度为1000,用于承载该第一SSL数据的多个TCP报文的序列号和报文长度如下表中所示:
序号 | TCP报文的序列号 | TCP报文的长度 |
#1 | 0 | 200 |
#2 | 200 | 300 |
#3 | 500 | 420 |
#4 | 920 | 80 |
可以看到,正常序的TCP报文,上一个报文的序列号与报文长度之和为下一个报文的序列号。如果该加速卡仅接收到TCP报文#1和TCP报文#4,序列号和报文长度分别为0、200以及920、80,则可以发现接收到的上一个报文的序列号与报文长度之和与下一个报文的序列号不等,也就是说,该加速卡接收到的这两个TCP报文之间的报文丢失。
在另一种可能的实现方式中,第二设备在预设的时间长度内未接收到针对某一个或多个TCP报文的ACK消息,则认为该一个或多个TCP报文丢包,可以主动发起重传。
例如,上表中列举的四个TCP报文中,如果加速卡仅接收到报文#1和报文#2,则该ACK消息中的确认号为500,也就是说,序列号为500之前的报文都已经被成功接收到,但序列号在500之后的报文都未被成功接收到,即,发生了丢包。
因此,当加速卡接收到承载该第一SSL数据的TCP报文时,可以根据接收到的TCP报文中报文长度和序列号的关系,确定是否出现丢包。
综上,在本申请实施例中,假设该第一SSL数据承载于P个TCP报文中,则加速卡可以通过以下任意一种方式来接收该P个TCP报文:
方式a、该加速卡接收来自第二设备的P个初传的TCP报文。
即,该P个TCP报文在传输过程中未出现丢包,该加速卡在首次接收时便成功接收到该P个TCP报文。
方式b、该加速卡接收来自第二设备的Q(1≤Q<P,Q为整数)个初传的TCP报文,此后,接收来自第二设备的T(P-Q≤T≤P,T为整数)个重传的TCP报文。
即,该P个TCP报文在传输过程中出现了丢包,该加速卡在首次接收时仅接收到部分TCP报文,例如,Q个,此后,又接收到来自第二设备的重传报文,该重传报文的数量可以为[P-Q,P]中的任意值,例如,第二设备可以直接将该P个TCP报文重新发送给加速卡,也可以将丢失的P-Q个TCP报文重新发送给加速卡。
需要说明的是,加速卡在接收到第一SSL数据时,可能并不知道该第一SSL数据承载在几个TCP报文中,但加速卡可以通过上文中列举的方法来确定是否丢包。但应理解,上文中描述的加速卡确定是否丢包的方法仅为一种可能的实现方式,但不应对本申请构成任何限定。例如,第二设备也可以在发送第一SSL数据的同时向加速卡通知承载该第一SSL数据的TCP报文的数量,加速卡可以直接根据实际接收到的TCP报文的数量来判断是否丢包。
进一步地,在方式b中,第二设备可基于以下任意一种情况重发TCP报文:
情况一、第二设备在预设的时间长度内未接收到来自第一设备的确认消息。
即,第二设备在未接收到ACK消息的情况下,认为此前发送的TCP报文未被第一设备成功接收到,第二设备可以主动发起TCP报文的重传。在这种情况下,第二设备可以将承载该第一SSL数据的P个TCP报文全部重传。
其中,该预设的时间长度可以是预先定义的,本申请对于该时间长度的取值不做限定。
情况二、第二设备基于接收到的重传请求。
即,第一设备可以在确认丢包的情况下,向第二设备发送重传请求,以触发第二设备重传。可选地,该重传请求可以为ACK消息,即,通过ACK消息确定未被成功接收到的TCP报文,以便第二设备针对丢包的TCP报文进行重传。当然,第二设备也可以将P个TCP报文全部重传给第一设备。
在情况二中,可选地,该方法600还包括:加速卡向处理器发送Q个TCP报文中的R个TCP报文,该R个TCP报文中的至少部分报文的序列号不连续,Q≥R≥T>1,T为整数。
即,加速卡在接收到P个TCP报文中的部分报文时,可以将接收到的报文中出现乱序的报文上送给处理器,或者直接将接收到的报文全部上送给处理器,以促使处理器基于乱序报文向第二设备发送重传请求。
可选地,该方法600还包括:加速卡向处理器发送丢包信息,该丢包信息指示需要重传的TCP报文。
加速卡可以根据接收到的Q个TCP报文的序列号,对Q个TCP报文进行排序,以确定未接收到的TCP报文,并向处理器发送丢包信息,该丢包信息中携带未接收到的TCP报文的序列号或者接收到的TCP报文的序列号,以促使处理器基于丢包信息向第二设备发送重传请求。
需要说明的是,该T个重传的TCP报文也有可能并不是经过一次传输全部被加速卡成功接收到,在该T个TCP报文重传的过程中,还有可能出现丢包的情况,第二设备可以多次发送该T个TCP报文,直到加速卡全部成功接收到。
在本申请实施例中,可以在加速卡的缓存中设置一个计数器,初始值可以为0,该加速卡每接收到一个SSL数据,计数器中的计数值可加1,由此可以记录加速卡接收到的SSL数据,以避免丢失,并且给后文步骤650中获取MAC验证结果带来方便。
进一步地,加速卡可以采用以下至少一种方式来执行步骤630,以解密和上送TCP报文:
方式A、
加速卡等待P个TCP报文全部到达后,对该P个TCP报文进行排序,并根据解密信息对排序后的P个TCP报文进行解密处理,得到P个解密处理后的TCP报文,并向处理器发送该P个解密处理后的TCP报文。
其中,该P个TCP报文可以为初传报文,也可以为部分重传或全部重传的报文。
方式B、
加速卡对接收到的Q个初传TCP报文进行排序,对该Q个TCP报文中的正常排序的S(S≤Q,且S为正整数)个TCP报文进行解密处理,得到S个解密处理后的TCP报文,并向SSL发送该S个解密处理后的TCP报文和剩余的Q-S个未解密处理的TCP报文。
此后,加速卡对接收到的T个重传TCP报文进行排序,对该T个TCP报文中剩余的P-S个TCP报文进行解密处理,得到P-S个解密处理后的TCP报文,并向加速卡驱动发送本次解密得到的P-S个解密处理后的TCP报文。
需要说明的是,加速卡在接收到Q个初传的TCP报文时,可能其中仅有部分报文(例如,S个)的序列号是正常排序的,则加速卡先对该正常排序的部分报文进行解密处理。可以理解,S≤Q。
在方式B中,加速卡在完成对S个TCP报文的解密处理后,可以在向处理器上送数据的时候同时指示解密处理后的TCP报文在P个TCP报文中的偏移值,或者说,解密处理后的数据在第一SSL数据中的偏移值。例如,该第一SSL数据的长度为1M字节,该S个TCP报文的长度为512字节,则该S个TCP报文在P个TCP报文中的偏移值为50%。应理解,该偏移值可以通过百分比的形式表征,也可以直接通过已解密的数据长度来表征,本申请对此不做限定。
该偏移值可以保存在加速卡驱动的缓存中。一种可能的设计中,可以在加速卡驱动的缓存中记录SSL数据的标识与偏移值的对应关系。加速卡完成了P个TCP报文的解密处理后,可以将上一次传输时丢失的TCP报文(可以为未解密的TCP报文)上送SSL,并将P-S个解密处理后的TCP报文保存在加速卡驱动的缓存中。处理器在接收到上一次传输时丢失的TCP报文的时候,便可以认为该P个TCP报文全部接收到,调用API接口以对接收到的TCP报文中的数据进行解密处理。在被API接口调用以启用加速卡进行解密处理时,加速卡驱动实体可以根据预先记录的偏移值,将SSL实体发送来的待解密数据中的Q-S个未解密处理的报文替换为P-S个解密处理后的TCP报文。可以理解,这里所说的SSL实体发送来的待解密数据中至少有部分数据是经过解密处理的,但是SSL实体并不知道,而将接收到的TCP报文中承载的数据均认为是待解密数据,并通过调用API接口以对接收到的TCP报文中承载的数据进行解密处理。
方式C、
加速卡对接收到的Q个初传TCP报文进行排序,对该Q个TCP报文中的序列号连续的S(S≤Q,且S为正整数)个TCP报文进行解密处理,得到S个解密处理后的TCP报文,并向SSL发送该S个解密处理后的TCP报文和剩余的Q-S个未解密处理的TCP报文。
此后,加速卡对接收到的T个重传TCP报文进行排序,对该T个TCP报文中剩余的P-S个TCP报文进行解密处理,得到P-S个解密处理后的TCP报文,将本次解密得到的P-S个解密处理后的TCP报文和上一次解密得到的S个解密处理后的TCP报文组合得到P个解密处理后的TCP报文,并向加速卡驱动发送本次解密得到的P-S个解密处理后的TCP报文。
可选地,该方法600还包括:
步骤640,对解密处理后的第一SSL数据进行MAC验证。
加速卡可以在完成了对P个TCP报文的解密后对P个解密处理后的TCP报文中承载的数据进行MAC验证,以确定该第一SSL数据是否完整。
应理解,加速卡对解密后的TCP报文进行MAC验证的具体过程可以与现有技术相同,为了简洁,这里省略对该具体过程的详细说明。
可选地,该方法600还包括:
步骤650,加速卡向处理器发送MAC验证的结果。
加速卡在完成了对该第一SSL数据的MAC验证后,可以将MAC验证的结果发送至配置于第一设备的加速卡驱动实体。需要说明的是,加速卡驱动实体中的缓存对处理器中的各协议实体是不可见的,在API接口调用该加速卡驱动的时候,可以返回该MAC验证的结果。
可选地,该加速卡驱动实体中可以建立一个索引表,该索引表可以包括SSL数据的标识与MAC验证结果的对应关系。
具体地,该SSL数据可以通过承载该SSL数据的SSL消息的序号以及承载该SSL消息的TCP连接的连接号来标识,也就是说,一个SSL消息的序号和TCP连接号可以唯一地确定一个SSL消息。但应理解,通过SSL消息的序号和TCP连接的连接号标识SSL消息的方法仅为一种可能的实现方式,不应对本申请构成任何限定,本申请并不排除采用其它方式来标识SSL消息的可能。
可选地,该索引表可以包括接收到的所有的SSL消息的序号以及TCP连接的连接号与MAC验证结果的对应关系,该索引表也可以仅包括验证失败的SSL消息的序号以及TCP连接的连接号与MAC验证结果的对应关系,该索引表也可以仅包括验证成功的SSL消息的序号以及TCP连接的连接号与MAC验证结果的对应关系。本申请对此不做限定。
可选地,该索引表还可以包括SSL数据的标识、SSL数据的偏移量与MAC验证结果的对应关系。其中,SSL数据的偏移量是在上文中结合步骤630的方法B中所描述的已解密的TCP报文在P个TCP报文中的偏移。
在本申请实施例中,加速卡在将P个解密处理后的TCP报文上送到处理器后,首先到达的是IP层和TCP层,由于对于处理器而言,并不知道接收到的TCP报文是加速卡发送的,也不知道接收到的TCP报文是否解密。IP实体和TCP实体仍然可以按照现有的处理方法对接收到的TCP报文进行解封装处理,在TCP层将接收到的报文中的净荷提取出来后,组合得到完整的第一SSL数据。此时,SSL实体可以调用API接口,以通过API接口调用加速卡驱动,希望通过加速卡对该第一SSL数据进行解密处理。
当SSL实体调用API接口以解密接收到的SSL数据时,便可以通过调用该加速卡驱动实体获取上述第一SSL数据的MAC验证的结果。具体地,SSL实体可以将接收到的数据和调用的函数名发送到API接口,API接口可以进一步将接收到的数据和调用的函数名发送到加速卡驱动中。加速卡驱动可以根据接收到的SSL数据的序号和TCP连接的连接号,查询索引表,以得到MAC验证的结果。如果该第一SSL数据的MAC验证成功,则该加速卡驱动将接收到的数据返回,该数据也就是经加速卡解密处理后的数据;如果该第一SSL数据的MAC验证失败,则该加速卡驱动直接返回验证失败的结果,不返回数据,由此SSL实体认为本次数据传输失败。
可选地,该方法600还包括:
步骤660,加速卡接收来自处理器的第二指令,该第二指令中指示承载该第一SSL数据的TCP连接的连接号;
步骤670,加速卡根据该第二指令,删除该TCP连接所对应的映射关系以及接收到的TCP报文,以释放缓存。
在TCP报文丢失的情况下,通常都需要由处理器向第二设备发送重传请求,以触发第二设备重传。然而,如果由于TCP连接的问题造成某些TCP报文一直丢失,是没有办法通过重传来解决的,因此,可以通过预先设定重传次数的方法来控制重传。例如,处理器或第二设备在针对某一TCP报文的重传次数超出预设的重传次数阈值的情况下,可以中断当前的TCP连接,同时通知加速卡删除该TCP连接的相关信息。
具体地,加速卡可以在接收到该第二指令的情况下,认为中断本次SSL数据的传输,将预先获取的TCP连接与加解密信息的映射关系以及基于此TCP连接接收到的TCP报文从缓存中删除,以将缓存中的存储空间释放出来。由此,可以减小设备重传带来的消耗。
应理解,上述根据预先设定的重传次数的方法来控制重传仅为一种可能的实现方式,例如,该第一设备或第二设备也可以预先设定数据传输的时间阈值,在传输时间超出该时间阈值的情况下,中断该TCP连接。本申请对于控制重传的具体方式不做限定。
基于上述技术方案,本申请实施例的传输报文的方法可以在加速卡完成了数据的解密后再向处理器发送TCP报文,相比于现有技术中处理器先提取出待解密数据发送到加速卡进行解密再将解密后的数据返回处理器的过程来说,减少了数据在加速卡与处理器之间来回传递的次数,有利于减小数据传递带来的处理器与内存间的带宽开销和传输时延,从而更加凸显出加速卡带来的加速效果,从整体上来说更有利于提高数据传输效率。
图8从设备交互的角度示出了本申请再一实施例提供的传输报文的方法的示意性流程图。具体地,图8示出了报文由第二设备发送之第一设备的具体过程。其中,在以下示出的方法700中,第一设备和第二设备可以为对等且具有通信连接关系的设备。改第一设备中配置有处理器和加速卡。
如图8所示,该方法700包括步骤710至步骤719。下面对方法700进行详细描述。
在步骤701中,第一设备的加速卡接收来自第二设备的初传的TCP报文。
其中,该加速卡接收到的初传的TCP报文可能为一个,也可能为多个。每个TCP报文中承载有待解密数据,且该待解密数据属于SSL数据,例如记作第一SSL数据。
在步骤702中,该加速卡确定承载该第一SSL数据的TCP报文是否丢包。
换句话说,该加速卡确定在步骤701中接收到的TCP报文是否构成完整的第一SSL数据。加速卡确定TCP报文是否丢包的方法在方法600中已经详细说明,为了简洁,这里不再赘述。
若加速卡确定承载该第一SSL数据的TCP报文有丢包,则执行步骤703~705或直接执行步骤705,或者也可以边执行步骤703~705或步骤705,边执行步骤706;若加速卡确定承载该第一SSL数据的TCP报文没有丢包,则直接执行步骤706。
在步骤703中,加速卡将乱序报文或丢包信息发送至TCP层实体,以触发TCP层实体在步骤704中请求第二设备发起重传。
应理解,TCP层实体可通过重传请求来请求第二设备发起重传。该重传请求可以是ACK消息,或者,新增的一条消息,本申请对此不做限定。重传请求可以理解为处理器发起重传的一种实现方式,而不应对本申请构成任何限定。
在步骤705中,该加速卡接收第二设备发送的重传的TCP报文。
应理解,第二设备可以主动发起TCP报文的重传,也可以基于接收到的重传请求发起TCP报文的重传,本申请对此不做限定。因此,上述步骤703~705并不一定需要全部执行。
若重传次数达到预设的重传预设门限,则该处理器可以中断该TCP连接。
在步骤706中,加速卡接收来自处理器的第二指令,该第二指令中指示承载第一SSL数据的TCP连接的连接号。
在步骤707中,加速卡根据第二指令,删除该TCP连接所对应的映射关系以及接收到的TCP报文,以释放缓存。
应理解,步骤706和步骤707的具体过程在上文的方法600中已经结合步骤660和步骤670详细说明,为了简洁,这里不再赘述。
需要说明的是,上述步骤706和707可以理解为报文传输失败的一种处理方式。在执行完步骤707之后,该数据接收的过程结束,不再执行后续步骤。
若加速卡经过上述步骤701至步骤705接收到的承载该第一SSL数据的全部的TCP报文,则执行步骤708。
在步骤708中,加速卡根据预先获取的映射关系,确定用于解密该第一SSL数据的解密信息。
在步骤709~710中,加速卡对TCP报文进行解密处理,并将解密处理后的TCP报文上送处理器。
具体地,加速卡将解密处理后的TCP报文发送至处理器后,该解密处理后的TCP报文可以最先到达IP层,经过IP实体的解封装后,被上送到TCP层,由TCP层实体执行步骤714。
步骤709~710的具体过程在上文的方法600中已经结合步骤620和步骤630详细说明,为了简洁,这里不再赘述。
另一方面,加速卡在完成了对承载第一SSL数据的TCP报文的解密之后,在步骤711中,加速卡对解密处理后的TCP报文进行MAC验证。
应理解,加速卡对解密后的TCP报文进行MAC验证的具体过程可以与现有技术相同,为了简洁,这里省略对该具体过程的详细说明。
在步骤712中,加速卡向处理器发送MAC验证的结果。
具体地,加速卡向配置于第一设备中的加速卡驱动实体发送MAC验证的结果。
在步骤713中,加速卡驱动实体建立索引表,该索引表中记录SSL数据与MAC验证结果的对应关系。
TCP层实体在步骤710中接收到TCP报文后,执行步骤714,TCP层实体将解封装后的第一SSL消息发送至SSL。
在步骤715中,SSL实体对接收到的第一SSL消息解封装,得到待解密数据。
由于处理器并不知道数据是从加速卡发送过来的,也不知道该数据是经过加速卡解密处理后的数据,SSL实体仍然认为接收到的数据为待解密数据,因此执行步骤714。
在步骤716中,SSL实体调用API接口,以通过API接口调用加速卡驱动。
在步骤717中,加速卡驱动查找在步骤713中建立的索引表中第一SSL数据的MAC验证结果,向SSL实体返回第一SSL数据以及MAC验证结果。
若验证成功,SSL实体在接收到第一SSL数据以及MAC验证成功的结果之后,则执行步骤718;若验证失败,SSL实体在接收到MAC验证失败的结果之后,则SSL实体认为本次数据传输失败,不再执行后续步骤。
在步骤718中,SSL实体对包括第一SSL数据在内的多个SSL数据进行组合,得到应用层数据,并将组合得到的应用层数据发送至应用层。
在步骤719中,加速卡驱动实体删除索引表中第一SSL数据与MAC验证结果的对应关系。
在上文中结合图8示出的方法700中,从设备交互的角度示出了第一设备接收来自第二设备的报文的具体过程。但应理解,图中示例性地画出了方法700中的各个步骤,但并不代表该方法700中的每个步骤都要执行,例如,步骤706和步骤707与步骤703至步骤705为并列的两种处理方式,而不一定全部都要执行。另外,各步骤是否执行以及执行的先后顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。例如,步骤712和步骤713可以与步骤714和步骤715同时执行,又例如,步骤719可以在步骤718之前执行,也可以与步骤718同时执行等。
基于上述技术方案,本申请实施例的传输报文的方法可以在加速卡完成了数据的解密后再向处理器发送TCP报文,相比于现有技术中处理器先提取出待解密数据发送到加速卡进行解密再将解密后的数据返回处理器的过程来说,减少了数据在加速卡与处理器之间来回传递的次数,有利于减小数据传递带来的处理器与内存间的带宽开销和传输时延,从而更加凸显出加速卡带来的加速效果,从整体上来说更有利于提高数据传输效率。
应理解,在本申请实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图9是本申请一实施例提供的一种传输报文的装置800的示意性框图。应理解,图9示出的传输报文的装置800仅为示例,本申请实施例的传输报文的装置还可包括其他模块或单元,或者包括与图9中的各个模块的功能相似的模块,或者并非要包括图9中的所有模块。
具体地,该装置800配置于第一设备中,该第一设备包括处理器和该装置800。如图9所示,该装置800包括:接收单元810、确定单元820、加解密单元830和发送单元840。
其中,该接收模块810用于接收来自处理器的第一传输层控制协议TCP报文,该第一TCP报文中承载有待加密数据,该待加密数据属于安全套接层SSL数据;
该确定单元820用于根据预先获取的映射关系,确定用于加密该第一TCP报文的加密信息,该映射关系指示承载该SSL数据的TCP连接的标识与加解密信息的对应关系,该加密信息至少包括:加密算法和加密参数;
该加解密单元830用于根据该加密信息对该第一TCP报文中承载的待加密数据进行加密处理,得到第二TCP报文,该第二TCP报文为加密处理后的第一TCP报文;
该发送单元840用于向第二设备发送该第二TCP报文。
应理解,图9所示的传输报文的装置800可对应于上述实施例中传输报文的方法中的加速卡,具体地,可以对应于图4或图6中传输报文的方法中的加速卡,并且传输报文的装置800中的各个单元的上述和其它操作和/或功能分别为了实现图4或图6中的传输报文的方法的相应流程,为了简洁,在此不再赘述。
或者,该接收单元810用于接收来自第二设备的至少一个传输层控制协议TCP报文,该至少一个TCP报文中的每个TCP报文中承载有待解密数据;
确定单元820用于根据预先获取的映射关系,确定用于解密该SSL数据的解密信息,该映射关系指示承载该SSL数据的TCP连接的标识与加解密信息的对应关系,该解密信息至少包括:解密算法和解密参数;
加解密单元830用于根据该解密信息对该至少一个TCP报文进行解密处理,得到至少一个解密处理后的TCP报文;
发送单元840用于向该处理器发送该至少一个解密处理后的TCP报文。
应理解,图9所示的传输报文的装置800可对应于上述实施例中传输报文的方法中的加速卡,具体地,可以对应于图7或图8中传输报文的方法中的加速卡,并且传输报文的装置800中的各个单元的上述和其它操作和/或功能分别为了实现图7或图8中的传输报文的方法的相应流程,为了简洁,在此不再赘述。
图10是本申请另一实施例提供的一种传输报文的装置900的示意性框图。应理解,图10示出的传输报文的装置900仅为示例,本申请实施例的传输报文的装置还可包括其他模块或单元,或者包括与图10中的各个模块的功能相似的模块,或者并非要包括图10中的所有模块。
具体地,该装置900配置于第一设备中,该第一设备包括加速卡和该装置900。如图10所示,该装置900包括:发送单元940,用于在重传次数达到预设的重传次数阈值的情况下,或者,在安全套接层SSL数据的传输时间达到与预设的传输时间阈值的情况下,向该加速卡发送第二指令,该第二指令中指示承载安全套接层SSL数据的TCP连接的连接号。
应理解,图10所示的传输报文的装置900可对应于上述实施例中传输报文的方法中的处理器,具体地,可以对应于图7或图8中传输报文的方法中的处理器,并且传输报文的装置800中的各个单元的上述和其它操作和/或功能分别为了实现图7或图8中的传输报文的方法的相应流程,为了简洁,在此不再赘述。
图11是本申请又一实施例提供的一种传输报文的装置1000的示意性框图。应理解,图11示出的传输报文的装置1000仅为示例,本申请实施例的传输报文的装置还可包括其他模块或单元,或者包括与图11中的各个模块的功能相似的模块,或者并非要包括图11中的所有模块。
具体地,该装置1000设置于第一设备中,该第一设备包括加速卡和处理器,该装置1000包括:接收单元1100和发送单元1200。
其中,该接收单元1100用于接收来自安全套接层SSL的加密指令和待加密的SSL数据;
该发送单元1200用于向所述SSL实体返回所述待加密的SSL数据。
应理解,图11所示的传输报文的装置1000可对应于上述实施例中传输报文的方法中的加速卡驱动实体,具体地,可以对应于图4或图6中传输报文的方法中的加速卡驱动实体,并且传输报文的装置1000中的各个单元的上述和其它操作和/或功能分别为了实现图4或图6中的传输报文的方法的相应流程,为了简洁,在此不再赘述。
或者,该接收单元1100用于接收来自安全套接层SSL实体的解密指令以及待解密的SSL数据;
该发送单元1200用于向所述SSL实体发送所述待解密的SSL数据以及所述SSL数据的消息认证码MAC验证成功的结果;或者
该发送单元1200用于向所述SSL实体发送所述SSL数据的MAC验证失败的结果。
应理解,图11所示的传输报文的装置1000可对应于上述实施例中传输报文的方法中的加速卡驱动实体,具体地,可以对应于图7或图8中传输报文的方法中的加速卡驱动实体,并且传输报文的装置1000中的各个单元的上述和其它操作和/或功能分别为了实现图7或图8中的传输报文的方法的相应流程,为了简洁,在此不再赘述。
在具体实现中,上述装置900和装置1000可配置于同一物理设备中。例如,装置900和装置1000可以为(或者配置于)第一设备中的两个不同的处理器,或者,装置900和装置1000可以为配置于同一处理器中的两个模块。本申请对此不做限定。
图12是本发明实施例提供的一种加速卡10的示意性结构图。该加速卡10配置于第一设备中,该第一设备包括处理器和该加速卡10。如图12所示,该加速卡10包括:处理器11、存储器12、通信接口13和总线14。其中,处理器11、存储器12、通信接口13(例如可以为网卡)通过总线14进行通信,也可以通过无线传输等其他手段实现通信。该存储器12用于存储指令,该处理器11用于执行该存储器12存储的指令,该存储器12存储程序代码,且处理器11可以调用存储器12中存储的程序代码,以控制通信接口13收发信息或信号,使得加速卡10执行上述方法400、方法500、方法600或方法700中加速卡的功能、所执行的动作或处理过程。
具体地,处理器11可以调用存储器12中存储的程序代码执行以下操作:
控制通信接口13接收来自处理器的第一TCP报文,该第一TCP报文中承载有待加密数据,该待加密数据属于SSL数据;
根据预先获取的映射关系,确定用于加密该第一TCP报文的加密信息,该映射关系指示承载该SSL数据的TCP连接的标识与加解密信息的对应关系,该加密信息至少包括:加密算法和加密参数;
根据该加密信息对该第一TCP报文中承载的待加密数据进行加密处理,得到第二TCP报文,该第二TCP报文为加密处理后的第一TCP报文;
控制通信接口13向第二设备发送该第二TCP报文。
应理解,该加速卡10可对应于上述方法400或方法500中描述的加速卡,并且加速卡10中的各模块或单元分别用于执行上述方法400或方法500中加速卡的功能和所执行的各动作或处理过程。这里,为了避免赘述,省略其详细说明。
或者,具体地,处理器11可以调用存储器12中存储的程序代码执行以下操作:
控制通信接口13接收来自第二设备的至少一个传输层控制协议TCP报文,该至少一个TCP报文中的每个TCP报文中承载有待解密数据;
在该至少一个TCP报文中承载的待解密数据构成安全套接层SSL数据的情况下,根据预先获取的映射关系,确定用于解密该SSL数据的解密信息,该映射关系指示承载该SSL数据的TCP连接的标识与加解密信息的对应关系,该解密信息至少包括:解密算法和解密参数;
根据该解密信息对该至少一个TCP报文进行解密处理,得到至少一个解密处理后的TCP报文;
控制通信接口13向该处理器发送该至少一个解密处理后的TCP报文。
应理解,该加速卡10可对应于上述方法600或方法700中描述的加速卡,并且加速卡10中的各模块或单元分别用于执行上述方法600或方法700中加速卡的功能和所执行的各动作或处理过程。这里,为了避免赘述,省略其详细说明。
图13是本申请实施例提供的主机20的示意性结构图。如图13所示,该主机20包括:处理器21、存储器22、通信接口23和总线24。其中,处理器21、存储器22、通信接口23通过总线24进行通信,也可以通过无线传输等其他手段实现通信。该存储器22用于存储指令,该处理器21用于执行该存储器22存储的指令,该存储器22存储程序代码,且处理器21可以调用存储器22中存储的程序代码,以控制通信接口23收发信息或信号,使得主机20执行上述方法400、方法500、方法600或方法700中第一设备中各处理单元(例如,处理器、加速卡以及加速卡驱动实体)的功能、所执行的动作或处理过程。
应理解,该主机20可对应于上述400、方法500、方法600或方法700中描述的第一设备,并且主机20中的各模块或单元分别用于执行上述上述400、方法500、方法600或方法700中第一设备中各处理单元的功能和所执行的各动作或处理过程。这里,为了避免赘述,省略其详细说明。
在本申请实施例中,处理器可以是CPU,处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
应注意,本申请实施例可以应用于该加速卡的处理器中,也可以由该加速卡的处理器实现。该处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
应理解,存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch linkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct ram bus RAM,DR RAM)。
还应理解,总线除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (32)
1.一种传输报文的方法,其特征在于,应用于配置有加速卡和处理器的第一设备中,所述方法包括:
所述加速卡接收来自所述处理器的第一传输层控制协议TCP报文,所述第一TCP报文中承载有待加密数据,所述待加密数据属于安全套接层SSL数据;
所述加速卡根据预先获取的映射关系,确定用于加密所述第一TCP报文的加密信息,所述映射关系指示承载所述SSL数据的TCP连接的标识与加解密信息的对应关系,所述加密信息至少包括:加密算法和加密参数;
所述加速卡根据所述加密信息对所述第一TCP报文中承载的待加密数据进行加密处理,得到第二TCP报文,所述第二TCP报文为加密处理后的第一TCP报文;
所述加速卡向第二设备发送所述第二TCP报文。
2.根据权利要求1所述的方法,其特征在于,所述加速卡根据所述加密信息对所述第一TCP报文中承载的待加密数据进行加密处理,得到第二TCP报文,包括:
所述加速卡根据所述加密信息中的加密算法,确定加密块长度;
所述加速卡根据所述加密信息,以所述加密块长度为单位,对所述第一TCP报文中承载的待加密数据进行加密处理,得到所述第二TCP报文。
3.根据权利要求2所述的方法,其特征在于,所述第一TCP报文中的待加密数据的长度为L比特,所述加密块长度为m比特,且mod(L,m)=n,L、m、n均为正整数,且L>m>1,mod表示取模,以及
所述加速卡根据所述加密信息,以所述加密块长度为单位,对所述第一TCP报文中承载的待加密数据进行加密处理,得到所述第二TCP报文,包括:
所述加速卡根据所述加密信息,以所述加密块长度为单位,对所述第一TCP报文中的待加密数据的前L-n比特进行加密,得到所述第二TCP报文的第一部分;
所述加速卡将所述第一TCP报文中的待加密数据的最后n比特与第三TCP报文中的待加密数据的前m-n比特组合得到一个加密块,所述第三TCP报文中的待加密数据与所述第一TCP报文中的待加密数据均属于所述SSL数据,且所述第三TCP报文为所述第一TCP报文的下一个报文;
所述加速卡根据所述加密信息,对组合得到的所述加密块进行加密,得到所述第二TCP报文的第二部分,所述第二TCP报文包括所述第二TCP报文的第一部分和所述第二TCP报文的第二部分。
4.根据权利要求3所述的方法,其特征在于,所述加速卡向第二设备发送所述第二TCP报文,包括:
所述加速卡同时向所述第二设备发送所述第二TCP报文的第一部分和所述第二TCP报文的第二部分,所述第二TCP报文中承载的已加密的数据长度为L比特。
5.根据权利要求3所述的方法,其特征在于,所述加速卡向第二设备发送所述第二TCP报文,包括:
所述加速卡将所述第二TCP报文中承载的已加密的数据长度修改为L-n比特;
所述加速卡依次向所述第二设备发送所述第二TCP报文的第一部分和所述第二TCP报文的第二部分。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述加速卡根据所述加密信息对所述第一TCP报文中承载的待加密数据进行加密处理,包括:
所述加速卡根据预先记录的缓存表和所述第一TCP报文的序列号,确定所述加速卡的缓存中是否保存有所述第二TCP报文,所述缓存表中记录有至少一个已加密的TCP报文的物理地址、承载所述至少一个已加密的TCP报文的TCP连接的连接号以及所述至少一个已加密的TCP报文的序列号范围,所述至少一个已加密的TCP未被所述第二设备确认接收;
所述加速卡在所述缓存中未保存所述第二TCP报文的情况下,对所述第一TCP报文中的待加密数据进行所述加密处理。
7.根据权利要求6所述的方法,其特征在于,在所述加速卡对所述第一TCP报文中承载的待加密数据进行所述加密处理之后,所述方法还包括:
所述加速卡在所述缓存中保存所述第二TCP报文;
所述加速卡在所述缓存表中记录承载所述第二TCP报文的TCP连接号以及所述第二TCP报文在所述缓存中的物理地址,并根据所述第二TCP报文的序列号更新所述缓存表中保存的已加密的TCP报文的序列号范围。
8.根据权利要求7所述的方法,其特征在于,若所述第二TCP报文未被所述第二设备成功接收,所述方法还包括:
所述加速卡从所述缓存中获取所述第二TCP报文,并向所述第二设备发送所述第二TCP报文。
9.根据权利要求6至8中任一项所述的方法,其特征在于,所述方法还包括:
所述加速卡接收来自所述第二设备的确认消息,所述确认消息中的确认号大于所述第二TCP报文的序列号;
所述加速卡接收所述处理器基于所述确认消息发送的第一指令,所述第一指令指示所述第二TCP报文的序列号;
所述加速卡基于所述第一指令,从所述缓存中删除所述第二TCP报文,并更新所述缓存表。
10.一种传输报文的方法,其特征在于,应用于配置有加速卡和处理器的第一设备中,所述方法包括:
所述加速卡接收来自第二设备的至少一个传输层控制协议TCP报文,所述至少一个TCP报文中的每个TCP报文中承载有待解密数据,所述至少一个TCP报文中承载的待解密数据属于安全套接层SSL数据;
所述加速卡根据预先获取的映射关系,确定用于解密所述SSL数据的解密信息,所述映射关系指示承载所述SSL数据的TCP连接的标识与加解密信息的对应关系,所述解密信息至少包括:解密算法和解密参数;
所述加速卡根据所述解密信息对所述至少一个TCP报文进行解密处理,得到至少一个解密处理后的TCP报文,并向所述处理器发送所述至少一个解密处理后的TCP报文。
11.根据权利要求10所述的方法,其特征在于,若所述SSL数据承载于P个TCP报文中,P>1且P为整数,所述加速卡接收来自第二设备的至少一个传输层控制协议TCP报文,包括:
所述加速卡接收来自所述第二设备的P个TCP报文,所述P个TCP报文为初传报文。
12.根据权利要求11所述的方法,其特征在于,若所述SSL数据承载于P个TCP报文中,P>1且P为整数,所述加速卡接收来自第二设备的至少一个传输层控制协议TCP报文,包括:
所述加速卡接收来自所述第二设备的Q个TCP报文,所述Q个TCP报文为初传报文,Q<P,Q为正整数;
所述加速卡接收来自所述第二设备的T个TCP报文,所述T个TCP报文为重传报文,P-Q≤T≤P,T为正整数。
13.根据权利要求11或12所述的方法,其特征在于,所述加速卡根据所述解密信息对所述至少一个TCP报文进行解密处理,并向所述处理器发送所述至少一个解密处理后的TCP报文,包括:
所述加速卡根据所述P个TCP报文的序列号,对所述P个TCP报文进行排序;
所述加速卡对排序后的所述P个TCP报文进行所述解密处理,得到解密后的P个TCP报文;
所述加速卡向所述处理器发送所述解密后的P个TCP报文。
14.根据权利要求12所述的方法,其特征在于,所述加速卡根据所述解密信息对所述至少一个TCP报文进行解密处理,并向所述处理器发送所述至少一个解密处理后的TCP报文,包括:
所述加速卡根据接收到的Q个TCP报文的序列号,根据所述解密信息对所述Q个TCP报文中的正常排序的S个TCP报文进行所述解密处理,得到S个解密处理后的TCP报文,S≤Q-T,S为正整数;
所述加速卡向所述处理器发送所述S个解密处理后的TCP报文;
所述加速卡基于接收到的所述T个TCP报文的序列号,根据所述解密信息对剩余的P-S个TCP报文进行所述解密处理,得到P-S个解密处理后的TCP报文;
所述加速卡向所述处理器发送所述S个解密处理后的TCP报文和所述P-S个解密处理后的TCP报文;或者,所述加速卡向所述处理器发送所述P-S个解密处理后的TCP报文。
15.根据权利要求11至14中任一项所述的方法,其特征在于,所述方法还包括:
所述加速卡对所述SSL数据进行消息认证码MAC验证;
所述加速卡向所述处理器发送所述MAC验证的结果。
16.根据权利要求11至15中任一项所述的方法,其特征在于,所述方法还包括:
在承载所述SSL数据的TCP报文中的至少一个TCP报文丢包的情况下,所述加速卡接收来自所述处理器的第二指令,所述第二指令指示承载所述SSL数据的TCP连接的连接号;
所述加速卡根据所述第二指令,删除所述映射关系以及接收到的所述至少一个TCP报文,并释放所述至少一个TCP报文在所述缓存中占用的存储空间,其中,所述缓存中保存有所述加速卡接收到的TCP报文。
17.一种传输报文的装置,其特征在于,配置于第一设备中,所述第一设备配置有处理器和所述装置,所述装置包括:
接收单元,用于接收来自处理器的第一传输层控制协议TCP报文,所述第一TCP报文中承载有待加密数据,所述待加密数据属于安全套接层SSL数据;
确定单元,用于根据预先获取的映射关系,确定用于加密所述第一TCP报文的加密信息,所述映射关系指示承载所述SSL数据的TCP连接的标识与加解密信息的对应关系,所述加密信息至少包括:加密算法和加密参数;
加解密单元,用于根据所述加密信息对所述第一TCP报文中承载的待加密数据进行加密处理,得到第二TCP报文,所述第二TCP报文为加密处理后的第一TCP报文;
发送单元,用于向第二设备发送所述第二TCP报文。
18.根据权利要求17所述的装置,其特征在于,所述确定单元还用于根据所述加密信息中的加密算法确定加密块长度;
所述加解密单元具体用于:根据所述加密信息,以所述加密块长度为单位,对所述第一TCP报文中承载的待加密数据进行加密处理,得到所述第二TCP报文。
19.根据权利要求18所述的装置,其特征在于,所述第一TCP报文中的待加密数据的长度为L比特,所述加密块长度为m比特,且mod(L,m)=n,L、m、n均为正整数,且L>m>1,mod表示取模,
所述加解密单元具体用于:
根据所述加密信息,以所述加密块长度为单位,对所述第一TCP报文中的待加密数据的前L-n比特进行加密,得到所述第二TCP报文的第一部分;
将所述第一TCP报文中的待加密数据的最后n比特与第三TCP报文中的待加密数据的前m-n比特组合得到一个加密块,所述第三TCP报文中的待加密数据与所述第一TCP报文中的待加密数据均属于所述SSL数据,且所述第三TCP报文为所述第一TCP报文的下一个报文;
根据所述加密信息,对组合得到的所述加密块进行加密,得到所述第二TCP报文的第二部分,所述第二TCP报文包括所述第二TCP报文的第一部分和所述第二TCP报文的第二部分。
20.根据权利要求19所述的装置,其特征在于,所述发送单元具体用于:同时向所述第二设备发送所述第二TCP报文的第一部分和所述第二TCP报文的第二部分,所述第二TCP报文中承载的已加密的数据长度为L比特。
21.根据权利要求19所述的装置,其特征在于,所述发送单元具体用于:依次向所述第二设备发送所述第二TCP报文的第一部分和所述第二TCP报文的第二部分,所述第二TCP报文中承载的已加密的数据长度修改为L-n比特。
22.根据权利要求17至21中任一项所述的装置,其特征在于,所述确定单元还用于:根据预先记录的缓存表和所述第一TCP报文的序列号,确定所述加速卡的缓存中是否保存有所述第二TCP报文,所述缓存表中记录有至少一个已加密的TCP报文的物理地址、承载所述至少一个已加密的TCP报文的TCP连接的连接号以及所述至少一个已加密的TCP报文的序列号范围,所述至少一个已加密的TCP未被所述第二设备确认接收;
所述加解密单元具体用于:在所述缓存中未保存所述第二TCP报文的情况下,对所述第一TCP报文中的待加密数据进行所述加密处理。
23.根据权利要求22所述的装置,其特征在于,所述装置还包括:缓存管理单元,用于在所述缓存中保存所述第二TCP报文;并在所述缓存表中记录承载所述第二TCP报文的TCP连接号以及所述第二TCP报文在所述缓存中的物理地址,并根据所述第二TCP报文的序列号更新所述缓存表中保存的已加密的TCP报文的序列号范围。
24.根据权利要求23所述的装置,其特征在于,所述装置还包括:获取单元,用于从所述缓存中获取所述第二TCP报文;
所述发送单元还用于向所述第二设备发送所述第二TCP报文。
25.根据权利要求22至24中任一项所述的装置,其特征在于,所述接收单元还用于:
接收来自第二设备的确认消息,所述确认消息中的确认号大于所述第二TCP报文的序列号;
接收所述处理器基于所述确认消息发送的第一指令,所述第一指令指示所述第二TCP报文的序列号;
所述装置还包括缓存管理单元,用于基于所述第一指令,从所述缓存中删除所述第二TCP报文,并更新所述缓存表。
26.一种传输报文的装置,其特征在于,配置于第一设备中,所述第一设备中配置有处理器和所述装置,所述装置包括:
接收单元,用于接收来自第二设备的至少一个传输层控制协议TCP报文,所述至少一个TCP报文中的每个TCP报文中承载有待解密数据;
确定单元,用于根据预先获取的映射关系,确定用于解密所述SSL数据的解密信息,所述映射关系指示承载所述SSL数据的TCP连接的标识与加解密信息的对应关系,所述解密信息至少包括:解密算法和解密参数;
加解密单元,用于根据所述解密信息对所述至少一个TCP报文进行解密处理,得到至少一个解密处理后的TCP报文;
发送单元,用于向所述处理器发送所述至少一个解密处理后的TCP报文。
27.根据权利要求26所述的装置,其特征在于,若所述SSL数据承载于P个TCP报文中,P>1且P为整数,
所述接收单元具体用于接收来自所述第二设备的P个TCP报文,所述P个TCP报文为初传报文。
28.根据权利要求26所述的装置,其特征在于,所述SSL数据承载于P个TCP报文中,P>1且P为整数,
所述接收单元具体用于:
接收来自所述第二设备的Q个TCP报文,所述Q个TCP报文为初传报文,Q<P,Q为正整数;
接收来自所述第二设备的T个TCP报文,所述T个TCP报文为重传报文,P-Q≤T≤P,T为正整数。
29.根据权利要求27或28所述的装置,其特征在于,所述加解密单元具体用于:
根据所述P个TCP报文的序列号,对所述P个TCP报文进行排序;
对排序后的所述P个TCP报文进行所述解密处理,得到解密后的P个TCP报文。
30.根据权利要求28所述的装置,其特征在于,所述加解密单元具体用于根据接收到的Q个TCP报文的序列号,根据所述解密信息对所述Q个TCP报文中的正常排序的S个TCP报文进行所述解密处理,得到S个解密处理后的TCP报文,S≤Q-T,S为正整数;
所述发送单元具体用于向所述处理器发送所述S个解密处理后的TCP报文;
所述加解密单元具体用于:基于接收到的所述T个TCP报文的序列号,根据所述解密信息对剩余的P-S个TCP报文进行所述解密处理,得到P-S个解密处理后的TCP报文;
所述发送单元具体用于:向所述处理器发送所述S个解密处理后的TCP报文和所述P-S个解密处理后的TCP报文,或者,向所述处理器发送所述P-S个解密处理后的TCP报文。
31.根据权利要求26至30中任一项所述的装置,其特征在于,所述装置还包括验证单元,用于对所述SSL数据进行消息认证码MAC验证;
所述发送单元还用于发送所述MAC验证的结果。
32.根据权利要求26至31中任一项所述的装置,其特征资源,所述接收单元还用于接收来自所述处理器的第二指令,所述第二指令指示承载所述SSL数据的TCP连接的连接号;
所述装置还包括缓存管理单元,用于根据所述第二指令,删除所述映射关系、接收到的所述至少一个TCP报文,并释放所述至少一个TCP报文在所述缓存中占用的存储空间,其中,所述缓存中保存有所述接收单元接收到的TCP报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711006359.XA CN109714292B (zh) | 2017-10-25 | 2017-10-25 | 传输报文的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711006359.XA CN109714292B (zh) | 2017-10-25 | 2017-10-25 | 传输报文的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109714292A true CN109714292A (zh) | 2019-05-03 |
CN109714292B CN109714292B (zh) | 2021-05-11 |
Family
ID=66252404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711006359.XA Active CN109714292B (zh) | 2017-10-25 | 2017-10-25 | 传输报文的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109714292B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110177083A (zh) * | 2019-04-26 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 一种网卡、数据发送/接收方法及设备 |
CN111131078A (zh) * | 2019-12-24 | 2020-05-08 | 北京天融信网络安全技术有限公司 | 报文散列方法、装置、fpga模组及处理器模组 |
CN112217769A (zh) * | 2019-07-11 | 2021-01-12 | 奇安信科技集团股份有限公司 | 基于隧道的数据解密方法、加密方法、装置、设备和介质 |
CN112437466A (zh) * | 2020-10-15 | 2021-03-02 | 珠海云洲智能科技股份有限公司 | 数据传输方法、数据处理单元、接收单元及无人设备 |
US11082410B2 (en) | 2019-04-26 | 2021-08-03 | Advanced New Technologies Co., Ltd. | Data transceiving operations and devices |
CN113315787A (zh) * | 2021-07-28 | 2021-08-27 | 北京橙色云科技有限公司 | 加密保护方法、装置及存储介质 |
CN113992731A (zh) * | 2021-11-02 | 2022-01-28 | 四川安迪科技实业有限公司 | 基于stomp协议的异常控制方法及装置 |
WO2022098336A1 (en) * | 2020-11-08 | 2022-05-12 | Kaya Akin | Method of encrypted data transmission over a computer network for a conferencing system |
CN115086233A (zh) * | 2022-08-17 | 2022-09-20 | 北京左江科技股份有限公司 | 一种基于fpga的网络报文关键信息提取转发的方法 |
WO2023045134A1 (zh) * | 2021-09-26 | 2023-03-30 | 合肥申威睿思信息科技有限公司 | 一种数据传输方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852324A (zh) * | 2005-04-22 | 2006-10-25 | 华为技术有限公司 | 网关控制协议报文传输方法 |
US20070198729A1 (en) * | 2006-02-07 | 2007-08-23 | Yechuri Sitaramarao S | SQL network gadget |
CN101621509A (zh) * | 2009-07-31 | 2010-01-06 | 浪潮电子信息产业股份有限公司 | 一种应用ssl通信协议安全负载均衡的设计架构及方法 |
CN102664896A (zh) * | 2012-04-28 | 2012-09-12 | 郑州信大捷安信息技术股份有限公司 | 基于硬件加密的安全网络传输系统及传输方法 |
CN103457718A (zh) * | 2013-05-28 | 2013-12-18 | 香港应用科技研究院有限公司 | 使用可变长度分段和固定分组加密的部分密文更新 |
US20140281488A1 (en) * | 2013-03-15 | 2014-09-18 | Aruba Networks, Inc. | System and Method for Offloading Cryptographic Functions to Support a Large Number of Clients in a Wireless Access Point |
CN106130999A (zh) * | 2016-06-30 | 2016-11-16 | 北京奇虎科技有限公司 | 数据传输方法、装置及系统 |
CN106790221A (zh) * | 2017-01-11 | 2017-05-31 | 京信通信技术(广州)有限公司 | 一种英特网协议安全IPSec协议加密方法和网络设备 |
-
2017
- 2017-10-25 CN CN201711006359.XA patent/CN109714292B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852324A (zh) * | 2005-04-22 | 2006-10-25 | 华为技术有限公司 | 网关控制协议报文传输方法 |
US20070198729A1 (en) * | 2006-02-07 | 2007-08-23 | Yechuri Sitaramarao S | SQL network gadget |
CN101621509A (zh) * | 2009-07-31 | 2010-01-06 | 浪潮电子信息产业股份有限公司 | 一种应用ssl通信协议安全负载均衡的设计架构及方法 |
CN102664896A (zh) * | 2012-04-28 | 2012-09-12 | 郑州信大捷安信息技术股份有限公司 | 基于硬件加密的安全网络传输系统及传输方法 |
US20140281488A1 (en) * | 2013-03-15 | 2014-09-18 | Aruba Networks, Inc. | System and Method for Offloading Cryptographic Functions to Support a Large Number of Clients in a Wireless Access Point |
CN103457718A (zh) * | 2013-05-28 | 2013-12-18 | 香港应用科技研究院有限公司 | 使用可变长度分段和固定分组加密的部分密文更新 |
CN106130999A (zh) * | 2016-06-30 | 2016-11-16 | 北京奇虎科技有限公司 | 数据传输方法、装置及系统 |
CN106790221A (zh) * | 2017-01-11 | 2017-05-31 | 京信通信技术(广州)有限公司 | 一种英特网协议安全IPSec协议加密方法和网络设备 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11082410B2 (en) | 2019-04-26 | 2021-08-03 | Advanced New Technologies Co., Ltd. | Data transceiving operations and devices |
CN110177083A (zh) * | 2019-04-26 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 一种网卡、数据发送/接收方法及设备 |
CN112217769B (zh) * | 2019-07-11 | 2023-01-24 | 奇安信科技集团股份有限公司 | 基于隧道的数据解密方法、加密方法、装置、设备和介质 |
CN112217769A (zh) * | 2019-07-11 | 2021-01-12 | 奇安信科技集团股份有限公司 | 基于隧道的数据解密方法、加密方法、装置、设备和介质 |
CN111131078A (zh) * | 2019-12-24 | 2020-05-08 | 北京天融信网络安全技术有限公司 | 报文散列方法、装置、fpga模组及处理器模组 |
CN111131078B (zh) * | 2019-12-24 | 2022-09-16 | 北京天融信网络安全技术有限公司 | 报文散列方法、装置、fpga模组及处理器模组 |
CN112437466A (zh) * | 2020-10-15 | 2021-03-02 | 珠海云洲智能科技股份有限公司 | 数据传输方法、数据处理单元、接收单元及无人设备 |
CN112437466B (zh) * | 2020-10-15 | 2023-02-10 | 珠海云洲智能科技股份有限公司 | 数据传输方法、数据处理单元、接收单元及无人设备 |
WO2022098336A1 (en) * | 2020-11-08 | 2022-05-12 | Kaya Akin | Method of encrypted data transmission over a computer network for a conferencing system |
CN113315787A (zh) * | 2021-07-28 | 2021-08-27 | 北京橙色云科技有限公司 | 加密保护方法、装置及存储介质 |
WO2023045134A1 (zh) * | 2021-09-26 | 2023-03-30 | 合肥申威睿思信息科技有限公司 | 一种数据传输方法和装置 |
CN113992731A (zh) * | 2021-11-02 | 2022-01-28 | 四川安迪科技实业有限公司 | 基于stomp协议的异常控制方法及装置 |
CN113992731B (zh) * | 2021-11-02 | 2024-04-30 | 四川安迪科技实业有限公司 | 基于stomp协议的异常控制方法及装置 |
CN115086233B (zh) * | 2022-08-17 | 2022-11-11 | 北京左江科技股份有限公司 | 一种基于fpga的网络报文关键信息提取转发的方法 |
CN115086233A (zh) * | 2022-08-17 | 2022-09-20 | 北京左江科技股份有限公司 | 一种基于fpga的网络报文关键信息提取转发的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109714292B (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109714292A (zh) | 传输报文的方法与装置 | |
CN109150688B (zh) | IPSec VPN数据传输方法及装置 | |
US11218477B2 (en) | Encryption key updates in wireless communication systems | |
US7774593B2 (en) | Encrypted packet, processing device, method, program, and program recording medium | |
US10250571B2 (en) | Systems and methods for offloading IPSEC processing to an embedded networking device | |
US6970446B2 (en) | Method and apparatus to provide inline encryption and decryption for a wireless station via data streaming over a fast network | |
US10225239B2 (en) | Method for in-line TLS/SSL cleartext encryption and authentication | |
US9872175B2 (en) | Packet processing method, apparatus, and system | |
CN110620762A (zh) | 基于rdma的数据传输方法、网卡、服务器及介质 | |
CN109104273B (zh) | 报文处理方法以及接收端服务器 | |
US9185130B2 (en) | Transmission apparatus, reception apparatus, communication system, transmission method, and reception method | |
EP1687998B1 (en) | Method and apparatus to inline encryption and decryption for a wireless station | |
KR20180006664A (ko) | 의료 기기, 게이트웨이 기기 및 이를 이용한 프로토콜 보안 방법 | |
US20230145440A1 (en) | Method and device for selective user plane security in wireless communication system | |
US9467471B2 (en) | Encrypted communication apparatus and control method therefor | |
JP2012010254A (ja) | 通信装置、通信方法及び通信システム | |
US9219712B2 (en) | WAN optimization without required user configuration for WAN secured VDI traffic | |
CN115801236A (zh) | 一种加密代理方法、加密代理模块、代理设备及存储介质 | |
CN112104635B (zh) | 通信方法、系统和网络设备 | |
CN111356178B (zh) | 一种传输方法、发送端pdcp实体和接收端pdcp实体 | |
CN107454116A (zh) | 单隧道模式下IPsec ESP协议的优化方法及装置 | |
WO2018058444A1 (zh) | 一种数据加密的方法及装置 | |
US11805110B2 (en) | Method for transmitting data packets | |
KR101653956B1 (ko) | 암호화된 트래픽을 모니터링하는 방법 및 장치 | |
CA3235514A1 (en) | Key replacement during datagram transport layer security (dtls) connections over stream control transmission protocol (sctp) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |