块签名和事务签名的处理的制作方法

文档序号:7761969阅读:416来源:国知局
专利名称:块签名和事务签名的处理的制作方法
块签名和事务签名的处理技术领域
本发明总体涉及计算机网络,具体而言,涉及计算、保护和验证特别地包括存储网 络在内的计算机网络中的数据完整性。
背景技术
块签名(也称为数据完整性字段或DIF) —般被添加到数据块(也称为段)以 避免数据错误,特别是在数据存储应用中(但非就此)。例如,信息技术标准国际委员会 (INCITS)的TlO技术委员会——其负责小型计算机系统接口(SCSI)存储协议的标准化,已 经使DIF的使用标准化,以支持存储网络中的端到端数据保护。该DIF被附加到每个SCSI 数据块(也称为扇区,且大小一般为——但非必然为——512字节)。它包括8个字节,包 括16位“块防护”循环冗余码(CRC)、16位“应用标签”以及32位“参考标签”,该“参考标 签”是递增的,以确保以合适的顺序维持块。
SCSI DIF仅是其中一种众所周知的数据完整性字段,还存在许多其它例子。在本 专利申请的语境中以及在权利要求书中,术语“签名”应被理解为通常指任何这样的数据字 段该数据字段在某些数据(例如一个数据块)上计算而来且与该某些数据相关联,然后该 数据字段可用于验证该数据未被破坏。所述签名可附加到与其相关联的数据或者被存储在 另外的位置中。对签名的验证(例如,当读取数据块时)确保了在该签名被计算以来数据 未被改变。
InfiniBand (IB)是主要用于高性能计算的交换结构通信链路。它已由 InfiniBand贸易协会标准化。计算设备(主机处理器和外围设备)经由网络接口适配器连 接到IB结构,该网络接口适配器用IB术语来说叫做通道适配器。主机处理器(或主机) 使用主机通道适配器(HCA),而外围设备使用目标通道适配器(TCA)。发明内容
本发明的一实施方案提供一种网络通信设备,该网络通信设备包括主机接口,该 主机接口被联接以与具有主机存储器的主机处理器通信,以便接收执行事务的工作请求, 在该事务中,包括至少第一数据块和最后一个数据块的多个数据块将通过包网络传送。网 络接口联接到该包网络。处理电路被配置以处理多个数据包以便执行该事务,该事务中的 每个数据包包含上述多个数据块的一部分,并且所述多个数据包包括至少第一包和最后一 个包,该第一包和最后一个包分别包含该事务的第一数据块和最后一个数据块,并且该处 理电路被配置以在处理所述数据包的同时针对所述多个数据块计算事务签名,使得在完成 该事务签名的计算之前,至少所述第一数据块通过接口之一从该网络通信设备中传出。
在一公开的实施方案中,该处理电路被配置以计算所述多个数据块各自的块签名 以及将这些块签名插入所述数据包。该事务中的源数据的块签名可以是不同种类的(即, 对于该事务中的不同数据块,可以有不同的块签名计算)。
在一些实施方案中,除计算块签名外,该处理电路还被配置以从该主机存储器读取所述多个数据块,以生成所述多个数据包,以及计算所述事务签名并将其插入所述最后 一个数据包,同时在完成该事务签名的计算之前,通过该网络接口传输至少所述第一数据 包。附加地,或者替代地,该处理电路被配置以从该网络接口接收所述数据包以及计算所述 事务签名,同时将所述多个数据块传输到该主机存储器,使得在完成该事务签名的计算之 前,至少所述第一数据块被写到该主机存储器。
在一些实施方案中,所述多个数据块由该处理电路以第一事务签名接收,并且该 处理电路被配置以移除、读取和验证该第一事务签名,以及计算不同于该第一签名的第二 事务签名并将其附加到所述多个数据块。一般而言,该处理电路被配置以在处理所述多个 数据包后传送完成报告到该主机处理器,以及一发现该第一签名的验证中的错误就在该完 成报告中插入错误指示。
在公开的实施方案中,该设备包括控制存储器,该控制存储器被配置以存储签名 背景,其中该处理电路被配置以读取并应用该签名背景以计算所述事务签名。该处理电路 可被配置以在该控制存储器中存储针对至少所述第一包计算的临时事务签名结果,以及读 取该临时事务签名结果并将其用于完成针对所述最后一个包的事务签名的计算。
依照本发明的一实施方案,还提供一种网络通信设备,该网络通信设备包括主机 接口,该主机接口被联接以与具有主机存储器的主机处理器通信,以便接收执行事务的工 作请求,在该事务中,一个或多个数据块将通过包网络传送。网络接口联接到该包网络。处 理电路被配置以处理包含所述一个或多个数据块的一个或多个数据包以便执行该事务,并 且该处理电路被配置以读取和验证通过该主机接口和网络接口中的一个随同所述一个或 多个数据块接收的第一签名,以及针对所述一个或多个数据块计算不同于该第一签名的第 二签名,以及通过该主机接口和网络接口中的另一个随同所述一个或多个数据块传送该第二签名。
该第一和第二签名可以包括针对所述多个数据块中的每个而计算的块签名,和/ 或针对多个所述数据块计算的事务签名。
依照本发明的一实施方案,还提供一种网络通信设备,该网络通信设备包括主机 接口,该主机接口被联接以与具有主机存储器的主机处理器通信,以便接收执行事务的工 作请求,在该事务中,一个或多个数据块将通过包网络传送。网络接口联接到该包网络。控 制存储器被配置以存储签名背景。处理电路被配置以处理包含所述一个或多个数据块的一 个或多个数据包以便执行该事务,并被配置以从该控制存储器读取该签名背景,以及将该 签名背景应用于针对所述多个数据块中的一个或多个的签名的计算。
在一些实施方案中,该签名背景指示将由该处理电路用于计算该签名的规则。一 般而言,所述一个或多个数据块包括至少第一数据块和第二数据块,并且该控制存储器被 配置以存储多个签名背景——其包括至少第一和第二签名背景,该第一和第二签名背景包 括将由该处理电路分别应用于所述第一和第二数据块的、用于签名计算的不同规则。
在一公开的实施方案中,该工作请求包括存储器关键字,该存储器关键字与所述 多个数据块相关联并指示主机存储器中的位置,该存储器关键字包括指向该签名背景的指 示字,该指示字供该处理电路用于读取该签名背景。
在一些实施方案中,该签名背景包括块签名背景,该块签名背景由该处理电路用 于计算针对所述多个数据块中的至少一个的块签名。该事务可包括多个不同种类的数据块,该多个不同种类的数据块具有不同的各自的块签名背景。附加地,或者替代地,该签名 背景可包括事务签名背景,该事务签名背景由该处理电路用于针对该事务中的多个数据块 的事务签名的计算。
依照本发明的一实施方案,还提供一种用于通信的方法,该方法包括从具有主机 存储器的主机处理器接收执行事务的工作请求,在该事务中,包括至少第一数据块和最后 一个数据块的多个数据块将经由网络接口设备通过包网络传送。在该网络接口设备中,多 个数据包被处理以便执行该事务,该事务中的每个数据包包含上述多个数据块的一部分, 并且所述多个数据包包括至少第一包和最后一个包,该第一包和最后一个包分别包含该事 务的第一数据块和最后一个数据块。在处理所述数据包的同时针对所述多个数据块计算事 务签名,使得在完成该事务签名的计算之前,至少所述第一数据块通过一接口从该网络通 信设备中传出。
此外,依照本发明的一实施方案,提供一种用于通信的方法,该方法包括从具有主 机存储器的主机处理器接收执行事务的工作请求,在该事务中,一个或多个数据块将经由网 络接口设备通过包网络传送,该网络接口设备具有主机接口和网络接口。在该网络接口设备 中,包含所述一个或多个数据块的一个或多个数据包被处理以便执行该事务。读取和验证由 该网络接口设备通过该主机接口和网络接口中的一个随同所述一个或多个数据块接收的第 一签名。针对所述一个或多个数据块计算不同于该第一签名的第二签名。通过该主机接口和 网络接口中的另一个从该网络接口设备随同所述一个或多个数据块传送该第二签名。
此外,依照本发明的一实施方案,提供一种用于通信的方法,该方法包括从具有主 机存储器的主机处理器接收执行事务的工作请求,在该事务中,一个或多个数据块将经由 网络接口设备通过包网络传送,该网络接口设备具有控制存储器。签名背景存储在该控制 存储器中。包含所述一个或多个数据块的一个或多个数据包被处理以便执行该事务。使用 存储在该控制存储器中的签名背景,针对所述多个数据块中的一个或多个计算签名。


在此参照附图仅以示例的方式描述本发明,附图中
图1是示意性示出依照本发明的一实施方案的、可操作来执行签名移交的广域网 的简图2是示意性图解依照本发明的一实施方案的、计算签名的主机通道适配器的功 能部件的简图3是示意性图解依照本发明的一实施方案的、在签名处理中所用的数据结构的 简图4是示意性图解依照本发明的一实施方案的数据事务的要素的简图5是示意性图解依照本发明的一实施方案的工作请求签名处理方法的流程图; 以及
图6是示意性图解依照本发明的一实施方案的签名计算方法的流程图。
具体实施方式
以下符号将在该文件全文中使用
术语定义
BSC ±夬签名背景(Block Signature Context)
CPU 中央处理器
CRC 循环冗余码
DIF 数据完整性字段
FCP 光纤信道协议
HCA 主机通道适配器
I/O 输入/输出
IB InfiniBand
LAN 局域网
RDMA 远程直接存储器存取
S/G 分散/集合
SAN 存储区域网
SCSI 小型计算机存储接口
TCA 目标通道适配器
TSC 事务签名背景
WAN 广域网
概览
当计算机应用生成或接收通过网络传送一个或多个数据块的工作请求时,通常有 必要计算和/或验证针对这些块的签名。该工作请求一般指定待传送的数据所存储的具有 特定数据尺寸的主机存储器区域。可以有与所述数据块中的每个相关联的块签名。
另外,事务签名可用来验证事务中的所有数据。术语“事务(transaction)”当在 本专利申请的语境中以及在权利要求书中使用时,指构成单个数据结构的一组数据块。一 般而言,尽管不是必然的,事务由较高级应用或协议激活,并涉及根据通过网络传送一个或 多个数据块的工作请求而传送所述数据块。所述这些数据块可以单个包一起传送,或通过 两个或更多个包传播。在一些情况下,事务数据可使用多个I/O操作来传送。
在本发明的实施方案中,通过网络通信设备,如HCA或其它网络接口适配器对事 务和块签名进行(1)验证(即,检查源数据签名),(2)附加(即,将目的数据签名添加到数 据),或C3)验证和附加(如在签名移交中,在下文中讨论)。可针对整个事务计算事务签 名并将其附加到多个数据块上,同时可将各自独用的块签名附加到该事务中的多个数据块 上。
输入/输出(I/O)数据传送操作用来通过一个网络将数据直接从一个计算机的 存储器移至另一计算机,同时不涉及计算机操作系统。I/O数据传送操作的例子包括在 InfiniBand(IB)和以太网中的远程直接存储器存取(RDMA)操作和光纤信道网络中的I/O读、写操作。
I/O数据传送操作由一些网络接口适配器——例如Mel lanox ^Technologies (加利福尼亚Sunnyvale)提供的ConnectX HCA——中的硬件支持。因而,通 道适配器能够以非常高的速度执行1/0数据传送操作,同时减轻主机处理器的通信传输负 担。尽管CormectX HCA被设计来符合IB规范,但它也提供以太网链路接口,该以太网链路接口使得它可以发送和接收以太网包以及IB包,该CormectX HCA还可以被配置以支持光 纤信道协议(FCP)。因此,术语“通道适配器”和“HCA”当在本专利申请中以及在权利要求 书中使用时,应被理解为一般地指以硬件执行I/O数据传送功能的网络接口设备,除非另 有规定。尽管下面描述的一些实施方案特别地涉及RDMA,但本发明的原理可类似地应用于 其它I/O数据传送协议。
在下文中描述的本发明的实施方案中,块和事务签名相关的操作从主机处理器卸 载到通道适配器中的专用电路,该通道适配器将该主机处理器连接到网络。特别地,在一些 实施方案中,签名处理在该通道适配器中与RDMA和/或其它I/O数据传送功能结合。该通 道适配器被配置以允许在启动程序(即,启动数据传送的主机应用程序)和目标之间进行 透明通信,而不论该启动程序和目标中的一个或两个是否(或者该启动程序和目标是否都 不)支持并存储块和事务签名。作为I/O数据传送操作的一部分,该通道适配器将根据需 要自动添加或去除签名,并且如果需要的话,还可以确认该签名。
在本发明的一些实施方案中,I/O数据传送由工作请求激活,该工作请求指定包含 待传送的数据的存储器区域,与该存储器区域相关联的签名背景信息包括一些规则,该规 则在执行I/O数据传送操作时向该通道适配器指示需要什么签名操作。
在本发明的一些实施方案中,随着HCA相继地处理多个数据块以便生成包供输出 到网络或从网络接收包供输入到主机处理器,它递增地计算事务签名。在处理每个数据块 时,HCA更新事务签名的临时值,并且还可以计算其块签名。可以对照存储在存储器中或随 同多个数据块包含在进入的数据包中的先前值同时验证事务和/或块签名。事务签名计算 在处理事务中的最后一个数据块后即完成。
一般而言,HCA在不将多个数据块存储在它自己的存储器中的情况下直接计算签 名。对于多包事务,HCA将临时(部分)签名值存储在事务签名背景中,直到完成关于最后 一个包的计算。结果,可在完成关于最后一个数据块的签名计算之前,将给定事务中的第一 个数据块通过主机接口或网络接口(取决于该事务是进入的数据事务还是外出的数据事 务)从HCA传出。对于外出的事务,该特征意味着,可以在计算事务签名并将其插入最后一 个供传输的包之前将事务中的第一个数据包传输到网络。对于进入的事务,在接收和验证 最后一个数据包中的事务签名之前,来自第一个数据包的数据块已由HCA传送至主机存储ο
在验证失败的情况下,HCA会在它所传送至主机处理器以报告事务的完成的完成 报告中插入错误指示。HCA还会将一个“坏”签名(即,在目的地处的验证中将会失败的签 名)附加到其相关联的数据块,从而确保针对该数据块的任何接下来的签名验证过程都将 失败,使得接收该数据的应用软件将认出已经出现的错误。例如,HCA可用特定功能(例如, 所计算的签名的按位取反(bitwise NOT)) “密封”每个失败的块签名,从而确保在目的地 处识别错误数据块。
一些工作请求包括在源和目的地之间传送多个使用不同的块签名和/或不同的 事务签名的数据块。例如,一种签名可以与主机存储器中的给定数据块或事务相关联,而不 同类型的另一种签名伴随通过网络在传输中的数据。再例如,存储服务器可以使用一种签 名从源网络例如LAN上的客户端接收数据,并可以使用不同类型的另一种签名将该数据通 过目的网络传输到目的网络(例如SAN)上的存储目标。在本发明的一些实施方案中,主机通道适配器通过首先对针对事务中的数据块的源块和/或事务签名进行验证,来执行“签 名移交”。该主机通道适配器移除这些原始签名并计算目的块和/或事务签名。然后,这些 签名连同多个数据块一起被传输到事务目的地。
在本发明的一些实施方案中,签名背景表存储在主机通道适配器的控制存储器 中。该签名背景表存储用于每个数据块和事务——HCA将对这些数据块和事务计算签 名——的签名计算规则。对签名背景的这一使用使得HCA可以将不同类型的签名应用到不 同的数据块和事务。因而,它使签名移交便利,如上文中讨论的,并且使得主机通道适配器 可以处理不同种类的事务——其中不同的数据块具有不同类型的块签名。
系统描述
图1是示意性示出依照本发明的一实施方案的、可操作来执行签名移交的系统10 的简图。LAN 12上的客户端14、16、18发出一个将一个或多个数据块传送到网络沈上的存 储器存储设备观、30、32中的一个或多个的工作请求。LAN 12和网络沈均为包网络,例如 I B交换结构通信网络,但不同的客户端和网络可以使用不同类型的签名。例如,客户端14 可以使用校验和来保护数据块,而客户端16使用XOR函数,客户端18根本不使用块签名。 存储设备观、30、32可以使用SCSI DIF作为块签名,而多块事务用32位CRC保护。
在该实施例中,来自网络12上的多个客户端的数据块由存储服务器20组合在单 个事务中供存储在存储设备中的一个上。因而,该事务将包括多个具有不同(不同种类) 的块签名的数据块。这些数据块经由HCA 22从客户端传送到存储服务器20,HCA 22验证 该事务中的数据块的块签名,并可以将这些块临时地存储在服务器存储器中。尽管所述数 据块可以包括不同种类的块签名,但HCA 22 —般以与目的地有关的类型相同的块签名将 所述数据块存储在存储服务器20 (或任何其它目的存储设备)上。在另一场景中,数据经 由HCA 22从存储服务器20传送到客户端(S卩,本发明的实施方案可以包括通过HCA 22的 磁盘读操作和磁盘写操作)。
为接下来的描述上的简明和便利,关于InfiniBand网络和HCA,以示例的方式示 出和描述了系统10的部件。但是,在本发明的替代实施方案中,在该专利申请中描述的签 名处理方法可用其它类型的网络通信设备实施,所述其它类型的网络通信设备支持其它网 络标准,包括光纤信道和以太网。
对于每个进入的数据块,HCA 22依照相应的签名背景应用合适类型的签名计算, 如下文将更详细描述的。HCA 22还可以针对整个序列的数据块计算事务签名,并可以将块 和/或事务签名存储在服务器20的存储器中。
然后,服务器20经由另一 HCA 24通过网络沈将单个事务中的数据块传送到存储 设备观、30、32中的一个。当HCA M处理外出的数据块以插入通过网络沈传输的包中时, 它计算并验证经HCA 22而与数据存储在一起的事务和块签名。对签名的直接计算有益于 探测和防止可能由于服务器存储器中的默存的数据破坏而已经出现的数据错误。该事务可 扩展至多个数据包,每个数据包包含这些数据块的一部分。
在生成外出的数据包的同时,HCA 24通过计算新的块和事务签名并将其插入外出 包供通过网络沈传输,来执行签名移交。如必要,HCAM可将数据分为尺寸与从客户端14、 16、18接收的块的尺寸不同的块,然后将为这些新的块计算块签名。与由服务器20接收和 存储的不同种类的数据块相反,在通过网络26的事务中传输的包中的数据块可以是同类11的,所有块具有恒定的块尺寸和相同类型的签名。替代地,HCA 22可执行签名移交,HCA 24 仅在数据块被传送到网络沈时验证签名。
图2是示意性图解依照本发明的一实施方案的、参与签名计算的HCA 22的功能部 件的简图40。(HCA M的结构将是类似的。)在该实施例中,HCA 22从主机CPU 42接收执 行事务的工作请求例如RDMA请求,该事务包括将一个或多个数据块从主机存储器44传送 到网络46(例如LAN、WAN、SAN或其它交换结构)。这里示出并描述的HCA 22的结构是高度 简化的,以仅包括那些对于理解该HCA的签名处理功能可以如何实现来说必要的元件。该 实现仅通过示例的方式描述;替代的实现方式对本领域技术人员是明显的,并被认为在本 发明的范围内。
处理电路50使用存储在控制存储器52中的信息,以访问数据以及为待传送的数 据块计算块和事务签名。在图2中所示的实施方案中,控制存储器52置于HCA设备的高速 缓存中。替代地,或附加地,控制存储器的内容可存储在主机存储器44中或联接到HCA 22 的单独的存储器模块(未示出)中。一般而言,工作请求识别主机存储器44中的有待从 中传送数据的区域,并提供一个或多个存储器关键字,这些关键字将由HCA 22用于访问数 据。地址转换模块58使用所述存储器关键字以在存储器保护表66和存储器转换表68中 查找存储器保护和地址转换参数。该地址转换模块使用存储器转换信息将工作请求中的虚 拟地址转换成主机存储器44中相应的物理地址。
直接存储器存取(DMA)模块60经由主机接口 48从存储器44读取数据块,并将数 据插入一个或多个数据包供经由网络接口 M通过网络46传输,以执行工作请求。这些数 据传送操作直接地执行,而不将数据存储在HCA 22中。当事务通过两个或更多个数据包传 播时,一般出现以下情况第一个数据包在,处理电路50完成将后来的数据包(以及,无疑 地,最后一个数据包)组装在该事务中,之前,通过网络接口 M被传输出。
如上文所述,数据块中的每个与一存储器关键字相关联。每个块可以具有其自己 的关键字,或者一个关键字可由多个块或甚至整个事务共用。存储器关键字是一种数据结 构,该数据结构包含指向存储器保护和转换表中的表目的指示字,如上文所述。存储器关键 字还可包括指向签名背景表62中的表目的指示字。该表的内容在下文更详细地进行描述。 简要地说,表62可以包括签名背景表,该签名背景表包含用于为所讨论的一个或多个数据 块计算块和事务签名的规则。附加地,或替代地,签名背景表62可以包含用于事务签名的 计算的临时值。控制存储器52可由HCA 22配置为当前在使用中的背景信息的高速缓存, 而最近尚未使用的签名背景信息(和其它类型的背景信息)保存在主机存储器44中并在 需要时被调用至控制存储器52。
地址转换模块58将签名背景表指示字传送至签名背景模块56,签名背景模块56 使用该指示字访问表62。签名背景模块计算与经由主机接口 48接收的多个数据块相关联 的块和事务签名。模块56可使用这些计算既验证已随同多个数据块存储在存储器44中的 签名又计算新的签名供插入待通过网络接口 M传输的包。因而,在签名移交中,例如,模块 56可以针对一给定数据块和/或事务执行两次不同的签名计算一 一次用于验证,另一次用 于新签名插入。这些签名计算在于电路50中构建数据包的过程中直接地进行。当一事务 包括多个包时,仅当最后一个包被处理时,事务签名的计算才可完成,并且针对该事务中先 前的包所计算的事务签名的临时值可以同时保存在签名背景表62中。
当HCA 22从网络46接收进入的事务的数据包时,出现类似种类的流。在此情况 下,DMA模块60将来自进入的包的数据块写到主机存储器44中的由地址转换模块58提供 的地址。签名背景模块56使用签名背景表62中的信息验证并计算块和事务签名,其中所 计算的签名可连同数据一起被写到存储器44。
图3是示意性图解依照本发明的一实施方案的、在一组输入数据72、处理电路50、 存储器保护表66和签名背景表62之间的交互的简图70。输入数据72包括数据块78、80、 82和事务签名84。数据块78、80、82中的每个具有块签名(BSIG)以及数据。存储器保护 表66中的每个表目包括存储器关键字标识符(MKEY#)和指向签名背景表62中的相应表目 的指示字。
签名背景表62中的事务签名背景76中的每个包括事务签名标识符(TSC#)、事务 签名规则和事务签名结果。块签名背景74中的每个包括块签名标识符(BSC#)、块签名规则 和块签名结果。尽管事务签名背景76和块签名背景74在图3中被示为分开的实体,但这 些数据结构可便利地一起保存在单个签名背景表中,在该单个签名背景表中事务签名背景 跟着相关联的块签名背景。
换句话说,对于每个待传送的数据块,相关联的存储器关键字可指示待用于包含 该一个或多个块的事务的事务签名背景,并且该事务签名背景跟着块签名背景——该块签 名背景待用于对与该关键字相关联的一个或多个块的签名的计算。一个事务签名背景可跟 着不止一个块签名背景。因此,如图3中所示,如果一个事务包含不同种类的块,事务签名 背景可跟着各自的(即,多个)块签名背景。另一方面,电路50可执行某些事务而不进行 签名计算,在这种情况下,相应的存储器关键字可具有空签名背景指示字。
在签名背景表62中,事务签名背景76存储用于事务级签名的签名操作参数,块签 名背景74存储用于块级签名的签名操作参数。在执行一个事务之前,应用软件在待用于该 事务的签名背景表62中建立TSC表目和任何必要的BSC表目。事务签名背景76指定事务 签名规则,并且还可在同类保护域中指定块级签名规则。此外,当要在一给定事务中执行签 名移交时,用于该事务的签名背景表62可为每个块既指定源签名背景(待用于签名验证) 又指定目的地签名背景(待用于计算新的签名)。
在本发明的一些实施方案中,使用分散/集合指示字定位主机存储器44中的数 据。每个指示字包含待用于地址转换的存储器关键字(其可与TSC相关联)、在该存储器关 键字所识别的地址空间内的地址指示字以及数据操作数的长度(即,字节计数)。该字节计 数指定待通过网络46传输的字节的数量。HCA 22根据S/G表目中指定的字节计数、相关联 的签名背景(即,BSC或TSC)和正在执行的签名操作,计算用于存储器存取的字节计数。
数据结构的细节
再参照图3,签名背景表62中的表目经由存储器关键字与输入数据70的块相关 联,该存储器关键字用来寻址存在于主机存储器44中的参与事务的数据。存储器关键字的 类型包括
1.数据存储器关键字。这是“经典的”存储器关键字,没有任何到签名背景的链 接。
2.签名背景存储器关键字。此存储器关键字与签名背景表62中的表目相关联。
多个存储器关键字(如图3中的MKEYl、MKEY2和MKEY3)可与签名背景表62中的单个表目相关联。另外,多个BSC可与签名背景表62中的单个TSC表目相关联。对于一 个事务签名,签名背景包含在整个事务中维持的参数以及该事务签名的签名规则(总的来 说,签名规则可指示是否需要签名)。
图4是示意性图解依照本发明的一实施方案的、从源数据流91到目的数据流98 的带有签名移交的数据传送事务90的数据、BSC和TSC之间的联系的简图。该图示出了事 务的数据结构与各种签名规则之间的联系的多种可能情形。
事务90中的数据段被标注为“B”、“0”或“Pad”,其中“B”指示包括一个或多个受 签名保护的数据块的数据段,“0” (即,“0”、“01”或“Ob”)指示包括不透明的数据块一 即,不具有块签名的块(不过它们可以受事务签名保护)——的数据段。“Pad”指示这样的 填充体该填充体被添加到源保护域中,以补充该段,以适应目的数据流98中必需的整数 数量的块。通常,填充体包括目的数据98中的不随签名变化的数据(例如,对于XOR或校 验和,为零)。
事务90中的签名移交应看作两个独立的步骤。在第一个步骤,签名背景模块56 验证来自源数据91的源块签名92和源事务签名94,如在其各自的签名背景中指定的。该 第一个步骤导致无签名的数据流96,该数据流96是签名移交事务90的第二个步骤的输入。 在第二个步骤,签名背景模块56计算目的块签名100和事务签名102,然后处理电路50将 目的块签名100和事务签名102附加到目的数据98,如在其各自的签名背景中指定的。
尽管签名移交中的两个步骤一般以流水线的方式执行(即,在生成输出数据结构 之前,不存储无签名的数据),但是这两个步骤应被看作是独立的。
源数据流91中的(或一个源数据流中的任何数据段中的)每个数据段(或一个 或多个块)与指定的源BSC(sBSC#)相关联,目的数据流98中的(或一个目的数据流中的 任何数据段中的)每个数据段与指定的目的BSC(dBSC#)相关联。签名移交90中的数据是 不同种类的,即,存在多个与构成事务的多个数据段相关联的块签名。(在签名移交90中的 数据是同类的场景中,将会存在单个与构成事务的多个数据块相关联的BSC。)
签名处理
图5是示意性图解依照本发明的一实施方案的工作请求签名处理方法的流程图。 为清楚起见,在此参照之前的图中示出的功能模块和数据结构描述该方法,不过该方法可 替代地使用其它电路和数据结构实施,如对本领域技术人员来说将明显的。在该描述中将 假定,工作请求涉及从主机存储器44到网络46的数据的外出传送,但该方法,如作必要的 变动,也可类似地适用于从该网络到该主机存储器的数据进入传送。
DMA模块60经由主机接口 48从主机存储器44中的由地址转换模块58提供的物 理存储器地址取出数据块(即,事务中待传送的数据)(步骤110)。签名背景模块56取出 并检查适当的块和/或事务背景,并确定是否有必要验证所取出的数据块的块和/或事务 签名(步骤112)。如果有必要,签名背景模块计算块和/或事务的签名,并对照存储在存储 器中的签名验证结果(步骤114)。
如果正在执行的事务要求为数据传输计算新签名(步骤116),则签名背景模块56 执行必要的步骤。如必要,这些步骤可包括从所述数据移除经验证的签名(步骤118)。然 后,模块56计算新的块和/或事务签名供插入外出的包(步骤120)(该步骤的细节在图6 中示出)。然后,HCA 22经由网络接口 M将带有所计算的块和/或事务签名的事务数据块传输到网络46上的数据目的地(步骤122)。
然而,如果不要计算新的块或事务签名,则HCA 22经由网络接口 M将带有或不带 有经验证的块和/或事务签名的事务数据块传输到网络46上的数据目的地,而不进行另外 的签名计算(步骤124)。
然后,电路50生成完成报告给主机CPU 42,如果需要,该完成报告包括所取出的 签名的验证结果(步骤126)。该完成报告包括关于所计算的块和事务签名的信息,包括所 有探测到的块签名或事务签名错误的指示。签名背景模块56将所有探测到的错误存储在 签名背景表62中它们相应的字段中。签名背景模块56将这些表中的在工作请求期间经受 过错误的所有表目标记为“中过毒的”。然后,在主机CPU42上执行的软件查询签名背景表。 替代地,或附加地,签名背景模块56经由主机接口 48将完成报告传送到主机处理器42。
上文描述的签名处理方法也可以相反的方向执行。在此情况下,数据块经由网络 接口 M从网络46得到。然后,签名背景模块56可验证源签名,移除源签名,生成完成报告 和计算目的签名,如签名背景中的规则所要求的。然后,DMA模块60经由主机接口 48将数 据块和/或经验证/重新计算的签名存储到主机存储器44。
在本发明的一些实施方案中,源数据块可以具有与目的数据块不同的尺寸(和边 界)。在签名移交的情况下,如上文所述,针对每个块可以有两次签名计算一次验证进入 的签名,另一次生成新签名供随同数据输出。
因而,在本发明的一些实施方案中,HCA 22在两个保护域——内部(即,系统存储 器)和外部(即,网络)——之间执行签名操作。该签名操作可于HCA 22在这两个域之间 执行事务(即,传送数据结构)时发生,其中一个域是同类的,另一个域是不同种类的。同 类保护域中的数据结构由具有相同尺寸和相同签名规则的数据块构成,而不同种类的保护 域中的数据块可以具有不同的尺寸和使用不同的签名规则。另外,如之前注意到的,这两个 域中的任一个中的数据结构可以包含具有任意尺寸的“不透明的”数据段——其意指一个 或多个不受块级签名保护的块。
一个保护域可以是签名事务的源或目的地,每个域可以位于主机存储器44中或 网络46上。HCA 22支持在事务的请求者侧和应答者侧的用于发送/接收操作以及RDMA (读 和写)操作的签名操作。总体来说,一个域中受签名保护的块的邻接段包含第一整数数量 的数据块并适应于另一个域中第二整数数量的数据块。在从不同种类的保护域到同类保护 域的转变中,HCA 22添加必要的填充体以补充段以适应同类保护域中第二整数数量的段。 通常,在同类保护域中填充体不随签名变化(例如,对于XOR或校验和,为零)。
在本发明的一些实施方案中,HCA 22以网速(wire speed)执行上述的签名相关 操作。在数据流动通过HCA 22时,处理电路50计算新、旧签名,并且仅在旧签名有效时替 换签名。如果签名检查失败,则操作带有错误,该错误在工作请求完成后即被报告。
图6是示意性图解依照本发明的一实施方案的递增签名计算方法的流程图。该方 法例如可在图5的方法中的步骤120执行。为了说明一示例性工作请求,以下对图6的方 法的描述特别地涉及图3中示出的输入数据72和其它数据结构。当HCA 22接收工作请求 时,该工作请求还包括一个或多个用于待传送的数据块的一个或多个存储器关键字,例如, 图3中具有标识符MKEY2的存储器关键字。
首先,地址转换模块58使用工作请求存储器关键字查找与待传送的数据块相关联的签名背景表62中的TSC表目(步骤130)。一旦定位了 TSC,地址转换模块58就参照 存储器转换表68以确定主机存储器44中数据块72的物理地址。DMA模块60经由主机接 口 48从地址转换模块58所提供的物理存储器地址取出第一个数据块(图3的实施例中的 数据块78)(步骤132)。
然后,签名背景模块56定位与所取出的数据块相关联的签名背景表62中的BSC 表目(步骤134)。为了定位块和签名背景表表目,地址转换模块58在存储器保护表66中 查找存储器关键字MKEY2。在该实施例中,MKEY2的存储器保护表表目包括指向签名背景表 62中具有标识符TSCl的TSC表目的指示字,该具有标识符TSCl的TSC表目跟着具有标识 符BSCl的BSC表目。除标识符(S卩,BSC1)以外,该BSC表目还包括块签名规则和块签名 结果。签名背景表62中的TSCl表目包括事务签名规则和事务签名结果。然后,地址转换 模块58将指向BSCl和TSCl签名背景表表目的指示字传送到签名背景模块56。
签名背景模块56使用存储在BSC表目BSCl中的块签名规则,为所取出的数据块 计算块签名(步骤136),并将所计算的块签名存储到与块签名BSCl相关联的结果字段(步 骤128)。该结果将随同数据块一起在事务数据包中被传输(步骤122,图幻。签名背景模 块56还依照用于签名背景表62表目TSCl的事务签名规则,用递增的事务签名值(即,针 对所取出的数据块计算的)更新签名背景表62表目TSCl的结果字段(步骤140)。
如果要取出更多的数据块(步骤142),DMA模块60经由主机接口 48从主机存储 器44读取输入数据72的下一个数据块(步骤144),并且该方法返回到步骤134。否则,签 名背景模块56完成事务签名的计算(即,在处理输入数据72中的最后一个数据块并计算 事务签名的最后增量之后),并将所计算的事务签名存储到签名背景表62表目TSCl (步骤 146)。该事务签名将一般在事务的最后一个数据包中被传输。
尽管图6中示意性图解的流程图描述了包括既受不同种类的块签名又受一个事 务签名保护的数据块的事务,但本发明的实施方案还包括其它场景。例如,一个事务可以包 括同类的数据块,或仅受事务签名保护的数据块(即,没有块签名),或仅受(同类的或不同 种类的)块签名保护的数据块(即,没有事务签名)。当事务包括受同类的块签名保护的数 据块时,在取出下一个数据块(步骤144)之后,图6中描述的方法以步骤146继续,因为在 取出每个数据块时不需要定位BSC表表目。
当处理一给定事务时,HCA 22获得签名背景表62中的所需表目的“所有权”。这 些参数在事务被启动时(例如,当在主机接口 48上提出第一 I/O操作请求时)被转至硬件 所有者,并由硬件占有,直到事务完成。事务完成后,签名计算结果(即,签名计算和错误报 告)即被存储在其各自的表中,从而使得所述结果可由软件查询和/或供之后的事务再使用。
以下权利要求中所有装置或步骤加功能的要素的相应结构、材料、行为和等同物 意在包括任何这样的结构、材料或行为其如具体要求的那样与其它所要求的要素相结合 执行所述功能。尽管已出于说明和描述的目的给出了对本发明的描述,但该描述并不意在 以排他的或以所公开的形式限制本发明。多种修改和变化对本领域技术人员来说将是明显 的,而不偏离本发明的范围和实质。实施方案被选择和描述,以最佳地解释本发明的原理和 实际应用,以及使本领域其他技术人员能够关于具有如适合所预期的特定使用的各种变化 的各种实施方案理解本发明。
所附权利要求意在覆盖本发明所有落入本发明的实质和范围内的特征和优点。因 为多种修改和变化将是本领域技术人员易于想到的,所以意在本发明不限于本文中描述的 有限数量的实施方案。因此,应意识到,可以采取落入本发明的实质和范围内的所有合适的 变化、修改和等同物。
权利要求
1.网络通信设备,包括主机接口,该主机接口被联接以与具有主机存储器的主机处理器通信,以便接收执行 事务的工作请求,在该事务中,包括至少第一数据块和最后一个数据块的多个数据块将通 过包网络传送;网络接口,该网络接口联接到该包网络;以及处理电路,该处理电路被配置以处理多个数据包以便执行该事务,在该事务中的每个 数据包包含所述多个数据块的一部分,并且所述多个数据包包括至少第一包和最后一个 包,该第一包和最后一个包分别包含该事务的第一数据块和最后一个数据块,并且该处理 电路被配置以在处理所述多个数据包的同时针对所述多个数据块计算事务签名,使得在完 成该事务签名的计算之前,至少所述第一数据块通过所述接口之一从该网络通信设备中传 出ο
2.如权利要求1所述的网络通信设备,其中该处理电路被配置以从该主机存储器读取 所述多个数据块,以生成所述多个数据包,以及计算所述事务签名并将其插入所述最后一 个数据包,同时在完成该事务签名的计算之前,通过该网络接口传输至少所述第一数据包。
3.如权利要求1所述的网络通信设备,其中该处理电路被配置以从该网络接口接收所 述多个数据包以及计算所述事务签名,同时将所述多个数据块传输到该主机存储器,使得 在完成该事务签名的计算之前,至少所述第一数据块被写到该主机存储器。
4.如权利要求1所述的网络通信设备,其中该处理电路被配置以除了计算所述事务签 名外还计算所述多个数据块各自的块签名,以及将这些块签名插入所述多个数据包。
5.如权利要求4所述的网络通信设备,其中该事务中的所述块签名是不同种类的。
6.如权利要求1所述的网络通信设备,其中所述多个数据块由该处理电路以第一事务 签名接收,并且该处理电路被配置以移除、读取和验证该第一事务签名,以及计算不同于该 第一签名的第二事务签名并将其附加到所述多个数据块。
7.如权利要求6所述的网络通信设备,其中该处理电路被配置以在处理所述多个数据 包后传送完成报告到该主机处理器,以及一发现该第一签名的验证中的错误就在该完成报 告中插入错误指示。
8.如权利要求1所述的网络通信设备,包括控制存储器,该控制存储器被配置以存储 签名背景,其中该处理电路被配置以读取并应用该签名背景以计算所述事务签名。
9.如权利要求8所述的网络通信设备,其中该处理电路可被配置以在该控制存储器中 存储针对至少所述第一包计算的临时事务签名结果,以及读取该临时事务签名结果并将其 应用于完成针对所述最后一个包的事务签名的计算。
10.网络通信设备,包括主机接口,该主机接口被联接以与具有主机存储器的主机处理器通信,以便接收执行 事务的工作请求,在该事务中,一个或多个数据块将通过包网络传送;网络接口,该网络接口联接到该包网络;以及处理电路,该处理电路被配置以处理包含所述一个或多个数据块的一个或多个数据包 以便执行该事务,并且该处理电路被配置以读取和验证通过该主机接口和网络接口中的一 个随同所述一个或多个数据块接收的第一签名,以及针对所述一个或多个数据块计算不同 于该第一签名的第二签名,以及通过该主机接口和网络接口中的另一个随同所述一个或多个数据块传送该第二签名。
11.如权利要求10所述的网络通信设备,其中该第一和第二签名包括针对所述多个数 据块中的每个计算的块签名。
12.如权利要求10所述的网络通信设备,其中该第一和第二签名包括针对多个所述数 据块计算的事务签名。
13.如权利要求10所述的网络通信设备,其中该处理电路被配置以在处理所述一个或 多个数据包后传送完成报告到该主机处理器,以及一发现该第一签名的验证中的错误就在 该完成报告中插入错误指示。
14.网络通信设备,包括主机接口,该主机接口被联接以与具有主机存储器的主机处理器通信,以便接收执行 事务的工作请求,在该事务中,一个或多个数据块将通过包网络传送;网络接口,该网络接口联接到该包网络;控制存储器,该控制存储器被配置以存储签名背景;以及处理电路,该处理电路被配置以处理包含所述一个或多个数据块的一个或多个数据包 以便执行该事务,并被配置以从该控制存储器读取该签名背景,以及将该签名背景应用于 计算针对所述多个数据块中的一个或多个的签名。
15.如权利要求14所述的网络通信设备,其中该签名背景指示将由该处理电路用于计 算该签名的规则。
16.如权利要求15所述的网络通信设备,其中所述一个或多个数据块包括至少第一数 据块和第二数据块,并且该控制存储器被配置以存储多个签名背景,该多个签名背景包括 至少第一和第二签名背景,该第一和第二签名背景包括将由该处理电路分别应用于所述第 一和第二数据块的、用于签名计算的不同规则。
17.如权利要求14所述的网络通信设备,其中该工作请求包括存储器关键字,该存储 器关键字与所述多个数据块相关联并指示该主机存储器中的位置,其中该存储器关键字包 括指向该签名背景的指示字,该指示字供该处理电路用于读取该签名背景。
18.如权利要求14所述的网络通信设备,其中该签名背景包括块签名背景,该块签名 背景由该处理电路用于计算针对所述多个数据块中的至少一个的块签名。
19.如权利要求18所述的网络通信设备,其中该事务包括多个不同种类的数据块,该 多个不同种类的数据块具有不同的各自的块签名背景。
20.如权利要求14所述的网络通信设备,其中该签名背景包括事务签名背景,该事务 签名背景由该处理电路用于计算针对该事务中的所述多个数据块的事务签名。
21.用于通信的方法,包括从具有主机存储器的主机处理器接收执行事务的工作请求,在该事务中,包括至少第 一数据块和最后一个数据块的多个数据块将经由网络接口设备通过包网络传送;在该网络接口设备中,处理多个数据包以便执行该事务,该事务中的每个数据包包含 所述多个数据块的一部分,并且所述多个数据包包括至少第一包和最后一个包,该第一包 和最后一个包分别包含该事务的所述第一数据块和最后一个数据块;以及在该网络接口设备中,在处理所述多个数据包的同时针对所述多个数据块计算事务签 名,使得在完成该事务签名的计算之前,至少所述第一数据块通过一接口从该网络通信设备中传出。
22.如权利要求21所述的方法,其中处理所述多个数据包包括从该主机存储器读取所述多个数据块,生成所述多个数据包,并将该事务签名插入所 述最后一个数据包,同时在完成该事务签名的计算之前,将至少所述第一数据包传输到该 包网络。
23.如权利要求21所述的方法,其中处理所述多个数据包包括 从该网络接口接收所述多个数据包;以及计算所述事务签名,同时将所述多个数据块传输到该主机存储器,使得在完成该事务 签名的计算之前,至少所述第一数据块被写到该主机存储器。
24.如权利要求21所述的方法,其中处理所述多个数据包包括 除计算所述事务签名外还计算所述多个数据块各自的块签名;以及 将这些块签名插入所述多个数据包。
25.如权利要求M所述的方法,其中该事务中的所述块签名是不同种类的。
26.如权利要求21所述的方法,其中处理所述多个数据包包括 以第一事务签名接收所述多个数据块;验证该第一事务签名;从所述多个数据块移除该第一签名;计算不同于该第一事务签名的第二事务签名;以及将该第二事务签名附加到所述多个数据块。
27.如权利要求沈所述的方法,包括在处理所述多个数据包后传送完成报告到该主机 处理器,以及一发现该第一事务签名的验证中的错误就在该完成报告中插入错误指示。
28.如权利要求21所述的方法,其中处理所述多个数据包包括将签名背景存储到该 网络接口设备的控制存储器,以及读取并应用该签名背景以计算所述事务签名。
29.如权利要求观所述的方法,其中处理所述多个数据包包括在该控制存储器中存储针对至少所述第一包计算的临时事务签名结果;以及 使用该临时事务签名结果完成针对所述最后一个包的事务签名的计算。
30.用于通信的方法,包括从具有主机存储器的主机处理器接收执行事务的工作请求,在该事务中,一个或多个 数据块将经由网络接口设备通过包网络传送,该网络接口设备具有主机接口和网络接口 ; 以及在该网络接口设备中处理包含所述一个或多个数据块的一个或多个数据包以便执行 该事务;在该网络接口设备中读取和验证由该网络接口设备通过该主机接口和网络接口中的 一个随同所述一个或多个数据块接收的第一签名;在该网络接口设备中针对所述一个或多个数据块计算不同于该第一签名的第二签名;以及通过该主机接口和网络接口中的另一个从该网络接口设备随同所述一个或多个数据 块传送该第二签名。
31.如权利要求30所述的方法,其中该第一和第二签名包括针对所述多个数据块中的每个计算的块签名。
32.如权利要求30所述的方法,其中该第一和第二签名包括针对所述多个数据块中的 多个计算的事务签名。
33.如权利要求30所述的方法,包括在处理所述一个和多个数据包后传送完成报告到 该主机处理器,其中一发现该第一签名的验证中的错误就在该完成报告中插入错误指示。
34.用于通信的方法,包括从具有主机存储器的主机处理器接收执行事务的工作请求,在该事务中,一个或多个 数据块将经由网络接口设备通过包网络传送,该网络接口设备具有控制存储器;将签名背景存储在该控制存储器中;在该网络接口设备中处理包含所述一个或多个数据块的一个或多个数据包以便执行 该事务;以及在该网络接口设备中,使用存储在该控制存储器中的所述签名背景,针对所述多个数 据块中的一个或多个计算签名。
35.如权利要求34所述的方法,其中该签名背景指示供用于计算该签名的规则,并且 其中计算该签名包括应用该规则。
36.如权利要求35所述的方法,其中所述一个或多个数据块包括至少第一数据块和第 二数据块,并且其中存储该签名背景包括存储多个签名背景,该多个签名背景包括至少第 一和第二签名背景,该第一和第二签名背景包括将分别应用于所述第一和第二数据块的、 用于签名的计算的不同规则。
37.如权利要求34所述的方法,其中该工作请求包括存储器关键字,该存储器关键字 与所述多个数据块相关联并指示该主机存储器中的位置,其中该存储器关键字包括指向该 签名背景的指示字,该指示字供该网络接口设备用于读取该签名背景。
38.如权利要求34所述的方法,其中该签名背景包括块签名背景,并且其中计算该签 名包括利用该块签名背景针对所述多个数据块中的至少一个计算块签名。
39.如权利要求38所述的方法,其中该事务包括多个不同种类的数据块,该多个不同 种类的数据块具有不同的各自的块签名背景。
40.如权利要求34所述的方法,其中该签名背景包括事务签名背景,并且其中计算该 签名包括利用该事务签名背景针对该事务中的所述多个数据块计算事务签名。
全文摘要
本发明涉及一种网络通信设备,其包括主机接口,该主机接口被联接以与具有主机存储器的主机处理器通信,以便接收执行事务的工作请求,在该事务中,多个数据块将通过包网络传送。处理电路被配置以处理多个数据包以便执行该事务,该事务中的每个数据包包含上述多个数据块的一部分,并且所述多个数据包包括至少第一包和最后一个包,该第一包和最后一个包分别包含该事务的第一数据块和最后一个数据块。该处理电路被配置以在处理所述数据包的同时针对所述多个数据块计算事务签名,使得在完成该事务签名的计算之前,至少所述第一数据块通过接口之一从该网络通信设备中传出。
文档编号H04L29/06GK102035875SQ201010505279
公开日2011年4月27日 申请日期2010年9月30日 优先权日2009年10月4日
发明者A·沙哈尔, M·卡根, N·布洛赫 申请人:梅兰诺克斯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1