基于網絡參數的完整性校驗和選擇性去重復的制作方法
【技術領域】
[0001] 本發明涉及用于管理通信流量的數據處理方法和系統,更具體來說,涉及對消息 包流進行完整性校驗和選擇性去重復的技術。
【背景技術】
[0002] 加密哈希函數是這樣一種算法,其以任意數據塊作為輸入,生成并返回哈希摘要 (也稱"哈希值"、"加密哈希值"、或"摘要")。哈希摘要(hashdigest)是一個固定大小的 位串。加密哈希函數產生哈希摘要,以致對輸入數據的意外的或有意的改變將以非常高的 概率改變哈希摘要。此外,加密哈希函數是一個雪崩函數(avalanchefunction),因為函數 輸入的相當小的差異(例如,即使是一位的差異)都導致相當大的(即,高度非線性的)摘 要差異。加密哈希函數包括安全哈希算法(SecureHashAlgorithm或SHA)函數和消息摘 要(MessageDigest或MD)函數。表1包含了加密哈希函數和它們各自的哈希摘要的大小 的例子。
[0003]表1
[0004]
[0005]
[0006] 網絡通信設備用通信協議從發送網絡設備(即發送端)向接收網絡設備(即接收 器或接收方)發送通信(即數據)包。按照已知的通信協議,諸如傳輸控制協議/網間協議 (TCP/IP),光纖通道以太網(FCoE)、小型計算機系統接口(SCSI)、InternetSCSI(iSCSI), 串行連接SCSI(SAS)、InfiniBand、以及以太網通信軟件包包含用于元數據和有效載荷數據 的字段。元數據和有效載荷數據字段由按照開放系統互連(0SI)網絡分層模型的協議標準 定義。某些元數據字段用于存儲有效載荷數據的校驗和(checksum),其允許執行完整性校 驗。發送網絡設備計算校驗和并把它添加到元數據,并將有效載荷數據和包含校驗和的元 數據發送到接收網絡設備。接收網絡設接收有效載荷數據和包含校驗和的元數據后,計算 接收到的有效載荷數據的校驗和,并比較計算結果與接收到的元數據中包含的校驗和,以 保證數據的完整性(integrity)。已知的校驗和基于的是諸如循環冗余校驗(CRC)的循環 碼(cycliccodes)〇
【發明內容】
[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利用率閾值,則第一計 算機選擇第二哈希函數而非第一哈希函數。不在去重復模式中的步驟進一步包括:第一計 算機利用所選擇的第一或第二哈希函數來確定該數據包的哈希摘要。該方法進一步包含: 在第一計算機執行不在去重復模式中的步驟的基礎上,第一計算機把該哈希摘要添加到與 第一計算機耦合的發送方哈希表,并且,第一計算機向第二計算機發送該數據包、該哈希摘 要、以及所選擇的第一或第二哈希函數的標識符,以便根據該哈希摘要確定該數據包是否 具有完整性。第一計算機向第二計算機發送該數據包、該哈希摘要、以及所選擇的第一或第 二哈希函數的標識符的結果包含:該數據包、該哈希摘要、以及所選擇的第一或第二哈希函 數的標識符由第二計算機接收。第一計算機向第二計算機發送該數據包、該哈希摘要、以 及所選擇的第一或第二哈希函數的標識符的結果進一步包含:根據所接收的所選擇的第一 或第二哈希函數的標識符,通過在所接收的數據包上運用所選擇的第一或第二哈希函數而 確定新的哈希函數。第一計算機向第二計算機發送該數據包、該哈希摘要、以及所選擇的 第一或第二哈希函數的標識符的結果進一步包含:判定所接收的哈希摘要是否匹配新的哈 希函數,并且,如果所接收的哈希摘要匹配新的哈希函數,則第一計算機發送該數據包、該 哈希摘要、以及該標識符的結果包含確定數據包具有完整性,把數據包和哈希摘要添加到 與第二計算機耦合的接收方哈希表,以及向應用程序發送數據包,并且,如果所接收的哈希 摘要不匹配新的哈希函數,則第一計算機發送該數據包、該哈希摘要、以及該標識符的結果 包含向第一計算機通知數據包不具有完整性,并且作為響應,由第一計算機向第二計算機 重新發送數據包和哈希摘要。該方法進一步包含:在第一計算機向第二計算機發送該數據 包、該哈希摘要、以及所選擇的第一或第二哈希函數的標識符的步驟后,第一計算機確定網 絡的第二利用率大于網絡利用率閾值。該方法進一步包含:根據該網絡的利用率大于網絡 利用率閾值,第一計算機進入去重復模式,隨后執行去重復模式中的步驟。去重復模式中的 步驟包含:第一計算機通知第二計算機第一計算機已進入去重復模式。該方法進一步包含: 第一計算機通過利用所選擇的第一或第二哈希函數來確定第二數據包的第二哈希摘要。該 方法包含:第一計算機確定第二數據包的第二哈希摘要與添加到發送方哈希表的哈希摘要 相匹配。該方法進一步包含:基于第二數據包的第二哈希摘要與添加到發送方哈希表的哈 希摘要相匹配,并且在第一計算機不向第二計算機發送該數據包的情況下,第一計算機向 第二計算機發送第二哈希摘要、針對添加到發送方哈希表的哈希摘要的索引、以及所選擇 的第一或第二哈希函數的標識符。第一計算機向第二計算機發送第二哈希摘要、索引、以及 標識符的結果包含:基于第二計算機被通知第一計算機已經進入去重復模式,由第二計算 機確定沒有隨第二哈希摘要、該索引、以及該標識符一起收到該數據包。第一計算機向第二 計算機發送第二哈希摘要、索引、以及標識符的結果進一步包含:由第二計算機接收第二哈 希摘要、索引、以及所選擇的第一或第二哈希函數的標識符。第一計算機向第二計算機發送 第二哈希摘要、索引、以及標識符的結果進一步包含:響應于確定沒有收到該數據包并且根 據該索引,由第二計算機查找添加到接收方哈希表的哈希摘要。第一計算機向第二計算機 發送第二哈希摘要、索引、以及標識符的結果進一步包含:確定在接收方哈希表中查找的哈 希摘要匹配所接收的第二哈希摘要。第一計算機向第二計算機發送第二哈希摘要、索引、以