JP6257221B2 - 通信装置及びデータ転送制御方法 - Google Patents

通信装置及びデータ転送制御方法 Download PDF

Info

Publication number
JP6257221B2
JP6257221B2 JP2013174543A JP2013174543A JP6257221B2 JP 6257221 B2 JP6257221 B2 JP 6257221B2 JP 2013174543 A JP2013174543 A JP 2013174543A JP 2013174543 A JP2013174543 A JP 2013174543A JP 6257221 B2 JP6257221 B2 JP 6257221B2
Authority
JP
Japan
Prior art keywords
compression
decompression
dictionary
information
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013174543A
Other languages
English (en)
Other versions
JP2015043502A (ja
JP2015043502A5 (ja
Inventor
伊藤 大輔
大輔 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2013174543A priority Critical patent/JP6257221B2/ja
Publication of JP2015043502A publication Critical patent/JP2015043502A/ja
Publication of JP2015043502A5 publication Critical patent/JP2015043502A5/ja
Application granted granted Critical
Publication of JP6257221B2 publication Critical patent/JP6257221B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は情報を圧縮して通信する計算機システムに関する。
データを圧縮又は伸張する方法として以下のような方式が知られている。
[辞書式圧縮]
辞書式圧縮は、データ列中に現れるアルファベットの並びを単語として辞書に登録し、次に同じ単語が現れたときには辞書の登録番号に置き換えることによって、データ列を圧縮する方式である。例えば、非特許文献1に記載のLZ78及びLZ78から派生した手法には、圧縮側の装置等ではデータの圧縮時に、伸張側の装置等ではデータの伸張時に、同一の辞書が動的に生成されるという特徴がある。そのため、圧縮側から伸張側には圧縮後データ列だけを渡せばよい。
図14は、従来の辞書式圧縮を用いたデータの圧縮及び伸張の手順を示す説明図である。
図14では、データ列「abababa」をLZ78で圧縮及び伸張する場合の一例を示す。LZ78では「既知の単語+1アルファベットを新たな単語として辞書に追加」という平易なルールに基づいてデータを圧縮することによって辞書が生成される。
図14に示すように、圧縮時には辞書作成手順1401から手順1404にしたがって辞書が生成され、また、伸張時には辞書作成手順1411から手順1414にしたがって辞書が生成され、圧縮側及び伸張側の辞書は同一の辞書となる。
ここで辞書とは、データ列中に現れるアルファベットの並びと、それに対する見出しとの対を集めたものを指す。さらにデータ列中に現れるアルファベットの並びのことを単語という。
[エントロピー符号]
エントロピー符号は、データ列中に現れるアルファベットの出現頻度に基づいて、異なる長さの符合語を割り当てることによってデータを圧縮する方式である。例えば、非特許文献2に記載の動的ハフマン符号(Adaptive Huffman−coding)に代表される動的な符号化手法では、LZ78と同じく圧縮側と伸張側で同じ頻度表が動的に生成されるという特徴がある。
図15A、図15B及び図15Cは、従来のハフマン符号を用いた符号化の手順を示す説明図である。ここでは、出現頻度に偏りのあるアルファベット「a,b,c,d」を例に、非特許文献3に記載のハフマン符号で符号化について説明する。
4文字を単純に符号化する場合の符号長は2bitだが、図15Bに示すように、出現回数の多い「a」に短い符号を割り当てることによって平均符号長が1.8bitに下がっている。
ここで頻度表(図15A)とは、データ中に現れるアルファベット及びアルファベット列と、その出現頻度又は出現回数など頻度を算出するための情報との対を集めたものを指す。また、ハフマン符号におけるハフマン木(図15B)など、頻度表をエントロピー符号化しやすい形で扱うことを特徴とする符号化方式とデータ構造もあり、ここではそれらも含めて頻度表と呼ぶ。
[圧縮を利用する通信]
本発明の技術分野の背景技術として、IP(Internet Protocol)パケットの圧縮に関する非特許文献4(例えば、"2. Compression Process"参照)がある。また、本技術分野の別の背景技術としてデータストリームの圧縮に関する特許文献1が存在する。
特許文献1には、「符号化は、ターゲット・セグメント・サイズを判定する段階と、窓サイズを判定する段階と、入力データ内のオフセットにおける記号の窓内のフィンガープリントを識別する段階と、オフセットをカット・ポイントとして指定すべきかどうかを判定する段階と、カット・ポイントの組によって示されるように入力データをセグメント化する段階とを含む。そのように識別された各セグメントについて、エンコーダは、セグメントが参照されるセグメントであるかそれとも参照されないセグメントであるかを判定し、それぞれの参照されるセグメントのセグメント・データを参照ラベルで置き換え、必要に応じて、それぞれの参照されるセグメントの持続セグメント・ストアに参照バインディングを記憶する」ことが記載されている。
米国特許出願公開第2004/0174276号明細書
Ziv, Jacob; Lempel, Abraham (1978), "Compression of individual sequences via variable-rate coding". IEEE Transactions on Information Theory 24 (5): pp 530-536. Vitter, Jeffrey (1987), "Design and analysis of dynamic Huffman codes". Journal of the ACM, 34(4): pp 825-845 Huffman, David (1952), "A Method for the construction of minimum-redundancy codes". Proceedings of the I.R.E.: pp 1098-1102 RFC2393 (1998), "IP payload compression protocol (IPComp)" O'neil, Elizabeth (1993), "The LRU-K page replacement algorithm for database disk buffering". ACM SIGMOD Conf.: pp. 297-306
非特許文献4に記載された技術では、IPパケット毎にしか圧縮を行えない。IPパケットのサイズは通信路のMTU(Maximum Transmission Unit)以下であり、一般にインターネット環境では1500Byteである。したがって、ペイロードはそれ以下のサイズであるため、非特許文献1に記載の手法では圧縮率があがらず、通信量の削減効果が低い。
特許文献1に記載された技術は、単純な演算ではセグメントが既知であるか否かの判定できない。また、持続セグメント・ストアを大容量化することによって通信量削減効果を高めることができるが、持続セグメント・ストアには一般に容量単価の安いHDD(Hard Disk Drive)が用いられるため、データの検索時のI/O速度(HDDのランダムアクセス速度は、100〜200Mbps程度)が通信路のI/O速度(例えば、1Gbps)より低いという問題がある。そのため、特許文献1に記載された技術では、通信量の削減効果を高めることは可能であるが、十分に広い通信帯域を扱うネットワークでは通信速度が低速化するという問題がある。
すなわち情報を圧縮して通信するコンピュータシステムの課題は、情報の高圧縮率及び通信速度の高速化を両立させることである。
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。プロセッサ、前記プロセッサに接続される主記憶装置、及び前記プロセッサに接続されるネットワークインタフェースを備え、複数の計算機間で送受信されるデータを転送する通信装置であって、前記主記憶装置は、通信先毎に、データを圧縮又は伸張するための圧縮伸張情報を複数格納し、任意の通信先との間の通信に用いる圧縮伸張情報の複製である複製圧縮伸張情報を格納する一時領域を含み、前記通信装置は、前記圧縮伸張情報を用いて、受信したデータを圧縮又は伸張する圧縮伸張部を備え、前記圧縮伸張部は、通信先を特定する情報及び使用する圧縮伸張情報の識別情報を対応付けて管理し、第1の通信先からデータを受信した場合、前記第1の通信先との間の通信に用いる複数の圧縮伸張情報の中から、前記第1の通信先を特定する情報と対応付けられた第1の圧縮伸張情報を特定して、前記第1の圧縮伸張情報の複製である第1の複製圧縮伸張情報を前記一時領域に格納し、前記第1の複製圧縮伸張情報を用いて、前記第1の通信先から受信したデータを圧縮又は伸張し、前記圧縮されたデータ又は前記伸張されたデータを送信し、前記第1の通信先から受信したデータの圧縮結果又は伸張結果に基づいて、前記第1の複製圧縮伸張情報を更新し、切替条件を満たすか否かを判定し、前記切替条件を満たさないと判定された場合、前記第1の複製圧縮伸張情報を前記第1の圧縮伸張情報に上書きすることによって、当該第1の圧縮伸張情報を更新し、前記切替条件を満たすと判定された場合、前記第1の通信先との間の通信に用いる複数の圧縮伸張情報の中から第2の圧縮伸張情報を選択し、前記第1の通信先を特定する情報及び前記第2の圧縮伸張情報を対応付けることによって、前記第1の通信先との間の通信に使用する圧縮伸張情報を切り替えることを特徴とする。
本発明によれば、圧縮伸張部は、データの圧縮率に基づいて、通信先毎の複数の圧縮伸張情報を切り替えることができる。これによって、データの高圧縮率を実現できる。また、圧縮伸張情報は主記憶装置に格納されるためI/O速度の低下を回避し、通信速度の高速化を実現することができる。
上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
本発明の実施例1における計算機システムの構成の一例を示す説明図である。 本発明の実施例1における圧縮伸張装置の構成例を示すブロック図である。 本発明の実施例1における通信先−辞書対応情報の一例を示す説明図である。 本発明の実施例1における通信先−辞書対応情報の一例を示す説明図である。 本発明の実施例1における辞書管理情報の一例を示す説明図である。 本発明の実施例1における圧縮伸張モジュールがIPパケットを受信した場合に実行するIPパケットの転送処理を説明するフローチャートである。 本発明の実施例1における圧縮伸張モジュールがIPパケットを受信した場合に実行するIPパケットの転送処理を説明するフローチャートである。 本発明の実施例1における圧縮伸張モジュールが実行する辞書管理情報の更新処理を説明するフローチャートである。 本発明の実施例2における圧縮伸張装置の構成例を示すブロック図である。 本発明の実施例2における通信先−辞書頻度表対応情報の一例を示す説明図である。 本発明の実施例2における辞書頻度表管理情報の一例を示す説明図である。 本発明の実施例2における辞書エントロピー圧縮伸張モジュールがIPパケットを受信した場合に実行するIPパケットの転送処理を説明するフローチャートである。 本発明の実施例2における辞書エントロピー圧縮伸張モジュールがIPパケットを受信した場合に実行するIPパケットの転送処理を説明するフローチャートである。 本発明の実施例2における辞書エントロピー圧縮伸張モジュールが実行する辞書頻度表管理情報の更新処理を説明するフローチャートである。 本発明の実施例3における辞書管理情報の一例を示す説明図である。 本発明の実施例3における辞書の削除処理を説明するフローチャートである。 本発明の実施例3における辞書の削除処理を説明するフローチャートである。 従来の辞書式圧縮を用いたデータの圧縮及び伸張の手順を示す説明図である。 従来のハフマン符号を用いた符号化の手順を示す説明図である。 従来のハフマン符号を用いた符号化の手順を示す説明図である。 従来のハフマン符号を用いた符号化の手順を示す説明図である。
以下、実施例を図面を用いて説明する。
本発明では、データ(IPパケットのペイロード)を圧縮又は伸張する場合に用いられる情報として辞書又は頻度表の少なくともいずれかを用いるものとして説明する。ただし、本発明はこれに限定されず、データを圧縮又は伸張するために用いられる情報であればどのような情報であってもよい。
実施例1では、通信内容に応じて、複数の辞書の中から最も圧縮率の高い辞書を用いて通信内容を圧縮又は伸張する方法、装置及びシステムについて説明する。
図1は、本発明の実施例1における計算機システムの構成の一例を示す説明図である。
図1に示す計算機システムは、クライアント装置101、102、サーバ103、及び圧縮伸張装置111、121、131から構成される。クライアント装置A101及びクライアント装置B102と、サーバ103との間は広域網104を介した接続される。なお、クライアント装置A101及びクライアント装置B102とサーバ103とは、LAN、SAN等の広域網104以外のネットワークを介して接続されてもよい。
本実施例では、クライアント装置A101は、「192.168.1.0/24」のサブネット112に属し、IPアドレスは「192.168.1.101」である。また、クライアント装置B102は、「192.168.2.0/24」のサブネット122に属し、IPアドレスは「192.168.2.102」である。また、サーバ103は、「192.168.10.0/24」のサブネット132に属し、IPアドレスは「192.168.10.103」である。
クライアント装置A101及びクライアント装置B102は、広域網104を介して、サーバ103との間でデータの送受信を行う。本発明は、送受信されるデータの種別、及び内容等に限定されない。なお、クライアント装置A101、クライアント装置B102、及びサーバ103は、一般的な計算機であって、CPU(図示省略)、メモリ(図示省略)、及びネットワークインタフェース(図示省略)等のハードウェアを備える。
圧縮伸張装置A111、圧縮伸張装置B121、及び圧縮伸張装置C131は、送受信されるデータを圧縮し、また、圧縮されたデータを伸張する。ここで、本発明では、圧縮伸張装置がペアとなるように使用する。例えば、圧縮伸張装置A111及び圧縮伸張装置C131をペアとし、また、圧縮伸張装置B121及び圧縮伸張装置C131をペアとして使用する。
なお、クライアント装置側の圧縮伸張装置とサーバ側の圧縮伸張装置とは、図1に示すようなn対1(図1では2対1)の構成でもよいし、n対nの構成であってもよい。
図2は、本発明の実施例1における圧縮伸張装置の構成例を示すブロック図である。図2では、圧縮伸張装置A111の構成例を示す。なお、圧縮伸張装置B121及び圧縮伸張装置C131も同一の構成である。
圧縮伸張装置A111は、CPU201、主記憶装置202、二次記憶装置203、及び二つのネットワークインタフェース(NIC)204、205を備える。
CPU201は、主記憶装置202に格納されるプログラムを実行する。CPU201がプログラムを実行することによって、圧縮伸張装置A111が備える機能を実現することができる。
主記憶装置202は、CPU201によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。また、主記憶装置202は、プログラムが一時的にデータを格納するワークエリアを提供する。主記憶装置202は、例えば、DIMM等のメモリ等が考えられる。
本実施例では、主記憶装置202には、圧縮伸張モジュール221、通信先−辞書対応情報222、及び辞書管理情報223が格納される。圧縮伸張モジュール221は、圧縮伸張モジュールプログラム231によって実現されるプログラムモジュールである。通信先−辞書対応情報222の詳細については図3A及び図3Bを用いて後述し、また、辞書管理情報223の詳細については図4を用いて後述する。
CPU201は、圧縮伸張装置A111の起動時に、圧縮伸張モジュールプログラム231を二次記憶装置203から読み出し、主記憶装置202上に当該圧縮伸張モジュールプログラム231を展開する。さらに、CPU201は、展開された圧縮伸張モジュールプログラム231を実行することによって圧縮伸張モジュール221を実現する。圧縮伸張モジュール221は、後述する通信先−辞書対応情報222及び辞書管理情報223を主記憶装置202上に展開する。
二次記憶装置203は、プログラム及び情報を格納する。二次記憶装置203は、例えば、HDD又はSDD等が考えられる。本実施例では、二次記憶装置203には、圧縮伸張モジュールプログラム231が格納される。
NIC1(204)及びNIC2(205)は、他の装置と接続するためのインタフェースである。本実施例では、NIC1(204)は、拠点側の装置、すなわち、クライアント装置A101と接続され、また、NIC2(205)は、広域網104と接続される。
ここで、圧縮伸張モジュール221について説明する。
圧縮伸張モジュール221は、所定の圧縮方式に基づいて、データを圧縮し、また圧縮されたデータを伸張する。本実施例では、LZ78及びLZ78から派生したLZWのような辞書式圧縮方式に基づいて、圧縮処理及び伸張処理が実行されるものとする。
本実施例の圧縮伸張モジュール221は、通信先−辞書対応情報222及び辞書管理情報223に基づいて、NIC1(204)から受信したIPパケットのペイロードを圧縮し、NIC2(205)から圧縮されたペイロードを含むIPパケットを通信先の装置に転送する。また、圧縮伸張モジュール221は、通信先−辞書対応情報222及び辞書管理情報223に基づいて、NIC2(205)から受信したIPパケットのペイロードを伸張し、NIC1(204)から伸張されたペイロードを含むIPパケットを通信先の装置に転送する。
なお、本発明は、LZ78及びLZWのような辞書式圧縮方式に限定されず、送信側の圧縮伸張モジュール221から受信側の圧縮伸張モジュール221に辞書を別途配信しなくとも、受信側の圧縮伸張モジュール221が伸張処理を実行可能な辞書式圧縮方式であれば、どのような圧縮方式を使用してもよい。
図3A及び図3Bは、本発明の実施例1における通信先−辞書対応情報222の一例を示す説明図である。図3Aは圧縮伸張装置C131が保持する通信先−辞書対応情報222を示し、図3Bは圧縮伸張装置A111が保持する通信先−辞書対応情報222を示す。
通信先−辞書対応情報222は、通信先の装置のIPアドレスの範囲と、通信先の装置との間の通信に用いる辞書との対応関係を示す情報を保持する。具体的には、通信先−辞書対応情報222は、ID301、通信先302、装置ID303、辞書名304、辞書数305、現辞書番号306、圧縮率短期平均307、及び圧縮率長期平均308から構成される。
ID301は、通信先−辞書対応情報222の各行を識別するための識別番号である。
通信先302は、共通の辞書を用いてデータを圧縮又は伸張するIPアドレスの範囲である。より具体的には、通信先302は、IPパケットの送信先の装置が所属するネットワークを指定するIPアドレスの範囲を示すものである。例えば、広域網140を介して、LAN等の複数のネットワークが接続されるネットワークシステムの場合、通信先302には、当該ネットワークを示すIPアドレスの範囲が格納される。
図3Aの行332及び333の通信先302には、IPアドレスの範囲としてサブネットマスクが指定される。また、図3Bの行312の通信先302には、IPアドレスの範囲として個々の装置のIPアドレスが指定される。
なお、通信先302に格納される値の表現形式は、共通の辞書を用いてデータを圧縮又は伸張するIPアドレスの範囲を定義できる表現形式であればどのような表現形式であってもよい。また、通信先302に格納される値は、設定ファイルなどの手段によって管理者が設定することを想定しているが、設定方法はどのようなものであってもよい。例えば、通信時に、圧縮伸張装置が互いを自動的に認識し、圧縮伸張装置間で情報を交換することによって、通信先302の値を設定する方法が考えられる。
装置ID303は、通信先302に対応する装置側に配置される圧縮伸張装置のIDである。装置ID303に格納される値は、圧縮伸張装置の起動後に管理者によって入力されることを想定しているが、設定方法はどのようなものであってもよい。例えば、通信時に、圧縮伸張装置が互いを自動的に認識し、圧縮伸張装置間で情報を交換することによって、装置ID303の値を設定する方法が考えられる。
辞書名304は、通信先302に対応する装置との間の通信において使用される辞書の名前である。辞書名304の値は、圧縮伸張モジュール221によって決定される。
辞書数305は、辞書名304に対応する辞書名で定義された辞書の総数である。本実施例では、一つの辞書名に対し、一つ以上の辞書が生成される。
現辞書番号306は、辞書名304に対応する辞書のうち、現在使用している辞書の番号である。
圧縮率短期平均307は、通信先302に対応する装置との間の通信におけるデータの圧縮率の、直近短期間の移動平均を表す。
平均を取る期間の長さは、ユーザ定義の値として設定ファイルなどの手段によって管理者が設定することを想定しているが、メーカー定義の値として適当な値を予め装置に設定してもよい。また、期間の表し方として、ここでは100パケットといったパケット数で表す方法を想定しているが、1分といった時間で表す方法を用いてもよい。また、平均の算出方法として、ここでは単純な相加平均を想定しているが、直近の値の影響を大きくする加重平均、又は相乗平均が用いられてもよい。
圧縮率長期平均308は、通信先302に対応する装置との間の通信におけるデータの圧縮率の、直近長期間の移動平均を表す。
平均を取る期間の長さは、ユーザ定義の値として設定ファイルなどの手段によって管理者が与えることを想定しているが、メーカー定義の値として適当な値を予め装置に設定してもよい。また、期間の表し方として、100,000パケットといったパケット数で表す方法を想定しているが、1,000分といった時間で表す方法でもよい。また、平均の取り方として、ここでは単純な相加平均を想定しているが、直近の値の影響を大きくする加重平均、又は相乗平均が用いられてもよい。
図3Aに示すように、圧縮伸張装置C131の通信先−辞書対応情報222は、クライアント装置A101に対応する行332、及びクライアント装置B102に対応する行333を保持する。一方、図3Bに示すように、圧縮伸張装置A111の通信先−辞書対応情報222は、サーバ103に対応する行312を保持する。
ここで、行332及び行312は、圧縮伸張装置C131及び圧縮伸張装置A111の間の通信に関する行である。ペアとなっている圧縮伸張装置は、同一の複数の辞書を保持し、同一の辞書を用いてIPパケットを圧縮又は伸張する。したがって、行333及び行312の辞書数305、現辞書番号306、圧縮率短期平均307、及び圧縮率長期平均308の値は同一のものとなる。
図4は、本発明の実施例1における辞書管理情報223の一例を示す説明図である。図4は、圧縮伸張装置C131が保持する辞書管理情報223を示す。
辞書管理情報223は、圧縮伸張装置が保持する辞書のデータを管理する情報である。具体的には、辞書管理情報223は、ID401、辞書名402、辞書番号403、及び辞書データ404から構成される。
ID401は、辞書管理情報223の各行を識別するための識別番号である。
辞書名402は、通信先−辞書対応情報222の辞書名304と同一のものである。
辞書番号403は、辞書名402に対応する辞書名で定義された辞書のうち、現在使用されている辞書の識別番号である。
本実施例では、辞書名304に対応する辞書名で定義される辞書には、辞書数305の数だけに識別番号が付与される。そのため、辞書番号403には、現在使用される辞書の識別番号が格納される。例えば、辞書数305が「5」の場合、辞書名304に対応する辞書名で定義される辞書は五つ存在し、それぞれの辞書には「1」から「5」までの番号が付与される。
辞書データ404は、辞書名402及び辞書番号403に対応する辞書の辞書データである。本実施例では、辞書データ404には、圧縮伸張モジュール221が操作する内部表現のデータが格納されているものとする。なお、本発明はこれに限定されず、辞書データ404には、図14に示すような表形式の辞書データが格納されてもよい。また、辞書管理情報223とは別に辞書データが管理されている場合、辞書データ404には、当該辞書データにアクセスするためのポインタを格納してもよい。
なお、辞書管理情報223は高速化のため主記憶装置202上に格納する。そのため、個々の辞書データ404のサイズに上限を設ける。辞書データ404のサイズの上限は設定ファイルなどを用いて管理者によって設定される値であり、例えば「4MB」が設定される。前述した辞書データ404のサイズの上限は一例であって、「4MB」より大きい値、又は小さい値であってもよい。なお、辞書データ404のサイズの上限は、圧縮伸張モジュールプログラム231に予め埋め込む等、その他の手段を用いて設定されてもよい。
圧縮伸張装置C131は、通信先−辞書対応情報222に示すように、圧縮伸張装置A111を通る通信先「192.168.1.0/24」のサブネット112との間の通信において、辞書名が「辞書A」である辞書を五つ保持し、また、圧縮伸張装置B121を通る通信先「192.168.2.0/24」との間の通信において、辞書名が「辞書B」である辞書を六つ保持する。そのため、辞書管理情報223には、辞書Aの五つ分の行4401〜4405、辞書Bの六つ分の行4406〜4411を含む。
圧縮伸張モジュール221は、通信先−辞書対応情報222及び辞書管理情報223を用いて、通信先の装置との通信に使用する辞書を一意に取得することができる。例えば、サーバ103がクライアント装置A101に対してIPパケットを送信する場合、圧縮伸張装置C131の圧縮伸張モジュール221は、以下の手順にしたがって辞書を取得する。
圧縮伸張モジュール221は、IPパケットのIPヘッダから通信先の装置(クライアント装置A101)のIPアドレスを取得する。ここでは、IPアドレス「192.168.1.101」が取得される。
次に、圧縮伸張モジュール221は、通信先−辞書対応情報222から、IPパケットから取得されたIPアドレスが通信先302に含まれる行を取得する。ここでは、行332が取得される。
次に、圧縮伸張モジュール221は、取得された行332の辞書名304及び現辞書番号306の値を取得する。ここでは、辞書名として「辞書A」、現辞書番号として「5」が取得される。
次に、圧縮伸張モジュール221は、辞書管理情報223を参照し、辞書名402及び辞書番号403が、行332の辞書名304及び現辞書番号306から取得された値と一致する行を検索する。さらに、圧縮伸張モジュール221は、検索された行の辞書データ404から辞書データを取得する。ここでは、行4405が検索される。
次に、圧縮伸張モジュール221が実行する処理の詳細について説明する。
図5A及び図5Bは、本発明の実施例1における圧縮伸張モジュール221がIPパケットを受信した場合に実行するIPパケットの転送処理を説明するフローチャートである。
図5Aは、NIC1(204)からIPパケットを受信した場合に実行される、圧縮処理を伴うIPパケットの転送処理を示す。図5Bは、NIC2(205)からIPパケットを受信した場合に実行される、伸張処理を伴うIPパケットの転送処理を示す。
いずれのIPパケットの転送処理も、圧縮処理又は伸張処理の部分以外の処理は同様の処理であるため、比較しながら説明する。
まず、図5Aを用いて圧縮処理を伴うIPパケットの転送処理について説明する。
圧縮伸張モジュール221は、NIC1(204)からIPパケットを受信すると(ステップS511)、当該IPパケットの送信先の装置に対して適用される辞書を取得する。具体的には、ステップS512からステップS514の手順にしたがって辞書が取得される。
まず、圧縮伸張モジュール221は、受信したIPパケットのIPヘッダから宛先IPアドレス(Destination IP Address)を取得する(ステップS512)。
次に、圧縮伸張モジュール221は、通信先−辞書対応情報222から、通信先302にステップS512において取得された宛先IPアドレスが含まれる行を検索し、さらに、当該行の辞書名304及び現辞書番号306の値を取得する(ステップS513)。
圧縮伸張モジュール221は、辞書管理情報223を参照し、辞書名402及び辞書番号403が、ステップS513において取得された辞書名304及び現辞書番号306の値と一致する行を検索し、さらに、当該行の辞書データ404に格納される辞書データを取得して一時領域に格納する(ステップS514)。
圧縮伸張モジュール221は、一時領域に格納される辞書データを用いて、受信したIPパケットのペイロードを圧縮する(ステップS515)。このとき、圧縮伸張モジュール221は、送信される通信内容に基づいて、一時領域に格納される辞書データに新しい単語を追加する。また、圧縮伸張モジュール221は、IPパケットの短期の圧縮率及び長期の圧縮率を算出する。
なお、新たな単語が検出されない場合、辞書データには新たな単語は追加されない。また、新たに単語を追加することによって辞書のサイズが辞書データ404のサイズの上限を超えてしまう場合にも、新たな単語は追加されない。また、新たに単語を追加することによって辞書のサイズが辞書データ404のサイズの上限を超えてしまう場合の別の対処法として、最も使われていない単語を削除する方法も知られている。
圧縮伸張モジュール221は、圧縮されたペイロードを含むIPパケットをNIC2(205)から、宛先IPアドレスに対応する装置に送信する(ステップS516)。
その後、圧縮伸張モジュール221は、辞書管理情報223の更新処理を実行し(ステップS517)、処理を終了する。
なお、辞書管理情報223の更新処理の詳細は、図8を用いて後述するが、ステップS515において更新された辞書データは、辞書管理情報223の更新処理において一時領域から辞書管理情報223に書き戻される。
次に、図7Bを用いて伸張処理を伴うIPパケットの転送処理について説明する。
圧縮伸張モジュール221は、NIC2(205)からIPパケットを受信すると(ステップS521)、当該IPパケットの送信先の装置に対して適用される辞書を取得する。具体的には、ステップS523からステップS524の手順にしたがって辞書が取得される。
まず、圧縮伸張モジュール221は、受信したIPパケットのIPヘッダから送信元IPアドレス(Source IP Address)を取得する(ステップS522)。
次に、圧縮伸張モジュール221は、ステップS513と同様に、通信先−辞書対応情報222から、通信先302にステップS522において取得された送信元IPアドレスが含まれる行を検索し、さらに、当該行の辞書名304及び現辞書番号306の値を取得する(ステップS523)。
圧縮伸張モジュール221は、ステップS514と同様に、辞書管理情報223を参照し、辞書名402及び辞書番号403が、ステップS523において取得された辞書名304及び現辞書番号306の値と一致する行を検索し、さらに、当該行から辞書データ404に格納される辞書データを取得して一時領域に格納する(ステップS524)。
圧縮伸張モジュール221は、一時領域に格納される辞書データを用いてIPパケットのペイロードを伸張する(ステップS525)。このとき、圧縮伸張モジュール221は、送信される通信内容に基づいて、一時領域に格納される辞書データに新しい単語を追加する。また、圧縮伸張モジュール221は、IPパケットの短期の圧縮率及び長期の圧縮率を算出する。なお、新たな単語が検出されない場合、辞書データには新たな単語は追加されない。
圧縮伸張モジュール221は、伸張されたペイロードを含むIPパケットをNIC1(204)から、宛先IPアドレスに対応する装置に送信する(ステップS526)。
その後、圧縮伸張モジュール221は、辞書管理情報223の更新処理を実行し(ステップS527)、処理を終了する。
なお、辞書管理情報223の更新処理の詳細は、図8を用いて後述するが、ステップS525において更新された辞書データは、辞書管理情報223の更新処理において一時領域から辞書管理情報223に書き戻される。
図6は、本発明の実施例1における圧縮伸張モジュール221が実行する辞書管理情報223の更新処理を説明するフローチャートである。
圧縮伸張モジュール221は、辞書管理情報223の更新処理を開始すると(ステップS601)、サイズ要件が成立し、かつ、圧縮率要件が成立するか否かを判定する。(ステップS602)。ここで、ステップS602の判定処理について説明する。
サイズ要件は、辞書のサイズが第一の閾値以上であることとする。本実施例では、辞書のサイズは、辞書に登録される単語数を想定しているが、辞書のバイト数を用いてもよい。
第一の閾値は、設定ファイルなどを用いて管理者によって設定される値であり、例えば、単語数として「30,000」が設定される。前述した第一の閾値は一例であって、「30,000」より大きい値、又は小さい値であってもよい。なお、第一の閾値は、圧縮伸張モジュールプログラム231に予め埋め込む等、その他の手段を用いて設定されてもよい。
また、圧縮率要件は、圧縮率の短期平均及び圧縮率の長期平均の比率(圧縮率の長期平均に対する圧縮率の短期平均の比率)が第二の閾値以下であることとする。すなわち、圧縮率要件は、現在の辞書を用いた圧縮後のデータ又は現在の辞書を用いて伸張される前のデータが十分小さいサイズに圧縮されたデータであるか否かを判定するものである。なお、圧縮率の短期平均及び圧縮率の長期平均は、通信先−辞書対応情報222の圧縮率短期平均307及び圧縮率長期平均308から取得可能な値である。
第二の閾値は、設定ファイルなどを用いて管理者によって設定される値であり、例えば、比率として「0.4(40%)」が設定される。前述した第二の閾値は一例であって、「0.4」より大きい値、又は小さい値であってもよい。なお、第二の閾値は、圧縮伸張モジュールプログラム231に予め埋め込む等、その他の手段を用いて設定されてもよい。
ステップS602の判定処理は、現在の通信内容に対して適切な辞書が使用されているか否かを判定するための処理である。具体的には、以下のような判定がなされる。
サイズ要件が成立し、かつ、圧縮率要件が成立する場合、現在の通信内容に対して適切な辞書が使用されていないことを示す。したがって、この場合、圧縮伸張モジュール221は、他の辞書を使用し、又は新たな辞書を生成する必要がある。
サイズ要件は成立するが、圧縮率要件成立しない場合、現在の通信内容に対して適切な辞書が使用されていることを示す。
サイズ要件が成立しない場合、新しく生成された辞書の単語数が十分でないことを示す。後述するステップS631において新しい辞書が生成された直後は、当該辞書の単語数が十分ではないため圧縮率が上がらない。したがって、新しく生成された辞書の単語数が増えるまで、辞書の変更及び新規辞書の生成を行わないようにするためにサイズ要件が成立するか否かが判定される。
以上が、ステップS602の判定処理の説明である。
サイズ要件又は圧縮率要件の少なくともいずれかが成立していないと判定された場合、圧縮伸張モジュール221は、辞書管理情報223の辞書データ404を更新する(ステップS611)。これは、現在の通信内容に対して適切な辞書データが使用されていること、又は新たな辞書データが生成された直後であることを示す。そのため、圧縮伸張モジュール221は、現在の辞書を更新し、当該辞書の使用を継続する。
具体的には、圧縮伸張モジュール221は、ステップS515又はステップS525において新たに単語が追加された最新の辞書データを、ステップS514又はステップS524において辞書管理情報223から検索された行の辞書データ404に格納する。
圧縮伸張モジュール221は、通信先−辞書対応情報222の圧縮率短期平均307を更新し(ステップS612)、また、通信先−辞書対応情報222の圧縮率長期平均308を更新し(ステップS613)、処理を終了する。具体的には、以下のような処理が実行される。
圧縮伸張モジュール221は、ステップS513又はステップS523において、通信先−辞書対応情報222から取得された行の圧縮率短期平均307に、ステップS515又はステップS525において算出されたIPパケットの短期の圧縮率を格納する。
また、圧縮伸張モジュール221は、ステップS513又はステップS523において、通信先−辞書対応情報222から取得された行の圧縮率長期平均308に、ステップS515又はステップS525において算出されたIPパケットの長期の圧縮率を格納する。
以上がステップS612及びステップS613の処理の説明である。
ステップS602において、サイズ要件が成立し、かつ、圧縮率要件が成立すると判定された場合、圧縮伸張モジュール221は、辞書管理情報223から現在使用している辞書データとは異なる辞書データを取得し、一時領域に当該辞書データを格納する(ステップS621)。すなわち、圧縮伸張モジュール221は、現在使用されていない辞書を取得する。
具体的には、圧縮伸張モジュール221は、辞書管理情報223から辞書名402の値がステップS513又はステップS523において取得された辞書名に一致し、かつ辞書番号403の値がステップS513又はステップS523において取得された現辞書番号とは異なる行を全て抽出する。さらに、圧縮伸張モジュール221は、抽出された行の辞書データ404から辞書データを取得し、一時領域に取得された辞書データを格納する。
圧縮伸張モジュール221は、ステップS621において取得された辞書データを用いて、IPパケットのペイロードの圧縮率を算出する(ステップS622)。
具体的には、圧縮伸張モジュール221は、取得された辞書データを用いて、ステップS511において受信したIPパケット又はステップS526において送信されたIPパケットのペイロードを圧縮する。これによって、圧縮伸張モジュール221は、当該IPパケットのペイロードの圧縮率を算出できる。
圧縮伸張モジュール221は、他の辞書データを用いたペイロードの圧縮率が、現在使用している辞書を用いたペイロードの圧縮率長期平均より高い辞書データが存在するか否かを判定する(ステップS623)。すなわち、他の辞書を用いた圧縮後のデータが十分小さいサイズに圧縮されたデータであるか否かが判定される。
具体的には、圧縮伸張モジュール221は、ステップS622において算出されたペイロードの圧縮率と、ステップS513又はステップS523において取得された行の圧縮率長期平均308の値とを比較し、算出されたペイロードの圧縮率が圧縮率長期平均308の値より大きいか否かを判定する。
他の辞書データを用いたペイロードの圧縮率が、現在使用している辞書を用いたペイロードの圧縮率長期平均より高い辞書データが存在しないと判定された場合、圧縮伸張モジュール221は、辞書管理情報223に新たな辞書データに対応する行を追加する(ステップS631)。
このとき、圧縮伸張モジュール221は、追加された行のID401に任意の値を設定し、辞書名402にステップS513又はステップS523において取得された辞書名を設定し、辞書番号403にステップS513又はステップS523において取得された行の辞書数305の値に「1」を加算した値を設定する。なお、追加された行の辞書データ404は空の辞書データとする。
圧縮伸張モジュール221は、通信先−辞書対応情報222の辞書数305及び現辞書番号306を更新し(ステップS632)、さらに、圧縮率短期平均307を「0%」に更新し(ステップS633)、その後、ステップS613に進む。
具体的には、圧縮伸張モジュール221は、ステップS513又はステップS523において取得された行の辞書数305の値に「1」を加算する。また、圧縮伸張モジュール221は、当該行の現辞書番号306の値に、更新された辞書数305の値を格納する。
ステップS623において、他の辞書データを用いたペイロードの圧縮率が、現在使用している辞書を用いたペイロードの圧縮率長期平均より高い辞書データが存在すると判定された場合、圧縮伸張モジュール221は、通信先−辞書対応情報222の現辞書番号306を更新し(ステップS641)、さらに、圧縮率短期平均307を更新し(ステップS642)、その後、ステップS613に進む。これは、過去に似たような通信内容のIPパケットが送信されたことを示す。この場合、他の辞書データに切り替えて通信を行うこととなる。
具体的には、圧縮伸張モジュール221は、ステップS513又はステップS523において取得された行の現辞書番号306の値を、現在使用している辞書を用いたペイロードの圧縮率長期平均より大きい圧縮率の辞書データの番号に更新する。また、圧縮伸張モジュール221は、当該行の圧縮率短期平均307の値を、ステップS515又はステップS525において算出されたIPパケットの圧縮率に更新する。
なお、ステップS622において、現在使用している辞書を用いたペイロードの圧縮率長期平均より大きい圧縮率の辞書データが複数存在する場合、圧縮伸張モジュール221は、最も圧縮率の高い辞書データを選択するものとする。
なお、実施例1では、圧縮伸張装置間を接続するネットワーク構成について説明したが本発明はこれに限定されない。例えば、クライアント装置側に圧縮機能のみを備えた圧縮装置を接続し、サーバ側に伸張機能のみを備えた伸張装置を接続するネットワーク構成であってもよい。
なお、実施例1では、クライアント装置及びサーバと別の装置として圧縮伸張装置を記載したが本発明はこれに限定されない。例えば、クライアント装置及びサーバが、圧縮伸張装置が備える機能を有してもよい。
なお、実施例1では、圧縮率短期平均及び圧縮率長期平均を用いて辞書の切り替え、又は辞書の生成を行うか否かを判定していたが本発明はこれに限定されない。例えば、圧縮率短期平均の絶対値が第二の閾値以下の場合に圧縮率要件が成立すると判定してもよい。
以上で説明したように、実施例1によれば、圧縮伸張装置は、一つの通信先に対して、IPパケットを圧縮又は伸張するための情報である複数の辞書を保持し、通信内容に応じて圧縮率が高い辞書を用いて通信内容を圧縮又は伸張することができる。
これによって、各通信先の装置との間で送受信されるデータの圧縮率を高めることができる。また、通信内容に応じて、動的に辞書を切り替え、又は、新たに辞書を生成することによって、最適な圧縮率を実現可能な通信が可能となる。
さらに、小さいサイズの辞書を用いるため、全ての辞書を主記憶装置202上に格納することができる。したがって、検索時のI/O速度を高速化することができる。
実施例2では、実施例1の圧縮伸張装置が使用する辞書式圧縮にエントロピー符号を組合せることによって、さらに圧縮率を高めている点が異なる。以下、実施例1との差異を中心に実施例2について説明する。
実施例2の計算機システムの構成は、実施例1と同一であるため説明を省略する。ただし、実施例2では、圧縮伸張装置A111、圧縮伸張装置B121、及び圧縮伸張装置C131の構成が異なる。
以下、図7から図10を用いて、実施例2の圧縮伸張装置の構成について説明する。なお、実施例2の圧縮伸張装置は、実施例1の圧縮伸張装置にエントロピー符号に関する機能が追加されている点が異なる。したがって、実施例2の圧縮伸張装置について、実施例1の圧縮伸張装置との差異を中心に説明する。
図7は、本発明の実施例2における圧縮伸張装置の構成例を示すブロック図である。図7では、圧縮伸張装置A111の構成例を示す。なお、圧縮伸張装置B121及び圧縮伸張装置C131も同一の構成である。
圧縮伸張装置A111のハードウェア構成は実施例1と同一であるため説明を省略する。
実施例2の二次記憶装置203には、辞書エントロピー圧縮伸張モジュール721を実現する辞書エントロピー圧縮伸張モジュールプログラム731が格納される。
CPU201は、圧縮伸張装置A111の起動時に、辞書エントロピー圧縮伸張モジュールプログラム731を二次記憶装置203から読み出し、主記憶装置202上に展開する。さらに、CPU201は、展開された辞書エントロピー圧縮伸張モジュールプログラム731を実行することによって辞書エントロピー圧縮伸張モジュール721を実現する。辞書エントロピー圧縮伸張モジュール721は、後述する通信先−辞書頻度表対応情報722及び辞書頻度表管理情報723を主記憶装置202上に展開する。
辞書エントロピー圧縮伸張モジュール721は、後述する通信先−辞書頻度表対応情報722及び辞書頻度表管理情報723に基づいて、NIC1(204)から受信したIPパケットのペイロードを圧縮し、NIC2(205)から圧縮されたペイロードを含むIPパケットを通信先の装置に転送する。また、圧縮伸張モジュール221は、通信先−辞書頻度表対応情報722及び辞書頻度表管理情報723に基づいて、NIC2(205)から受信したIPパケットのペイロードを伸張し、NIC1(204)から伸張されたペイロードを含むIPパケットを通信先の装置に転送する。
図8は、本発明の実施例2における通信先−辞書頻度表対応情報722の一例を示す説明図である。図8は圧縮伸張装置C131が保持する通信先−辞書頻度表対応情報722を示す。
通信先−辞書頻度表対応情報722は、実施例1の通信先−辞書対応情報222を、通信先の装置と、辞書及び頻度表との対応を管理するように変更したものである。具体的には、通信先−辞書対応情報222の辞書名304、辞書数305、及び現辞書番号306が、辞書頻度表名804、辞書頻度表数805、及び現辞書頻度表番号806に変更される。その他の情報列は実施例1と同一のものである。
なお、実施例2では、辞書の切り替えと同時に、頻度表も切り替えられるため、辞書及び頻度表を同一の行で管理する。しかし、辞書及び頻度表は異なるタイミングで切り替えることも考えられる。この場合、通信先−辞書頻度表対応情報722の情報列には、辞書名及び頻度表名、並びにそれらの番号を管理する辞書数、頻度表数、現辞書番号、及び現頻度表番号が含まれる。
図9は、本発明の実施例2における辞書頻度表管理情報723の一例を示す説明図である。図9は、圧縮伸張装置C131が保持する辞書頻度表管理情報723を示す。
辞書頻度表管理情報723は、頻度表を管理するために、実施例1の辞書管理情報223に頻度表データ905が追加された構造になっている。
また、辞書頻度表管理情報723では、実施例1の辞書管理情報223の辞書名402、及び辞書番号403が辞書頻度表名902及び辞書頻度表番号903に変更される。その他の情報列は実施例1と同一のものである。
圧縮伸張装置C113は、通信先−辞書頻度表対応情報722に示すように、圧縮伸張装置A111を通る通信先「192.168.1.0/24」のサブネット112との間の通信において、辞書頻度表名が「辞書頻度表A」である辞書頻度表管理情報を構成する辞書データ及び頻度表データを五つ保持し、また、圧縮伸張装置B121を通る通信先「192.168.2.0/24」のサブネット122との間の通信において、辞書頻度表名が「辞書頻度表B」である辞書頻度表管理情報を構成する辞書データ及び頻度表データを六つ保持する。そのため、辞書頻度表管理情報723には、辞書頻度表Aの五つ分の行9401〜9405、辞書頻度表Bの六つ分の行9406〜9411を含む。
辞書エントロピー圧縮伸張モジュール721は、通信先−辞書頻度表対応情報722及び辞書頻度表管理情報723を用いて、通信先の装置との通信に使用する辞書及び頻度表を一意に取得することができる。例えば、サーバ103がクライアント装置A101に対してIPパケットを送信する場合、圧縮伸張装置C131の辞書エントロピー圧縮伸張モジュール721は、以下の手順にしたがって辞書データ及び頻度表データを取得する。
辞書エントロピー圧縮伸張モジュール721は、IPパケットのIPヘッダから通信先の装置(クライアント装置A101)のIPアドレスを取得する。ここでは、IPアドレス「192.168.1.101」が取得される。
次に、辞書エントロピー圧縮伸張モジュール721は、通信先‐辞書頻度表対応情報722から、取得されたIPアドレスが通信先302に含まれる行を取得する。ここでは、行832が取得される。
次に、辞書エントロピー圧縮伸張モジュール721は、取得された行832の辞書頻度表名804及び現辞書頻度表番号806の値を取得する。ここでは、辞書頻度表名として「辞書頻度表A」、現辞書頻度表番号として「5」が取得される。
次に、辞書エントロピー圧縮伸張モジュール721は、辞書頻度表管理情報723を参照し、辞書頻度表名902及び辞書頻度表番号903が、行832から取得された辞書頻度表名804及び現辞書頻度表番号806の値と一致する行を検索する。ここでは、行9405が検索される。
さらに、辞書エントロピー圧縮伸張モジュール721は、検索された行9405の辞書データ404及び頻度表データ905から辞書データ及び頻度表データを取得する。
次に、辞書エントロピー圧縮伸張モジュール721が実行する処理の詳細について説明する。
図10A及び図10Bは、本発明の実施例2における辞書エントロピー圧縮伸張モジュール721がIPパケットを受信した場合に実行するIPパケットの転送処理を説明するフローチャートである。
図10Aは、NIC1(204)からIPパケットを受信した場合に実行される、圧縮処理を伴うIPパケットの転送処理を示す。図10Bは、NIC2(205)からIPパケットを受信した場合に実行される、伸張処理を伴うIPパケットの転送処理を示す。
なお、辞書エントロピー圧縮伸張モジュール721が実行するIPパケットの転送処理は、圧縮伸張モジュール221が実行するIPパケットの転送処理と基本的には同一の手順となるため、以下の説明では差異を中心に説明する。
辞書エントロピー圧縮伸張モジュール721は、NIC1(204)からIPパケットを受信すると(ステップS511)、当該IPパケットのIPヘッダから宛先IPアドレス(Destination IP Address)を取得する(ステップS512)。
次に、辞書エントロピー圧縮伸張モジュール721は、通信先−辞書頻度表対応情報722から、通信先302にステップS512において取得された宛先IPアドレスが含まれる行を検索し、さらに、当該行の辞書頻度表名804と現辞書頻度表番号806の値を取得する(ステップS1013)。
辞書エントロピー圧縮伸張モジュール721は、辞書頻度表管理情報723を参照し、辞書頻度表名902及び辞書頻度表番号903が、ステップS1013において取得された辞書頻度表名804及び現辞書頻度表番号806の値と一致する行を検索し、さらに、当該行から辞書データ404及び頻度表データ905に格納される辞書データ及び頻度表データを取得して一時領域に格納する(ステップS1014)。
辞書エントロピー圧縮伸張モジュール721は、一時領域に格納される辞書データ及び頻度表データを用いて、受信したIPパケットのペイロードを圧縮する(ステップS1015)。このとき、辞書エントロピー圧縮伸張モジュール721は、送信される通信内容に基づいて、一時領域に格納される辞書データに新しい単語が追加し、また頻度表データの出現頻度を更新する。また、辞書エントロピー圧縮伸張モジュール721は、IPパケットの短期の圧縮率及び長期の圧縮率を算出する。なお、新たな単語が検出されない場合、辞書データには新たな単語は追加されない。
辞書エントロピー圧縮伸張モジュール721は、圧縮されたペイロードを含むIPパケットをNIC2(205)から、宛先IPアドレスに対応する装置に送信する(ステップS516)。
その後、辞書エントロピー圧縮伸張モジュール721は、辞書頻度表管理情報723の更新処理を実行し(ステップS1017)、処理を終了する。
なお、辞書頻度表管理情報723の更新処理の詳細は図11を用いて後述するが、ステップS1015において更新された辞書データ及び頻度表データは、辞書頻度表管理情報723の更新処理において一時領域から辞書頻度表管理情報723に書き戻される。
次に、図10Bを用いて伸張処理を伴うIPパケットの転送処理について説明する。
辞書エントロピー圧縮伸張モジュール721は、NIC2(205)からIPパケットを受信すると(ステップS521)、受信したIPパケットのIPヘッダから送信元IPアドレス(Source IP Address)を取得する(ステップS522)。
次に、辞書エントロピー圧縮伸張モジュール721は、ステップS513と同様に、通信先−辞書頻度表対応情報722から、通信先302にステップS522において取得された送信元IPアドレスが含まれる行を検索し、さらに、当該行の辞書頻度表名804及び現辞書頻度表番号806の値を取得する(ステップS1023)。
辞書エントロピー圧縮伸張モジュール721は、ステップS1014と同様に、辞書頻度表管理情報723を参照し、辞書頻度表名902及び辞書頻度表番号903が、ステップS1023において取得された辞書頻度表名804及び現辞書頻度表番号806の値と一致する行を検索し、さらに、当該行から辞書データ404及び頻度表データ905に格納される辞書データ及び頻度表データを取得して一時領域に格納する(ステップS1024)。
辞書エントロピー圧縮伸張モジュール721は、ステップS1015と同様に、一時領域に格納される辞書データ及び頻度表データを用いて、受信したIPパケットのペイロードを伸張する(ステップS1025)。このとき、辞書エントロピー圧縮伸張モジュール721は、送信される通信内容に基づいて、一時領域に格納される辞書データに新しい単語を追加し、頻度表データの出現頻度を更新する。また、辞書エントロピー圧縮伸張モジュール721は、IPパケットの短期の圧縮率及び長期の圧縮率を算出する。なお、新たな単語が検出されない場合、辞書データには新たな単語は追加されない。
辞書エントロピー圧縮伸張モジュール721は、伸張されたペイロードを含むIPパケットをNIC1(204)から、宛先IPアドレスに対応する装置に送信する(ステップS526)。
その後、辞書エントロピー圧縮伸張モジュール721は、辞書頻度表管理情報723の更新処理を実行し(ステップS1027)、処理を終了する。
なお、辞書頻度表管理情報723の更新処理は、図11を用いて後述するが、ステップS1025において更新された辞書データ及び頻度表データは、辞書頻度表管理情報723の更新処理において一時領域から辞書頻度表管理情報723に書き戻される。
図11は、本発明の実施例2における辞書エントロピー圧縮伸張モジュール721が実行する辞書頻度表管理情報723の更新処理を説明するフローチャートである。
なお、辞書エントロピー圧縮伸張モジュール721が実行する辞書頻度表管理情報723の更新処理は、圧縮伸張モジュール221が実行する辞書管理情報223の更新処理と基本的には同一の手順となるため、以下の説明では差異を中心に説明する。
辞書エントロピー圧縮伸張モジュール721は、辞書頻度表管理情報723の更新処理を開始すると(ステップS1101)、サイズ要件が成立し、かつ、圧縮率要件が成立するか否かを判定する(ステップS602)。
サイズ要件又は圧縮率要件の少なくともいずれかが成立していないと判定された場合、辞書エントロピー圧縮伸張モジュール721は、辞書頻度表管理情報723の辞書データ404及び頻度表データ905を更新する(ステップS1111)。これは、現在の通信内容に対して適切な辞書データ及び頻度表データが使用されていること、又は新たな辞書データ及び頻度表データが生成された直後であることを示す。そのため、辞書エントロピー圧縮伸張モジュール721は、現在の辞書データ及び頻度表データの使用を継続する。
具体的には、辞書エントロピー圧縮伸張モジュール721は、ステップS1015又はステップS1025において新たに単語が追加された辞書データ及び頻度が更新された頻度表データを、ステップS1014又はステップS1024において辞書頻度表管理情報723から検索された行の辞書データ404及び頻度表データ905に格納する。
辞書エントロピー圧縮伸張モジュール721は、通信先−辞書頻度表対応情報722の圧縮率短期平均307を更新し(ステップS1112)、また、通信先−辞書頻度表対応情報722の圧縮率長期平均308を更新し(ステップS1113)、処理を終了する。具体的には、以下のような処理が実行される。
辞書エントロピー圧縮伸張モジュール721は、ステップS1013又はステップS1023において、通信先−辞書頻度表対応情報722から取得された行の圧縮率短期平均307に、ステップS1015又はステップS1025において算出されたIPパケットの短期の圧縮率を格納する。
また、辞書エントロピー圧縮伸張モジュール721は、ステップS1013又はステップS1023において、通信先−辞書頻度表対応情報722から取得された行の圧縮率長期平均308に、ステップS1015又はステップS1025において算出されたIPパケットの長期の圧縮率を格納する。
以上がステップS1112及びステップS1113の処理の説明である。
ステップS602において、サイズ要件が成立し、かつ、圧縮率要件が成立すると判定された場合、辞書エントロピー圧縮伸張モジュール721は、辞書頻度表管理情報723から、現在使用している辞書データとは異なる辞書データ、及び、現在使用している頻度表データとは異なる頻度表データを取得し、一時領域に当該辞書データ及び頻度表データを格納する(ステップS1121)。すなわち、辞書エントロピー圧縮伸張モジュール721は、現在使用されていない辞書データ及び頻度表データを取得する。
具体的には、辞書エントロピー圧縮伸張モジュール721は、辞書頻度表管理情報723から辞書頻度表名902の値がステップS1013又はステップS1023において取得された辞書頻度表名に一致し、かつ、辞書頻度表番号903の値がステップS1013又はステップS1023において取得された現辞書頻度表番号とは異なる行を全て抽出する。さらに、辞書エントロピー圧縮伸張モジュール721は、抽出された行の辞書データ404及び頻度表データ905から辞書データ及び頻度表データを取得し、一時領域に格納する。
辞書エントロピー圧縮伸張モジュール721は、ステップS1121において取得された辞書データ及び頻度表データを用いて、IPパケットのペイロードの圧縮率を算出する(ステップS1122)。
具体的には、辞書エントロピー圧縮伸張モジュール721は、取得された辞書データ及び頻度表データを用いて、ステップS511において受信したIPパケット又はステップS526において送信されたIPパケットのペイロードを圧縮する。これによって、辞書エントロピー圧縮伸張モジュール721は、当該IPパケットのペイロードの圧縮率を算出できる。
辞書エントロピー圧縮伸張モジュール721は、ステップS1121において取得された辞書データ及び頻度表データを用いて圧縮されたペイロードの圧縮率が、現在使用している辞書データ及び頻度表データを用いたペイロードの圧縮率長期平均より高い辞書データ及び頻度表データが存在するか否かを判定する(ステップS1123)。
具体的には、辞書エントロピー圧縮伸張モジュール721は、ステップS1122において算出されたペイロードの圧縮率と、ステップS1013又はステップS1023において取得された行の圧縮率長期平均308の値と比較し、算出されたペイロードの圧縮率が圧縮率長期平均308の値より大きいか否かを判定する。
他の辞書データを用いたペイロードの圧縮率が、現在使用している辞書データ及び頻度表データを用いたペイロードの圧縮率長期平均より高い辞書データ及び頻度表データが存在しないと判定された場合、辞書エントロピー圧縮伸張モジュール721は、辞書頻度表管理情報723に新たな辞書データ及び頻度表データに対応する行を追加する(ステップS1131)。
このとき、辞書エントロピー圧縮伸張モジュール721は、追加された行のID401に任意の値を格納し、辞書頻度表名902にステップS1013又はステップS1023において取得された辞書頻度表名を格納し、辞書頻度表番号903にステップS1013又はステップS1023において取得された行の辞書頻度表数805の値に「1」を加算した値を格納する。なお、追加された行の辞書データ404には空の辞書データが格納され、頻度表データ905には空の頻度表データが格納される。
辞書エントロピー圧縮伸張モジュール721は、通信先−辞書頻度表対応情報722の辞書頻度表数805及び現辞書頻度表番号806を更新し(ステップS1132)、さらに、圧縮率短期平均307を「0%」に更新し(ステップS1133)、その後、ステップS1113に進む。
具体的には、辞書エントロピー圧縮伸張モジュール721は、ステップS1013又はステップS1023において取得された行の辞書頻度表数805の値に「1」を加算する。また、辞書エントロピー圧縮伸張モジュール721は、当該行の現辞書頻度表番号806に、更新された辞書頻度表数805の値を格納する。
ステップS1123において、他の辞書データを用いたペイロードの圧縮率が、現在使用している辞書データ及び頻度表データを用いたペイロードの圧縮率長期平均より高い辞書データ及び頻度表データが存在すると判定された場合、辞書エントロピー圧縮伸張モジュール721は、通信先−辞書頻度表対応情報722の現辞書頻度表番号806を更新し(ステップS1141)、さらに、圧縮率短期平均307を更新し(ステップS1142)、その後、ステップS613に進む。これは、過去に似たような通信内容のIPパケットが送信されたことを示す。この場合、他の辞書データ及び頻度表データに切り替えて通信を行うこととなる。
具体的には、辞書エントロピー圧縮伸張モジュール721は、ステップS1013又はステップS1023において取得された行の現辞書頻度表番号806の値を、現在使用している辞書データ及び頻度表データを用いたペイロードの圧縮率長期平均より大きい圧縮率の辞書データ及び頻度表データに対応する辞書頻度表番号に更新する。また、辞書エントロピー圧縮伸張モジュール721は、当該行の圧縮率短期平均307の値を、ステップS1015又はステップS1025において算出されたIPパケットの圧縮率に更新する。
なお、ステップS1122において、現在使用している辞書データ及び頻度表データを用いたペイロードの圧縮率長期平均より大きい圧縮率の辞書データ及び頻度表データが複数存在する場合、辞書エントロピー圧縮伸張モジュール721は、最も圧縮率が高い辞書データ及び頻度表データを選択する。
なお、実施例2では、辞書及び頻度表を用いてIPパケットを圧縮又は伸張していたが、頻度表のみを用いてIPパケットを圧縮又は伸張してもよい。すなわち、実施例1における辞書の代わりに頻度表を用いた実施例であってもよい。
以上で説明したように、実施例2によれば、圧縮伸張装置は、通信先に対して複数の辞書及び頻度表を保持し、通信内容に応じて圧縮率が高い辞書及び頻度表を用いて通信内容を圧縮することができる。
これによって、各通信先に送受信されるデータの圧縮率を高めることができる。また、通信内容に応じて、動的に辞書及び頻度表を切り替え、又は、新たに辞書及び頻度表を生成することによって、最適な圧縮率を実現可能な通信を実現することができる。
さらに、辞書はIPパケットに含まれる通信内容(ペイロード)から生成されるものであるため小さいサイズに辞書となり、全ての辞書を主記憶装置202上に格納することができる。したがって、検索時のI/O速度を高速化することができる。
実施例3では、圧縮伸張装置のメモリの記憶容量には上限があるため、運用中に必要性の低い辞書を削除することによって、辞書を格納する記憶容量を確保する点が実施例1と異なる。以下、実施例1との差異を中心に実施例3について説明する。なお、本実施例は実施例1のシステムを拡張したものだが、実施例2のシステムを同様に拡張することによって辞書及び頻度表を格納する記憶容量に上限がある場合にも対応可能である。
辞書を格納する記憶容量に上限がある場合、圧縮伸張モジュール221は、辞書管理情報223の更新処理において、記憶容量の不足から新しい辞書が生成できない可能性又は新たな辞書を格納できない可能性がある。
そのため、圧縮伸張モジュール221は、適切なタイミングで、辞書管理情報223の辞書名402に対応する辞書毎に、必要性の低い辞書を削除する。
なお、辞書を削除するタイミングとしては、例えば、1日単位等、周期的なタイミングが考えられる。また、辞書を削除するタイミングの他の例としては、通信先−辞書対応情報222に新たな行が追加されたタイミング、新しい辞書が生成されるタイミングなどが考えられる。
また、本実施例では、非特許文献5に開示されたキャッシュメモリのページ置換アルゴリズムであるLRU−k方式を用いて必要性の低い辞書を特定する。なお、本実施例では簡単のためLRU−kのパラメータkを「k=1」として説明するが、kは「2」以上であってもよい。また、LRU以外に、FIFO及び2Q等の他のページ置換アルゴリズムを用いることも可能である。
図12は、本発明の実施例3における辞書管理情報223の一例を示す説明図である。図12に示す辞書管理情報223は、前述のようにパラメータkが1のLRU−1に対応したものである。
実施例3の辞書管理情報223は、新たに、最終アクセス時刻1205の情報列が追加される。最終アクセス時刻1205には、辞書データが更新された時刻を格納する。例えば、ステップS611において辞書データが更新された時刻、ステップS631において、辞書管理情報223に新たな辞書データに対応する行が追加された時刻が格納される。
なお、最終アクセス時刻1205の他に、最終アクセス時刻の一つ前のアクセス時刻を管理する情報列を追加することによって、LRU−2に対応した辞書管理情報223になる。また、最終アクセス時刻1205の代わりに、仮想的にキューを想定し、当該キュー内での順序を表す番号を管理する情報列を追加することによってFIFOに対応した辞書管理情報223になる。さらに、仮想的なキューを2本又は3本想定し、それらの中での順序を表す番号を管理する列も2つ又は3つ追加することによって2Qに対応した辞書管理情報223になる。
図13A及び図13Bは、本発明の実施例3における辞書の削除処理を説明するフローチャートである。
以下の説明では、LRU−1に対応した辞書管理情報223の辞書名402の値を「a」と指定するものとする。なお、辞書名402の値「a」には、通信先−辞書対応情報222の辞書名304の値のいずれか一つが代入される。そのため、通信先−辞書対応情報222から辞書名304の値の一覧を取得し、それらに対して繰り返し、辞書名が「a」である辞書の削除処理を実行することによって、各通信先の辞書から必要性の低い辞書が削除される。
圧縮伸張モジュール221は、辞書の削除処理を開始すると(ステップS1301)、LRU−1に対応した辞書管理情報223から辞書名402が「a」である行を取得する(ステップS1302)。例えば、「a=辞書A」である行が取得される。
圧縮伸張モジュール221は、取得された行の最終アクセス時刻1205を参照し、最終アクセス時刻1205が最も古い行を辞書管理情報223から削除する(ステップS1303)。ここで、FIFO又は2Q等、LRU−1以外の方式を用いて必要性の低い辞書を特定する場合には、各方式に対応した処理内容に変更される。
圧縮伸張モジュール221は、通信先−辞書対応情報222の辞書名304が「a」である行の辞書数305及び現辞書番号306を更新する(ステップS1304)。
具体的には、圧縮伸張モジュール221は、辞書名304が「a」である行の辞書数305の値を「1」減算する。当該行の現辞書番号306の値については、削除された辞書が現辞書番号306の値に一致する辞書である場合、現辞書番号306の値が「1」減算され、削除された辞書が現辞書番号306の値に一致しない辞書である場合、現辞書番号306は特に更新されない。
次に、圧縮伸張モジュール221は、削除された辞書を保持する対向装置を特定する(ステップS1305)。ここで、対向装置とは、削除された辞書を用いて通信を行う送信先の圧縮伸張装置のことを示す。
具体的には、圧縮伸張モジュール221は、通信先−辞書対応情報222の辞書名304が「a」である行を参照し、当該行の装置ID303から対向装置の装置IDを取得する。
圧縮伸張モジュール221は、対向装置に対して、辞書管理情報223から削除された行の情報を含むメッセージを送信する(ステップS1306)。削除された行の情報としては、辞書名402及び辞書番号403がペアとなった(a、辞書番号)のような情報が考えられる。
メッセージを受信した対向装置の圧縮伸張モジュール221は、辞書の削除処理を開始する(ステップS1311)。
圧縮伸張モジュール221は、LRU−1に対応した辞書管理情報223から、辞書名402及び辞書番号403が、メッセージに含まれる(a、辞書番号)に一致する行を削除する(ステップS1312)。
圧縮伸張モジュール221は、通信先−辞書対応情報222の辞書名304が「a」である行の辞書数305及び現辞書番号306を更新する(ステップS1313)。
具体的には、圧縮伸張モジュール221は、辞書名304が「a」である行の辞書数305の値を「1」減算する。当該行の現辞書番号306の値については、削除された辞書が現辞書番号306の値に一致する辞書である場合、現辞書番号306の値が「1」減算され、削除された辞書が現辞書番号306の値に一致しない辞書である場合、現辞書番号306は特に更新されない。
以上で説明したように、実施例3によれば、圧縮伸張モジュール221は、辞書を格納する記憶容量が上限を超えないように、運用中に必要性の低い辞書を削除することによって、記憶容量の上限にあわせた辞書の管理を行うことが可能となる。
各実施例では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
101、102 クライアント装置
103 サーバ
104 広域網
111、121、131 圧縮伸張装置
112、122 サブネット
201 CPU
202 主記憶装置
203 二次記憶装置
221 圧縮伸張モジュール
222 通信先−辞書対応情報
223 辞書管理情報
231 圧縮伸張モジュールプログラム
721 辞書エントロピー圧縮伸張モジュール
722 辞書頻度表対応情報
723 辞書頻度表管理情報
731 辞書エントロピー圧縮伸張モジュールプログラム
804 辞書頻度表名
805 辞書頻度表数
806 現辞書頻度表番号
905 頻度表データ
905 辞書頻度表番号

Claims (10)

  1. プロセッサ、前記プロセッサに接続される主記憶装置、及び前記プロセッサに接続されるネットワークインタフェースを備え、複数の計算機間で送受信されるデータを転送する通信装置であって、
    前記主記憶装置は、
    通信先毎に、データを圧縮又は伸張するための圧縮伸張情報を複数格納し、
    任意の通信先との間の通信に用いる圧縮伸張情報の複製である複製圧縮伸張情報を格納する一時領域を含み、
    前記通信装置は、前記圧縮伸張情報を用いて、受信したデータを圧縮又は伸張する圧縮伸張部を備え、
    前記圧縮伸張部は、
    通信先を特定する情報及び使用する圧縮伸張情報の識別情報を対応付けて管理し、
    第1の通信先からデータを受信した場合、前記第1の通信先との間の通信に用いる複数の圧縮伸張情報の中から、前記第1の通信先を特定する情報と対応付けられた第1の圧縮伸張情報を特定して、前記第1の圧縮伸張情報の複製である第1の複製圧縮伸張情報を前記一時領域に格納し、
    前記第1の複製圧縮伸張情報を用いて、前記第1の通信先から受信したデータを圧縮又は伸張し、
    前記圧縮されたデータ又は前記伸張されたデータを送信し、
    前記第1の通信先から受信したデータの圧縮結果又は伸張結果に基づいて、前記第1の複製圧縮伸張情報を更新し、
    切替条件を満たすか否かを判定し、
    前記切替条件を満たさないと判定された場合、前記第1の複製圧縮伸張情報を前記第1の圧縮伸張情報に上書きすることによって、当該第1の圧縮伸張情報を更新し、
    前記切替条件を満たすと判定された場合、前記第1の通信先との間の通信に用いる複数の圧縮伸張情報の中から第2の圧縮伸張情報を選択し、前記第1の通信先を特定する情報及び前記第2の圧縮伸張情報を対応付けることによって、前記第1の通信先との間の通信に使用する圧縮伸張情報を切り替えることを特徴とする通信装置。
  2. 請求項1に記載の通信装置であって、
    前記圧縮伸張部は、
    前記第1の複製圧縮伸張情報を用いたデータの圧縮率を算出し、当該圧縮率に基づいて前記第1の圧縮伸張情報を用いて圧縮されたデータのサイズを評価する指標を算出し、
    前記第1の圧縮伸張情報のサイズが第1の閾値以上、かつ、前記指標が第2の閾値以下であるか否かを判定し、
    前記第1の圧縮伸張情報のサイズが第1の閾値以上、かつ、前記指標が第2の閾値以下である場合、前記切替条件を満たすと判定することを特徴とする通信装置。
  3. 請求項2に記載の通信装置であって、
    前記圧縮伸張部は、
    前記切替条件を満たすと判定された場合、前記主記憶装置に格納され、かつ、前記第1の通信先との間の通信に用いる複数の圧縮伸張情報の各々を用いて圧縮されたデータの圧縮率を算出して、当該圧縮率が第3の閾値より大きい圧縮伸張情報を前記第2の圧縮伸張情報として選択することを特徴とする通信装置。
  4. 請求項3に記載の通信装置であって、
    前記圧縮伸張部は、
    前記算出された圧縮率が第3の閾値より大きい圧縮伸張情報が存在しない場合、新たに第3の圧縮伸張情報を生成し、
    前記第1の通信先を特定する情報、及び前記第3の圧縮伸張情報の識別情報を対応付けることを特徴とする通信装置。
  5. 請求項1に記載の通信装置であって、
    前記圧縮伸張部は、
    前記通信先を特定する情報、前記通信先との間の通信に用いる複数の圧縮伸張情報の識別情報、及び前記通信先との間の通信に用いる複数の圧縮伸張情報にアクセスした時間を示すアクセス時間を対応付けて管理し、
    前記第1の通信先との間の通信において、前記第1の通信先に対応付けられた複数の圧縮伸張情報の中から前記アクセス時間が最も古い圧縮伸張情報を選択し、当該圧縮伸張情報を前記主記憶装置から削除し、
    前記複数の通信先の各々に含まれる他の通信装置に、前記削除された圧縮伸張情報に関する情報を通知することを特徴とする通信装置。
  6. プロセッサ、前記プロセッサに接続される主記憶装置、及び前記プロセッサに接続されるネットワークインタフェースを備え、複数の計算機間で送受信されるデータを転送する通信装置におけるデータ転送制御方法であって、
    前記主記憶装置は、
    通信先毎に、データを圧縮又は伸張するための圧縮伸張情報を複数格納し、
    任意の通信先との間の通信に用いる圧縮伸張情報の複製である複製圧縮伸張情報を格納する一時領域を含み、
    前記通信装置は、前記圧縮伸張情報を用いて、受信したデータを圧縮又は伸張する圧縮伸張部を備え、
    前記圧縮伸張部は、通信先を特定する情報及び使用する圧縮伸張情報の識別情報を対応付けて管理し、
    前記データ転送制御方法は、
    前記圧縮伸張部が、第1の通信先からデータを受信した場合、前記第1の通信先との間の通信に用いる複数の圧縮伸張情報の中から、前記第1の通信先を特定する情報と対応付けられた第1の圧縮伸張情報を特定して、前記第1の圧縮伸張情報の複製である第1の複製圧縮伸張情報を前記一時領域に格納する第1のステップと、
    前記圧縮伸張部が、前記第1の複製圧縮伸張情報を用いて、前記第1の通信先から受信したデータを圧縮又は伸張する第2のステップと、
    前記圧縮伸張部が、前記圧縮されたデータ又は前記伸張されたデータを送信する第3のステップと、
    前記圧縮伸張部が、前記第1の通信先から受信したデータの圧縮結果又は伸張結果に基づいて、前記第1の複製圧縮伸張情報を更新する第4のステップと、
    前記圧縮伸張部が、切替条件を満たすか否かを判定する第5のステップと、
    前記圧縮伸張部が、前記切替条件を満たさないと判定された場合、前記第1の複製圧縮伸張情報を前記第1の圧縮伸張情報に上書きすることによって、当該第1の圧縮伸張情報を更新する第6のステップと、
    前記圧縮伸張部が、前記切替条件を満たすと判定された場合、前記第1の通信先との間の通信に用いる複数の圧縮伸張情報の中から第2の圧縮伸張情報を選択し、前記第1の通信先を特定する情報及び前記第2の圧縮伸張情報を対応付けることによって、前記第1の通信先との間の通信に使用する圧縮伸張情報を切り替える第7のステップと、
    を含むことを特徴とするデータ転送制御方法。
  7. 請求項6に記載のデータ転送制御方法であって、
    前記第5のステップは、
    前記圧縮伸張部が、前記第1の複製圧縮伸張情報を用いたデータの圧縮率を算出し、当該圧縮率に基づいて前記第1の圧縮伸張情報を用いて圧縮されたデータのサイズを評価する指標を算出するステップと、
    前記圧縮伸張部が、前記第1の圧縮伸張情報のサイズが第1の閾値以上、かつ、前記指標が第2の閾値以下であるか否かを判定するステップと、
    前記第1の圧縮伸張情報のサイズが第1の閾値以上、かつ、前記指標が第2の閾値以下である場合、前記圧縮伸張部が、前記切替条件を満たすと判定するステップと、を含むことを特徴とするデータ転送制御方法。
  8. 請求項7に記載のデータ転送制御方法であって、
    前記第7のステップは、前記圧縮伸張部が、前記主記憶装置に格納され、かつ、前記第1の通信先との間の通信に用いる複数の圧縮伸張情報の各々を用いて圧縮されたデータの圧縮率を算出して、当該圧縮率が第3の閾値より大きい圧縮伸張情報を前記第2の圧縮伸張情報として選択するステップを含むことを特徴とするデータ転送制御方法。
  9. 請求項8に記載のデータ転送制御方法であって、
    前記第7のステップは、
    前記算出された圧縮率が第3の閾値より大きい圧縮伸張情報が存在しない場合、前記圧縮伸張部が、新たに第3の圧縮伸張情報を生成するステップと、
    前記圧縮伸張部が、前記第1の通信先を特定する情報及び前記第3の圧縮伸張情報の識別情報を対応付けるステップと、を含むことを特徴とするデータ転送制御方法。
  10. 請求項6に記載のデータ転送制御方法であって、
    前記圧縮伸張部が、前記通信先を特定する情報、前記通信先との間の通信に用いる複数の圧縮伸張情報の識別情報、及び前記通信先との間の通信に用いる複数の圧縮伸張情報にアクセスした時間を示すアクセス時間を対応付けて管理するステップと、
    前記圧縮伸張部が、前記第1の通信先との間の通信において、前記第1の通信先に対応付けられた複数の圧縮伸張情報の中から前記アクセス時間が最も古い圧縮伸張情報を選択し、当該圧縮伸張情報を前記主記憶装置から削除するステップと、
    前記圧縮伸張部が、前記複数の通信先の各々に含まれる他の通信装置に、前記削除された圧縮伸張情報に関する情報を通知するステップと、を含むことを特徴とするデータ転送制御方法。
JP2013174543A 2013-08-26 2013-08-26 通信装置及びデータ転送制御方法 Expired - Fee Related JP6257221B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013174543A JP6257221B2 (ja) 2013-08-26 2013-08-26 通信装置及びデータ転送制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013174543A JP6257221B2 (ja) 2013-08-26 2013-08-26 通信装置及びデータ転送制御方法

Publications (3)

Publication Number Publication Date
JP2015043502A JP2015043502A (ja) 2015-03-05
JP2015043502A5 JP2015043502A5 (ja) 2016-08-25
JP6257221B2 true JP6257221B2 (ja) 2018-01-10

Family

ID=52696848

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013174543A Expired - Fee Related JP6257221B2 (ja) 2013-08-26 2013-08-26 通信装置及びデータ転送制御方法

Country Status (1)

Country Link
JP (1) JP6257221B2 (ja)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3008635B2 (ja) * 1992-02-13 2000-02-14 松下電器産業株式会社 データ通信装置
JP3231105B2 (ja) * 1992-11-30 2001-11-19 富士通株式会社 データ符号化方式及びデータ復元方式
JP2000332832A (ja) * 1999-05-17 2000-11-30 Matsushita Electric Ind Co Ltd インターネット電話ゲートウェイ装置
JP2002229886A (ja) * 2001-02-01 2002-08-16 Hitachi Ltd データ送受信方法
JP2005204138A (ja) * 2004-01-16 2005-07-28 Sony Corp データ通信システム、データ送信端末、データ受信端末、プログラム
JP2005333430A (ja) * 2004-05-20 2005-12-02 Victor Co Of Japan Ltd 双方向通信装置
JP4405419B2 (ja) * 2005-03-31 2010-01-27 株式会社東芝 画面送信装置
JP2009100149A (ja) * 2007-10-16 2009-05-07 Brother Ind Ltd データファイル圧縮装置及びデータファイル圧縮方法
JP5032419B2 (ja) * 2008-08-27 2012-09-26 株式会社東芝 サーバ、画面送信方法およびコンピュータプログラム

Also Published As

Publication number Publication date
JP2015043502A (ja) 2015-03-05

Similar Documents

Publication Publication Date Title
JP5566888B2 (ja) データ依存チャンキングを使用する最適化されたデータストリーム圧縮
CN110268394B (zh) 用于存储和操作键值数据的方法、***及机器可读存储媒体
US9753937B2 (en) File aware block level deduplication
US9678974B2 (en) Methods and apparatus for network efficient deduplication
US8543555B2 (en) Dictionary for data deduplication
TW201837720A (zh) 用於多串流儲存裝置之串流選擇
TW201841123A (zh) 用於維護操作之合併樹修改
US10459642B2 (en) Method and device for data replication
US9252807B2 (en) Efficient one-pass cache-aware compression
US8836548B1 (en) Method and system for data compression at a storage system
US9264068B2 (en) Deflate compression algorithm
CN109075798B (zh) 可变大小符号基于熵的数据压缩
US8872677B2 (en) Method and apparatus for compressing data-carrying signals
CN107046812A (zh) 一种数据保存方法和装置
US10339124B2 (en) Data fingerprint strengthening
US10423596B2 (en) Efficient caching of Huffman dictionaries
WO2014139454A1 (en) System and method for multi-stream compression and decompression
US10897270B2 (en) Dynamic dictionary-based data symbol encoding
US10637969B2 (en) Data transmission method and data transmission device
EP3195481A1 (en) Adaptive rate compression hash processing device
US20210357379A1 (en) Compression/decompression using index correlating uncompressed/compressed content
JP6257221B2 (ja) 通信装置及びデータ転送制御方法
Vestergaard et al. Enabling random access in universal compressors
JPH10261969A (ja) データ圧縮方法および装置
CN104518850B (zh) 将参考模板同步到数据流的方法和信息处理***

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160707

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170612

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171205

R150 Certificate of patent or registration of utility model

Ref document number: 6257221

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees