首页 / 专利库 / 资料储存系统 / 根哈希 / 一种基于网络参数的完整性校验和选择性去重复的方法及装置

一种基于网络参数的完整性校验和选择性去重复的方法及装置

阅读:382发布:2020-05-11

专利汇可以提供一种基于网络参数的完整性校验和选择性去重复的方法及装置专利检索,专利查询,专利分析的服务。并且提供一种管理数据包的方法。确定网络利用率超过 阈值 。发送方计算机通过利用根据中央此处理单元利用率选择的哈希函数确定数据包的哈希 摘要 。如果哈希摘要在发送方哈希表中,则发送方计算机在不发送数据包的情况下,发送哈希摘要和针对哈希摘要的索引,使得接收方计算机能用索引来在接收方哈希表中查找相匹配的哈希摘要和数据包。如果哈希摘要不在发送方哈希表中,则发送方计算机把数据包和哈希摘要添加到发送方哈希表,并向第二计算机发送数据包和哈希摘要,以根据哈希摘要检查数据包的完整性。,下面是一种基于网络参数的完整性校验和选择性去重复的方法及装置专利的具体信息内容。

1.一种管理数据包的方法,该方法包含以下步骤:
第一计算机确定网络的利用率大于网络利用率阈值,该网络包括第一计算机和第二计算机;和
根据该网络的利用率大于网络利用率阈值,第一计算机进入去重复模式,随后执行去重复模式中的步骤,包括:
第一计算机向第二计算机发送第一计算机已进入去重复模式的通知;
第一计算机判定第一计算机中包含的中央处理单元(CPU)的利用率是否大于CPU利用率阈值;
如果该CPU的利用率大于CPU利用率阈值,第一计算机选择第一哈希函数而非第二哈希函数,如果该CPU的利用率小于或等于CPU利用率阈值,则选择第二哈希函数而非第一哈希函数;
第一计算机利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要
第一计算机判定该哈希摘要是否在与第一计算机耦合的发送方哈希表中;
如果该哈希摘要在该发送方哈希表中,则第一计算机不是向第二计算机发送该数据包,而是向第二计算机发送该哈希摘要、针对发送方哈希表中的和与第二计算机耦合的接收方哈希表中的哈希摘要的索引、以及所选择的第一或第二哈希函数的标识符;和如果该哈希摘要不在发送方哈希表中,则第一计算机把该数据包和该哈希摘要添加到发送方哈希表,并向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性。
2.按照权利要求1的方法,进一步包含:第二计算机接收第一计算机已进入去重复模式的通知,其中第一计算机确定该哈希摘要在发送方哈希表中,并且第一计算机向第二计算机发送该哈希摘要、针对发送方哈希表中的和接收方哈希表中的哈希摘要的索引、以及所选择的第一哈希函数或第二哈希函数的标识符,并且,第二计算机作为响应:
根据收到的第一计算机已进入去重复模式的通知,第二计算机确定没有随该哈希摘要、该索引、以及该标识符一起收到该数据包;
第二计算机接收该哈希摘要、该索引和所选择的第一或第二哈希函数的标识符;
响应于第二计算机确定没有收到该数据包,第二计算机根据该索引,在接收方哈希表中查找哈希摘要;
第二计算机确定在接收方哈希表中查找的哈希摘要匹配所接收的哈希摘要;
基于所查找的哈希摘要匹配所接收的哈希摘要,第二计算机检索与在接收方哈希表中查找的哈希摘要相关联的数据包;
基于所接收的标识符,第二计算机确定所选择的第一或第二哈希函数,并通过在所检索的数据包上运用所选择的第一或第二哈希函数而确定新的哈希摘要;
第二计算机判定该新的哈希摘要是否匹配所接收的哈希摘要;和
如果该新的哈希摘要匹配所接收到的哈希摘要,第二计算机向应用程序传送所检索的数据包。
3.按照权利要求1的方法,其中,第一计算机确定该哈希函数不在发送方哈希表中,并且其中,该方法进一步包含以下步骤:
确定该哈希摘要不在发送方哈希表中的步骤后,第一计算机把该哈希摘要和所选择的第一或第二哈希函数的标识符嵌入一通信包包含的元数据,将该数据包嵌入该通信包,并向第二计算机发送该通信包;
响应于第一计算机向第二计算机发送该通信包的步骤,第二计算机通过接收该通信包而接收该哈希摘要、所选择的第一或第二哈希函数的标识符、以及该数据包;
根据所接收的所选择的第一或第二哈希函数的标识符,第二计算机通过在所接收的数据包上运用所选择的第一或第二哈希函数而确定新的哈希摘要;和
第二计算机判定所接收的哈希摘要是否匹配该新的哈希摘要,并且,如果所接收的哈希摘要匹配该新的哈希摘要,则第二计算机确定该数据包具有完整性,并且,作为响应,第二计算机把该数据包和该哈希摘要添加到接收方哈希表并向一应用程序传送该数据包,如果所接收的哈希摘要不匹配该新的哈希摘要,则第二计算机通知第一计算机该数据包不具有完整性,并且,作为响应,第一计算机向第二计算机重新发送数据包和哈希摘要。
4.按照权利要求3的方法,其中,第二计算机确定所接收的哈希摘要匹配该新的哈希摘要并且第二计算机把该数据包和该哈希摘要添加到接收方哈希表,其中,该方法进一步包含:
第一计算机把该数据包和哈希摘要添加到发送方哈希表后,第二计算机把该数据包和哈希摘要添加到接收方哈希表后,根据该数据包被添加到发送方哈希表,并且在第一计算机不向第二计算机发送该数据包的情况下,第一计算机向第二计算机发送第二哈希摘要和针对发送方哈希表中的和接收方哈希表中的哈希摘要的索引;
第二计算机接收第一计算机发送的第二哈希摘要和索引;
根据该索引,第二计算机在接收方哈希表中查找哈希摘要;
第二计算机确定在接收方哈希表中查找的哈希摘要匹配所接收的第二哈希摘要;
根据所查找的哈希摘要匹配所接收的第二哈希摘要,第二计算机在接收方哈希表中检索与所查找的哈希摘要相关联的数据包;
根据所接收的所选择的第一或第二哈希函数的标识符,第二计算机确定所选择的第一或第二哈希函数并通过在接收方哈希表中检索的与所查找的哈希摘要相关联的数据包上运用所选择的第一或第二哈希函数而确定第二个新哈希摘要;
第二计算机判定第二个新哈希摘要是否匹配所接收的第二哈希摘要;和
如果第二个新哈希摘要匹配所接收的第二哈希摘要,第二计算机把所检索的数据包传送给该应用程序。
5.按照权利要求1的方法,其中,第一计算机确定该哈希摘要在发送方哈希表中,作为响应,第一计算机更新发送方哈希表中的多个计数中包括的一个计数,该计数指出第一计算机多少次向网络中的任何其它计算机发送该索引和该数据包的哈希摘要,并且其中,该方法进一步包含以下步骤:
第一计算机为其它数据包重复去重复模式中的步骤;
第一计算机更新发送方哈希表中的多个计数中包括的其它计数,其它计数指出第一计算机多少次向网络中的任何其它计算机发送其它索引和其它数据包的其它哈希摘要;
在去重复模式期间,第一计算机确定发送方哈希表中可用的空间;
第一计算机确定发送方哈希表中可用的空间小于空间阈值;
根据发送方哈希表中可用的空间小于空间阈值,第一计算机确定发送方哈希表的针对发送方哈希表中的多个计数中包括的最低计数的一个或多个索引;
第一计算机删除发送方哈希表中对应于该一个或多个索引且包括最低计数的一个或多个条目,使得发送方哈希表中可用的空间超出空间阈值;和
第一计算机向第二计算机发送针对最低计数的该一个或多个索引。
6.按照权利要求5的方法,进一步包含以下步骤:
第二计算机从第一计算机接收针对最低计数的该一个或多个索引;和
第二计算机删除接收方哈希表中的对应于该一个或多个索引且包括最低计数的一个或多个条目,使得接收方哈希表中可用的空间从小于空间阈值变得超出空间阈值。
7.第一计算机系统,包含:
中央处理单元(CPU);
耦合到CPU的存储器
计算机可读的、耦合到CPU的有形存储设备,该存储设备含有通过存储器由CPU执行的、实现管理数据包的方法的指令,该方法包含以下步骤:
第一计算机系统确定网络的利用率大于网络利用率阈值,该网络包括第一计算机系统和第二计算机系统;和
根据该网络的利用率大于网络利用率阈值,第一计算机系统进入去重复模式,随后执行去重复模式中的步骤,包括:
第一计算机系统向第二计算机系统发送第一计算机系统已进入去重复模式的通知;
第一计算机系统判定第一计算机系统中包含的CPU的利用率是否大于CPU利用率阈值;
如果该CPU的利用率大于CPU利用率阈值,第一计算机系统选择第一哈希函数而非第二哈希函数,如果该CPU的利用率小于或等于CPU利用率阈值,则选择第二哈希函数而非第一哈希函数;
第一计算机系统利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要;
第一计算机系统判定该哈希摘要是否在与第一计算机系统耦合的发送方哈希表中;
如果该哈希摘要在该发送方哈希表中,则第一计算机系统不是向第二计算机发送系统该数据包,而是向第二计算机系统发送该哈希摘要、针对发送方哈希表中的和与第二计算机系统耦合的接收方哈希表中的哈希摘要的索引、以及所选择的第一或第二哈希函数的标识符;和
如果该哈希摘要不在发送方哈希表中,则第一计算机系统把该数据包和该哈希摘要添加到发送方哈希表,并向第二计算机系统发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性。
8.按照权利要求7的第一计算机系统,其中,第一计算机系统发送第一计算机系统已经进入去重复模式的通知的结果是第二计算机系统收到该通知,其中,第一计算机系统确定该哈希摘要在发送方哈希表中,并且第一计算机系统向第二计算机系统发送该哈希摘要、针对发送方哈希表中的和接收方哈希表中的哈希摘要的索引、以及所选择的第一哈希函数或第二哈希函数的标识符,并且其中第一计算机系统向第二计算机系统发送该哈希摘要、索引和标识符的结果包含:
根据对第一计算机系统已进入去重复模式的通知的接收,第二计算机系统对没有随该哈希摘要、该索引、以及该标识符一起收到该数据包的确定;
在第二计算机系统对该哈希摘要、该索引和所选择的第一或第二哈希函数的标识符的接收;
由第二计算机系统根据该索引并响应第二计算机系统对没有收到该数据包的确定在接收方哈希表中对该哈希摘要的查找;
第二计算机系统对在接收方哈希表中查找的哈希摘要匹配所接收的哈希摘要的确定;
基于所查找的哈希摘要匹配所接收的哈希摘要,第二计算机系统在接收方哈希表中对与所查找的哈希摘要相关联的数据包的检索;
基于所接收的标识符,第二计算机系统对所选择的第一或第二哈希函数的确定,以及第二计算机系统通过在所检索的数据包上运用所选择的第一或第二哈希函数而对新的哈希摘要的确定;
第二计算机系统对该新的哈希摘要是否匹配所接收的哈希摘要的判定;和如果该新的哈希摘要匹配所接收到的哈希摘要,第二计算机系统将所检索的数据包向应用程序的传送。
9.按照权利要求7的计算机系统,其中,第一计算机系统确定该哈希摘要不在发送方哈希表中,并且其中,该方法进一步包含以下步骤:
确定该哈希摘要不在发送方哈希表中的步骤后,第一计算机系统把该哈希摘要和所选择的第一或第二哈希函数的标识符嵌入一通信包包含的元数据,将该数据包嵌入该通信包,并向第二计算机系统发送该通信包,
其中,向第二计算机系统发送该通信包的步骤的结果包含:
第二计算机系统对该哈希摘要、所选择的第一或第二哈希函数的标识符、以及该数据包的接收;
根据所接收的所选择的第一或第二哈希函数的标识符,第二计算机系统通过在所接收的数据包上运用所选择的第一或第二哈希函数而对新的哈希摘要的确定;和对所接收的哈希摘要是否匹配该新的哈希摘要的判定,并且,如果所接收的哈希摘要匹配该新的哈希摘要,则该结果包含对该数据包具有完整性的确定,该数据包和该哈希摘要向接收方哈希表的添加,以及该数据包向应用程序的传送,并且,如果所接收的哈希摘要不匹配该新的哈希摘要,则该结果包含第一计算机的关于该数据包不具有完整性的通知,并且,作为响应,第一计算机系统向第二计算机系统重新发送数据包和哈希摘要。
10.按照权利要求9的第一计算机系统,其中,向第二计算机发送该通信包的步骤的结果进一步包括对所接收的哈希摘要匹配该新的哈希摘要以及该数据包和该哈希摘要向接收方哈希表的添加的确定,其中,该方法进一步包含:
第一计算机系统把该数据包和哈希摘要添加到发送方哈希表后,把该数据包和哈希摘要添加到接收方哈希表后,根据该数据包被添加到发送方哈希表,并且在第一计算机系统不向第二计算机系统发送该数据包的情况下,第一计算机系统向第二计算机系统发送第二哈希摘要和针对发送方哈希表中的和接收方哈希表中的哈希摘要的索引,其中,第一计算机系统向第二计算机系统发送该通信包的步骤的结果包含:
对第一计算机系统发送的第二哈希摘要和索引的接收;
根据该索引在接收方哈希表中对哈希摘要的查找;
对在接收方哈希表中查找的哈希摘要匹配所接收的第二哈希摘要的确定;
根据所查找的哈希摘要匹配所接收的第二哈希摘要,在接收方哈希表中对与所查找的哈希摘要相关联的数据包的检索;
根据所接收的所选择的第一或第二哈希函数的标识符,对所选择的第一或第二哈希函数的确定,以及通过在接收方哈希表中检索的与所查找的哈希摘要相关联的数据包上运用所选择的第一或第二哈希函数而对第二个新哈希摘要的确定;
对第二个新哈希摘要是否匹配所接收的第二哈希摘要的判定;和
如果第二个新哈希摘要匹配所接收的第二哈希摘要,把所检索的数据包向该应用程序的传送。
11.一种管理数据包的计算机系统,包含被配置为执行以下步骤的模
第一计算机系统确定网络的利用率大于网络利用率阈值,该网络包括第一计算机系统和第二计算机系统;和
根据该网络的利用率大于网络利用率阈值,第一计算机进入去重复模式,随后执行去重复模式中的步骤,包含:
第一计算机向第二计算机发送第一计算机已进入去重复模式的通知;
第一计算机判定第一计算机中包含的CPU的利用率是否大于CPU利用率阈值;
如果该CPU的利用率大于CPU利用率阈值,第一计算机选择第一哈希函数而非第二哈希函数,如果该CPU的利用率小于或等于CPU利用率阈值,则选择第二哈希函数而非第一哈希函数;
第一计算机利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要;
第一计算机判定该哈希摘要是否在与第一计算机耦合的发送方哈希表中;
如果该哈希摘要在该发送方哈希表中,则第一计算机不是向第二计算机发送该数据包,而是向第二计算机发送该哈希摘要、针对发送方哈希表中的和与第二计算机耦合的接收方哈希表中的哈希摘要的索引、以及所选择的第一或第二哈希函数的标识符;和如果该哈希摘要不在发送方哈希表中,则第一计算机把该数据包和该哈希摘要添加到发送方哈希表,并向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性。
12.按照权利要求11的计算机系统,其中,第一计算机系统发送第一计算机系统已经进入去重复模式的通知的结果是第二计算机系统收到该通知,其中,第一计算机确定该哈希摘要在发送方哈希表中,并且第一计算机向第二计算机发送该哈希摘要、针对发送方哈希表中的和接收方哈希表中的哈希摘要的索引、以及所选择的第一哈希函数或第二哈希函数的标识符,并且其中第一计算机向第二计算机发送该哈希摘要、索引和标识符的结果包含:
根据对第一计算机系统已进入去重复模式的通知的接收,第二计算机系统对没有随该哈希摘要、该索引、以及该标识符一起收到该数据包的确定;
在第二计算机系统对该哈希摘要、该索引和所选择的第一或第二哈希函数的标识符的接收;
由第二计算机系统根据该索引并响应第二计算机系统对没有收到该数据包的确定在接收方哈希表中对该哈希摘要的查找;
第二计算机系统对在接收方哈希表中查找的哈希摘要匹配所接收的哈希摘要的确定;
基于所查找的哈希摘要匹配所接收的哈希摘要,第二计算机系统在接收方哈希表中对与所查找的哈希摘要相关联的数据包的检索;
基于所接收的标识符,第二计算机系统对所选择的第一或第二哈希函数的确定,以及第二计算机系统通过在所检索的数据包上运用所选择的第一或第二哈希函数而对新的哈希摘要的确定;
第二计算机系统对该新的哈希摘要是否匹配所接收的哈希摘要的判定;和如果该新的哈希摘要匹配所接收到的哈希摘要,第二计算机系统将所检索的数据包向应用程序的传送。
13.按照权利要求11的计算机系统,其中,第一计算机系统确定该哈希摘要不在发送方哈希表中,并且其中,该系统进一步包含配置为执行以下步骤的模块:
确定该哈希摘要不在发送方哈希表中的步骤后,第一计算机系统把该哈希摘要和所选择的第一或第二哈希函数的标识符嵌入一通信包包含的元数据,将该数据包嵌入该通信包,并向第二计算机系统发送该通信包,
其中,向第二计算机系统发送该通信包的步骤的结果包含:
第二计算机系统对该哈希摘要、所选择的第一或第二哈希函数的标识符、以及该数据包的接收;
根据所接收的所选择的第一或第二哈希函数的标识符,第二计算机系统通过在所接收的数据包上运用所选择的第一或第二哈希函数而对新的哈希摘要的确定;和对所接收的哈希摘要是否匹配该新的哈希摘要的判定,并且,如果所接收的哈希摘要匹配该新的哈希摘要,则该结果包含对该数据包具有完整性的确定,该数据包和该哈希摘要向接收方哈希表的添加,以及该数据包向应用程序的传送,并且,如果所接收的哈希摘要不匹配该新的哈希摘要,则该结果包含第一计算机的关于该数据包不具有完整性的通知,并且,作为响应,第一计算机系统向第二计算机系统重新发送数据包和哈希摘要。
14.按照权利要求13的计算机系统,其中,向第二计算机发送该通信包的步骤的结果进一步包括对所接收的哈希摘要匹配该新的哈希摘要以及该数据包和该哈希摘要向接收方哈希表的添加的确定,其中,该系统进一步包含被配置为执行以下步骤的模块:
第一计算机系统把该数据包和哈希摘要添加到发送方哈希表后,把该数据包和哈希摘要添加到接收方哈希表后,根据该数据包被添加到发送方哈希表,并且在第一计算机系统不向第二计算机系统发送该数据包的情况下,第一计算机系统向第二计算机系统发送第二哈希摘要和针对发送方哈希表中的和接收方哈希表中的哈希摘要的索引,其中,第一计算机系统向第二计算机系统发送该数据包的步骤的结果包含:
对第一计算机系统发送的第二哈希摘要和索引的接收;
根据该索引在接收方哈希表中对哈希摘要的查找;
对在接收方哈希表中查找的哈希摘要匹配所接收的第二哈希摘要的确定;
根据所查找的哈希摘要匹配所接收的第二哈希摘要,在接收方哈希表中对与所查找的哈希摘要相关联的数据包的检索;
根据所接收的所选择的第一或第二哈希函数的标识符,对所选择的第一或第二哈希函数的确定,以及通过在接收方哈希表中检索的与所查找的哈希摘要相关联的数据包上运用所选择的第一或第二哈希函数而对第二个新哈希摘要的确定;
对第二个新哈希摘要是否匹配所接收的第二哈希摘要的判定;和
如果第二个新哈希摘要匹配所接收的第二哈希摘要,把所检索的数据包向该应用程序的传送。
15.一种用于支持计算基础设施的方法,该方法包含以下步骤:
为在第一计算机系统集成、托管、维护和部署计算机可读代码的至少一项而提供至少一个支持服务,其中,计算机可读代码中包含的指令,在被第一计算机系统的处理器执行时,执行一种管理数据包的方法,该方法包含以下步骤:
第一计算机系统确定网络的利用率大于网络利用率阈值,该网络包括第一计算机系统和第二计算机系统;和
根据该网络的利用率大于网络利用率阈值,第一计算机系统进入去重复模式,随后执行去重复模式中的步骤,包括:
第一计算机系统向第二计算机系统发送第一计算机系统已进入去重复模式的通知;
第一计算机系统判定第一计算机系统中包含的CPU的利用率是否大于CPU利用率阈值;
如果该CPU的利用率大于CPU利用率阈值,第一计算机系统选择第一哈希函数而非第二哈希函数,如果该CPU的利用率小于或等于CPU利用率阈值,则选择第二哈希函数而非第一哈希函数;
第一计算机系统利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要;
第一计算机系统判定该哈希摘要是否在与第一计算机系统耦合的发送方哈希表中;
如果该哈希摘要在该发送方哈希表中,则第一计算机系统不是向第二计算机系统发送该数据包,而是向第二计算机系统发送该哈希摘要、针对发送方哈希表中的和与第二计算机系统耦合的接收方哈希表中的哈希摘要的索引、以及所选择的第一或第二哈希函数的标识符;和
如果该哈希摘要不在发送方哈希表中,则第一计算机系统把该数据包和该哈希摘要添加到发送方哈希表,并向第二计算机系统发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性。
16.按照权利要求15的方法,其中,第一计算机系统发送第一计算机系统已经进入去重复模式的通知的结果是第二计算机系统收到该通知,其中,第一计算机确定该哈希摘要在发送方哈希表中,并且第一计算机向第二计算机发送该哈希摘要、针对发送方哈希表中的和接收方哈希表中的哈希摘要的索引、以及所选择的第一哈希函数或第二哈希函数的标识符,并且其中第一计算机向第二计算机发送该哈希摘要、索引和标识符的结果包含:
根据对第一计算机系统已进入去重复模式的通知的接收,第二计算机系统对没有随该哈希摘要、该索引、以及该标识符一起收到该数据包的确定;
在第二计算机系统对该哈希摘要、该索引和所选择的第一或第二哈希函数的标识符的接收;
由第二计算机系统根据该索引并响应第二计算机系统对没有收到该数据包的确定在接收方哈希表中对该哈希摘要的查找;
第二计算机系统对在接收方哈希表中查找的哈希摘要匹配所接收的哈希摘要的确定;
基于所查找的哈希摘要匹配所接收的哈希摘要,第二计算机系统在接收方哈希表中对与所查找的哈希摘要相关联的数据包的检索;
基于所接收的标识符,第二计算机系统对所选择的第一或第二哈希函数的确定,以及第二计算机系统通过在所检索的数据包上运用所选择的第一或第二哈希函数而对新的哈希摘要的确定;
第二计算机系统对该新的哈希摘要是否匹配所接收的哈希摘要的判定;和如果该新的哈希摘要匹配所接收到的哈希摘要,第二计算机系统将所检索的数据包向应用程序的传送。
17.按照权利要求15的方法,其中,第一计算机系统确定该哈希摘要不在发送方哈希表中,并且其中,该方法进一步包含以下步骤:
确定该哈希摘要不在发送方哈希表中的步骤后,第一计算机系统把该哈希摘要和所选择的第一或第二哈希函数的标识符嵌入一通信包包含的元数据,将该数据包嵌入该通信包,并向第二计算机系统发送该通信包,
其中,向第二计算机系统发送该通信包的步骤的结果包含:
第二计算机系统对该哈希摘要、所选择的第一或第二哈希函数的标识符、以及该数据包的接收;
根据所接收的所选择的第一或第二哈希函数的标识符,第二计算机系统通过在所接收的数据包上运用所选择的第一或第二哈希函数而对新的哈希摘要的确定;和对所接收的哈希摘要是否匹配该新的哈希摘要的判定,并且,如果所接收的哈希摘要匹配该新的哈希摘要,则该结果包含对该数据包具有完整性的确定,该数据包和该哈希摘要向接收方哈希表的添加,以及该数据包向应用程序的传送,并且,如果所接收的哈希摘要不匹配该新的哈希摘要,则该结果包含第一计算机的关于该数据包不具有完整性的通知,并且,作为响应,第一计算机系统向第二计算机系统重新发送数据包和哈希摘要。
18.一种管理数据包的方法,该方法包含第二计算机继下述情况后执行再重复模式中的步骤:
确定网络的利用率大于网络利用率阈值,该网络包括第一计算机和第二计算机;
第一计算机进入去重复模式;
第一计算机向第二计算机发送第一计算机已进入去重复模式的通知;
第一计算机判定第一计算机中包含的CPU的利用率是否大于CPU利用率阈值;
如果该CPU的利用率大于CPU利用率阈值,选择第一哈希函数而非第二哈希函数;
如果该CPU的利用率小于或等于CPU利用率阈值,则选择第二哈希函数而非第一哈希函数,其中,采用第一哈希函数比采用第二哈希函数使用更少的CPU;
通过利用所选择的第一或第二哈希函数确定该数据包的哈希摘要;
确定该哈希摘要在与第一计算机耦合的发送方哈希表中;和
由第一计算机向第二计算机发送该哈希摘要、针对发送方哈希表中的和与第二计算机耦合的接收方哈希表中的哈希摘要的索引、以及所选择的第一或第二哈希函数的标识符,而不向第二计算机发送该数据包,
其中,再重复模式中的步骤包含:
根据第一计算机向第二计算机发送第一计算机已进入去重复模式的通知,第二计算机确定没有随该哈希摘要、该索引、以及该标识符一起收到该数据包;
第二计算机接收该哈希摘要、针对发送方哈希表中的和接收方哈希表中的哈希摘要的索引和所选择的第一或第二哈希函数的标识符;
响应于第二计算机确定没有收到该数据包并且根据该索引,第二计算机在接收方哈希表中查找哈希摘要;
第二计算机确定在接收方哈希表中查找的哈希摘要匹配所接收的哈希摘要;
基于所查找的哈希摘要匹配所接收的哈希摘要,第二计算机从接收方哈希表中检索与所查找的哈希摘要相关联的数据包;
基于所接收的标识符,第二计算机确定所选择的第一或第二哈希函数,并通过在所检索的数据包上运用所选择的第一或第二哈希函数而确定新的哈希摘要;
第二计算机判定该新的哈希摘要是否匹配所接收的哈希摘要;和
如果该新的哈希摘要匹配所接收到的哈希摘要,第二计算机向应用程序传送所检索的数据包。
19.按照权利要求18的方法,进一步包含第二计算机继下述情况后执行再重复模式中的额外步骤:
更新发送方哈希表中的多个计数中包括的一个计数,该计数指出第一计算机多少次向网络中的任何其它计算机发送该索引和该数据包的哈希摘要;
第一计算机为其它数据包重复去重复模式中的步骤;
更新发送方哈希表中的多个计数中包括的其它计数,其它计数指出第一计算机多少次向网络中的任何其它计算机发送其它索引和其它数据包的其它哈希摘要
在去重复模式期间,确定发送方哈希表中可用的空间;
确定发送方哈希表中可用的空间小于空间阈值;
根据发送方哈希表中可用的空间小于空间阈值,第一计算机确定发送方哈希表的针对发送方哈希表中的多个计数中包括的最低计数的一个或多个索引;
删除发送方哈希表中对应于该一个或多个索引且包括最低计数的一个或多个条目,使得发送方哈希表中可用的空间超出空间阈值;和
向第二计算机发送针对最低计数的该一个或多个索引,
其中,再重复模式中的额外步骤包含:
第二计算机从第一计算机接收针对最低计数的该一个或多个索引;和
第二计算机删除接收方哈希表中的对应于该一个或多个索引且包括最低计数的一个或多个条目,使得接收方哈希表中可用的空间从小于空间阈值变得超出空间阈值。
20.一种管理数据包的方法,该方法包含以下步骤:
第一计算机确定网络的第一利用率小于或等于网络利用率阈值,该网络包括第一计算机和第二计算机;
根据该网络的利用率小于或等于网络利用率阈值,第一计算机执行不在去重复模式中的步骤,包括:
第一计算机判定第一计算机中包含的CPU的利用率是否大于CPU利用率阈值;
如果该CPU的利用率大于CPU利用率阈值,第一计算机选择第一哈希函数而非第二哈希函数,如果该CPU的利用率小于或等于CPU利用率阈值,则选择第二哈希函数而非第一哈希函数;
第一计算机利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要;
在第一计算机执行不在去重复模式中的步骤的基础上,第一计算机把该哈希摘要添加到与第一计算机耦合的发送方哈希表,并且,第一计算机向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性,
其中,第一计算机向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符的结果包含:
该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符由第二计算机接收;
根据所接收的所选择的第一或第二哈希函数的标识符,通过在所接收的数据包上运用所选择的第一或第二哈希函数而确定新的哈希函数;和
判定所接收的哈希摘要是否匹配新的哈希函数,并且,如果所接收的哈希摘要匹配新的哈希函数,则第一计算机发送该数据包、该哈希摘要、以及该标识符的结果包含确定数据包具有完整性,把数据包和哈希摘要添加到与第二计算机耦合的接收方哈希表,以及向应用程序发送数据包,并且,如果所接收的哈希摘要不匹配新的哈希函数,则第一计算机发送该数据包、该哈希摘要、以及该标识符的结果包含向第一计算机通知数据包不具有完整性,并且作为响应,由第一计算机向第二计算机重新发送数据包和哈希摘要;
在第一计算机向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符的步骤后,第一计算机确定网络的第二利用率大于网络利用率阈值;和根据该网络的利用率大于网络利用率阈值,第一计算机进入去重复模式,随后执行去重复模式中的步骤,包括:
第一计算机通知第二计算机第一计算机已进入去重复模式;
第一计算机通过利用所选择的第一或第二哈希函数来确定第二数据包的第二哈希摘要;
第一计算机确定第二数据包的第二哈希摘要与添加到发送方哈希表的哈希摘要相匹配;
基于第二数据包的第二哈希摘要与添加到发送方哈希表的哈希摘要相匹配,并且在第一计算机不向第二计算机发送该数据包的情况下,第一计算机向第二计算机发送第二哈希摘要、针对添加到发送方哈希表的哈希摘要的索引、以及所选择的第一或第二哈希函数的标识符,
其中,第一计算机向第二计算机发送第二哈希摘要、索引、以及标识符的结果包含:
基于第二计算机被通知第一计算机已经进入去重复模式,由第二计算机确定没有随第二哈希摘要、该索引、以及该标识符一起收到该数据包;
由第二计算机接收第二哈希摘要、索引、以及所选择的第一或第二哈希函数的标识符;
响应于确定没有收到该数据包并且根据该索引,由第二计算机查找添加到接收方哈希表的哈希摘要;
确定在接收方哈希表中查找的哈希摘要匹配所接收的第二哈希摘要;
根据在接收方哈希表中查找的哈希摘要匹配所接收的第二哈希摘要,由第二计算机在接收方哈希表中检索与该哈希摘要相关联的数据包;
基于接收的该标识符、第二计算机确定所选择的第一或第二哈希函数,并且第二计算机通过在所检索的与在接收方哈希表查找的哈希摘要相关联的数据包上运用所选择的第一或第二哈希函数而确定第二个新哈希摘要;
第二计算机判定第二个新哈希摘要是否匹配所接收的第二哈希摘要;和
如果第二个新哈希摘要匹配所接收的第二哈希摘要,第二计算机向应用程序传送所检索的数据包。

说明书全文

一种基于网络参数的完整性校验和选择性去重复的方法及

装置

技术领域

[0001] 本发明涉及用于管理通信流量的数据处理方法和系统,更具体来说,涉及对消息包流进行完整性校验和选择性去重复的技术。

背景技术

[0002] 加密哈希函数是这样一种算法,其以任意数据作为输入,生成并返回哈希摘要(也称“哈希值”、“加密哈希值”、或“摘要”)。哈希摘要(hash digest)是一个固定大小的位串。加密哈希函数产生哈希摘要,以致对输入数据的意外的或有意的改变将以非常高的概率改变哈希摘要。此外,加密哈希函数是一个崩函数(avalanche function),因为函数输入的相当小的差异(例如,即使是一位的差异)都导致相当大的(即,高度非线性的)摘要差异。加密哈希函数包括安全哈希算法(Secure Hash Algorithm或SHA)函数和消息摘要(Message Digest或MD)函数。表1包含了加密哈希函数和它们各自的哈希摘要的大小的例子。
[0003] 表1
[0004]
[0005]
[0006] 网络通信设备用通信协议从发送网络设备(即发送端)向接收网络设备(即接收器或接收方)发送通信(即数据)包。按照已知的通信协议,诸如传输控制协议/网间协议(TCP/IP),光纤通道以太网(FCoE)、小型计算机系统接口(SCSI)、Internet SCSI(iSCSI),串行连接SCSI(SAS)、InfiniBand、以及以太网通信软件包包含用于元数据和有效载荷数据的字段。元数据和有效载荷数据字段由按照开放系统互连(OSI)网络分层模型的协议标准定义。某些元数据字段用于存储有效载荷数据的校验和(checksum),其允许执行完整性校验。发送网络设备计算校验和并把它添加到元数据,并将有效载荷数据和包含校验和的元数据发送到接收网络设备。接收网络设接收有效载荷数据和包含校验和的元数据后,计算接收到的有效载荷数据的校验和,并比较计算结果与接收到的元数据中包含的校验和,以保证数据的完整性(integrity)。已知的校验和基于的是诸如循环冗余校验(CRC)的循环码(cyclic codes)。

