为具有N块数据的消息产生循环冗余检验的方法和装置制造方法及图纸

技术编号:3521820 阅读:230 留言:0更新日期:2012-04-11 18:40
提供了一种即时地计算部分CRC的方法,该方法无需预先计算出的表,且没有对数据块或包的大小的限制。该方法适用于固定长和可变长的数据块,在数据块被接收时计算2的幂的余数,无需预先计算它们和把它们存入表中。该方法可用于其数据块被无序接收的数据流。

【技术实现步骤摘要】

一般地说,本专利技术涉及计算部分循环冗余检验(CRC)的方法,更具体地说,涉及对可变长数据块或包实时计算部分CRC的方法。
技术介绍
可靠的数据传输通常涉及计算差错监测检验,如循环冗余检验(CRC),以支持各式各样的协议和传输介质。例如,iSCSI(因特网小型计算机系统接口)标准提供了在TCP/IP(传输控制协议/因特网协议)上交换SCSI命令和数据的机制。iSCSI定义一个PDU(协议数据单元)用于iSCSI始发者和目标之间的交换。iSCSI PDU可能不与TCP段或IP数据报(datagram)对齐,因为TCP层把往返于更上层的数据作为字节流对待。由于TCP可能在任何任意点断开字节流,所以PDU可能不与TCP段对齐,从而PDU的一些部分可能出现在TCP段内。iSCSI标准定义一个CRC32检验,以验证PDU头和数据净荷的完整性。计算CRC余数的一个困难是PDU的一些部分可能从网络上无序地到达。这种无序分发是用于传送iSCSI PDU的底层TCP/IP协议造成的结果。产生CRC余数的传统实现依赖于被按顺序处理的数据。TCP/IP的这些行为的结果是一个iSCSI PDU的一些部分可能被包含在那些可能无序到达的不同以太网包中。当以太网帧(或类似帧)无序到达时,由硬件计算CRC通常会更加困难。该问题的部分原因是CRC算法本身,因为一个字节数据的CRC结果依赖于CRC所保护的所有先前各字节。这样,CRC计算是不相关联的。第二个因素是iSCSI PDU不在该协议的任何较低级部分内对齐。这样,可能在一个TCP段的数据部分内的任何地方出现PDU边界,因此,在较低各层中也是如此。影响产生CRC的另一个因素是网络速度的提高。在较高速度时,有较少时间处理每包。这已造成许多途径把TCP/IP处理从主机卸载到专门化的硬件和/或其他处理器。这些途径还最大限度地减少数据在系统中的移动次数。理想地,CRC的产生应作为其他包处理要求中的一部分来完成。在PDU的所有部分都已被接收之后计算CRC会消耗额外的存储器和总线带宽。在PDU到达时即时地(on the fly)或实时地计算CRC会更加有效和灵活。
技术实现思路
在本专利技术的一个方面,提供一种方法用于为一个具有N块数据的消息产生循环冗余检验(CRC),该方法包括如下步骤为一个无序数据块计算部分CRC并存储结果,产生与该无序数据块关联的CRC余数乘数并存储结果,重复上述计算和产生步骤直至该消息的全部N块数据被接收为止,以及组合计算步骤和产生步骤的结果。在本专利技术的另一方面,提供一种装置用于为一个具有N块数据的消息产生循环冗余检验(CRC)。该装置包含一个部件为一个无序数据块计算部分CRC并存储结果,一个部件产生与该无序数据块关联的CRC余数乘数并存储结果,以及一个部件用于组合计算的部分CRC和产生的余数乘数的结果。在本专利技术的另一方面,提供一个计算机程序产品,包含一个计算机可用介质,在该介质中体现可读程序代码,该程序产品包括第一部件用于为一个无序数据块计算部分CRC并存储结果,第二部件用于产生与该无序数据块关联的CRC余数乘数并存储结果,以及第三部件用于组合第一部件和第二部件的结果。附图说明由下文参考附图对本专利技术实施例的详细描述,将会更好地理解本专利技术的上述以及其他目的、方面和优点,这些附图是图1A-1C显示可利用本专利技术的示例性配置方块图;图2A示意显示有无序包的消息;图2B示意显示与TCP/IP包有关的iSCSI PDU实施例;图3是使用本专利技术的一个实施例的示意流程图;图4是本专利技术一个实施例的流程图;以及图5是使用本专利技术的一个实施例的流程图。具体实施例方式本专利技术的目的是在收到数据块时计算2的幂次的余数,由此计算部分CRC,而不是例如预先计算它们并把它们存储在表中。在一些实施例中,如果假定存在有限个可能的大小,则预先计算的表仍是可能的。在许多传输介质和协议的拓扑结构中,CRC是很流行的。图1A是可以利用本专利技术的典型网络的示例性方块图,该网络在操作中使用CRC,图中总体上用参考数字10表示。图1A可以包括例如在TCP/Ip顶上运行iSCSI的以太网网络。在示例性网络10中包括服务器15和存储设备20。服务器15可请求I/O操作,如经过局域网25(LAN)对存储设备20进行读和写。LAN25可与广域网(WAN)相连。图1B是方块图,显示例如服务器15的服务器示例性配置。该服务器配置可包括CPU30、芯片组35、存储器40以及iSCSI HBA(主机总线适配器)45。除了iSCSI协议外,iSCSI HBA45还可支持例如通用TCP/IP和远程直接存储器存取(RDMA)通信。HBA通常与系统总线50连接,如服务器15内的PCI-X总线。图1C是一个iSCSI卸载引擎环境的示例性配置方块图,总体由参考数字55表示。这一配置包括一个与网络的接口60,在本例中示为以太网物理接口,一个iSCSI卸载引擎65,它在实施例中可用于即时地计算CRC,以及存储器70。iSCSI卸载引擎可经由PCI-X或其他适当接口与服务器15连接。术语“数据块”(也称作“块”)是指数据的最小单元,它是一个连续的比特序列。数据块可以无序到达,因为底层传输机制,如以太网包,可以无序到达。术语“消息”是指一个或多个数据块的集合,这些数据块有被定义的顺序。从消息到包的映射把一个消息分割成若干数据块。术语“包”通常是指在网络上被原封不动地传输的数据单元。一个包可包含一个或多个消息的若干部分。包可包含由适当网络协议定义的其他信息。一个包可无序到达,因此在包中含有的数据块可无序到达。术语“包数据”是由CRC保护的消息。术语“PDU”(协议数据单元)是一个iSCSI术语,是在以太网网络上传送的一类消息。术语“数据段”是指一个iSCSI术语,通常是一个PDU的可选部分而且也可以是一类消息。图2A是带有无序包的消息的示意图,总体上由参考数字80表示。该示例消息含有6个包,表现为接收点(如接口60)无序到达供处理和根据本专利技术计算部分的和最后的CRC。这些包还显示为有不同的长度。没有显示开销和控制信息,如协议头。因为这些包含有构成消息的数据块,所以该消息也是无序到达的。这些数据块可以有不同的长度。本领域技术人员会理解,任何数量的包和长度变化都是可能的,而且这些包可以以任何顺序到达。这一举例只是一个可能的实施例。图2B示意显示与TCP/IP包90有关的iSCSI PDU85的一个实施例。图2B显示一系列PDU可如何以TCP/IP包传输。如本领域技术人员会理解的那样,其他实施例可以发生。iSCSI PDU头86可包括基本头段、可选的附加头段以及可选的头文摘,如iSCSI标准(未示出)定义的那样。iSCSI数据被包含在跟随该头的数据段87中。数据段由数据摘要保护,该数据摘要的32比特CRC88由iSCSI标准定义。TCP在进出一个应用(如iSCSI)的字节流中处理数据。这样,当iSCSIPDU在网络上流动时它们不能以任何方式在TCP/IP包内对齐。一个或多个iSCSI PDU的各部分可被包含在一个TCP/IP包中,而且一个iSCSI PDU可分散在许多TCP/IP包上,对于这种情况,本专利技术可更灵活地处置。在CRC检验背后的一个方面是一个长比特串,本文档来自技高网
...

【技术保护点】
一种为具有N块数据的消息产生循环冗余检验(CRC)的方法,包含:为一个无序数据块计算部分CRC并存储结果;产生与该无序数据块关联的CRC余数乘数并存储结果;重复计算和产生步骤直至该消息的全部N块数据被接收;以及组合计算步骤和产生步骤的结果。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:PA桑登CJ乔治乌RE安德森
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1