本發(fā)明涉及信息處理系統(tǒng)、信息處理裝置、信息處理方法、以及信息處理程序。
背景技術:
實現(xiàn)通信的高速化的方法之一有削減轉(zhuǎn)送數(shù)據(jù)量的方法。削減轉(zhuǎn)送數(shù)據(jù)量的方法由于使用頻帶減少,所以對低頻帶的線路有效。作為削減轉(zhuǎn)送數(shù)據(jù)量的方法,例如,有去除重復發(fā)送的數(shù)據(jù)的方法、對發(fā)送數(shù)據(jù)進行壓縮的方法。
在去除重復發(fā)送的數(shù)據(jù)的方法中,例如,采用分別在發(fā)送側(cè)網(wǎng)絡以及接收側(cè)網(wǎng)絡配置發(fā)送側(cè)裝置和接收側(cè)裝置的系統(tǒng)構成較多。發(fā)送側(cè)裝置以及接收側(cè)裝置預先緩存有處理實績的數(shù)據(jù),發(fā)送側(cè)裝置使用緩存的數(shù)據(jù)進行發(fā)送數(shù)據(jù)的重復的確認,在發(fā)送數(shù)據(jù)重復的情況下,代替發(fā)送數(shù)據(jù)而發(fā)送發(fā)送數(shù)據(jù)的概要信息。若接收側(cè)裝置接收數(shù)據(jù)的概要信息,則從緩存讀出相應的數(shù)據(jù),并轉(zhuǎn)送給目的地。由于與發(fā)送數(shù)據(jù)的尺寸相比發(fā)送數(shù)據(jù)的概要信息的尺寸較小,所以能夠削減轉(zhuǎn)送數(shù)據(jù)量,能夠抑制發(fā)送側(cè)裝置與接收側(cè)裝置之間的使用頻帶。
專利文獻1:日本特開2009-21906號公報
專利文獻2:日本特開2001-331661號公報
專利文獻3:日本特開2000-357121號公報
然而,在發(fā)送側(cè)裝置進行的發(fā)送數(shù)據(jù)的重復判定處理負荷較大,而成為開銷。在有發(fā)送數(shù)據(jù)的重復的情況下,對于發(fā)送數(shù)據(jù)的重復判定處理所引起的負荷、延遲來說,發(fā)送數(shù)據(jù)的重復判定處理的開銷被數(shù)據(jù)削減所帶來的使用頻帶的減少效果抵消。然而,在沒有發(fā)送數(shù)據(jù)的重復的情況下,發(fā)送數(shù)據(jù)的重復判定處理成為不能夠忽略的開銷。
技術實現(xiàn)要素:
本發(fā)明的一方式的目的在于提供在重復數(shù)據(jù)的去除中,能夠降低發(fā)送側(cè)裝置的處理負荷的信息處理系統(tǒng)、信息處理裝置、信息處理方法、以及信息處理程序。
本發(fā)明的方式之一是包含發(fā)送側(cè)裝置和接收側(cè)裝置的信息處理系統(tǒng)。接收側(cè)裝置具備:第一存儲部,其對有接收實績的第一數(shù)據(jù)進行存儲;接收部,其從發(fā)送側(cè)裝置接收數(shù)據(jù);重復檢測部,其判定是否在第一存儲部存儲有與接收數(shù)據(jù)的至少一部分重復的數(shù)據(jù);以及通知部,其在第一存儲部存儲有與接收數(shù)據(jù)的至少一部分重復的數(shù)據(jù)的情況下,向發(fā)送側(cè)裝置通知第一數(shù)據(jù)的重復接收的預測信息。發(fā)送側(cè)裝置具備:第二存儲部,其對有發(fā)送實績的第一數(shù)據(jù)進行存儲;判定部,其在從接收側(cè)裝置接收到第一數(shù)據(jù)的重復接收的預測信息的情況下,基于該重復接收的預測信息來對預發(fā)送數(shù)據(jù)與第一數(shù)據(jù)的一部分進行比較,判定與預發(fā)送數(shù)據(jù)一致的第二存儲部內(nèi)的第一數(shù)據(jù)的一部分的有無;以及發(fā)送部,其在第二存儲部內(nèi)有與預發(fā)送數(shù)據(jù)一致的第一數(shù)據(jù)的一部分的情況下,代替該預發(fā)送數(shù)據(jù)而對預發(fā)送數(shù)據(jù)的概要信息進行發(fā)送。
根據(jù)公開的信息處理系統(tǒng)、信息處理裝置、信息處理方法、以及信息處理程序,在重復數(shù)據(jù)的去除中,能夠降低發(fā)送側(cè)裝置的處理負荷。
附圖說明
圖1是表示數(shù)據(jù)去重系統(tǒng)的一個例子的圖。
圖2是表示第一實施方式的數(shù)據(jù)去重系統(tǒng)的構成的一個例子的圖。
圖3是表示第一實施方式的處理的一個例子的圖。
圖4是表示發(fā)送側(cè)裝置的硬件構成的一個例子的圖。
圖5是表示發(fā)送側(cè)裝置的功能構成的一個例子的圖。
圖6是表示發(fā)送側(cè)緩存內(nèi)的數(shù)據(jù)結構的一個例子的圖。
圖7是表示接收側(cè)裝置的功能構成的一個例子的圖。
圖8是表示接收側(cè)緩存的數(shù)據(jù)結構的一個例子的圖。
圖9是表示重復預測信息的一個例子的圖。
圖10是發(fā)送側(cè)裝置的處理的流程圖的一個例子。
圖11是接收側(cè)裝置的處理的流程圖的一個例子。
圖12是表示具體例中的處理對象數(shù)據(jù)的設定的圖。
圖13A是具體例中的時序圖的一個例子。
圖13B是具體例中的時序圖的一個例子。
圖14是表示第一實施方式所涉及的數(shù)據(jù)去重系統(tǒng)的效果的圖。
具體實施方式
以下,基于附圖,對本發(fā)明的實施方式進行說明。以下的實施方式的構成是例示的構成,本發(fā)明并不限定于實施方式的構成。
<數(shù)據(jù)去重的一個例子>
圖1是表示數(shù)據(jù)去重系統(tǒng)的一個例子的圖。數(shù)據(jù)去重系統(tǒng)P100包含發(fā)送側(cè)裝置P1和接收側(cè)裝置P2。發(fā)送側(cè)裝置P1以及接收側(cè)裝置P2分別例如是位于網(wǎng)絡的邊界的裝置。
發(fā)送側(cè)裝置P1例如,若從應用程序接收數(shù)據(jù),則將該數(shù)據(jù)分割為被稱為組塊(Chunk)的1~4KB的可變長塊。發(fā)送側(cè)裝置P1對各組塊進行SHA1(Secure Hash Algorithm:安全哈希算法)的計算獲取哈希值,并將該哈希值作為關鍵字(key),進行緩存內(nèi)的哈希搜索。在發(fā)送側(cè)裝置P1的緩存保持了有發(fā)送實績的數(shù)據(jù)的組塊和SHA1的計算結果。
在作為哈希搜索的結果,未檢測到SHA1的計算結果一致的組塊的情況下,即、在組塊未重復的情況下,發(fā)送側(cè)裝置P1將該組塊保存于緩存,并發(fā)送實際數(shù)據(jù)。在哈希搜索的結果是檢測到SHA1的計算結果一致的組塊的情況下,即、在組塊重復的情況下,發(fā)送側(cè)裝置P1發(fā)送該組塊的ID數(shù)據(jù)。在組塊的ID數(shù)據(jù)例如包含有應用程序ID、該組塊的位置信息、以及該組塊的尺寸。
接收側(cè)裝置P2在接收了實際數(shù)據(jù)的情況下,將該實際數(shù)據(jù)轉(zhuǎn)送至目的地,并且將該實際數(shù)據(jù)保存于緩存。接收側(cè)裝置P2在接收了組塊的ID的情況下,從緩存讀出相應的實際數(shù)據(jù)對數(shù)據(jù)進行恢復,并發(fā)送至目的地。
在圖1所示的數(shù)據(jù)去重系統(tǒng)P100中,發(fā)送側(cè)裝置進行組塊分割、SHA1計算、哈希搜索的處理,在組塊重復的情況下,通過發(fā)送該組塊的ID數(shù)據(jù),來削減數(shù)據(jù)轉(zhuǎn)送量。然而,組塊分割、SHA1計算、哈希搜索的處理負荷較大,所以例如,在發(fā)送側(cè)裝置P1是終端裝置等性能比較低的裝置的情況下,有數(shù)據(jù)去重的處理不會有助于通信的高速化的可能性。
<第一實施方式>
圖2是表示第一實施方式的數(shù)據(jù)去重系統(tǒng)100的構成的一個例子的圖。例如,數(shù)據(jù)去重系統(tǒng)100包含去重客戶端1、和去重服務器2。去重客戶端1例如是智能手機1A、PC(Personal Computer:個人計算機)1B等終端裝置。另外,去重客戶端1也可以是服務器等專用計算機。去重客戶端1也稱為發(fā)送側(cè)裝置1。去重服務器2也稱為接收側(cè)裝置2。
在第一實施方式中,接收側(cè)裝置2對來自發(fā)送側(cè)裝置1的有接收實績的數(shù)據(jù)進行緩存,并使用該緩存檢測接收數(shù)據(jù)的重復的開始。若接收側(cè)裝置2檢測到接收數(shù)據(jù)的重復的開始,則向發(fā)送側(cè)裝置1通知重復預測信息。若發(fā)送側(cè)裝置1從接收側(cè)裝置2接收到重復預測信息,則切換動作模式,基于該重復預測信息,對預發(fā)送數(shù)據(jù)進行通過負荷比較輕的存儲器比較的重復判定處理,并發(fā)送數(shù)據(jù)。
圖3是表示第一實施方式的處理的一個例子的圖。發(fā)送側(cè)裝置1具有通常模式和重復預測模式兩個動作模式。在通常模式中,發(fā)送側(cè)裝置1將預發(fā)送數(shù)據(jù)儲存于緩存,并發(fā)送實際數(shù)據(jù)。
若發(fā)送側(cè)裝置1從接收側(cè)裝置2接收到重復預測信息的通知,則動作模式切換為重復預測模式。在重復預測模式中,發(fā)送側(cè)裝置1基于重復預測信息從緩存數(shù)據(jù)預取部分數(shù)據(jù),并進行預發(fā)送數(shù)據(jù)與存儲器的比較,判定重復的有無。在部分數(shù)據(jù)與預發(fā)送數(shù)據(jù)不一致的情況下,預發(fā)送數(shù)據(jù)不是重復的數(shù)據(jù),所以發(fā)送側(cè)裝置1發(fā)送實際數(shù)據(jù)。在部分數(shù)據(jù)與預發(fā)送數(shù)據(jù)一致的情況下,預發(fā)送數(shù)據(jù)重復,所以發(fā)送側(cè)裝置1發(fā)送預發(fā)送數(shù)據(jù)的索引。
接收側(cè)裝置2在接收到實際數(shù)據(jù)的情況下,將實際數(shù)據(jù)分割為組塊,對各組塊計算SHA1,并將SHA1的計算結果作為關鍵字搜索緩存。在緩存內(nèi)檢測到重復的組塊的情況下,接收側(cè)裝置2檢測到重復接收的開始,并生成重復預測信息通知給發(fā)送側(cè)裝置1。
接收側(cè)裝置2在接收到索引的情況下,從緩存讀出索引所示的組塊,恢復數(shù)據(jù),并發(fā)送給目的地的裝置。
在第一實施方式中,接收側(cè)裝置2進行組塊分割、SHA1計算、哈希搜索等負荷較高的處理,發(fā)送側(cè)裝置1進行預取的數(shù)據(jù)與預發(fā)送數(shù)據(jù)的比較這樣的負荷比較輕的處理。由此,能夠降低發(fā)送側(cè)裝置1所涉及的處理負荷。
<裝置構成>
<發(fā)送側(cè)裝置>
圖4是表示發(fā)送側(cè)裝置1的硬件構成的一個例子的圖。發(fā)送側(cè)裝置1例如是移動電話終端、智能手機、平板終端、通用或者專用的計算機。
發(fā)送側(cè)裝置1具備CPU(Central Processing Unit:中央處理器)101、主存儲裝置102、輸入裝置103、輸出裝置104、輔助存儲裝置105、以及網(wǎng)絡接口107。另外,它們通過總線109相互連接。
輸入裝置103例如是操作按鈕、觸摸面板、鍵盤、小鍵盤等。從輸入裝置103輸入的數(shù)據(jù)輸出至CPU101。輸入裝置例如也可以包含麥克那樣的聲音輸入裝置。
輔助存儲裝置105儲存各種程序、在各程序的執(zhí)行時CPU101使用的數(shù)據(jù)。輔助存儲裝置105例如是EPROM(Erasable Programmable ROM:可擦除可編程只讀存儲器)、閃存、或者硬盤驅(qū)動器(Hard Disk Drive)等非易失性的存儲器。輔助存儲裝置105例如保持操作系統(tǒng)(OS)、去重客戶端程序、其它各種應用程序。去重客戶端程序是用于使發(fā)送側(cè)裝置1作為去重客戶端發(fā)揮作用的程序。
主存儲裝置102對CPU101提供下載儲存于輔助存儲裝置105的程序的存儲區(qū)域以及工作區(qū)域,或者作為緩沖區(qū)使用。主存儲裝置102例如,包含ROM(Read only Memory:只讀存儲器)、RAM(Random Access Memory:隨機存儲器)那樣的半導體存儲器。
CPU101通過將保持于輔助存儲裝置105的OS、各種應用程序下載至主存儲裝置102并執(zhí)行,來執(zhí)行各種處理。CPU101并不限定于一個,也可以具備多個。
網(wǎng)絡接口107是進行與網(wǎng)絡的信息的輸入輸出的接口。網(wǎng)絡接口107包含與有線的網(wǎng)絡連接的接口、與無線的網(wǎng)絡連接的接口。網(wǎng)絡接口107例如是NIC(Network Interface Card:網(wǎng)卡)、無線LAN(Local Area Network:局域網(wǎng))卡等。在網(wǎng)絡接口107接收到的數(shù)據(jù)等輸出給CPU101。
輸出裝置104輸出CPU101的處理的結果。輸出裝置104包含揚聲器等聲音輸出裝置、顯示器、打印機。
此外,圖4所示的發(fā)送側(cè)裝置1的硬件構成是一個例子,并不限定于上述構成,而能夠根據(jù)實施方式適當?shù)剡M行構成要素的省略、置換、追加。例如,也可以是發(fā)送側(cè)裝置1具備便攜式記錄介質(zhì)驅(qū)動裝置,并執(zhí)行記錄于便攜式記錄介質(zhì)的程序。便攜式記錄介質(zhì)例如是SD卡、miniSD卡、microSD卡、USB(Universal Serial Bus:通用串行總線)閃存、CD(Compact Disc:光盤)、DVD(Digital Versatile Disc:數(shù)字通用光盤)、Blu-ray(注冊商標)Disc、或者閃存卡那樣的記錄介質(zhì)。
另外,在發(fā)送側(cè)裝置1為服務器的情況下,例如,發(fā)送側(cè)裝置1也可以不具備輸入裝置103、輸出裝置104。
圖5是表示發(fā)送側(cè)裝置1的功能構成的一個例子的圖。發(fā)送側(cè)裝置1作為功能構成,具備數(shù)據(jù)接收部11、重復判定部12、緩存保存部13、數(shù)據(jù)發(fā)送部14、以及重復預測接收部15。這些功能構成是通過CPU101執(zhí)行儲存于輔助存儲裝置105的去重客戶端程序來實現(xiàn)的功能構成。另外,通過執(zhí)行去重客戶端程序,在輔助存儲裝置105的存儲區(qū)域確保發(fā)送側(cè)緩存16用的區(qū)域。另外,在主存儲裝置102的存儲區(qū)域確保儲存重復預測表格17的區(qū)域。去重客戶端程序例如是應用層程序。
數(shù)據(jù)接收部11從成為數(shù)據(jù)的發(fā)送源的應用程序接收數(shù)據(jù),并終止該應用程序的會話。例如,在作為數(shù)據(jù)的發(fā)送源的應用程序是利用TCP(Transmission Control Protocol:傳輸控制協(xié)議)進行通信的應用程序的情況下,若數(shù)據(jù)接收部11從數(shù)據(jù)的發(fā)送源接收到連接要求,則與該數(shù)據(jù)的發(fā)送源確立TCP會話。數(shù)據(jù)接收部11使用作為IP地址與端口編號的組合的套接字(socket)與數(shù)據(jù)的發(fā)送源進行通信。因此,數(shù)據(jù)接收部11能夠根據(jù)套接字識別應用程序。
此外,執(zhí)行成為數(shù)據(jù)的發(fā)送源的應用程序的實體既可以是發(fā)送側(cè)裝置1自身,也可以是其它的裝置。例如,在發(fā)送側(cè)裝置1是服務器的情況下,執(zhí)行成為數(shù)據(jù)的發(fā)送源的應用程序的實體是其它的裝置,數(shù)據(jù)接收部11通過網(wǎng)絡接口107,從該其它的裝置接收數(shù)據(jù)。例如,在發(fā)送側(cè)裝置1為終端裝置的情況下,執(zhí)行成為數(shù)據(jù)的發(fā)送源的應用程序的實體為發(fā)送側(cè)裝置1自身。在第一實施方式中,后面不特定執(zhí)行成為數(shù)據(jù)的發(fā)送源的應用程序的實體,而僅稱為“發(fā)送源”。
數(shù)據(jù)接收部11在動作模式為通常模式的情況下,將預發(fā)送數(shù)據(jù)輸出給數(shù)據(jù)發(fā)送部14。預發(fā)送數(shù)據(jù)是從發(fā)送源的應用程序接收的數(shù)據(jù)。數(shù)據(jù)接收部11在動作模式為重復預測模式的情況下,將預發(fā)送數(shù)據(jù)輸出給重復判定部12。
數(shù)據(jù)接收部11例如保持規(guī)定尺寸的處理緩沖區(qū)。從發(fā)送源的應用程序接收的數(shù)據(jù)在發(fā)送側(cè)裝置1中以該處理緩沖區(qū)的尺寸的單位進行處理。處理緩沖區(qū)的尺寸例如為50~100KB。但是,處理緩沖區(qū)的尺寸并不限定于此。即,預發(fā)送數(shù)據(jù)是與處理緩沖區(qū)相同或者小于處理緩沖區(qū)的尺寸的數(shù)據(jù)塊。
另外,數(shù)據(jù)接收部11監(jiān)視從與發(fā)送源的應用程序的通信開始的預發(fā)送數(shù)據(jù)的偏移。從與發(fā)送源的應用程序的通信開始的預發(fā)送數(shù)據(jù)的偏移是表示預發(fā)送數(shù)據(jù)的前端的位置的值。例如,偏移是從0開始,且每隔數(shù)據(jù)的尺寸一個字節(jié)增加1的值。例如,在通信開始后,在第一個預發(fā)送數(shù)據(jù)的尺寸為80KB的情況下,該第一個預發(fā)送數(shù)據(jù)的偏移為0,下一個預發(fā)送數(shù)據(jù)的偏移為80000。
在動作模式為重復預測模式的情況下,在重復判定部12從數(shù)據(jù)接收部11輸入預發(fā)送數(shù)據(jù)。此外,動作模式的初始值為通常模式。重復判定部12參照預發(fā)送數(shù)據(jù)的應用程序的重復預測表格17,從重復預測表格17所示的應用程序的發(fā)送側(cè)緩存16預取相應的部分數(shù)據(jù)并進行與預發(fā)送數(shù)據(jù)的比較。此外,預發(fā)送數(shù)據(jù)的應用程序與重復預測表格17所示的應用程序既有一致的情況,也有不一致的情況。后述部分數(shù)據(jù)的獲取方法的詳細內(nèi)容。
在該部分數(shù)據(jù)與預發(fā)送數(shù)據(jù)不一致的情況下,重復判定部12判定為預發(fā)送數(shù)據(jù)是沒有重復的新數(shù)據(jù)。該情況下,重復判定部12將預發(fā)送數(shù)據(jù)本身輸出給緩存保存部13、和數(shù)據(jù)發(fā)送部14。
在部分數(shù)據(jù)與預發(fā)送數(shù)據(jù)一致的情況下,重復判定部12判定為預發(fā)送數(shù)據(jù)是重復發(fā)送的數(shù)據(jù)。將與預發(fā)送數(shù)據(jù)一致的部分數(shù)據(jù)稱為重復數(shù)據(jù)。在存在重復數(shù)據(jù)的情況下,重復判定部12將預發(fā)送數(shù)據(jù)的索引輸出給數(shù)據(jù)發(fā)送部14。重復判定部12是“判定部”的一個例子。
預發(fā)送數(shù)據(jù)的索引例如包含表示是索引的標志、預發(fā)送數(shù)據(jù)的應用程序的識別信息、從通信開始的預發(fā)送數(shù)據(jù)的偏移、重復數(shù)據(jù)的應用程序的識別信息、重復數(shù)據(jù)的應用程序的發(fā)送側(cè)緩存16內(nèi)的重復數(shù)據(jù)的偏移、以及預發(fā)送數(shù)據(jù)的尺寸。另外,重復數(shù)據(jù)的偏移從相應應用程序的發(fā)送側(cè)緩存16獲取。預發(fā)送數(shù)據(jù)的索引是“預發(fā)送數(shù)據(jù)的概要信息”的一個例子。
緩存保存部13在預發(fā)送數(shù)據(jù)為新數(shù)據(jù)的情況下從重復判定部12接受該預發(fā)送數(shù)據(jù)的輸入。緩存保存部13將該預發(fā)送數(shù)據(jù)追加到儲存在該預發(fā)送數(shù)據(jù)的應用程序的發(fā)送側(cè)緩存16內(nèi)的數(shù)據(jù)的最后尾。
數(shù)據(jù)發(fā)送部14例如將來自數(shù)據(jù)的發(fā)送源的連接要求轉(zhuǎn)送給接收側(cè)裝置2,并且在與接收側(cè)裝置2之間確立TCP的會話。數(shù)據(jù)發(fā)送部14使用該會話將輸入的數(shù)據(jù)發(fā)送給接收側(cè)裝置2。
例如,在從重復判定部12接受了預發(fā)送數(shù)據(jù)本身的輸入的情況下,數(shù)據(jù)發(fā)送部14將預發(fā)送數(shù)據(jù)發(fā)送給接收側(cè)裝置2。例如,在從重復判定部12接受了預發(fā)送數(shù)據(jù)的索引的輸入的情況下,數(shù)據(jù)發(fā)送部14將預發(fā)送數(shù)據(jù)的索引發(fā)送給接收側(cè)裝置2。此外,從數(shù)據(jù)發(fā)送部14發(fā)送的數(shù)據(jù)添附有應用程序的識別信息、和數(shù)據(jù)的本來的目的地的信息,即、套接字的信息。數(shù)據(jù)發(fā)送部14是“發(fā)送部”的一個例子。
重復預測接收部15從接收側(cè)裝置2接收重復預測信息。重復預測接收部15利用與數(shù)據(jù)發(fā)送部14相同的會話。重復預測接收部15使接收的重復預測信息反映于相應應用程序的重復預測表格17。
重復預測表格17例如儲存于主存儲裝置102的存儲區(qū)域。重復預測表格17所包含的信息與重復預測信息所包含的信息相同。重復預測表格17被由重復預測接收部15新接收的重復預測信息覆蓋。后述重復預測表格17以及重復預測信息的詳細內(nèi)容。
圖6是表示發(fā)送側(cè)緩存16內(nèi)的數(shù)據(jù)結構的一個例子的圖。發(fā)送側(cè)緩存16按照每個應用程序生成在輔助存儲裝置105內(nèi)的存儲區(qū)域。例如,若緩存保存部13接受新應用程序的預發(fā)送數(shù)據(jù)的輸入,則在輔助存儲裝置105的確保為發(fā)送側(cè)緩存16用的存儲區(qū)域生成該新應用程序的發(fā)送側(cè)緩存16。
發(fā)送側(cè)緩存16針對有發(fā)送實績的數(shù)據(jù),包含發(fā)送偏移和發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)是數(shù)據(jù)接收部11的處理緩沖區(qū)的尺寸或者小于處理緩沖區(qū)的尺寸的數(shù)據(jù)塊。發(fā)送偏移是數(shù)據(jù)的相應應用程序的發(fā)送側(cè)緩存16內(nèi)的數(shù)據(jù)塊的前端位置。例如,偏移從0開始,在相應應用程序的發(fā)送側(cè)緩存16內(nèi)已經(jīng)儲存有80KB的數(shù)據(jù)的情況下,新儲存的數(shù)據(jù)的偏移為80000。預發(fā)送數(shù)據(jù)的索引所包含的重復數(shù)據(jù)的偏移是發(fā)送側(cè)緩存16內(nèi)的相應數(shù)據(jù)的發(fā)送偏移。發(fā)送側(cè)緩存16是“第二存儲部”的一個例子。
<接收側(cè)裝置>
接收側(cè)裝置2例如是專用的服務器。接收側(cè)裝置2的硬件構成與發(fā)送側(cè)裝置1的硬件構成類似,省略圖示。即,接收側(cè)裝置2具備CPU、主存儲裝置、輔助存儲裝置、以及網(wǎng)絡接口。另外,接收側(cè)裝置2也可以具備輸入裝置、輸出裝置、便攜式記錄介質(zhì)驅(qū)動裝置等。
在接收側(cè)裝置2的輔助存儲裝置儲存有OS、去重服務器程序、以及其它應用程序等。去重服務器程序是用于使接收側(cè)裝置2作為去重服務器動作的程序。
圖7是表示接收側(cè)裝置2的功能構成的一個例子的圖。接收側(cè)裝置2作為功能構成,具備數(shù)據(jù)接收部21、組塊分割部22A、SHA1計算部22B、哈希搜索部22C、緩存讀出部23、緩存保存部24、表格管理部25、數(shù)據(jù)發(fā)送部26、以及重復預測發(fā)送部27。這些功能構成例如是通過由CPU執(zhí)行儲存于輔助存儲裝置的去重服務器程序來實現(xiàn)的功能構成。另外,通過執(zhí)行去重服務器程序,在輔助存儲裝置的存儲區(qū)域確保接收側(cè)緩存28用的區(qū)域。另外,在主存儲裝置的存儲區(qū)域確保用于儲存重復預測表格的區(qū)域。此外,去重服務器程序例如是應用層程序。
數(shù)據(jù)接收部21例如若從發(fā)送側(cè)裝置1接收連接要求,則確立TCP會話,并通過該TCP會話接收數(shù)據(jù)。在接收數(shù)據(jù)為實際數(shù)據(jù)的情況下,數(shù)據(jù)接收部21將接收數(shù)據(jù)輸出給組塊分割部22A。在接收數(shù)據(jù)為索引的情況下,數(shù)據(jù)接收部21將接收數(shù)據(jù)輸出給緩存讀出部23。例如,在索引內(nèi)包含有表示是索引的標志,數(shù)據(jù)接收部21根據(jù)該標志判定接收數(shù)據(jù)是索引。
此外,數(shù)據(jù)接收部21保持規(guī)定尺寸的處理緩沖區(qū),接收數(shù)據(jù)在接收側(cè)裝置2中以該處理緩沖區(qū)的尺寸的單位進行處理。處理緩沖區(qū)的尺寸例如是50~100KB。但是,處理緩沖區(qū)的尺寸并不限定于此。另外,數(shù)據(jù)接收部21按照接收數(shù)據(jù)的應用程序,監(jiān)視從接收開始的數(shù)據(jù)的偏移。數(shù)據(jù)接收部21是“接收部”的一個例子。
組塊分割部22A將接收數(shù)據(jù)分割為組塊。組塊的尺寸由規(guī)定的算法決定。組塊分割部22A將根據(jù)接收數(shù)據(jù)生成的多個組塊輸出給SHA1計算部22B。組塊分割部22A是“分割部”的一個例子。
SHA1計算部22B針對根據(jù)接收數(shù)據(jù)生成的多個組塊的各個進行SHA1的計算。SHA1計算部22B將各組塊的SAH1的計算結果輸出給哈希搜索部22C。SHA1計算部22B是“計算部”的一個例子。
哈希搜索部22C將接收的各組塊的SHA1的計算結果(哈希值)作為關鍵字,搜索所有應用程序的接收側(cè)緩存28。哈希搜索部22C將搜索結果輸出給緩存保存部24、表格管理部25。哈希搜索部22C是“搜索部”的一個例子。組塊分割部22A、SHA1計算部22B、哈希搜索部22C合起來為“重復檢測部”的一個例子。
表格管理部25在對于接收數(shù)據(jù)的組塊中至少一個組塊,在接收側(cè)緩存28檢測到SHA1的計算結果一致的組塊的情況下,覆蓋更新接收數(shù)據(jù)的應用程序的重復預測表格29。此時的更新內(nèi)容的一個例子是動作模式向重復預測模式的變更。
表格管理部25在對于接收數(shù)據(jù)的組塊,在接收側(cè)緩存28都沒有SHA1的計算結果一致的組塊的情況下,不進行接收數(shù)據(jù)的應用程序的重復預測表格29的更新。
緩存保存部24將接收數(shù)據(jù)的組塊中,新的組塊追加到相應應用程序的接收側(cè)緩存28的最后尾。此外,既有接收數(shù)據(jù)的組塊的全部為新數(shù)據(jù)的情況,也有一部分的組塊為新數(shù)據(jù)的情況。
緩存讀出部23從數(shù)據(jù)接收部21接受索引的輸入。緩存讀出部23基于該索引的信息,從相應的應用程序的接收側(cè)緩存28讀出相應的組塊,恢復數(shù)據(jù)并輸出給數(shù)據(jù)發(fā)送部26。緩存讀出部23是“轉(zhuǎn)送部”的一個例子。
數(shù)據(jù)發(fā)送部26將接收數(shù)據(jù)或者恢復的數(shù)據(jù)發(fā)送給目的地的應用程序。數(shù)據(jù)發(fā)送部26將從發(fā)送側(cè)裝置1接收的連接要求轉(zhuǎn)送給目的地,與目的地的應用程序例如確立TCP會話,并通過該TCP會話發(fā)送數(shù)據(jù)。目的地的應用程序既可以存在于接收側(cè)裝置2內(nèi),也可以存在于其它的裝置內(nèi)。在第一實施方式中,不特定目的地的應用程序的執(zhí)行實體,而僅稱為“目的地”。數(shù)據(jù)發(fā)送部26是“發(fā)送部”的一個例子。
重復預測發(fā)送部27在生成或者更新重復預測表格的情況下,將該重復預測表格作為重復預測信息發(fā)送給發(fā)送側(cè)裝置1。重復預測發(fā)送部27是“發(fā)送部”的一個例子。
圖8是表示接收側(cè)緩存28的數(shù)據(jù)結構的一個例子的圖。接收側(cè)緩存28例如按照每個應用程序準備。在接收側(cè)緩存28中,針對各組塊,儲存哈希值、應用程序ID、接收偏移、以及接收數(shù)據(jù)。哈希值是SHA1的計算結果的值。接收偏移是相應組塊的前端的應用程序中的位置。接收側(cè)緩存是“第一存儲部”的一個例子。
圖9是表示重復預測信息的一個例子的圖。如上述,在發(fā)送側(cè)裝置1保持的重復預測表格17與在接收側(cè)裝置2保持的重復預測表格29的格式相同,與重復預測信息的格式相同。接收側(cè)裝置2的重復預測表格29由接收側(cè)裝置2的表格管理部25生成以及更新。
重復預測信息例如包含當前應用程序種類、重復預測模式、重復應用程序種類、當前應用程序重復開始位置、重復應用程序開始位置、以及重復預測長度的項目。
在當前應用程序種類的項目儲存有接收側(cè)裝置2的接收數(shù)據(jù)的應用程序的識別信息。在重復預測模式的項目設定有“開啟(on)”、“關閉(off)”的任意一個。在重復預測模式的項目設定了“開啟”的情況下,表示發(fā)送側(cè)裝置1的動作模式指定為重復預測模式。在重復預測模式的項目設定了“關閉”的情況下,表示發(fā)送側(cè)裝置1的動作模式指定為通常模式。
在重復應用程序種類的項目儲存有與接收側(cè)裝置2的接收數(shù)據(jù)的組塊重復的接收側(cè)緩存28內(nèi)的組塊的應用程序的識別信息。也有相同的數(shù)據(jù)被不同的應用程序使用的情況,所以接收數(shù)據(jù)的應用程序與儲存與接收數(shù)據(jù)重復的數(shù)據(jù)的緩存的應用程序并不一定一致。以后,將儲存與接收數(shù)據(jù)或者預發(fā)送數(shù)據(jù)重復的數(shù)據(jù)的緩存的應用程序稱為重復應用程序。
在當前應用程序重復開始位置的項目儲存有從與接收側(cè)裝置2中的接收數(shù)據(jù)的應用程序的通信開始的、檢測到重復的接收數(shù)據(jù)的組塊的偏移。儲存于當前應用程序重復開始位置的項目的值例如從數(shù)據(jù)接收部21獲取。
在重復應用程序重復開始位置的項目儲存有重復應用程序的接收側(cè)緩存28內(nèi)的、與接收數(shù)據(jù)的組塊一致的組塊的接收偏移。儲存于重復應用程序重復開始位置的項目的值從重復應用程序的接收側(cè)緩存28獲取。
在重復預測長度的項目儲存有重復接收的數(shù)據(jù)的預測的數(shù)據(jù)的長度。儲存于重復預測長度的項目的值例如是從儲存于重復應用程序的接收側(cè)緩存28的數(shù)據(jù)的量減去與接收數(shù)據(jù)的組塊一致的組塊的接收偏移后的值。
重復應用程序種類、當前應用程序重復開始位置、重復應用程序重復開始位置、重復預測長度的項目在重復預測模式的項目的值為“開啟”以外的情況下無效。此外,圖9所示的重復預測信息的格式是一個例子,并不限定于此。例如,重復預測信息也可以不包含重復預測長度的項目。
例如,檢測到從應用程序A的通信開始的偏移80000的接收數(shù)據(jù)的組塊與應用程序B的接收側(cè)緩存內(nèi)的接收偏移100000的組塊重復的情況下生成的重復預測信息如以下。此外,在以下的重復預測信息省略重復預測長度的項目。
(生成的重復預測信息)
應用程序種類:應用程序A
重復預測模式:開啟
重復應用程序種類:應用程序B
當前應用程序重復開始位置:80000
重復應用程序重復開始位置:100000
接下來,在發(fā)送側(cè)裝置1接收了上述重復預測信息之后,發(fā)送從應用程序A的通信開始的偏移90000的預發(fā)送數(shù)據(jù)的情況下,例如,進行以下的處理。重復判定部12參照應用程序種類的項目為應用程序A的重復預測表格17,并參照重復應用程序種類的項目示出的應用程序B的發(fā)送側(cè)緩存16。
重復判定部12基于重復預測表格17,從應用程序B的發(fā)送側(cè)緩存16讀出部分數(shù)據(jù),并進行該部分數(shù)據(jù)與預發(fā)送數(shù)據(jù)的比較。部分數(shù)據(jù)是接收偏移具有對重復應用程序重復開始位置的項目的值加上從應用程序A的通信開始的預發(fā)送數(shù)據(jù)的偏移減去當前應用程序重復開始位置的項目的值的值后的值的數(shù)據(jù)。此時,部分數(shù)據(jù)的接收偏移=重復應用程序重復開始位置100000+(90000-80000)=110000。
在應用程序A的預發(fā)送數(shù)據(jù)與應用程序B的部分數(shù)據(jù)一致的情況下,發(fā)送側(cè)裝置1的數(shù)據(jù)發(fā)送部14發(fā)送預發(fā)送數(shù)據(jù)的索引。在預發(fā)送數(shù)據(jù)的索引包含有以下的信息。
(預發(fā)送數(shù)據(jù)的索引的信息)
索引標志:開啟(on)
當前應用程序種類:應用程序A
當前應用程序發(fā)送偏移:90000
重復應用程序種類:應用程序B
重復應用程序偏移:110000
數(shù)據(jù)長:80KB
若接收側(cè)裝置2接收上述預發(fā)送數(shù)據(jù)的索引,則緩存讀出部23基于索引所包含的信息進行處理。具體而言,緩存讀出部23從應用程序B的接收側(cè)緩存28讀出偏移11000~19000所包含的組塊,并恢復數(shù)據(jù)。
<處理的流程>
圖10是發(fā)送側(cè)裝置1的處理的流程圖的一個例子。圖10所示的處理例如在確立與數(shù)據(jù)發(fā)送源的應用程序的TCP會話時開始。
在OP1中,緩存保存部13將確立了會話的應用程序的發(fā)送側(cè)緩存16的發(fā)送偏移設定為0,進行初始化。另外,重復預測接收部15對重復預測表格17進行初始化。接下來處理進入OP2。
在OP2中,發(fā)送側(cè)裝置1接收數(shù)據(jù)。在接收數(shù)據(jù)為重復預測信息的情況下(OP3:是),處理進入OP4。在接收數(shù)據(jù)不為重復預測信息的情況下(OP3:否),即、在接收數(shù)據(jù)是來自應用程序的預發(fā)送數(shù)據(jù)的情況下,處理進入OP5。
在OP4中,由于重復預測接收部15接收了重復預測信息,所以將該重復預測信息復印至重復預測表格17。其后,圖10所示的處理結束。此外,接下來,在發(fā)送側(cè)裝置1接收了數(shù)據(jù)的情況下,處理從OP2開始。
在OP5中,數(shù)據(jù)接收部11參照重復預測表格17,判定動作模式是否為重復預測模式。數(shù)據(jù)接收部11與發(fā)送源的應用程序進行套接字通信,所以能夠獲取接收數(shù)據(jù)的應用程序的識別信息,參照與接收數(shù)據(jù)的應用程序相應的重復預測表格17。
在動作模式為重復預測模式的情況下(OP5:是),處理進入OP6。在動作模式不為重復預測模式的情況下(OP5:否),處理進入OP9。
OP6~OP9是動作模式為重復預測模式的情況下的處理。在OP6中,重復判定部12基于重復預測表格17,從重復應用程序的發(fā)送側(cè)緩存16讀出與預發(fā)送數(shù)據(jù)進行比較的部分數(shù)據(jù)。部分數(shù)據(jù)的讀出方法如上述。接下來處理進入OP7。
在OP7中,重復判定部12對預發(fā)送數(shù)據(jù)與部分數(shù)據(jù)的存儲器進行比較,判定重復的有無。在預發(fā)送數(shù)據(jù)與部分數(shù)據(jù)一致的情況下(OP7:是),處理進入OP8。在預發(fā)送數(shù)據(jù)與部分數(shù)據(jù)不一致的情況下(OP7:否),處理進入OP9。
在OP8中,預發(fā)送數(shù)據(jù)與部分數(shù)據(jù)一致,所以數(shù)據(jù)發(fā)送部14將預發(fā)送數(shù)據(jù)的索引發(fā)送給接收側(cè)裝置2。其后,圖10所示的處理結束,接下來若從相同的應用程序接收數(shù)據(jù)則從OP2開始處理。
OP9~OP11是動作模式為通常模式的情況下、以及動作模式為重復預測模式,并且,預發(fā)送數(shù)據(jù)與部分數(shù)據(jù)不一致的情況下的處理。在OP9中,緩存保存部13將預發(fā)送數(shù)據(jù)儲存于相應應用程序的發(fā)送側(cè)緩存16。接下來處理進入OP10。
在OP10中,緩存保存部13將相應的發(fā)送側(cè)緩存16內(nèi)的下一個儲存的數(shù)據(jù)的發(fā)送偏移更新為對預發(fā)送數(shù)據(jù)的發(fā)送偏移加上預發(fā)送數(shù)據(jù)的尺寸后的值。接下來處理進入OP11。
在OP11中,數(shù)據(jù)發(fā)送部14將預發(fā)送數(shù)據(jù)的實際數(shù)據(jù)發(fā)送給接收側(cè)裝置2。其后,圖10所示的處理結束,接下來若從相同的應用程序接收數(shù)據(jù)則從OP2開始處理。
圖11是接收側(cè)裝置2的處理的流程圖的一個例子。圖11所示的處理在發(fā)送側(cè)裝置1與接收側(cè)裝置2之間例如確立了TCP的會話時開始。
在OP21中,在接收側(cè)裝置2中,進行初始化處理。具體而言,緩存保存部24將確立了會話的應用程序的接收側(cè)緩存28的接收偏移設定為0。表格管理部25對重復預測表格29進行初始化。此外,動作模式的初始值為通常模式,所以重復預測表格29內(nèi)的重復預測模式的項目關閉。接下來處理進入OP22。
在OP22中,數(shù)據(jù)接收部21接收數(shù)據(jù)。在接收數(shù)據(jù)為索引的情況下(OP23:是),處理進入OP24。在接收數(shù)據(jù)為實際數(shù)據(jù)的情況下(OP23:否),處理進入OP26。
在OP24中,緩存讀出部23基于接收的索引所包含的信息,從重復應用程序的接收側(cè)緩存28讀入相應的組塊,并恢復數(shù)據(jù)。接下來處理進入OP25。
在OP25中,數(shù)據(jù)發(fā)送部26向目的地發(fā)送數(shù)據(jù)。其后,圖11所示的處理結束,在接收下一個數(shù)據(jù)的情況下,從OP22開始處理。
OP26以后的處理是接收數(shù)據(jù)為實際數(shù)據(jù)的情況下的處理。在OP26中,組塊分割部22A將接收數(shù)據(jù)分割為組塊。接下來處理進入OP27。
在OP27中,SHA1計算部22B針對各組塊進行SHA1的計算。接下來處理進入OP28。
在OP28中,哈希搜索部22C針對各組塊,搜索各應用程序的接收側(cè)緩存28。在儲存于接收側(cè)緩存28的組塊中至少有一個SHA1的計算結果一致的組塊的情況下(OP29:是),處理進入OP33。在儲存于接收側(cè)緩存28的組塊中沒有SHA1的計算結果一致的組塊的情況下(OP29:否),處理進入OP30。
OP30、OP31的處理是在儲存于接收側(cè)緩存28的組塊中沒有SHA1的計算結果一致的組塊,即、接收數(shù)據(jù)為新的數(shù)據(jù)的情況下的處理。在OP30中,表格管理部25參照接收數(shù)據(jù)的應用程序的重復預測表格29,判定重復預測模式的項目是否為“開啟”。在重復預測模式的項目為“開啟”的情況下(OP30:是),處理進入OP31。在重復預測模式的項目為“關閉”的情況下(OP30:否),處理進入OP32。
在OP31中,由于接收數(shù)據(jù)為新的數(shù)據(jù),并且,重復預測模式的項目的值為“開啟”,所以表格管理部25檢測數(shù)據(jù)的重復接收的結束,并將接收數(shù)據(jù)的應用程序的重復預測表格29的重復預測模式的項目設定為“關閉”。通過該重復預測表格29的更新,重復預測發(fā)送部27向發(fā)送側(cè)裝置1發(fā)送重復預測模式的項目為“關閉”的重復預測信息。接下來處理進入OP32。
在OP32中,緩存保存部24將接收數(shù)據(jù)的組塊儲存于相應的接收側(cè)緩存28,并設定下一個接收偏移。下一個接收偏移是對儲存的組塊的偏移加上該組塊的尺寸后的值。接下來處理進入OP25,向目的地發(fā)送接收數(shù)據(jù)。其后,圖11所示的處理結束,在接收下一個數(shù)據(jù)的情況下,從OP22開始處理。
OP33~OP35是在儲存于接收側(cè)緩存28的組塊中至少有一個SHA1的計算結果一致的組塊的情況下,即、接收數(shù)據(jù)的一部分或者全部重復的情況下的處理。在OP33中,表格管理部25參照接收數(shù)據(jù)的應用程序的重復預測表格29,判定重復預測模式的項目是否為“關閉”。
在重復預測模式的項目為“開啟”的情況下(OP33:否),處理進入OP32。在OP32中,在接收數(shù)據(jù)的組塊中存在新的組塊的情況下,緩存保存部24將該新的組塊儲存于接收側(cè)緩存28,并設定下一個接收偏移。其后,處理進入OP25,向目的地發(fā)送接收數(shù)據(jù)。
在重復預測模式的項目為“關閉”的情況下(OP33:是),處理進入OP34。在OP34中,表格管理部25更新接收數(shù)據(jù)的應用程序的重復預測表格29。具體而言,表格管理部25將預測重復模式的項目設定為“開啟”。另外,也適當?shù)馗轮貜蛻贸绦虻捻椖俊⒅貜蛻贸绦蛑貜烷_始位置的項目、當前應用程序重復開始位置的項目。接下來處理進入OP35。
在OP35中,重復預測發(fā)送部27將更新的重復預測表格的內(nèi)容作為重復預測表格發(fā)送給發(fā)送側(cè)裝置1。接下來處理進入OP32。在OP32中,在接收數(shù)據(jù)的組塊中存在新的組塊的情況下,緩存保存部24將該新的組塊儲存于接收側(cè)緩存28,并設定下一個接收偏移。其后,處理進入OP25,向目的地發(fā)送接收數(shù)據(jù)。
此外,圖11所示的流程圖是一個例子,各處理的執(zhí)行順序等并不限定于此,也可以適當?shù)刈兏鼒?zhí)行順序。例如,OP25的向目的地發(fā)送接收數(shù)據(jù)的處理也可以在OP31、OP35的重復預測信息的發(fā)送處理之前進行。
<具體例>
圖12是表示具體例中的處理對象數(shù)據(jù)的設定的圖。在具體例中,發(fā)送側(cè)裝置1以及接收側(cè)裝置2均在應用程序X的緩存保持數(shù)據(jù)A、數(shù)據(jù)B、數(shù)據(jù)C。數(shù)據(jù)A、數(shù)據(jù)B、數(shù)據(jù)C分別為100KB。在發(fā)送側(cè)裝置1以及接收側(cè)裝置2中,數(shù)據(jù)A、數(shù)據(jù)B、數(shù)據(jù)C的偏移分別為0、100000(100K)、200000(200K)。此外,接收側(cè)裝置2以組塊的形式保持各數(shù)據(jù)(參照圖8),然而在圖12中,為了方便,與發(fā)送側(cè)裝置1相同地示出。
具體例假定發(fā)送側(cè)裝置1在應用程序Y的數(shù)據(jù)X的發(fā)送后,發(fā)送數(shù)據(jù)A、數(shù)據(jù)B的情況。數(shù)據(jù)X的尺寸為100KB。在該通信中數(shù)據(jù)X、數(shù)據(jù)A、數(shù)據(jù)B的偏移分別為0、100000(100K)、200000(200K)。
圖13A以及圖13B是具體例中的時序圖的一個例子。在圖13A中,示出了發(fā)送側(cè)裝置1在應用程序Y的數(shù)據(jù)X之后發(fā)送數(shù)據(jù)A的情況。此外,若從客戶端裝置向服務器裝置發(fā)送連接要求,且發(fā)送側(cè)裝置1接收該連接要求,則通過從發(fā)送側(cè)裝置1向接收側(cè)裝置2發(fā)送連接要求來進行發(fā)送側(cè)裝置1與接收側(cè)裝置2之間的會話的確立處理。另外,與此同時,也在客戶端裝置與發(fā)送側(cè)裝置1、接收側(cè)裝置2與服務器裝置之間確立會話。
在S1中,客戶端裝置發(fā)送應用程序Y的數(shù)據(jù)A。在S2中,發(fā)送側(cè)裝置1接收應用程序Y的數(shù)據(jù)A(圖10、OP2)。
在S3中,由于動作模式是初始值的通常模式(圖10、OP5:否),所以發(fā)送側(cè)裝置1將數(shù)據(jù)A發(fā)送給接收側(cè)裝置2(圖10、OP11)。
在S4中,接收側(cè)裝置2接收數(shù)據(jù)A(圖11、OP22)。在S5中,由于接收數(shù)據(jù)為實際數(shù)據(jù)A(圖11、OP23:否),所以接收側(cè)裝置2將數(shù)據(jù)A分割為組塊,計算各組塊的SHA1,并搜索緩存,檢測數(shù)據(jù)A的重復接收(圖11、OP26~OP29)。
此時,在應用程序X的接收側(cè)緩存28檢測到數(shù)據(jù)A(參照圖12)。即,重復應用程序為應用程序X,重復應用程序重復開始位置為應用程序X的接收側(cè)緩存28內(nèi)的接收偏移0。
在S6中,接收側(cè)裝置2更新重復預測表格(圖11、OP33~OP34)。重復預測模式從關閉變更為開啟。在S7中,接收側(cè)裝置2將重復預測信息發(fā)送給接收側(cè)裝置2(圖11、OP35)。重復預測信息所包含的信息如以下。
(重復預測信息)
當前應用程序種類:應用程序X
重復預測模式:開啟
當前應用程序重復開始位置:100000
重復應用程序種類:應用程序Y
重復應用程序重復開始位置:0
在S8中,發(fā)送側(cè)裝置1接收重復預測信息(圖10、OP2、OP3:是)。在S9中,發(fā)送側(cè)裝置1將重復預測信息復印到重復預測表格17(圖10、OP4)。在S10中,接收側(cè)裝置2向目的地發(fā)送數(shù)據(jù)A(圖11、OP25)。
圖13B示出接著圖13A的處理,發(fā)送側(cè)裝置1發(fā)送應用程序Y的數(shù)據(jù)B的情況。在S11中,客戶端裝置發(fā)送應用程序Y的數(shù)據(jù)B。在S12中,發(fā)送側(cè)裝置1接收應用程序Y的數(shù)據(jù)B(圖10、OP2)。
在S13中,由于動作模式為重復預測模式(圖10、OP5:是),所以發(fā)送側(cè)裝置1對數(shù)據(jù)B進行重復判定。此時,從重復預測表格內(nèi)的重復應用程序種類亦即應用程序X的發(fā)送側(cè)緩存16獲取部分數(shù)據(jù)。
在重復預測信息中,重復應用程序種類:應用程序X,重復應用程序重復開始位置:0,當前應用程序重復開始位置:100000。另外,在應用程序Y中數(shù)據(jù)B的偏移為200000。因此,應用程序X的發(fā)送側(cè)緩存16中的部分數(shù)據(jù)的偏移為0+(200000-100000)=100000。
即,作為部分數(shù)據(jù),獲取應用程序X的發(fā)送側(cè)緩存16的發(fā)送偏移100000的數(shù)據(jù)。部分數(shù)據(jù)為數(shù)據(jù)B(參照圖12),所以發(fā)送側(cè)裝置1檢測到重復發(fā)送(圖10、OP7:是)。
在S14中,發(fā)送側(cè)裝置1發(fā)送數(shù)據(jù)B的索引。在數(shù)據(jù)B的索引包含有以下的信息。
(數(shù)據(jù)B的索引)
當前應用程序種類:Y
重復應用程序種類:X
重復應用程序重復開始位置:100000
數(shù)據(jù)的長度:100KB
在S15中,接收側(cè)裝置2接收數(shù)據(jù)B的索引(圖11、OP22、OP23:是)。在S16中,接收側(cè)裝置2基于索引所包含的信息,讀入應用程序X的接收側(cè)緩存28的接收偏移100000~200000所包含的組塊(圖11、OP24)。在S17中,從組塊恢復數(shù)據(jù)B,并向目的地發(fā)送(圖11、OP25)。
<第一實施方式的作用效果>
在第一實施方式中,接收側(cè)裝置2檢測數(shù)據(jù)的重復接收,并向發(fā)送側(cè)裝置1通知重復預測信息,發(fā)送側(cè)裝置1基于重復預測信息,進行預發(fā)送數(shù)據(jù)與部分數(shù)據(jù)的比較這樣的負荷比較輕的重復判定處理。因此,在第一實施方式中,在重復數(shù)據(jù)的去除處理中,能夠降低發(fā)送側(cè)裝置1的負荷。
由接收側(cè)裝置2進行組塊分割、SHA1計算、哈希搜索等而不是由發(fā)送側(cè)裝置1進行,從而例如,能夠使發(fā)送側(cè)裝置1的CPU的利用率大致為四分之一。
在重復預測信息包含有重復應用程序、和重復應用程序中的重復開始位置等信息,所以發(fā)送側(cè)裝置1通過參照這些信息,能夠容易地獲取成為預發(fā)送數(shù)據(jù)的比較對象的部分數(shù)據(jù)。由此,能夠進一步降低發(fā)送側(cè)裝置1的處理負荷。
另外,發(fā)送側(cè)裝置1在以重復預測模式進行動作的情況下,也在預發(fā)送數(shù)據(jù)與重復應用程序的部分數(shù)據(jù)進行重復檢測處理。在預發(fā)送數(shù)據(jù)內(nèi)包含新的部分的情況下,發(fā)送側(cè)裝置1即使以重復預測模式進行動作,也向接收側(cè)裝置2發(fā)送預發(fā)送數(shù)據(jù)。在接收側(cè)裝置2接收了該預發(fā)送數(shù)據(jù)(對于接收側(cè)裝置2來說是接收數(shù)據(jù))的情況下,該接收數(shù)據(jù)直接被轉(zhuǎn)送到目的地(圖11、OP25)。因此,即使在發(fā)送側(cè)裝置1以重復預測模式進行動作時在預發(fā)送數(shù)據(jù)包含新的數(shù)據(jù)的情況下,也能夠正確地向目的地發(fā)送該新數(shù)據(jù)。
另外,在接收側(cè)裝置2接收包含新數(shù)據(jù)的接收數(shù)據(jù),且對于該接收數(shù)據(jù)未找到重復的組塊的情況下,接收側(cè)裝置2將重復預測模式設定為“關閉”并將重復預測信息發(fā)送給發(fā)送側(cè)裝置1。若發(fā)送側(cè)裝置1接收該重復預測信息,則發(fā)送側(cè)裝置1以通常模式開始動作。由此,接收側(cè)裝置2能夠控制發(fā)送側(cè)裝置1的動作模式。
以上,通過降低發(fā)送側(cè)裝置1的負荷,作為發(fā)送側(cè)裝置1,例如,能夠采用智能手機、平板終端、PC等性能比較低的終端裝置。換句話說,能夠?qū)⒌谝粚嵤┓绞剿婕暗臄?shù)據(jù)去重客戶端程序安裝于終端裝置。
圖14是表示第一實施方式所涉及的數(shù)據(jù)去重系統(tǒng)100的效果的圖。在圖14中,示出使用轉(zhuǎn)送速度10Mbps的物理線路bw來轉(zhuǎn)送100Mbit的流量數(shù)據(jù)X的情況下的、圖1所示的數(shù)據(jù)去重系統(tǒng)P100和第一實施方式所涉及的數(shù)據(jù)去重系統(tǒng)100的轉(zhuǎn)送時間。
將發(fā)送側(cè)裝置P1中的數(shù)據(jù)去重處理所涉及的速度(去重速度)dv設為10Mbps。將發(fā)送側(cè)裝置1中的去重速度dw設為40Mbps。這是因為發(fā)送側(cè)裝置1的CPU的利用率與發(fā)送側(cè)裝置進行組塊分割、SHA1計算、哈希搜索等的情況相比,大致為四分之一。
另外,假設流量數(shù)據(jù)100Mbit中90%重復。該情況下,通過數(shù)據(jù)去重處理,以實際數(shù)據(jù)發(fā)送的數(shù)據(jù)的比例削減到10%。即,數(shù)據(jù)去重處理所帶來的實際數(shù)據(jù)的削減率(去重削減率)r為0.1。
在上述前提中,(1)在未進行數(shù)據(jù)去重處理的情況下,轉(zhuǎn)送時間為X/bw=100M/10Mbps=10s。(2)在數(shù)據(jù)去重系統(tǒng)P100中,X/dv+X*r/bw=100M/10Mbps+100M*0.1/10Mbps=11s。(3)在數(shù)據(jù)去重系統(tǒng)100中,X/dw+X*r/bw=100M/40Mbps+100M*0.1/10Mbps=3.5s。
即,第一實施方式所涉及的數(shù)據(jù)去重系統(tǒng)100的數(shù)據(jù)轉(zhuǎn)送時間最短。因此,根據(jù)第一實施方式,在利用10Mbps等低速的線路的通信中,通過降低發(fā)送側(cè)裝置1的處理負荷,能夠縮短數(shù)據(jù)轉(zhuǎn)送所涉及的時間。
另外,發(fā)送側(cè)裝置1以及接收側(cè)裝置2在進行任意的處理的情況下,均不管發(fā)送或者接收的數(shù)據(jù)的內(nèi)容。即,發(fā)送側(cè)裝置1以及接收側(cè)裝置2無論應用程序處理何種數(shù)據(jù),均不管數(shù)據(jù)的內(nèi)容,而能夠進行數(shù)據(jù)去重處理。因此,第一實施方式的數(shù)據(jù)去重系統(tǒng)100能夠應用于進行任意的應用程序的通信的系統(tǒng)。
<變形例>
例如,也可以在接收側(cè)裝置2的CPU所涉及的處理負荷比規(guī)定的閾值高的情況下,發(fā)送側(cè)裝置1進行組塊分割、SHA1計算、哈希搜索的處理。例如,能夠通過在發(fā)送側(cè)裝置1具備組塊分割部、SHA1計算部、哈希搜索部,且對重復預測信息的重復預測模式追加“卸載(off load)”來實現(xiàn)。
接收側(cè)裝置2在CPU負荷超過規(guī)定閾值的情況下,向發(fā)送側(cè)裝置1發(fā)送重復預測模式設定了“卸載”的重復預測信息。若接收該重復預測信息,則發(fā)送側(cè)裝置1將預發(fā)送數(shù)據(jù)輸出給組塊分割部、SHA1計算部、哈希搜索部,且例如與圖1的發(fā)送側(cè)裝置P1同樣地進行處理。
由此,在接收側(cè)裝置2的處理負荷變高的情況下,能夠使接收側(cè)裝置2的處理負荷降低。
另外,在第一實施方式中,未提及識別應用程序的用戶,但在存在多個應用程序的用戶的情況下,分別按照每個用戶并且按照每個應用程序生成發(fā)送側(cè)緩存16以及接收側(cè)緩存28。即,在存在多個應用程序的用戶的情況下,以用戶識別信息和應用程序識別信息的組合識別發(fā)送側(cè)緩存16以及接收側(cè)緩存28。
<記錄介質(zhì)>
能夠?qū)⑹褂嬎銠C、其它的設備、裝置(以下,稱為計算機等)實現(xiàn)上述任意一個功能的程序記錄于計算機等能夠讀取的記錄介質(zhì)。通過使計算機等讀入該記錄介質(zhì)的程序并執(zhí)行,能夠提供該功能。
這里,計算機等能夠讀取的記錄介質(zhì)是指通過電、磁、光學、機械、或者化學的作用積蓄數(shù)據(jù)、程序等信息,且能夠由計算機等讀取的非臨時的記錄介質(zhì)。作為這樣的記錄介質(zhì)中能夠從計算機等取下的記錄介質(zhì),例如有軟盤、光磁盤、CD-ROM、CD-R/W、DVD、藍光盤、DAT、8mm磁帶、閃存等存儲卡等。另外,作為固定于計算機等的記錄介質(zhì)有硬盤、ROM(只讀存儲器)等。并且,SSD(Solid State Drive:固盤)既能夠作為能夠從計算機等取下的記錄介質(zhì)利用,也能夠作為固定于計算機等的記錄介質(zhì)利用。
符號說明
1…發(fā)送側(cè)裝置,2…接收側(cè)裝置,11、21…數(shù)據(jù)接收部,12…重復判定部,13…緩存保存部,14、26…數(shù)據(jù)發(fā)送部,15…重復預測接收部,16…發(fā)送側(cè)緩存,17、29…重復預測表格,22A…組塊分割部,22B…SHA1計算部,22C…哈希搜索部,23…緩存讀出部,24…緩存保存部,25…表格管理部,27…重復預測發(fā)送部,28…發(fā)送側(cè)緩存,101…CPU,102…主存儲裝置,105…輔助存儲裝置,107…網(wǎng)絡接口。