发明内容

[0007] 在第一实施例中,本发明提供一种管理数据包的方法。该方法包含第一计算机确定网络的利用率大于网络利用率阈值。该网络包括第一计算机和第二计算机。该方法进一步包含根据该网络的利用率大于网络利用率阈值,第一计算机进入去重复模式,随后执行去重复模式中的步骤。去重复模式中的步骤包含第一计算机向第二计算机发送第一计算机已进入去重复模式的通知。去重复模式中的步骤进一步包含第一计算机判定第一计算机中包含的中央处理单元(CPU)的利用率是否大于CPU利用率阈值。去重复模式中的步骤进一步包含,如果该CPU的利用率大于CPU利用率阈值,第一计算机选择第一哈希函数而非第二哈希函数。去重复模式中的步骤进一步包含,如果该CPU的利用率小于或等于CPU利用率阈值,则选择第二哈希函数而非第一哈希函数。去重复模式中的步骤进一步包含,第一计算机利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要。去重复模式中的步骤进一步包含,第一计算机判定该哈希摘要是否在与第一计算机耦合的发送方哈希表中。去重复模式中的步骤进一步包含,如果该哈希摘要在该发送方哈希表中,则第一计算机不是向第二计算机发送该数据包,而是向第二计算机发送该哈希摘要、针对发送方哈希表中的和与第二计算机耦合的接收方哈希表中的哈希摘要的索引、以及—可选地—所选择的第一或第二哈希函数的标识符。去重复模式中的步骤进一步包含,如果该哈希摘要不在发送方哈希表中,则第一计算机把该数据包和该哈希摘要添加到发送方哈希表,并向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性。
[0008] 在第二实施例中,本发明提供第一计算机系统,包含:中央处理单元(CPU);耦合到CPU的存储器;计算机可读的、耦合到CPU的有形存储设备,该存储设备含有通过存储器由CPU执行的、实现一种管理数据包的方法的指令。该方法包含:第一计算机系统确定网络的利用率大于网络利用率阈值,该网络包括第一计算机系统和第二计算机系统。该方法进一步包含:根据该网络的利用率大于网络利用率阈值,第一计算机系统进入去重复模式,随后执行去重复模式中的步骤。去重复模式中的步骤包含:第一计算机系统向第二计算机系统发送第一计算机系统已进入去重复模式的通知。去重复模式中的步骤进一步包含:第一计算机系统判定第一计算机系统中包含的CPU的利用率是否大于CPU利用率阈值。去重复模式中的步骤进一步包含:如果该CPU的利用率大于CPU利用率阈值,第一计算机系统选择第一哈希函数而非第二哈希函数。去重复模式中的步骤进一步包含:如果该CPU的利用率小于或等于CPU利用率阈值,第一计算机选择第二哈希函数而非第一哈希函数。去重复模式中的步骤进一步包含:第一计算机系统利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要。去重复模式中的步骤进一步包含:第一计算机系统判定该哈希摘要是否在与第一计算机系统耦合的发送方哈希表中。去重复模式中的步骤进一步包含:如果该哈希摘要在该发送方哈希表中,则第一计算机系统不是向第二计算机系统发送该数据包,而是向第二计算机系统发送该哈希摘要、针对发送方哈希表中的和与第二计算机系统耦合的接收方哈希表中的哈希摘要的索引、以及—可选地—所选择的第一或第二哈希函数的标识符。去重复模式中的步骤进一步包含:如果该哈希摘要不在发送方哈希表中,则第一计算机系统把该数据包和该哈希摘要添加到发送方哈希表,并向第二计算机系统发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性。
[0009] 在第三实施例中,本发明提供一种计算机程序产品,包含计算机可读的有形存储设备存储在该计算机可读的有形存储设备中的计算机可读的程序代码。计算机可读的程序代码含有由第一计算机系统的CPU执行以实现管理数据包的方法的指令。该方法包含:第一计算机系统确定网络的利用率大于网络利用率阈值,该网络包括第一计算机系统和第二计算机系统。该方法进一步包含:根据该网络的利用率大于网络利用率阈值,第一计算机系统进入去重复模式,随后执行去重复模式中的步骤。去重复模式中的步骤包含:第一计算机系统向第二计算机系统发送第一计算机系统已进入去重复模式的通知。去重复模式中的步骤进一步包含:第一计算机系统判定第一计算机系统中包含的CPU的利用率是否大于CPU利用率阈值。去重复模式中的步骤进一步包含:如果该CPU的利用率大于CPU利用率阈值,第一计算机系统选择第一哈希函数而非第二哈希函数。去重复模式中的步骤进一步包含:如果该CPU的利用率小于或等于CPU利用率阈值,第一计算机选择第二哈希函数而非第一哈希函数。去重复模式中的步骤进一步包含:第一计算机系统利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要。去重复模式中的步骤进一步包含:第一计算机系统判定该哈希摘要是否在与第一计算机系统耦合的发送方哈希表中。去重复模式中的步骤进一步包含:如果该哈希摘要在该发送方哈希表中,则第一计算机系统不是向第二计算机系统发送该数据包,而是向第二计算机系统发送该哈希摘要、针对发送方哈希表中的和与第二计算机系统耦合的接收方哈希表中的哈希摘要的索引、以及—可选地—所选择的第一或第二哈希函数的标识符。去重复模式中的步骤进一步包含:如果该哈希摘要不在发送方哈希表中,则第一计算机系统把该数据包和该哈希摘要添加到发送方哈希表,并向第二计算机系统发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性。
[0010] 在第四实施例中,本发明提供一种用于支持计算基础设施的过程。该过程包含为在第一计算机系统集成、托管、维护和部署计算机可读代码的至少一项而提供至少一个支持服务。计算机可读代码中包含的指令,在被第一计算机系统的处理器执行时,执行一种管理数据包的方法。该方法包含第一计算机系统确定网络的利用率大于网络利用率阈值。该网络包括第一计算机系统和第二计算机系统。该方法进一步包含根据该网络的利用率大于网络利用率阈值,第一计算机系统进入去重复模式,随后执行去重复模式中的步骤。去重复模式中的步骤包含第一计算机系统向第二计算机系统发送第一计算机系统已进入去重复模式的通知。去重复模式中的步骤进一步包含第一计算机系统判定第一计算机系统中包含的CPU的利用率是否大于CPU利用率阈值。去重复模式中的步骤进一步包含,如果该CPU的利用率大于CPU利用率阈值,第一计算机系统选择第一哈希函数而非第二哈希函数,如果该CPU的利用率小于或等于CPU利用率阈值,则选择第二哈希函数而非第一哈希函数。去重复模式中的步骤进一步包含第一计算机系统利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要。去重复模式中的步骤进一步包含第一计算机系统判定该哈希摘要是否在与第一计算机系统耦合的发送方哈希表中。去重复模式中的步骤进一步包含,如果该哈希摘要在该发送方哈希表中,则第一计算机系统不是向第二计算机系统发送该数据包,而是向第二计算机系统发送该哈希摘要、针对发送方哈希表中的和与第二计算机系统耦合的接收方哈希表中的哈希摘要的索引、以及—可选地—所选择的第一或第二哈希函数的标识符。去重复模式中的步骤进一步包含,如果该哈希摘要不在发送方哈希表中,则第一计算机系统把该数据包和该哈希摘要添加到发送方哈希表,并向第二计算机系统发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性。
[0011] 在第五实施例中,本发明提供一种管理数据包的方法。该方法包含第二计算机执行再重复(reduplication)模式中的步骤。再重复模式中的步骤是继以下情况后执行的:确定网络的利用率大于网络利用率阈值,该网络包括第一计算机和第二计算机;第一计算机进入去重复模式;第一计算机向第二计算机发送第一计算机已进入去重复模式的通知;第一计算机判定第一计算机中包含的CPU的利用率是否大于CPU利用率阈值;如果该CPU的利用率大于CPU利用率阈值,选择第一哈希函数而非第二哈希函数;如果该CPU的利用率小于或等于CPU利用率阈值,则选择第二哈希函数而非第一哈希函数,其中,采用第一哈希函数比采用第二哈希函数使用更少的CPU;通过利用所选择的第一或第二哈希函数确定该数据包的哈希摘要;确定该哈希摘要在与第一计算机耦合的发送方哈希表中;和由第一计算机向第二计算机发送该哈希摘要、针对发送方哈希表中的和与第二计算机耦合的接收方哈希表中的哈希摘要的索引、以及所选择的第一或第二哈希函数的标识符,而不向第二计算机发送该数据包。再重复模式中的步骤包含:根据第一计算机向第二计算机发送第一计算机已进入去重复模式的通知,第二计算机确定没有随该哈希摘要、该索引、以及该标识符一起收到该数据包。再重复模式中的步骤进一步包含:第二计算机接收该哈希摘要、针对发送方哈希表中的和接收方哈希表中的哈希摘要的索引和所选择的第一或第二哈希函数的标识符。再重复模式中的步骤进一步包含:响应于第二计算机确定没有收到该数据包并且根据该索引,第二计算机在接收方哈希表中查找哈希摘要。再重复模式中的步骤进一步包含:第二计算机确定在接收方哈希表中查找的哈希摘要匹配所接收的哈希摘要。再重复模式中的步骤进一步包含:基于所查找的哈希摘要匹配所接收的哈希摘要,第二计算机从接收方哈希表中检索与所查找的哈希摘要相关联的数据包。再重复模式中的步骤进一步包含:基于所接收的标识符,第二计算机确定所选择的第一或第二哈希函数,并通过在所检索的数据包上运用所选择的第一或第二哈希函数而确定新的哈希摘要。再重复模式中的步骤进一步包含:第二计算机判定该新的哈希摘要是否匹配所接收的哈希摘要。再重复模式中的步骤进一步包含:如果该新的哈希摘要匹配所接收到的哈希摘要,第二计算机向应用程序传送所检索的数据包。
[0012] 在第六实施例中,本发明提供一种管理数据包的方法,该方法包含:第一计算机确定网络的第一利用率小于或等于网络利用率阈值。该网络包括第一计算机和第二计算机。该方法进一步包含:根据该网络的利用率小于或等于网络利用率阈值,第一计算机执行不在去重复模式中的步骤。不在去重复模式中的步骤包括:第一计算机判定第一计算机中包含的CPU的利用率是否大于CPU利用率阈值。不在去重复模式中的步骤包括:如果该CPU的利用率大于CPU利用率阈值,第一计算机选择第一哈希函数而非第二哈希函数。不在去重复模式中的步骤进一步包括:如果该CPU的利用率小于或等于CPU利用率阈值,则第一计算机选择第二哈希函数而非第一哈希函数。不在去重复模式中的步骤进一步包括:第一计算机利用所选择的第一或第二哈希函数来确定该数据包的哈希摘要。该方法进一步包含:在第一计算机执行不在去重复模式中的步骤的基础上,第一计算机把该哈希摘要添加到与第一计算机耦合的发送方哈希表,并且,第一计算机向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符,以便根据该哈希摘要确定该数据包是否具有完整性。第一计算机向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符的结果包含:该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符由第二计算机接收。第一计算机向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符的结果进一步包含:根据所接收的所选择的第一或第二哈希函数的标识符,通过在所接收的数据包上运用所选择的第一或第二哈希函数而确定新的哈希函数。第一计算机向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符的结果进一步包含:判定所接收的哈希摘要是否匹配新的哈希函数,并且,如果所接收的哈希摘要匹配新的哈希函数,则第一计算机发送该数据包、该哈希摘要、以及该标识符的结果包含确定数据包具有完整性,把数据包和哈希摘要添加到与第二计算机耦合的接收方哈希表,以及向应用程序发送数据包,并且,如果所接收的哈希摘要不匹配新的哈希函数,则第一计算机发送该数据包、该哈希摘要、以及该标识符的结果包含向第一计算机通知数据包不具有完整性,并且作为响应,由第一计算机向第二计算机重新发送数据包和哈希摘要。该方法进一步包含:在第一计算机向第二计算机发送该数据包、该哈希摘要、以及所选择的第一或第二哈希函数的标识符的步骤后,第一计算机确定网络的第二利用率大于网络利用率阈值。该方法进一步包含:根据该网络的利用率大于网络利用率阈值,第一计算机进入去重复模式,随后执行去重复模式中的步骤。去重复模式中的步骤包含:第一计算机通知第二计算机第一计算机已进入去重复模式。该方法进一步包含:第一计算机通过利用所选择的第一或第二哈希函数来确定第二数据包的第二哈希摘要。该方法包含:
第一计算机确定第二数据包的第二哈希摘要与添加到发送方哈希表的哈希摘要相匹配。该方法进一步包含:基于第二数据包的第二哈希摘要与添加到发送方哈希表的哈希摘要相匹配,并且在第一计算机不向第二计算机发送该数据包的情况下,第一计算机向第二计算机发送第二哈希摘要、针对添加到发送方哈希表的哈希摘要的索引、以及所选择的第一或第二哈希函数的标识符。第一计算机向第二计算机发送第二哈希摘要、索引、以及标识符的结果包含:基于第二计算机被通知第一计算机已经进入去重复模式,由第二计算机确定没有随第二哈希摘要、该索引、以及该标识符一起收到该数据包。第一计算机向第二计算机发送第二哈希摘要、索引、以及标识符的结果进一步包含:由第二计算机接收第二哈希摘要、索引、以及所选择的第一或第二哈希函数的标识符。第一计算机向第二计算机发送第二哈希摘要、索引、以及标识符的结果进一步包含:响应于确定没有收到该数据包并且根据该索引,由第二计算机查找添加到接收方哈希表的哈希摘要。第一计算机向第二计算机发送第二哈希摘要、索引、以及标识符的结果进一步包含:确定在接收方哈希表中查找的哈希摘要匹配所接收的第二哈希摘要。第一计算机向第二计算机发送第二哈希摘要、索引、以及标识符的结果进一步包含:根据在接收方哈希表中查找的哈希摘要匹配所接收的第二哈希摘要,由第二计算机在接收方哈希表中检索与该哈希摘要相关联的数据包。第一计算机向第二计算机发送第二哈希摘要、索引、以及标识符的结果进一步包含:基于接收的该标识符、第二计算机确定所选择的第一或第二哈希函数,并且第二计算机通过在所检索的与在接收方哈希表查找的哈希摘要相关联的数据包上运用所选择的第一或第二哈希函数而确定第二个新哈希摘要。第一计算机向第二计算机发送第二哈希摘要、索引、以及标识符的结果进一步包含:第二计算机判定第二个新哈希摘要是否匹配所接收的第二哈希摘要。第一计算机向第二计算机发送第二哈希摘要、索引、以及标识符的结果进一步包含:如果第二个新哈希摘要匹配所接收的第二哈希摘要,第二计算机向应用程序传送所检索的数据包。
[0013] 本发明实施例在网络利用率达到或超过利用率阈值时应用加密哈希函数来在通信流量中置入哈希摘要,以提供数据完整性校验和数据去重复。通过提供数据去重复,本发明实施例减少在发送网络设备与接收网络设备之间传输的数据量。附图说明
[0014] 图1是按照本发明实施例、用于管理数据包的系统的框图
[0015] 图2A-2B表示按照本发明实施例、在图1的系统中管理数据包的过程的流程图
[0016] 图3是按照本发明实施例、在图1的系统中管理哈希表空间的过程的流程图。
[0017] 图4是按照本发明实施例、包含由图2A-2B的过程管理的数据包的实例性通信包。
[0018] 图5是按照本发明实施例、在图1的系统的替代实施例中包含的实现图2A-2B的过程和图3的过程的计算机系统的框图。

具体实施方式

[0019] 概述
[0020] 本发明的实施例响应于确定网络利用率(ulilization)或吞吐量(throughput)大于用户定义的阈值,对网络中的通信流量(communications traffic)应用加密哈希函数,提供对通信流量的选择性去重复(deduplication),从而减少发送网络设备与接收网络设备之间传输的数据量。应用于通信流量的加密哈希函数也为数据完整性校验提供校验和(checksum)。
[0021] 用于管理数据包的系统
[0022] 图1是按照本发明实施例的一个用于管理数据包的系统的框图。系统100包括第一计算机系统101,其包括中央处理单元(CPU)102、存储器104、总线108、以及连接第一计算机系统101与计算机网络130的发送方网络接口卡(NIC)116。第一计算机系统101还包括通过总线108连接到CPU 102的输入/输出接口(未显示)。发送方网络接口卡116是由本发明的实施例扩展了的NIC,包括基于软件的监测模块118、基于软件的去重复模块120和发送方哈希表122。
[0023] 第一计算机系统101通过计算机网络与包括第二计算机系统151在内的一个或多个计算机系统通信。第一计算机系统101是一个发送方计算机系统,处理将数据包发送到连接到网络130的一个或多个其它的、包括第二计算机系统151在内的接收方计算机系统的数据请求。第一计算机系统101运行操作系统(未显示)和一个或多个软件应用程序(未显示)。其中一个应用程序启动在网络130上发送数据,包括该应用程序指令操作系统发送数据,作为响应,操作系统指令发送方网卡116在网络130上发送数据。
[0024] 第二计算机系统151包括CPU 152、存储器154、总线158、以及连接第二计算机系统151与网络130的接收方网络接口卡166。第一计算机系统151还包括通过总线158连接到CPU 
152的输入/输出接口(未显示)。接收方网络接口卡166是由本发明的实施例扩展了的NIC,包括基于软件的再重复模块168和接收方哈希表172。网络130中的通信流量包括发送方NIC 
116向接收方NIC 166发送的通信包。
[0025] 尽管这里将第一计算机系统101描述为从NIC 116发送通信包,将第二计算机系统151描述为在NIC 166接收通信包,所属技术领域的熟练人员应当明白,本发明的实施例包括NIC 166是发送设备,NIC 116是接收设备的情形。
[0026] 发送方哈希表122和接收方哈希表172包括具有各自的索引、各自的哈希摘要、各自的数据包和各自的使用计数的数据条目。发送方哈希表122或接收方哈希表172中的特定的索引针对特定的数据包、通过向该数据包应用哈希函数而生成的特定的哈希摘要和特定的使用计数。在一个实施例中,发送方哈希表122或接收方哈希表172中的一个索引,是指示发送方哈希表122(见图1)或接收方哈希表172的行的行号,该行包含特定的数据包、哈希摘要、以及使用计数。使用计数表明第一计算机系统101处理过多少次向连接到网络130的、如第二计算机系统151的各个接收方计算机系统发送数据包的请求。操作系统100运行时,发送方哈希表122的内容匹配接收方哈希表172的内容,或者发送方哈希表122有新的一行数据尚未被、但是将被添加到接收方哈希表172。下面参照图3,讨论发送方哈希表122中的可用空间以及接收方哈希表172中的可用空间的管理。
[0027] 在一个实施例中,发送方哈希表122和接收方哈希表172的每一行包括行号、哈希摘要、和数据包使用计数,如表2中给出的例子所示的那样。表2中的第一列包含行号,对每个新行,行号递增1。表2的第二列包含第三列中的数据包的哈希摘要。表2的第四列包含使用计数,其指明该数据包已经多少次被连接到网络130的计算机系统发送。
[0028] 表2
[0029]
[0030]
[0031] 如果监测模块118确定网络130的利用率超过用户定义的网络利用率阈值,第一计算机系统101进入去重复模式,其包括由去重复模块120执行的步骤。本节描述去重复模式中的一些步骤。去重复模式中的步骤和去重复模式之外的步骤,在下文对图2A-2B的讨论中详细介绍。
[0032] 在去重复模式期间,第一计算机系统101接收并处理向连接到网络的第二计算机系统151或另一个计算机系统(未予示出)正在执行的软件应用程序发送数据包的请求。第一计算机系统101应用哈希函数来确定该数据包的哈希摘要。如果哈希摘要已经在发送方哈希表122中,则第一计算机系统101向第二计算机系统151发送哈希摘要和哈希摘要的索引。再重复模块168用接收到的索引来从接收方哈希表172查找和检索该数据包,而无需由计算机系统101通过网络130向第二计算机系统151发送该数据包。由于无需在网络130上发送该数据包,减少了通过网络130发送的数据量。
[0033] 如果哈希摘要并不是已经在发送方哈希表122中,则第一计算机系统101把哈希摘要和数据包添加到发送方哈希表122,并把哈希摘要和数据包发往第二计算机系统151。再重复模块168确定接收到的数据包的新的哈希摘要,并用新的哈希摘要与收到的哈希摘要的比较作为接收到的数据包的数据完整性校验。
[0034] 再次指出,去重复模式中的步骤,在下文对图2A-2B的讨论中详细介绍。
[0035] 在下面参照图2A-2B和图3给出的讨论中、以及标题为“计算机系统”的一节中,更详细地介绍了图1中的组件的功能。在另一替代实施例中,计算机系统101还包括功能与再重复模块168的功能相匹配的再重复模块(未予示出),计算机系统151包括功能与监测模块118和去重复模块120的功能分别相匹配的监测模块(未予示出)和去重复模块(未予示出)。
在这个替代实施例中,计算机系统101中的再重复模块(见图1),执行下文详细介绍的、由再重复模块168(见图1)执行的步骤;计算机系统151中的监测模块(见图1)执行下文详细介绍的、由监测模块118(见图1)执行的步骤;计算机系统151中的去重复模块(见图1),执行下文详细介绍的、由去重复模块120(见图1)执行的步骤。
[0036] 管理数据包的过程
[0037] 图2A-2B示出按照本发明实施例的、在图1的系统中管理数据包的过程的流程图。在下文对图2A-2B的讨论中,任何被描述为由监测模块118(见图1)执行的步骤,由执行包括在监测模块118(见图1)中的程序代码的计算机系统101(见图1)执行;任何被描述为由去重复模块120(见图1)执行的步骤,由执行包括在去重复模块120(见图1)中的程序代码的计算机系统101(见图1)执行;任何被描述为由再重复模块168(见图1)执行的步骤,由执行包括在再重复模块168(见图1)中的程序代码的计算机系统151(见图1)执行。
[0038] 图2A-2B的过程始于步骤200,第一计算机系统101(见图1)接收或产生一个向第二计算机系统151(见图1)发送数据包的请求。在步骤202之前,第一计算机系统101(见图1)接收一个网络利用率(network utilization)阈值,该阈值指示的是,在没有处于去重复模式的情况下,从第一计算机系统101(见图1)向第二计算机系统151(见图1)发送数据包时所允许的对网络130(见图1)的最大利用率。网络130的利用率(utilization)是单位时间在网络130(见图1)上传输的数据包的数量的测量(measurement)。网络利用率阈值可以是一个默认值,或者用户定义的值。在一个实施例中,网络利用率阈值是基于网络130(见图1)的拓扑结构和网络130(见图1)采用的特定技术而确定的、网络130(见图1)的最大吞吐量的一个百分比。
[0039] 在步骤202,监测模块118(见图1)判定网络130(见图1)的利用率(即网络利用率)是否大于网络利用率阈值。如果监测模块118(见图1)在步骤202中确定网络利用率大于网络利用率阈值,则采取步骤202中的“是”分支,执行步骤204。如果监测模块118(见图1)在步骤202中确定网络利用率小于或等于网络利用率阈值,则采取步骤202的“否”分支,下一步执行步骤206。
[0040] 在替代实施例中,步骤202判定通过网络130(见图1)的吞吐量的测量是否超过吞吐量阈值,如果吞吐量超过阈值,则执行步骤204;否则,下一步执行步骤206。
[0041] 在步骤204,监测模块118(见图1)指令去重复模块120(见图1)进入去重复模式,如果去重复模块120(见图1)不是已经处于去重复模式。作为响应,如果去重复模块120(见图1)不是已经处于去重复模式,去重复模块120(见图1)进入去重复模式。在一个实施例中,图
2A中的步骤206–218和图2B中的步骤220–228由处于去重复模式的计算机系统101(见图1)执行。在指令去重复模块120(见图1)进入去重复模式之后和步骤206之前,监测模块118(见图1)向在计算机系统151(见图1)中运行的再重复模块168(见图1)发送一个通知,该通知通知计算机系统151(见图1)去重复模块120(见图1)已进入去重复模式。再重复模块168(见图
1)接收由监测模块118(见图1)发送的通知。
[0042] 步骤206在步骤204后,并在步骤202的“否”分支后。在步骤206,去重复模块120(见图1)分配发送方哈希表122(见图1),再重复模块168(见图1)分配接收方哈希表172(见图1),以响应再重复模块168(见图1)收到去重复模块120(见图1)已进入去重复模式的上述通知。如果步骤206在步骤202的“否”分支后,步骤206包括监测模块118(见图1)指示去重复模块120(见图1)离开去重复模式—如果去重复模块120(见图1)已经在去重复模式。在指示去重复模块120(见图1)离开去重复模式后,监测模块118(见图1)向在计算机系统151(见图1)中运行再重复模块168(见图1)发送一个通知,该通知通知计算机系统151(见图1)去重复模块120(见图1)离开了去重复模式。再重复模块168(见图1)接收由监测模块118(见图1)发送的通知。
[0043] 在步骤208之前,第一计算机系统101(见图1)接收一个CPU利用率阈值,其指示在选择第二Hash函数而不是第一哈希函数时允许存在的CPU 102(见图1)的最大当前利用率。利用第一哈希函数在一个数据包上生成哈希摘要比利用第二哈希函数在同一数据包上生成哈希摘要使用CPU 102(见图1)提供的资源更少,然而,第二哈希函数比第一哈希函数更强,因为第二哈希函数生成的哈希摘要比第一哈希函数生成的哈希摘要更长,因此,利用第二哈希函数而不是第一哈希函数降低了哈希冲突(hash collisions)的可能性。因此,在有充足的CPU容量可用(即,CPU利用率小于或等于的CPU利用率阈值)的情况下利用第二哈希函数比利用第一哈希函数有益。CPU利用率阈值可以是一个默认值或用户定义的值。在步骤
118中,监测模块208(见图1)判定CPU102(如图1)的利用率(即,CPU利用率)是否大于CPU利用率阈值。如果监测模块118(见图1)在步骤208中确定CPU利用率大于CPU利用率阈值,则采取步骤208的“是”分支,执行步骤210。
[0044] 在步骤210,去重复模块120(见图1)选择第一哈希函数而非第二哈希函数,并分配所选择的第一哈希函数作为用来确定该数据包的哈希摘要的哈希函数。
[0045] 返回到步骤208,如果监测模块118(见图1)在步骤208中确定CPU利用率小于或等于CPU利用率阈值,则采取步骤208的“否”分支,执行步骤212。
[0046] 在步骤212中,去重复模块120(见图1)选择第二哈希函数而非第一哈希函数。去重复模块(见图1)将所选择的第二哈希函数作为用来确定该数据包的哈希摘要的哈希函数。
[0047] 步骤214接着步骤210和步骤212。在步骤214,通过利用在步骤201选择的第一哈希函数或在步骤212选择的第二哈希函数,去重复模块120(见图1)确定该数据包的哈希摘要D1。以下也将在任一步骤210或步骤212中选择的哈希函数称为所选择的哈希函数。
[0048] 在步骤216中,去重复模块120(见图1)判定是否已经在步骤204进入去重复模式。如果去重复模块120(见图1)确定在步骤204尚未进入去重复模式,则采取步骤216的“否”分支,执行步骤218。
[0049] 在步骤218中,去重复模块120(见图1)通过网络130(见图1)向第二计算机系统151(见图1)发送在一个通信包中的数据包、哈希摘要D1、和所选择的哈希函数的标识符。作为一个例子,诸如表1中所列的哈希函数的多个哈希函数,都可以被各自的号唯一地识别(例如,MD5的标识符是1,SHA-256的标识符是2,WHIRLPOOL的标识符是3)。图2B中的步骤230接着步骤218。
[0050] 返回步骤216,如果去重复模块120(见图1)确定已经进入去重复模式,则采取步骤216的“是”分支,图2A-2B中的下一步是图2B中的步骤220。
[0051] 在图2B中的步骤220,去重复模块120(见图1)判定哈希摘要D1是否已经在发送方哈希表122(见图1)中。例如,去重复模块120(见图1)尝试匹配哈希摘要D1与表2的第二列。如果去重复模块120(见图1)在步骤220中确定哈希摘要D1在发送方哈希表122(见图1)中,则采取步骤220的“是”分支,执行步骤222。
[0052] 在步骤222中,去重复模块120(见图1)确定针对发送方哈希表122(见图1)的哈希摘要D1的索引,并且,去重复模块120(见图1)更新发送方哈希表122(见图1)中的一个条目中的使用计数,其中,该条目包括索引、哈希摘要D1、数据包、以及使用计数。在一个实施例中,每次数据包通过步骤220的“是”分支和步骤222被处理,去重复模块120(见图1)就将使用计数递增1。在一个实施例中,在步骤222中确定的索引是发送方哈希表122(见图1)的行号。
[0053] 在步骤224中,去重复模块120(见图1)生成一个通信包—其包括哈希摘要D1和针对发送方哈希表122(见图1)中的哈希摘要的索引,以及可选地包括所选择的哈希函数的标识符,并将所生成的通信包发往第二计算机系统151(见图1)。在步骤224中生成的通信包中不包含数据包。步骤230接着步骤224。
[0054] 返回到步骤220,如果去重复模块120(见图1)确定哈希摘要D1不在发送方哈希表122(见图1)中,则采取步骤220的“否”分支,执行步骤226。
[0055] 在步骤226中,去重复模块120(见图1)把哈希摘要D1和数据包添加到一个新记录(例如,新的一行)中,该记录被附加到发送方哈希表122(见图1)。去重复模块120(见图1)在步骤226确定将针对哈希摘要D1的索引(例如,行号)和数据包添加到发送方哈希表122(见图1)。去重复模块120(见图1)也将新纪录中的使用计数的值初始化。例如,使用计数的初始化值可以为1
[0056] 在步骤228中,去重复模块120(见图1)生成一个包含数据包、作为元数据嵌入的哈希摘要D1、以及在步骤210(见图2A)或步骤212(见图2A)中选择的标识符的通信包,并将所生成的通信包发往第二计算机系统151(见图1)。
[0057] 在接着步骤224和步骤228的步骤230中,第二计算机系统151(见图1)中运行的再重复模块168(见图1)接收在步骤224或步骤228中生成的通信包。
[0058] 在步骤232中,再重复模块168(见图1)判定在步骤230中接收的通信包是否包括数据包。如果再重复模块168(见图1)在步骤232确定在步骤230中收到的通信包包括在步骤228或218(见图2A)中发送的数据包,则采取步骤232的“是”分支,执行步骤234。在一个实施例中,再重复模块168(见图1)根据再重复模块168(见图1)已经在步骤204(见图2a)接收到去重复模块120(见图1)已进入去重复模式的通知,以及根据再重复模块168(见图1)在步骤
230已经接收的通信包包括哈希摘要D1、针对发送方哈希表122(见图1)中哈希摘要D1的索引、以及所选择的哈希函数的标识符,确定在步骤230中接收到的通信包不包括数据包。
[0059] 在步骤232后、步骤234之前,再重复模块168(见图1)用在步骤230中接收的通信包中包含的哈希函数的标识符,确定所选择的哈希函数。在步骤234中,再重复模块168(见图1)通过对在步骤230中接收的通信包中包含的数据包应用所确定的哈希函数而确定一个哈希摘要D2。
[0060] 在步骤236中,再重复模块168(见图1)判定在步骤230中收到的通信包中包含的哈希摘要D1是否等于哈希摘要D2,这表明所接收的数据包是否具有数据完整性。如果再重复模块168(见图1)在步骤236中确定D1不等于D2,则再重复模块确定所接收的数据包缺乏数据完整性,采取步骤236的“否”分支,执行步骤238。
[0061] 在步骤238中,执行故障恢复程序。故障恢复程序包括再重复模块168(见图1)向第一计算机系统101(见图1)发送指示数据包缺乏数据完整性的消息。响应于接收到关于缺乏数据完整性的消息,第一计算机系统101(见图1)生成另一个通信包来向第二计算机系统151(见图1)连同哈希摘要D1和所选择的哈希函数的标志符一起重新发送数据包。图2A-2B的过程在步骤240结束。虽然没有显示,在第一计算机系统101(见图1)重新发送步骤238中的数据包、哈希摘要D1和所选择的哈希函数的标志符后,重复执行步骤230、232、234、236,直到步骤236确定d1=d2、采取步骤236的“是”分支为止,如下文所述的那样。在重复步骤
230、232、234和236后,如果D1不等于D2,则可以重复步骤238中的故障恢复过程。
[0062] 返回到步骤236,如果再重复模块168(见图1)确定D1=D2,则采取步骤236的“是”分支,执行步骤242。
[0063] 在步骤242,再重复模块168(见图1)确定所接收的数据包具有数据完整性,把所接收的哈希摘要D1和数据包添加到一个新记录(例如,新的一行),该新记录被附加到接收方哈希表172(见图1)。这样,在步骤242中被附加到接收方哈希表172(见图1)的新记录就匹配在最近一次执行步骤226时附加到发送方哈希表122(见图1)的新记录。在将新记录附加到接收方哈希表172(见图1)后,接收方哈希表172(见图1)的内容再次匹配发送方哈希表122(见图1)的内容。
[0064] 在步骤244中,再重复模块168(见图1)向请求数据包的应用程序发送数据包。在步骤244后,图2A-2B的过程在步骤240结束。
[0065] 返回到步骤232,如果再重复模块168(见图1)确定在步骤230接收到的通信包不包括数据包(即,在步骤224中发送了只有哈希摘要D1和D1的索引的通信包),则采取步骤232的“否”分支,执行步骤246。
[0066] 在步骤246,再重复模块168(见图1)在接收方哈希表172(见图1)中查找在步骤230中接收的索引,根据对该索引的查找,在接收方哈希表172(见图1)中查找并检索被该索引指向的条目中的哈希函数。
[0067] 在步骤248中,再重复模块168(见图1)判定在步骤246中从接收方哈希表172(见图1)检索的哈希摘要是否等于在步骤230中接收的通信包中包含的哈希摘要D1。如果再重复模块168(见图1)在步骤248中确定从接收方哈希表172(见图1)检索的哈希摘要等于哈希摘要D1,则采取步骤248的“是”分支,执行步骤250。
[0068] 在步骤250中,再重复模块168(见图1)根据在步骤230中接收到的通信包中包含的索引所指向的数据包,从接收方哈希表172(见图1)检索数据包。如果所选择的哈希函数的标识符在步骤224中被发送,并且包含在步骤230中收到的通信包中,则步骤250也包括再重复模块168(见图1)执行以下步骤:(1)根据包含在步骤230中收到的通信包中的所选择的哈希函数的标识符,确定哪个哈希函数是所选择的哈希函数;(2)通过在步骤250中检索的数据包上运用所选定的哈希函数,确定一个新的哈希摘要;和(3)判定该新的哈希摘要是否匹配所接收的哈希摘要。
[0069] 在接着步骤250的步骤244中,如果所选择的哈希函数的标识符未包含在步骤230中收到的通信包中,则再重复模块168(见图1)向请求数据包的应用程序发送数据包,所发送的数据包是在步骤250中检索的数据包。在步骤244中,如果所选择的哈希函数的标识符包含在步骤230中收到的通信包中,并且如果在步骤250中确定的新的哈希摘要匹配在步骤230中接收的通信包中包含的哈希摘要,则再重复模块168(见图1)向请求数据包的应用程序发送数据包,所发送的数据包是在步骤250中检索的数据包。如上所述,该数据包取自接收方哈希表172(见图1),并且是响应于在步骤224中只发送了哈希摘要D1和D1的索引(即,在步骤224中,没有让数据包从第一计算机系统101(见图1)通过网络130(见图1)发往第二计算机系统151(见图1))而发往应用程序的,由此,相比于已知的技术,减少了通过网络130(见图1)发送的数据量,而已知的技术则是响应于对相同的数据包的多次请求而在网络上传输和重新传输数据包。步骤244后,图2A-2B的过程在步骤240结束。
[0070] 返回到步骤248,如果再重复模块168(见图1)确定在步骤246从接收方哈希表172(见图1)检索的哈希摘要不等于哈希摘要D1,则采取步骤248的“否”分支,执行步骤252。
[0071] 在步骤252中,执行故障恢复程序。步骤252中的故障恢复过程包括再重复模块168(见图1)在接受方哈希表172(见图1)的其它条目中搜索匹配哈希摘要D1的哈希摘要。如果这个搜索结果是再重复模块168(见图1)在接收方哈希表172(见图1)找到一个包括一个与哈希摘要D1相匹配的哈希摘要的条目,那么,再重复模块168(见图1)检索所找到的条目中的数据包,把所检索的数据包发往请求数据包的应用程序,并在接收方哈希表172(见图1)中移动所找到的条目,使其索引匹配在步骤230中接收的通信包中已包含的索引,从而结束故障恢复过程。
[0072] 如果所选择的哈希函数的标识符包含在步骤230中接收的通信包中,那么,在把所检索的数据包发往请求数据包的应用程序之前,再重复模块168(见图1)可选地执行以下步骤:(1)根据在步骤230中接收的通信包中包含的所选择的哈希函数的标志符,确定哪个哈希函数是所选择的哈希函数;(2)通过在步骤250中检索的数据包上运用所选定的哈希函数,确定一个新的哈希摘要;和(3)判定该新的哈希摘要是否匹配所接收的哈希摘要。随后,如果新的哈希摘要匹配所接收的哈希摘要,再重复模块168(见图1)把所检索的数据包发往请求数据包的应用程序,并在接收方哈希表172(见图1)中移动所找到的条目,使其索引匹配在步骤230中接收的通信包中已包含的索引,从而结束故障恢复过程。
[0073] 如果再重复模块168(见图1)在接收方哈希表172(见图1)不能找到一个包括一个与哈希摘要D1相匹配的哈希摘要的条目,那么,再重复模块168(见图1)向第一计算机系统101(见图1)发送消息,指出在接收方哈希表172(见图1)未发现对应于哈希摘要D1的数据包,从而完成了故障恢复过程。在故障恢复过程在步骤252完成后,图2A-2B的过程在步骤
240结束。
[0074] 在一个实施例中,要处理从第一计算机系统101(见图1)向第二计算机系统151(见图1)发送一个或多个其它数据包的额外请求,可以从步骤214(见图2A)开始对每个其它数据包重复图2A-2B的过程,只要网络利用率持续超过网络利用率阈值,去重复模块120(见图1)就依然处在去重复模式,没有去重复模块120(见图1)处于去重复模式的通知从计算机系统101(见图1)向计算机系统151(见图1)重新发送。在替代实施例中,步骤208中对CPU利用率的检查,以及步骤210、212、214(见图2A),都发生在步骤202(见图2A)中网络利用率的检查之前。
[0075] 在替代实施例中,执行监控程序代码518(见图5)的计算机系统101-1(见图5)执行步骤202、204和208(见图2A);执行去重复程序代码520(见图5)的计算机系统101-1(见图5)执行步骤206(见图2A)中的发送方哈希表122(见图1)的分配,步骤210、212、214、216、218(见图2A)和步骤220、222、224、226、228(见图2B)。此外,在本段所描述的实施例中,执行再重复程序代码568(见图5)的计算机系统151(见图1)执行步骤206(见图2A)中接收方哈希表172(见图1)的分配,以及步骤230、232、234、236、238、242、244、246、248、250、252(见图2B)。
[0076] 管理哈希表空间的过程
[0077] 图3是根据本发明的实施例,在图1中管理哈希表空间的过程的流程图。在一个实施例中,在去重复模式中,图3的过程,随着图2A-2B的过程针对多个数据包的重复执行而周期性地发生。图3的过程始于步骤300。在步骤302中,监测模块118(见图1)确定发送方哈希表122(如图1)中可用的空间的量(即可用空间)。在步骤304之前,监测模块118(见图1)接收可用空间阈值,可用空间阈值表明发送方哈希表122中的可用空间量(见图1)能低到何种程度而无需为增加可用空间而删除发送方哈希表122(见图1)中的一个或多个条目。
[0078] 在步骤304中,监测模块118(见图1)判定在步骤302中确定的可用空间是否小于可用空间阈值。如果监测模块118(见图1)确定在步骤302中确定的可用空间大于或等于可用空间阈值,则采取步骤304的“否”分支,循环回到步骤302。如果监视模块118(见图1)确定在步骤302中确定的可用空间小于可用空间阈值,则采取步骤306的“是”分支。另外,接收方(即,图1中的计算机系统151)检查可用空间,如果可用空间落在阈值以下,则接收方向发送方(即,图1中的计算机系统101)发送消息,要求清理接收方哈希表172。在上述消息被发送后,采取步骤304的“是”分支。
[0079] 在步骤306,根据发送方哈希表122(见图1)的可用空间小于可用空间阈值,监测模块118(见图1)确定发送方哈希表122(见图1)中其各自的使用计数等于最低使用计数或次低使用计数的一个或多个条目的索引(例如,行号)。第一次执行步骤306时,监测模块118(见图1)确定发送方哈希表122(见图1)中、与发送方哈希表122(见图1)中的其它使用计数相比使用计数最低的一个或多个条目的索引。在如下文所述、在步骤314的“是”分支开始的循环导致的步骤306的随后的执行中,监测模块118(见图1)确定发送方哈希表122(见图1)中、相对于最近在先执行的步骤306中所用的特定使用计数而言使用计数等于次低使用计数的一个或多个条目的索引。
[0080] 在步骤308中,监测模块118(见图1)向接收方计算机系统151(见图1)发送在步骤306中确定的一个或多个索引(例如,以列表的形式)。在步骤308后、步骤310之前,接受方计算机系统151(见图1)接收监测模块118发送的索引(见图1)。
[0081] 在步骤310,发送方计算机系统101(见图1)中运行的监测模块118(见图1)或另一个基于软件的模块删除发送方哈希表122(见图1)中对应于在步骤306中确定的一个或多个索引的一个或多个数据条目。也是在步骤310中,接收方计算机系统151(见图1)中运行的基于软件的模块删除接收方哈希表172(见图1)中对应于在步骤306中发送的、随后被接收方计算机系统151(见图1)接收的一个或多个索引的一个或多个数据条目。
[0082] 在步骤312中,监测模块118(见图1)重新确定发送方哈希表122(见图1)中的可用空间。
[0083] 在步骤314中,监测模块118(见图1)判定发送方哈希表122(见图1)的可用空间是否仍然小于可用空间阈值。如果监测模块118(见图1)在步骤314中确定该可用空间小于可用空间阈值,则采取步骤314的“是”分支,图3的过程循环回到步骤306,以确定为增加发送方哈希表122(见图1)中的和接收方哈希表172(见图1)中的可用空间而要被删除的一个或更多其它哈希表数据条目的索引。否则,如果监测模块118(见图1)在步骤314中确定该可用空间大于或等于可用空间阈值,则采取步骤314的“否”分支,执行步骤316。图3的过程在步骤316结束。
[0084] 例如,考察1至10行分别具有以下使用计数的发送方哈希表122(见图1):1、2、1、5、2、4、5、2、4、4(即,第一行的使用计数为1,第二行的使用计数为2,第三行的使用计数为1,等等,直到第十排的使用计数为4)。在这个例子中,步骤306的第一次执行确定,为增加发送方哈希表122(见图1)和接收方哈希表172(见图1)的可用空间,要删除第一行和第三行,因为最低使用计数是1,第一行和第三行具有最低使用计数1。在步骤310中删除第一行和第三行后,如果步骤314确定可用空间仍小于阈值,则步骤306的第二次执行确定要删除第2、第5和第8行,因为2是步骤306的第一次执行时所用的使用计数1之后的下一个最低使用计数,并且因为第2、第5和第8行具有下一个最低计数2。删除第2、第5和第8行后,如果步骤314确定可用空间仍小于阈值,则步骤306的第三次执行确定要删除第6、第9和第10行,因为4是步骤
306的第二次执行时所用的使用计数2之后的下一个最低使用计数,并且因为第6、第9和第
10行具有下一个最低计数4。
[0085] 例子
[0086] 图4是按照本发明实施例的、包含由图2A-2B的过程管理的数据包的示例性通信包。通信包402包括包头404和数据包406。包头404包括哈希函数标识符408、哈希摘要D1410和其它元数据412。通信包402是已知通信包的扩展,因为包头404额外包含元数据哈希函数标识符408和哈希摘要D1 410。已知的元数据包含在其它元数据412中。
[0087] 通信包402是在步骤218(见图2A)或步骤228(见图2B)中发送的通信包的一个例子。哈希函数标识符408是在步骤210(见图2A)或步骤212(见图2A)中选择的哈希函数的示例性标志符。参看表1的可用哈希函数的例子。数据包406是在步骤214(见图2A)中为其确定哈希摘要D1的、在步骤218(见图2A)或步骤228(见图2B)中要发往第二计算机系统151(见图1)、并在步骤244(见图2B)中要发往一个应用程序的数据包的例子。哈希摘要D1 410是在步骤214(见图2a)中确定的、并在步骤218(见图2A)或步骤228(见图2B)中发往到接收方计算机系统151(见图1)的哈希摘要的例子。
[0088] 通信包402的一种变体不包括数据包406或者在数据包406中不含数据,是在步骤224中(见图2B)发送的通信包的例子。如果在步骤224(见图2b)中发送通信包402,则哈希摘要D1 410包含在步骤214(见图2a)确定的哈希摘要D1,其它元数据412包括在步骤224(见图
2b)中发送的索引。
[0089] 计算机系统
[0090] 图5是按照本发明实施例的、实现图2A-2B和图3的过程的一个计算机系统的框图。系统500包括第一计算机系统101-1和第二计算机系统151-1,它们彼此通过计算机网络
130-1通信。
[0091] 第一计算机系统101-1一般包括中央处理单元(CPU)102-1、存储器104-1、输入/输出(I/O)接口106-1、总线108-1、以及发送方NIC 116-1。此外,计算机系统101-1耦合到I/O设备110-1和计算机数据存储单元112-1。类似地,计算机系统151-1一般包括CPU 152-1、存储器154-1、I/O接口156-1、总线158-1、以及收件人NIC 166-1,并且,计算机系统151-1耦合到I/O设备160-1和计算机数据存储单元162-1。
[0092] CPU 102-1和CPU 152-1分别执行计算机系统101-1和151-1的计算和控制功能,包括CPU 102-1执行监控程序代码518和去重复程序代码520中包含的指令,CPU 152-1执行再重复程序代码568中包含的指令,以执行用存储器104-1中的发送方哈希表522和存储器154-1中的接收方哈希表572管理数据包的方法。代码518和代码520中包含的指令通过存储器104-1被CPU 102-1执行。代码568包含的指令通过存储器154-1被CPU 152-1执行。CPU 102-1和CPU 152-1可以各包含单个处理单元,或分布在一个或多个位置(例如,在客户端和服务器端)中的一个或多个处理单元。
[0093] 在另一个实施例中,计算机系统101-1也包含其功能与再重复程序代码568的功能相匹配的再重复程序代码,计算机系统151-1也包含其功能与监测程序代码518和去重复程序代码520分别相匹配的监测程序代码和去重复程序代码。
[0094] 存储器104-1和存储器154-1可以各自包含以下描述的任何已知的计算机可读存储介质。在一个实施例中,存储器104-1和存储器154-1的高速缓存存储器元件为至少一些程序代码(例如,程序代码518和程序代码520)提供临时存储,以减少在程序代码的指令的执行期间必须从海量存储器中取出代码的次数。此外,存储器104-1和存储器154-1均可以驻留在各自的单一物理位置,包括一个或多个类型的数据存储,或分布于各种形式的多个物理系统。此外,存储器104-1和存储器154-1均可以包含分布在局域网(LAN)或广域网(WAN)的数据。
[0095] I/O接口106-1和I/O接口156-1每个都包括用于与外部源交换信息的任何系统。I/O设备110-1和I/O设备160-1包括任何已知类型的外部设备,包括显示设备(例如,监视器)、键盘鼠标打印机、扬声器、手持设备、传真机、等等。总线108-1和总线158-1分别提供第一计算机系统101-1和第二计算机系统151-1中的每个组件之间的通信链路,每个可以包括任何类型的传输链路,包括电气、光学、无线等的传输链路。
[0096] I/O接口106-1和I/O接口156-1也允许计算机系统101-1和计算机系统151-1分别在数据存储单元112-1和计算机数据存储单元162-1、或另一个计算机数据存储单元(未予示出)存储信息(例如,数据或诸如程序代码518和程序代码520的程序指令)和检索信息。计算机数据存储单元112-1和计算机数据存储单元162-1均可以包括下文描述的任何已知的计算机可读存储介质。例如,计算机数据存储单元112-1或计算机数据存储单元162-1可以是非易失性数据存储设备,如磁盘驱动器(即,硬磁盘驱动器)或光盘驱动器(例如,接受光盘的CD-ROM驱动器)。
[0097] 发送方网卡116-1是将第一计算机系统101-1与网络130-1连接的组件。接收方网卡166-1是将第二计算机系统151-1与网络130-1连接的组件。
[0098] 存储器104-1和/或存储单元112-1可以存储包含由CPU 102-1通过存储器104-1执行以管理数据包的指令的计算机程序代码518和程序代码520。存储器154-1和/或存储单元可以存储包含由CPU 152-1通过存储器154-1执行以管理数据包的指令的计算机程序代码568。虽然图5描述的存储器104-1包括程序代码518和程序代码520,本发明设想了在存储器104-1中不同时包括所有的代码518和代码520、而是在某一时间只包括一部分代码518和/或一部分代码520的实施例。虽然图5描述的存储器154-1包括程序代码568,本发明设想了在存储器154-1中不同时包括所有的代码568、而是在某一时间只包括一部分代码568的实施例。
[0099] 此外,存储器104-1和存储器154-1可以包含图5中没有显示的其它系统,例如分别包含在CPU 102-1上运行的、提供对计算机系统101-1内部的组件和/或连接到计算机系统101-1的组件的控制的操作系统和在CPU 152-1上运行的、提供对计算机系统151-1内部的组件和/或连接到计算机系统151-1的组件的控制的操作系统。
[0100] 在一个实施例中,存储单元112-1和/或连接到计算机系统101-1的一个或多个其它计算机数据存储单元(未显示)存储发送方哈希表522。在一个实施例中,存储单元162-1和/或连接到计算机系统151-1的一个或多个其它计算机数据存储单元(未显示)存储发送方哈希表572
[0101] 所属技术领域的熟练人员应该明白,本发明可以体现为系统、方法或计算机程序产品。因此,本发明的实施例的一个方面可以采取完全硬件的形式、完全软件的形式(包括固件、驻留软件、微代码等),或一个方面可以采取这里一般称为“模块”的软件和硬件结合的形式。此外,本发明的实施例可以采取计算机程序产品的形式,计算机程序产品体现在一个或多个计算机可读介质(例如,存储器104-1和/或计算机数据存储单元112-1;例如,存储器154-1和/或计算机数据存储单元162-1)上,计算机可读介质上体现或存储着计算机可读程序代码(例如程序代码518和520;例如程序代码568)。
[0102] 可以使用一个或多个计算机可读介质(例如,存储器104-1和计算机数据存储单元112-1;例如,存储器154-1和/或计算机数据存储单元162-1)的任何组合。计算机可读介质可以是计算机可读存储介质或计算机可读信号介质。在一个实施例中,计算机可读存储介质是计算机可读存储设备或计算机可读存储装置。计算机可读存储介质可以是—例如,但不限于—电子、光学、磁性、电磁、或半导体系统、设备、或以上的任何合适的组合。计算机可读存储介质的更具体的例子的非穷举清单包括:便携式计算机软盘硬盘随机存取存储器(RAM、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便携式紧凑光盘只读存储器(CD-ROM)、光学存储设备、磁存储设备,或上述的任何合适的组合。在本文的上下文中,计算机可读存储介质是有形介质,可以包含或存储由系统、装置或设备用于执行指令的程序或与系统、装置或设备关联地用于执行指令的程序(例如,程序518和520;
例如,程序568)。然而,术语“计算机可读存储介质”和“计算机可读的存储设备”不包括传输介质(propagation medium)。
[0103] 计算机可读介质可以包括基带中或作为载波的一部分的、其中体现有计算机可读的程序代码的传播数据信号。这样的传播信号可以采取各种形式,包括—但不限于电磁、光学或它们的任何合适的组合。计算机可读信号介质可以是非计算机可读介质、但是能交流、传播或传输由系统、装置或设备用于执行指令的程序或与系统、装置或设备关联地用于执行指令的程序的任何计算机可读存储介质。
[0104] 计算机可读介质上体现的程序代码(例如,程序代码518、520和568),可以用任何合时的介质发送,包括但不限于无线、有线、光纤电缆、射频(RF)等,或上述的任何合适的组合。
[0105] 用于执行本发明的各方面的操作的计算机程序代码(例如,程序代码518、520和568),可以用一个或多个编程语言的任意组合编写,编程语言包括:面向对象的编程语言—诸如 Smalltalk、C++之类,或常规的过程式编程语言—诸如“C”编程语言之类,或类似的编程语言。程序代码的指令可以完全地在用户计算机上被执行,部分地在用户计算机上被执行,作为独立的软件包被执行,部分地在用户计算机上、部分地栽远程计算机上被执行,或完全地在远程计算机或服务器上被执行,上述用户计算机、远程计算机和服务器例如可以是计算机系统101-1、计算机系统151-1或具有与图5中的计算机系统101-1或计算机系统151-1的类似的组件的另一个计算机系统(未予示出)。在后一种情况下,远程计算机可以通过包括局域网或广域网的任何类型的网络(未予示出)连接到用户计算机,或者可以(例如使用互联网服务提供商而通过互联网)连接到外部计算机。
[0106] 这里对本发明各方面的描述,参照了按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图(例如,图2A-2B和图3)和/或框图(例如,图1和图5)。应该明白,流程图和/或框图中的每个方框,以及流程图和/或框图中的各方框的组合,都可以由计算机程序指令(例如,程序代码518、520和568)实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的一个或多个硬件处理器(例如,CPU 102-1或CPU 152-1)以产生一个机器,使得通过处理器(的)计算机或其它可编程数据处理装置的处理器被执行的这些指令,产生实现流程图和/或框图中描述的功能/操作的手段。
[0107] 这些计算机程序指令可以也被存储在计算机可读设备(例如,存储器104-1或计算机数据存储单元112-1;例如,存储器154-1或计算机数据存储单元162-1)上,能指令计算机(例如,计算机系统101-1或计算机系统151-1)、其它可编程数据处理装置或其它设备以特定的方式的工作,使得计算机可读设备上存储的指令(例如,程序代码518和520;例如,程序代码568)产生一种包括实现流程图和/或框图中描述的功能/操作的制造品。
[0108] 计算机程序指令也可以被加载到计算机(例如,计算机系统101-1或计算机系统151-1)、其它可编程数据处理装置或其它设备,以导致要在计算机、其它可编程装置、或其它设备执行的一系列的操作步骤,以生成计算机实现的过程,使得在计算机、其它可编程装置或其它设备上执行的指令(例如,程序代码518和520;例如,程序代码568)提供实现流程图和/或框图中描述的功能/操作的过程。
[0109] 本发明实施例的任何组成部分,都可以由提供部署或整合计算基础设施以管理数据包的服务供应商进行部署、管理、服务,等等。因此,本发明的实施例公开了一种支持计算机基础设施的过程,其中,该过程包括第一计算机系统为在包括一个或多个处理器(例如,CPU 102-1或CPU 152-1)的第二计算机系统(例如,计算机系统101-1或计算机系统151-1)集成、托管、维护和部署计算机可读代码(例如,程序代码518和520;例如,程序代码568)的至少一项而提供至少一个支持服务,其中,处理器执行代码中包含的指令,导致第二个计算机系统来管理数据包。
[0110] 在另一个实施例中,本发明提供一种在订阅、广告和/或收费基础上执行本发明的过程步骤的方法。就是说,诸如解决方案集成商的服务提供商,可以提供创建、维护、支持管理数据包的过程。在这种情况下,服务提供上可以创建、维护、支持为一个或多个客户执行本发明的过程步骤的计算机基础设施。作为回报,服务提供商可以按订阅和/或收费协议收到客户的付款,和/或可以收到向一个或多个第三方销售广告内容的付款。
[0111] 图2A-2B和图3中的流程图以及图1和图5中的框图,例示了按照本发明的系统、方法和计算机程序产品的可能实现的体系结构、功能和操作。在这方面,流程图或框图中的每个方框可代表包含一个或多个用于实现特定逻辑功能的可执行指令的代码(例如,程序代码518和520;例如,程序代码568)的一个模块、片段或部分。还应注意的是,在一些替代性的实现中,方框中指出的功能可以不按图中指出的顺序出现。例如,顺序显示的两个方框,实际上可以基本同时地执行;或者,可以以相反的顺序执行方框,这取决于所涉及的功能。还要指出的是,框图和/或流程图的每个方框以及框图和/或流程图的方框的组合,都可以由执行指定功能或操作的专用硬件系统实现或者由专用硬件与计算机指令的组合实现。
[0112] 返回图1,在一个实施例中,第一计算机系统101耦合到I/O设备(未予示出)和计算机数据存储单元(未予示出),其中,I/O设备和计算机数据存储单元分别具有I/O设备110-1(见图5)和计算机数据存储单元112-1(见图5)的功能。在一个实施例中,第二计算机系统151耦合到I/O设备(未予示出)和计算机数据存储单元(未予示出),其中,I/O设备和计算机数据存储单元分别具有I/O设备160-1(见图5)和计算机数据存储单元162-1(见图5)的功能。
[0113] CPU 102执行第一计算机系统101的计算和控制功能,包括执行在包括监测模块118和去重复模块120的程序代码中包含的执行管理数据包的方法的指令。在一个实施例中,在监测模块118和去重复模块120中包含的指令由发送方NIC 116中的处理器(未予示出)通过发送方NIC 116中的存储器(未予示出)执行,或由CPU 102通过存储器104执行。在另一个实施例中,在监测模块118和去重复模块120中包含的指令由CPU 102通过存储器104执行。
[0114] CPU 152执行第二计算机系统151的计算和控制功能,包括执行包括再重复模块168的程序代码中包含的执行管理数据包的方法的指令。在一个实施例中,在再重复模块
168中包含的指令由接收方NIC 166中的处理器(未予示出)通过接收方NIC 166中的存储器(未予示出)执行。在另一个实施例中,在再重复模块168中包含的指令由CPU 152通过存储器154执行。
[0115] CPU 152和CPU 102可以各包含单个处理单元,或分布在一个或多个位置(例如,在客户端和服务器端)中的一个或多个处理单元。
[0116] 存储器104和存储器154每个可以包括上述的任何已知的计算机可读存储介质。存储器104和存储器154分别具有如上所述的存储器104-1(见图5)和存储器154-1(见图5)的特点和限制。
[0117] 在一个实施例中,监控模块118的功能相当于监测程序代码518(见图5)的功能,去重复模块120的功能相当于去重复程序代码520(见图5)的功能,发送方哈希表122的功能相当于发送方哈希表522(见图5)的功能,再重复模块168的功能相当于再重复程序代码568的功能,接收方哈希表172的功能相当于接收方哈希表572(见图5)的功能。
[0118] 在替代实施例中,图2A-2B和图3中的由监测模块118、去重复模块120和再重复模块168执行的步骤,转而分别由执行监控程序代码518(见图5)的计算机系统101-1、执行去重复程序代码520(见图5)的计算机系统101-1、以及执行再重复程序代码568(见图5)的计算机系统151-1执行。
[0119] 尽管已经为了说明的目的描述了本发明的实施例,许多修改和变更对于所属技术领域的熟练人员来说都将变得显而易见。因此,后附的权利要求旨在包括落在这项发明的真正精神和范围内的所有这些修改和变更。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