(57)【要約】【課題】  利用可能な帯域幅制限のために送信済みＩｏＴデータ量を削減しなければならないリソース制限ＩｏＴゲートウェイ及び共通圧縮方法は、ショートパケット送信に効果がない。  最適なコンテンツを反映しない辞書並びに実際の辞書の活用を反映しないトークンサイズ及び一時的に活用がきわめて不十分な辞書に起因する非効率的な圧縮。【解決手段】  辞書の記憶・更新時に辞書効率を考慮し、元の辞書の活用されている連続的な部分のみを概算する一時仮想辞書を使用し、トークン符号化時にトークンサイズを一時的に削減し、削減されたサイズのトークンをデコーダが復号する上で必要な情報の効率的な送信を可能にする。【選択図】図１
2018006964.tif 000002
【特許請求の範囲】
【請求項１】
セッション辞書を活用する転送データ圧縮を備えるデータ送信システムのためのデータ圧縮方法であって、
永久辞書ストアに複数の永久辞書を準備するための第１のステップと、
前記複数の永久辞書のうち１つの辞書を選択し、一時セッションメモリで前記セッション辞書を準備するために前記選択された永久辞書を複製するための第２のステップと、
前記セッション辞書を使用することで転送データを圧縮するための第３のステップと、
前記セッション辞書の効率を評価するための第４のステップと、
前記セッション辞書が、前記永久辞書として前記永久辞書ストアに記憶されるべきかどうかを、前記効率の評価に基づいて識別するための第５のステップと、
を含み、
前記第２のステップがセッションをセットアップするときに実施され、
前記第３のステップが前記セッション中に実施され、前記一時セッションメモリの前記セッション辞書を修正するためのステップを含み、
前記第４のステップ及び前記第５のステップが前記セッション中に繰り返し実施される、
データ圧縮方法。
【請求項２】
前記第４のステップ及び前記第５のステップが、前記セッション停止時に実施される、
請求項１に記載のデータ圧縮方法。
【請求項３】
前記永久辞書、第１のセッションＩＤ、及び第１の使用カウンタを含む第１のデータブロックが前記永久辞書ストアに記憶され、
前記セッション辞書、第２のセッションＩＤ、及び第２の使用カウンタを含む第２のデータブロックが前記一時セッションメモリに記憶され、
新規セッション要求が受信されると、第３のセッションＩＤが前記新規セッション要求に基づいて生成され、前記永久辞書ストアで永久辞書が検索され、前記第１のセッションＩＤが前記第３のセッションＩＤと同一であり、
第１のステップが、
前記第３のセッションＩＤと同一の前記第１のセッションＩＤを有する永久辞書が見つからなかったときに、次いで前記第３のセッションＩＤを前記第１のセッションＩＤとして含む新規第１のデータブロックを作成すること
を含み、
第２のステップが、
前記第３のセッションＩＤと同一の前記第１のセッションＩＤを有する前記永久辞書が見つかったときに、次いで前記第３のセッションＩＤを前記第２のセッションＩＤとして含む前記第２のデータブロックを準備するために前記見つかった永久辞書を複製すること
を含み、
第４のステップが、
前記第２の使用カウンタに基づいて効率パラメータを入手すること
を含み、
第５のステップが、
前記効率パラメータを評価することで、前記セッション辞書が前記永久辞書ストアに記憶されるべきかを識別すること
を含む、
請求項１に記載のデータ圧縮方法。
【請求項４】
前記第４のステップ及び前記第５のステップが、前記第２の使用カウンタが変更されるたびに前記セッション中に連続的に実施される、
請求項３に記載のデータ圧縮方法。
【請求項５】
前記第４のステップ及び前記第５のステップが、前記第２の使用カウンタが変更されるたびに、及び前記セッションを停止するときにも、前記セッション中に連続的に実施される、
請求項３に記載のデータ圧縮方法。
【請求項６】
前記第２の使用カウンタが、非圧縮バイトの数のためのカウンタ、及び圧縮バイトの数のためのカウンタを含み、
前記第４のステップが、
前記非圧縮バイト及び前記圧縮バイトを入手すること
を含み、
前記第５のステップが、
非圧縮バイトの数が第１の所定の条件σを満たすのか、それとも圧縮バイトの数が第１の所定の条件σを満たすのかをチェックすることと、
を含み、
結果が否定的である場合、
前記セッション辞書は前記永久辞書ストアに記憶されない、
請求項３に記載のデータ圧縮方法。
【請求項７】
前記第２の使用カウンタが非圧縮バイトの数のためのカウンタ及び圧縮バイトの数のためのカウンタを含み、
前記第４のステップが、
前記効率パラメータを得るために前記圧縮バイトと前記非圧縮バイトとの比率を示す圧縮率を計算すること
を含み、
前記第５のステップが、
前記圧縮率が第２の所定の条件βを満たすかどうかをチェックすることと、
を含み、
結果が肯定的である場合、
前記セッション辞書は前記永久辞書ストアに記憶される、
請求項５に記載のデータ圧縮方法。
【請求項８】
前記第４のステップが、
前記効率パラメータを得るために以前に計算された圧縮率と現在の圧縮率との間の比率変化を計算すること
を含み、
前記第５のステップが、
前記比率変化が第３の所定の条件γを満たすかどうかをチェックすることと、
を含み、
結果が肯定的である場合、
前記セッション辞書は前記永久辞書ストアに記憶される、
請求項７に記載のデータ圧縮方法。
【請求項９】
前記第４のステップが、
前記効率パラメータを得るために、以前に計算された比率変化と現在の比率変化の間の比率変化の程度を計算すること
を含み、
前記第５のステップが、
前記比率変化の程度が第４の所定の条件δを満たすかどうかをチェックすること、
を含み、
結果が肯定的である場合、
前記セッション辞書は前記永久辞書ストアに記憶される、
請求項８に記載のデータ圧縮方法。
【請求項１０】
前記第５のステップが、
前記第１の使用カウンタに基づいた計算、並びに第１のセッションＩＤ及び第２のセッションＩＤが同一である前記第１のデータブロック及び前記第２のデータブロックに属する前記第２の使用カウンタに基づいた計算の結果を比較すること
を含む、
請求項３に記載のデータ圧縮方法。
【請求項１１】
送信機ゲートウェイ、受信機ゲートウェイ、及び前記受信機ゲートウェイと前記受信機ゲートウェイとの間のネットワーク
を備えるシステムによって実施されるデータ圧縮方法であって、
前記第１、第２、第３、第４、及び第５のステップが前記送信機ゲートウェイによって実行され、前記送信機ゲートウェイが前記選択された永久辞書の識別子を前記受信機ゲートウェイに送信し、
前記受信機ゲートウェイが、
前記選択された永久辞書の前記識別子の受信するための第６のステップと、
前記識別子に基づいて受信機永久辞書ストアに記憶される複数の受信機永久辞書のうち１つの辞書を選択し、受信機一時セッションメモリで受信機セッション辞書を準備するために前記選択された受信機永久辞書を複製するための第７のステップと、
前記受信機セッション辞書を使用することで受信されたデータを解凍するための第８のステップと、
前記受信機セッション辞書の効率を評価するための第９のステップと、
前記受信機セッション辞書が前記受信機永久辞書として前記受信機永久辞書ストアに記憶されるべきかどうかを、前記効率に基づいて識別するための第１０のステップと、
を含む、請求項１に記載のデータ圧縮方法。
【請求項１２】
前記第３のステップで、前記セッション辞書に基づいたトークンが送信され、前記方法がさらに、
前記転送データを圧縮するために前記セッション辞書の必要な部分を指定することと、
前記トークンの置換で使用される制限トークンのサイズを計算することと、
前記制限トークン及び前記トークンのサイズを比較することと、
前記制限トークンのサイズが前記トークンのサイズよりも小さい場合、前記送信機ゲートウェイが前記受信機ゲートウェイに前記制限トークンを送信する、
請求項１１に記載のデータ圧縮方法。
【請求項１３】
プロセッサ、メモリ、及びネットワークに結合されたインタフェースを備えるデータ転送のためのゲートウェイであって、
セッションのセットアップ時、前記プロセッサが前記セッションに関するネットワークパラメータに基づいて、前記メモリの永久ストアで多数の圧縮辞書の中から１つを選択し、
前記プロセッサは、セッション辞書として前記メモリのセッションストアに前記選択された圧縮辞書をコピーし、
前記プロセッサは、前記セッション辞書及び前記セッション辞書に相当する使用カウンタを更新しつつ、前記セッション辞書で前記セッションのトラフィックを圧縮し、
前記プロセッサは、前記セッション辞書の前記使用カウンタに基づいて、前記永久ストアに前記セッション辞書を記憶するかどうかの決定を下す、
ゲートウェイ。
【請求項１４】
前記使用カウンタが前記トラフィックの非圧縮バイトの数及び圧縮バイトの数を示し、
前記プロセッサが非圧縮バイトの数及び圧縮バイトの数の少なくとも１つに基づいて前記決定を下す、
請求項１３に記載のゲートウェイ。
【請求項１５】
前記プロセッサが、前記使用カウンタに基づいて圧縮率を計算し、前記圧縮率に基づいて前記決定を下す、
請求項１４に記載のゲートウェイ。
【請求項１６】
送信機装置から受信機装置にデータを転送し、セッション辞書を使用することで前記データを圧縮するためのデータ送信システムであって、
プロセッサ及びメモリを備える前記送信機装置であって、
前記メモリは、第１のデータベース及び第２のデータベースを含み、前記第１のデータベースは、永久辞書及び前記永久辞書の効率パラメータの複数の組合せを記憶し、
前記プロセッサは、前記データに基づいて前記第１のデータベースの１つの永久辞書を選択し、前記セッション辞書として前記第２のデータベースに前記選択された永久辞書のコピーを作成し、
前記プロセッサは、前記セッション辞書を使用することで前記データを圧縮し、
前記プロセッサは、前記セッション辞書を修正し、前記セッション辞書の前記効率パラメータを監視し、
前記プロセッサは、前記永久辞書及び前記セッション辞書の前記効率パラメータに基づいて、前記永久辞書が前記セッション辞書によって上書きされるべきかどうかを判断する、
前記送信機装置
を備える、データ送信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ送信システム、特にデータ圧縮を用いるセンサデータ送信システムに関する。より詳細には、本発明は、送信されるモノのインターネット（ＩｏＴ）／センサデータの量が利用可能な帯域幅の制約を理由に削減されなければならず、データ量を削減するために共通データ圧縮方法が使用される、制限された計算リソース及びメモリリソースを有するＩｏＴ／センサデータ送信ゲートウェイに関する。
【背景技術】
【０００２】
安価で相互接続されたセンサ及びモノのインターネット（ＩｏＴ）における増加するマシン対マシン（Ｍ２Ｍ）通信を組み合わせると、多くの場合すべてが単一又はいくつかのリモートサイトにデータを送信するデータソースがきわめて集中した量となるＩｏＴアダプタに対する通信ニーズの変化、及び、センサデータの送信に関するリアルタイム又は疑似リアルタイムの制約に起因するかかるＩｏＴ配備に対する通信ニーズの変化、の両方が生じる。
【０００３】
遠隔地域でのＩｏＴ配備の場合、多くの場合、次善のインターネット接続性しか利用できず、少なくともかかる配備の有効性を制限する。初期費用及び維持費の総額を低く抑えるためだけではなく、リモートアップリンクへの高額な投資を回避するためにも、利用できるネットワークリンクの活用は最適化しなければならない。
【０００４】
ＩｏＴ／センサデータは概して固定されたデータ構造及び変化する値を含み、単一のセンサは多くの場合異なるデータ構造の制限された量のみを含んだデータを生じさせる。データ送信は１つの単一センサのデータを含むか、複数のセンサのデータを結合する。したがって、単一センサのデータストリームは多くの場合、大量の反復及び複数のセンサからのデータを結合するＩｏＴ／センサデータストリームを含む。したがって、冗長性を削減する重複排除機構は、送信中のデータの量を削減する上で効果的である。
【０００５】
辞書圧縮は、反復パターンが辞書状のデータ構造に記憶され、辞書に対するポインタのみがネットワークを介して送信される１つの重複排除機構である。辞書に対するポインタが、該ポインタが指すパターンよりも小さい場合、送信されるデータ量を削減できる。
【０００６】
類似する辞書は、送信機側と受信機側の両方で使用されなければならない。これは概して両側で類似する辞書作成アルゴリズムを実行することで達成される。複数の辞書が存在する場合、使用のためにある辞書が選択されなければならず、選択は同期して実行されなければならない。選択は、ＩＰアドレス又はポート番号等のネットワークヘッダ情報、又はデータ自体の任意の統計的な属性のどちらかを使用し、その情報を選択元の辞書とともに記憶された情報と比較することで行われる。同期選択は両側で同じ選択機構を適用することで、又は最初に送信側で選択し、任意の形のマーカー若しくは識別子を送信することで該選択の決定を受信側に信号で知らせることによって実行される。
【０００７】
送信されるデータが大体既知である場合、固定辞書が送信機側と受信機側の両方で準備でき、これらの準備された辞書に存在するデータストリームのパターンのみが圧縮される。静的なコンテンツに対しては高圧縮効率に達することができる一方、動的なコンテンツは全体的な圧縮効率の減少を引き起こす。動的なコンテンツは、入力データに適応する動的辞書を使用することで対処できる。
【０００８】
単純な変形は、空の辞書から開始し、辞書の有限サイズに達するまで新しいパターンを連続して挿入することである。新規に追加されるパターンは受信機側に非ポインタとして送信されなければならない。これにより概して、辞書が十分な数の反復入力パターンを含むまでデータ圧縮の効率は削減される。この辞書生成段階の間の効率を改善するために、辞書は事前に初期設定可能である。
【０００９】
例えば非特許文献１で参照されるＬｅｍｐｅｌ−Ｚｉｖ−Ｗｅｌｃｈ（ＬＺＷ）圧縮アルゴリズムでは、辞書は入力英字のすべての単一文字で事前に初期化される。また、辞書が予想されるパターンで事前に圧縮されるが、動的にも更新されるハイブリッド機構も存在する。参照された特許参考文献１は、所定の辞書及び識別子並びに動的に作成された辞書及び識別子の両方とも使用されるが、一度作成された辞書は更新されず、したがって例えば変更された入力データに関して辞書の最適化を可能にしない機構を説明している。参照される特許文献２は、所定の通信ノードに／から送信される／受信されるデータの圧縮／拡張情報を決定する通信装置を説明している。所定の通信ノードからデータを受信すると、装置は所定の通信ノードに/から送信される／受信されるデータのために使用される複数の圧縮／拡張情報に基づいて受信されたデータの圧縮率を計算し、計算したデータ圧縮率に基づいて圧縮／拡張情報を決定する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国第７，９５３，８８１号「Ｎｅｔｗｏｒｋ  ｃｈａｒａｃｔｅｒｉｓｔｉｃ−ｂａｓｅｄ  ｃｏｍｐｒｅｓｓｉｏｎ  ｏｆ  ｎｅｔｗｏｒｋ  ｔｒａｆｆｉｃ“、Ｊｕｐｉｔｅｒ  Ｎｅｔｗｏｒｋｓ、２０１１年
【特許文献２】日本公開特許第２０１５−０４３５０２号
【非特許文献】
【００１１】
【非特許文献１】「Ｔｅｃｈｎｉｑｕｅ  ｆｏｒ  Ｈｉｇｈ−Ｐｅｒｆｏｒｍａｎｃｅ  Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ」、Ｗｅｌｃｈ，Ｔ．Ａ，ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ、１９８４年
【発明の概要】
【発明が解決しようとする課題】
【００１２】
辞書のサイズは有限であり、任意の一回に含まれるエントリの数を制限する。ネットワークを介して送信される辞書ポインタのサイズ、いわゆるトークンも辞書の最大サイズによって制限される。一般的に、トークンサイズは、辞書の最大サイズまで辞書に含まれるアイテムの数とともに継続して大きくなる。例えば大量の辞書を活用し、大量のデータを符号化するとき等、辞書エントリの活用が辞書全体を通して均等に分散される場合、大きいトークンサイズのオーバヘッドは、辞書ポインタで符号化できる大量のパターンによってバランスを保たれる。
【００１３】
しかしながら、ＩｏＴ／センサデータ送信では、多くの場合、全体的な辞書のうち非常に少量のみを活用して非常に少量のデータ、いわゆるショートパケットが送信されなければならない。これにより、辞書ポインタのオーバヘッドは圧縮率にマイナス影響を及ぼし、圧縮効率の削減を引き起こす。解決策は辞書の最大サイズを削減することであるが、これは辞書の適用性を非常に狭くさせ、最新の送信のデータのみ又は複数のセンサからの送信の場合には、共通パターンの圧縮のみのどちらかに集中し、圧縮の全体的な効率を削減する。
【００１４】
複数の動的辞書を使用する辞書圧縮機構の再利用可能な動的辞書は、最初に作成された後は更新されないか、又は経時的な圧縮効率を考慮せずに無条件で更新され、事実上非効率で静的な辞書又はきわめて時間に特有な辞書になる。これにより、特に入力データのさまざまなパターンが経時的に変化するときに圧縮の効率が削減される。
【００１５】
本発明はＩｏＴ／センサデータ送信の圧縮効率を改善することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の一つの態様は、セッション辞書を使用することで転送データ圧縮を用いるデータ送信システムのためのデータ圧縮方法である。この方法は、
永久辞書ストアに複数の永久辞書を準備するための第１のステップと、
複数の永久辞書のうち１つの辞書を選択し、一時セッションメモリでセッション辞書を準備するために選択した永久辞書を複製するための第２のステップと、
セッション辞書を使用することで転送されるデータを圧縮するための第３のステップと、
セッション辞書の効率を評価するための第４のステップと、
セッション辞書が永久辞書として永久辞書ストアに記憶されるべきかどうかを、効率に基づいて識別するための第５のステップとを含む。より好ましくは、第２のステップはセッションをセットアップするときに実施され、第３のステップはセッション中に実施され、一時セッションメモリでセッション辞書を修正するためのステップを含む。そして、第４のステップ及び第５のステップはセッション中に繰り返し実施される。
【００１７】
本発明の別の態様は、プロセッサ、メモリ、及びネットワークに結合されたインタフェースを含むデータ転送のためのゲートウェイである。セッションセットアップ時、プロセッサが、セッションに関するネットワークパラメータに基づいて、メモリの永久辞書ストアの多数の圧縮辞書の中から１つを選択する。プロセッサは、選択した圧縮辞書をセッション辞書としてメモリのセッションストアにコピーする。プロセッサは、セッション辞書及びセッション辞書に対応する使用カウンタを更新しつつ、セッション辞書でセッションのデータトラフィックを圧縮する。プロセッサは、セッション辞書の使用カウンタに基づいて、永久辞書ストアにセッション辞書を記憶するかどうか決定を下す。
【００１８】
本発明の別の態様は、セッション辞書を使用し、データを圧縮することで送信機装置から受信機装置へデータを転送するためのデータ送信システムである。送信機装置はプロセッサ及びメモリを含む。メモリは、第１のデータベース及び第２のデータベースを含み、第１のデータベースは、永久辞書及び永久辞書の効率パラメータの複数の組合せを記憶する。プロセッサは、データに基づいて第１のデータベースで１つの永久辞書を選択し、セッション辞書として第２のデータベースで選択した永久辞書のコピーを作成する。プロセッサは、セッション辞書を使用することでデータを圧縮し、プロセッサはセッション辞書を修正し、セッション辞書の効率パラメータを監視し、更新する。プロセッサは、永久辞書及びセッション辞書の効率パラメータに基づいて、永久辞書がセッション辞書によって上書きされるべきかどうかを判断する。
【発明の効果】
【００１９】
本発明は、ＩｏＴ／センサデータの送信のための圧縮効率を改善できる。
【図面の簡単な説明】
【００２０】
【図１】本実施例に関係する環境及びその相互に作用する構成要素の概要を示す構成要素ブロック図である。
【図２】本実施例に関係する機能構成要素を示すブロック図である。
【図３】本実施例の辞書再利用動作に関する構成要素及びその相互作用の概要を示す図である。
【図４】本実施例のトークンサイズ短縮動作に関する構成要素及びその相互作用の概要を示す図である。
【図５】本実施例のハードウェア構成要素を示すブロック図である。
【図６】本実施例の辞書再利用動作を示すシーケンス図である。
【図７】本実施例の辞書再利用動作のプログラムフローを示す図である。
【図８】一時セッションメモリを示すスキーマである。
【図９】一時セッションメモリスキーマのための関係図である。
【図１０】セッション識別子を示すスキーマである。
【図１１】セッション辞書を示すスキーマである。
【図１２】セッション使用カウンタを示すスキーマである。
【図１３】辞書ＩＤ  ＴＣＰオプションを示すスキーマである。
【図１４】永久辞書ストアを示すスキーマである。
【図１５】永久辞書ストアスキーマの関係図である。
【図１６】記憶済みセッション識別子を示すスキーマである。
【図１７】記憶済み辞書を示すスキーマである。
【図１８】記憶済み使用カウンタ使用カウンタを示すスキーマである。
【図１９】基準として一般辞書エンコーダを示すプログラムフローを示す図である。
【図２０】基準として一般辞書デコーダを示すプログラムフローを示す図である。
【図２１】本実施例の辞書再利用動作に関して連続辞書性能評価を実行する使用カウンタマネージャを示すプログラムフローを示す図である。
【図２２】本実施例の辞書再利用動作に関してデータ多様性及び辞書パターンに関する辞書の効率の異なる段階を示す辞書効率グラフである。
【図２３】本実施例の辞書再利用動作に関して記憶する又は更新する前の辞書使用検討のプログラムフローを示す図である。
【図２４】本実施例の辞書再利用動作に関して新規辞書を記憶する前の辞書性能検討のプログラムフローを示す図である。
【図２５】本実施例の辞書再利用動作に関して既存の辞書の更新の前の辞書性能比較のプログラムフローを示す図である。
【図２６】本実施例のトークン短縮動作を示すシーケンス図である。
【図２７】本実施例のトークンサイズ短縮動作に関して送信機側のＩｏＴゲートウェイでの符号化を示すプログラムフローを示す図である。
【図２８】本実施例のトークンサイズ短縮動作に関して制限辞書トークンサイズの計算を示すプログラムフローを示す図である。
【図２９】辞書エントリＩＤリストを示すスキーマである。
【図３０】制限辞書トークンを示すスキーマである。
【図３１】本実施例のトークンサイズ短縮動作に関して受信機側のＩｏＴゲートウェイでの復号を示すプログラムフローを示す図である。
【発明を実施するための形態】
【００２１】
実施例は、２つの動作、つまり辞書再利用に関する第１の最適化動作及びトークンサイズに関する第２の最適化動作から成る。両方の動作は同時に利用されるが、該動作は理解を容易にするために別々に説明される。短い概要の後、より詳細な説明が続く。
【００２２】
第１の最適化動作では、辞書圧縮効率測定が実行され、一時的なセッション辞書の記憶は辞書の圧縮効率に関する条件に結びつけられ、記憶済み辞書及び再利用可能な辞書の連続的な最適化を可能にする。
【００２３】
圧縮効率は概して使用される辞書で利用可能な反復パターンの量に関係する。辞書の再利用は圧縮が効率的になるまでの時間を短縮するが、辞書は概して圧縮されている入力データとともに発展し、したがって辞書の効率も変化している。本実施例を用いると、再利用に利用可能な辞書の効率が最適化され、一般辞書再利用の効率をさらに改善する。
【００２４】
第２の最適化動作では、符号化されたトークンの長さは、入力データの有限ブロックを符号化するときに実際に使用される辞書エントリの範囲のみを表すために削減される。概して、トークンは、使用されている辞書エントリの部分集合が小さくなるほど、より非効率になる辞書の任意のエントリを表すことがある。特に、センサデータ送信はデータの小さいバーストから成り、したがってトークンの範囲を制限するときに圧縮効率改善を可能にする。
【００２５】
本実施例では、符号化は３つのステップで実行され、第１に使用されている辞書エントリのリストが生成され、第２のステップで、リストは制限範囲及び制限トークンサイズを計算するために使用され、第３のステップで、制限トークンサイズを有するトークンが、以前に生成されたリストを使用して生成される。
【００２６】
本実施態様のより詳細な開示が続く。第１に、本実施態様の環境が図１を使用し、説明される。続いて、本実施例に関係する機能ブロックの構成要素が、図２を使用し、説明される。続いて、本実施例の一般的な動作のモードが説明される。この説明は、図３を使用する辞書再利用に関係する動作のモードの第１の説明、及び図４を使用するトークン短縮に関係する第２の説明に分けられる。
【００２７】
図１は、本実施例の環境を示している。ＩｏＴ装置＃１  １００ａ、＃２  １００ｂ等は送信機側のローカルエリアネットワーク（ＬＡＮ）３００ａを介して送信機側のＩｏＴゲートウェイ５００ａに接続される。送信機側のＩｏＴゲートウェイ５００ａは、おそらくデータを変換し、接続されたＩｏＴ装置から１つ又は複数の遠隔受信機側のＩｏＴゲートウェイ５００ｂにデータを効率的に転送し、該１つ又は複数の遠隔受信機側のＩｏＴゲートウェイ５００ｂは入信データをおそらく再変換し、受信機側のＬＡＮ３００ｂを介して以下の受信機♯１  ２００ａ、＃２  ２００ｂ等に入信データを転送する。
【００２８】
ＩｏＴゲートウェイ５００ａ、５００ｂは、本実施例に関して、それぞれ機能ブロック６００ａ及び６００ｂをそれぞれ利用する。例示的に、ＩｏＴ装置＃１  １００と送信機側のＩｏＴゲートウェイ５００ａとの間のメッセージ送信１５０ａ、及びＩｏＴ装置＃２  １００ｂと送信機側のＩｏＴゲートウェイ５００ａとの間のメッセージ送信１５０ｂが示される。ＩｏＴ装置＃１  １００ａはヘッダ４０２ａ及びペイロード４０４ａを有するメッセージ＃１  ４００ａを送信し、ＩｏＴ装置＃２  １００ｂはヘッダ４０２ｂ及びペイロード４０４ｂを有するメッセージ＃２  ４００ｂを送信する。２つのＩｏＴゲートウェイ５００ａ、５００ｂの間のメッセージは広域ネットワーク（ＷＡＮ）３２０を介して送信される。
【００２９】
図２は、異なる構成要素間の関係するデータフロー、制御データフロー、及び情報アクセスフローだけではなく本実施例の機能ブロック６００の構成要素も示す。
【００３０】
以下の機能構成要素、つまりおそらくは永久辞書ストアの記憶されているデータを再利用し、異なるＴＣＰセッションの入力データに関して既存の一時セッションメモリブロックを選択又は新規一時セッションメモリブロックを作成し、（図２４及び図２５に示されるサブフローを含んだ）図７、図２３、及び図２６に示される関係するプログラムフローで、一時セッションメモリから永久辞書ストアにデータを記憶することを検討し、おそらく実行するセッションハンドラ１６００と、（図２８に示されるサブフローを含んだ）図１９及び図２０に示される関係するプログラムフローで、未処理の入力データを圧縮し、トークンを放出するトークンエンコーダ１７００と、図２０及び図３２に示される関係するプログラムフローで、トークン入力データを解凍し、解凍された未処理出力データを放出するトークンデコーダ１７１０と、図２１に示される関係するプログラムフローで、辞書効率を周期的に計算する使用カウンタ（Ｃｔｒ．）マネージャ１５００とは、機能ブロックの一部である。
【００３１】
以下のデータ構造、つまりそれぞれがセッションＩＤ１１１０ａ、使用カウンタ１１３０ａ、及び辞書１１２０ａを含むおそらく１つ又は複数の永久辞書ストアブロック１１０５ａを含む永久辞書ストア１１００と、それぞれがセッションＩＤ１０１０ａ、使用カウンタ１０３０ａ、辞書１０２０ａ、及び辞書エントリＩＤリスト１０４０ａを含むおそらく１つ又は複数の一時セッションメモリブロック１００５ａを含む一時セッションメモリ１０００は、機能ブロックの一部である。
【００３２】
データフロー、制御データフロー、及び情報アクセスフローは、セッションハンドラ１６００によって受信される入力ネットワークデータ４００ｃを使用して説明され、セッションハンドラ１６００はその後一時セッションメモリ１０００にアクセスして、受信されたネットワークデータのヘッダ情報に関係する既存の一時セッションメモリブロックをおそらく選択する。一時セッションメモリブロックが見つからない場合、永久辞書ストアがアクセスされて、新規一時セッションメモリブロックを作成するときに再利用するために以前に記憶された永久辞書ストアブロックをおそらく選択する。記憶済み辞書が見つからない場合、一時セッションメモリが再びアクセスされて、新規一時セッションメモリブロックを作成する。
【００３３】
次いで、受信されたネットワークデータは、送信機側である場合はトークンエンコーダ１７００、又は受信機側である場合はトークンデコーダ１７１０のどちらかに転送される。例えば、現在のセッションのセッションＩＤ等の関係する制御情報は、同様の方法で転送される。トークンエンコーダ１７００は一時セッションメモリにアクセスして、セッション辞書及び辞書エントリＩＤリストを活用し、受信されたデータをトークンに符号化する。トークンはその後放出され、出力ネットワークデータ４５０ａとして送信され、関係する使用制御情報は使用カウンタマネージャ１５００に転送される。トークンデコーダ１７１０は一時セッションメモリにアクセスして、セッション辞書を活用しながら、受信されたデータのトークンをその元のデータに復号する。元のデータはその後放出され、出力ネットワークデータ４５０ａとして送信され、関係する使用制御情報は使用カウンタマネージャ１５００に転送される。
【００３４】
使用カウンタマネージャ１５００は、関係する一時セッションメモリブロックで使用カウンタにアクセスして、関係するカウンタを更新する。結果的に生じる情報はセッションハンドラ１６００に制御データとして転送され、セッションハンドラ１６００はその後、一時セッションメモリブロックの使用カウンタ１０３０ａを、永久辞書ストアブロックの使用カウンタ１１３０とおそらく比較して、関係する一時セッションメモリブロックが永久辞書ストアに記憶されるべきかどうかを検討できる。
【００３５】
図３及び図４は、送信機側と受信機側両方の構成要素、並びにデータフロー、制御データフロー、及び情報アクセスフローを示す特定の実施例に関係する図２のブロック図の変形例である。図３は実施例１に関係する辞書再利用動作を示し、図４は実施例３に関係するトークンサイズ最適化動作を示している。どちらの図もそのそれぞれの実施例でより詳細に説明される。
【実施例１】
【００３６】
実施例１の説明のために、以下の図、つまり図３及び図５〜図２５が使用される。
【００３７】
図３は、データが送信機側ゲートウェイで受信され、符号化され、ＷＡＮを介して送信され、受信機側ゲートウェイによって受信され、復号されるときの構成要素及び構成要素間のデータフローを説明する、本実施例の辞書再利用動作のブロックチャートである。
【００３８】
図５は、ハードウェア構成要素ブロック及び本実施例を実現するための該ハードウェア構成要素ブロックの相互接続を示す。
【００３９】
図６は、本実施例の一般的な動作を示すシーケンス図である。
【００４０】
図７は、ネットワークからの新規セッション要求が届くたびにセッションハンドラ１６００で実行される、本実施例の辞書再利用動作に関係する動作の開始のプログラムフローを示すプログラムフロー図である。
【００４１】
図８は、本実施例に関係する現在継続中の動作に関係するデータを記憶するために使用される、一時セッションメモリ１０００のデータフィールドを示すデータスキーマである。
【００４２】
図９は、他のスキーマのどのデータフィールドが図８の一時セッションメモリスキーマ１０００によって参照されるのかを示すデータ関係図である。
【００４３】
図１０は、受信されたデータパケットのネットワークヘッダからの情報を比較することで、図８の一時セッションメモリのセッションを選択するときに使用される、セッション識別子のデータフィールドを示すデータスキーマである。
【００４４】
図１１は、データの圧縮及び解凍のために使用される、セッション辞書のデータフィールドを示すデータスキーマである。
【００４５】
図１２は、図８の各一時セッションメモリに関係するセッション使用カウンタ情報を示すデータスキーマである。
【００４６】
図１３は、例えば永久辞書ストアからの記憶済み辞書が選択された後に、両方のゲートウェイでの選択された辞書の存在を検証するためにゲートウェイ間で辞書ＩＤを送信するときに使用される辞書ＩＤ  ＴＣＰオプションのデータフィールドを示すデータスキーマである。
【００４７】
図１４は、後の再利用のために記憶される辞書に関係するデータを記憶するために使用される、データフィールド永久辞書ストア１１００を示すデータスキーマである。
【００４８】
図１５は、他のスキーマのどのデータフィールドが図１４の永久辞書ストアによって参照されるのかを示す、データ関係図である。
【００４９】
図１６は、例えば図７のプログラムフローに示されるように、辞書再利用動作に関係する動作の開始中に図１４の永久辞書ストアから記憶済み辞書を検索するときに使用される、記憶済みセッション識別子のデータフィールドを示すデータスキーマである。
【００５０】
図１７は、新規セッションの始まりで記憶済み辞書を再利用するときに使用される、記憶済み辞書のデータフィールドを示す、データスキーマである。
【００５１】
図１８は、図１４の各永久辞書に関係する使用情報を含む、記憶済み使用カウンタのデータフィールドを示すデータスキーマである。
【００５２】
図１９は、ＷＡＮを介する追加の送信のために入力センサデータを圧縮するために、送信機側トークンエンコーダ１７００で実行される、簡略化された符号化動作のプログラムフローを示すプログラムフロー図である。
【００５３】
図２０は、ＷＡＮからの圧縮データを解凍するために、受信機側トークンデコーダ１７１０で実行される、簡略化された復号動作のプログラムフローを示すプログラムフロー図である。
【００５４】
図２１は、送信機側ゲートウェイ及び受信機側ゲートウェイ両方のカウンタマネージャ１５００で実行される使用カウンタ管理動作のプログラムフローを示す、プログラムフロー図である。
【００５５】
図２２は、図１２の関係するセッション使用カウンタとともに経時的に説明される、セッション辞書の例示的な辞書効率グラフを示す折れ線グラフである。
【００５６】
図２３は、一時セッションメモリ１０００から永久辞書ストア１１００の中へのセッション辞書の記憶を検討し、おそらく実行するために、送信機側と受信機側の両方のセッションハンドラ１７００で実行される、辞書再利用チェック動作のプログラムフローを示す、プログラムフロー図である。
【００５７】
図２４は、セッション辞書を評価して記憶することを検討するために、図２３のプログラムフローのサブフローとして実行される、辞書チェック動作のプログラムフローを示すプログラムフロー図である。
【００５８】
図２５は、記憶するために検討される一時セッションメモリ１０００のセッション辞書、及び永久辞書ストア１１００の以前に記憶された辞書を比較して、以前に記憶された辞書が上書きされるべきか、それともセッション辞書が削除されるべきかを決定するために、図２３のプログラムフローのサブフローとして実行される辞書比較動作のプログラムフローを示す、プログラムフロー図である。
【００５９】
図３は、本実施例の機能構成要素及びデータフローを示す。この図では、入力データが送信機側ゲートウェイによって受信され、符号化され、ＷＡＮを介して受信機側ゲートウェイに送信され、再び復号されるときの本実施例の構成要素及びデータフローが示される。
【００６０】
図３は図２の機能ブロック図に類似しているが、送信機側と受信機側の両方が示され、辞書エントリＩＤリスト１０４０ａは、本実施例に関連していないために省略される。ヘッダ４０２ｃ及びペイロード４０４ｃを含むネットワークメッセージ４００ｄは送信機側のセッションハンドラ１６００ａによって受信され、セッションハンドラ１６００ａは永久辞書ストア１１００ａ及び一時セッションメモリ１０００ａの情報にアクセスして、ヘッダ４０２ｃからの情報を活用し、おそらく永久辞書ストア１１００ａからの以前に記憶されたデータを使用し、次いでデータと関係制御情報の両方をペイロード４０４ｄの実際の符号化が起こるトークンエンコーダ１７００ａに送信し、一時セッションメモリストア１０００ａの関係する一時セッションメモリ１００５ｂからの情報にアクセスし、トークンを放出しながら、既存の一時セッションを選択するか新規の一時セッションを作成する。
【００６１】
トークンは次いで、トークンメッセージ４５０ｂのペイロード４５４ａとして放出及び送信され、関係する制御情報は、関係する一時セッションメモリ１００５ｂのセッション使用カウンタ１０３０ｂにアクセスする使用カウンタマネージャ１５００ａに送信される。使用カウンタの結果は次いでセッションハンドラ１６００ａに制御情報として返送されて、一時セッションメモリの記憶の検討を可能にする。
【００６２】
トークンメッセージ４５０ｂはＷＡＮ３２０ａを介して送信され、受信機側セッションハンドラ１６００ｂによって受信され、受信機側セッションハンドラ１６００ｂは永久辞書ストア１１００ｂ及び一時セッションメモリ１０００ｂからの情報にアクセスして、送信機側と同様の方法で既存の一時セッションを選択する、又は新規一時セッションを作成する。
【００６３】
データ及び関係する制御情報は次いでトークンデコーダ１７１０ａに転送され、トークンデコーダ１７１０ａは、一時セッションメモリ１００５ｃからの関係する情報にアクセスしつつ、トークンメッセージ４５０ｂのペイロード４５４ａを復号する。結果的に生じる復号されたデータは、次いで受信機側の発信メッセージ４７０ａで送信され、関係する制御情報は使用カウンタマネージャ１５００ｂに送信され、使用カウンタマネージャ１５００ｂは関係する一時セッションメモリ１００５ｃの情報にアクセスし、セッションハンドラ１６００ｂに制御情報を送り返し、セッションハンドラ１６００ｂはその後一時セッションメモリの記憶を検討する。
【００６４】
図３に示される異なる構成要素間の協調及びデータ送信の効果は、永久辞書ストアへの一時セッション辞書の記憶と、２つのゲートウェイ間でデータのきわめて効率的な辞書の圧縮を可能にするための送信機側ゲートウェイ及び受信機側ゲートウェイの両方でのかかる記憶済み辞書の以後の同期された再利用とにある。
【００６５】
図５は、ハードウェア構成要素ブロック及び本実施例を実現するための該ハードウェア構成要素ブロックの相互接続を示す。実施例１の展開は図１に示される展開と類似することがある。ＩｏＴゲートウェイ５００は、図５に示される構成要素１８００、つまりいずれもメッセージングバス１８１０に接続される中央演算処理装置（ＣＰＵ）１８２０、一次メモリ１８３０、二次メモリ１８４０、第１のネットワークインタフェースカード（ＮＩＣ）１８５０ａ及び第２のＮＩＣ１８５０ｂを含んでよい。
【００６６】
本実施例の機能ブロック６００は、二次メモリ１８４０のプログラム命令の形で記憶され、初期化時に一次メモリ１８３０にコピーされ、ＣＰＵ１８２０によって処理される。ＩｏＴ装置とＩｏＴゲートウェイとの間のネットワーク通信は第１のＮＩＣ１８５０ａを使用して実行されてよく、該ＩｏＴゲートウェイと別のＩｏＴゲートウェイとの間のネットワーク通信は、第２のＮＩＣ１８５０ｂを使用して実行されてよい。構成要素１８００は、実施例の適用性を制限せずに変更することがある最小の構成を示す。１つの標準的な実施例によると、ＣＰＵ１８２０は、本実施例に説明される機能を実施するためにメモリ１８３０又は１８４０に記憶されたプログラムを実行する。ＣＰＵの代わりにＦＰＧＡ（フィールドプログラマブルゲートアレイ）又はＡＳＩＣ（特定用途向け集積回路）を使用することも可能である。
【００６７】
図６は、実施例１に関するイベントの一般的なシーケンスを示す。ＩｏＴ装置１００ｃはセッション初期化要求７０１０を送信機ＩｏＴゲートウェイ５００ｇに送信する。ＩｏＴ装置１００ｃ自体は本実施例の一部ではない。送信機ＩｏＴゲートウェイ５００ｇは初期化要求７０１０のネットワークヘッダ情報に基づいて、任意のセッション処理ブロック７０２０ａを作成し、４５００ａでセッションＩＤを生成する。
【００６８】
その後、送信機ＩｏＴゲートウェイ５００ｇは、以前に作成されたセッションＩＤにとって適切な辞書を用いて、４６００ａでセッション中の使用のために恒久的に記憶された辞書を検索し、選択する。送信機ＩｏＴゲートウェイ５００ｇは次いで４１１０ａで受信機ＩｏＴゲートウェイ５００ｈに、以前に選択されたセッション辞書の辞書ＩＤを含む初期化要求を送信する。
【００６９】
受信機ＩｏＴゲートウェイ５００は、初期化要求４１１０ａのネットワークヘッダ情報に基づいて任意のセッション処理ブロック７０２０ｂを作成し、４５００ｂでセッションＩＤを生成する。続いて、受信機ＩｏＴゲートウェイ５００は、４１１０ｂで受信された辞書ＩＤを有し、４５００ｂで計算されたセッションＩＤにとって適切な辞書で、４６００ｂでセッション中に使用するための恒久的に記憶された辞書を検索し、その後選択する。かかる辞書が見つかると、セッション辞書として使用される。
【００７０】
受信機ＩｏＴゲートウェイ５００ｈは次いで、７０１４で要求を肯定応答する受信機２００ｃにセッション初期化要求７０１２を送信する。７０３０で、受信機ＩｏＴゲートウェイ５００ｈは送信機ＩｏＴゲートウェイ５００ｇにセッション辞書の辞書ＩＤを含む肯定応答を返し、送信機ＩｏＴゲートウェイ５００ｇは同様に７０４０でＩｏＴ装置１００ｃにセッション初期化要求を肯定応答する。このとき、送信機ＩｏＴゲートウェイ５００ｇと受信機ＩｏＴゲートウェイ５００ｈのどちらも、データを符号化及び復号時にさらに使用するために同じセッション辞書を選択していた。７０５０で、ＩｏＴ装置１００ｃは、４３００ａで送信機ＩｏＴゲートウェイ５００ｇで以前に選択されたセッション辞書を使用して符号化されるセンサデータを送信し、符号化されたデータを含むトークンメッセージが７０６０で転送される。
【００７１】
受信機ＩｏＴゲートウェイ５００ｈは、４４００ａで以前に選択されたセッション辞書を使用して受信されたデータを復号し、７０７０で受信機２００ｃに復号されたデータを転送する。
【００７２】
送信機ＩｏＴゲートウェイ５００ｇは、符号化されたデータを転送後、６０００ａでそのセッション使用カウンタを更新する。続いて、送信機ＩｏＴゲートウェイ５００ｇは４８００ａでそのセッション辞書の圧縮効率をチェックし始め、セッション辞書を恒久的に記憶するのに十分な圧縮効率を見つけた後に、４５００ａで生成された現在のセッションＩＤに適切な恒久的に記憶された辞書を検索し、恒久的に記憶された辞書を見つけた後に４９００ａでセッション辞書と見つかった辞書の圧縮効率を比較する。セッション辞書の圧縮効率が優れていることが判明し、その後セッション辞書の辞書ＩＤが５５００ａ及び恒久的に記憶されたセッション辞書で生成され、以前に見つかった永久辞書を上書きする。
【００７３】
受信機ＩｏＴゲートウェイ５００ｈは、復号されたデータを転送後、６０００ｂでそのセッション使用カウンタを更新する。このとき、送信機ＩｏＴゲートウェイ５００ｇでのセッション辞書と受信機ＩｏＴゲートウェイ５００ｈでのセッション辞書のどちらも、同じ辞書圧縮機構を使用した結果、同じ内容を含む。さらに、送信機ＩｏＴゲートウェイ５００ｇと受信機ＩｏＴゲートウェイ５００ｈ両方の使用カウンタは、非圧縮データ量及び圧縮データ量が同じであるため、同様の内容を含む。続いて、受信機ＩｏＴゲートウェイ５００ｈは４８００ｂでそのセッション辞書の圧縮効率のチェックを開始し、セッション辞書を恒久的に記憶するのに十分な圧縮効率を見つけた後に、４５００ｂで生成された現在のセッションＩＤに適切な恒久的に記憶された辞書を検索し、恒久的に記憶された辞書を見つけた後に４９００ｂでセッション辞書と見つかった辞書の圧縮効率を比較する。セッション辞書の圧縮効率が優れていることが判明し、その後セッション辞書の辞書ＩＤが５５００ｂ及び恒久的に記憶されたセッション辞書で生成され、以前に見つかった永久辞書を上書きする。
【００７４】
使用カウンタが同様であるため、受信機ＩｏＴゲートウェイ５００ｈで実行されたブロック４８００ｂ、４９００ｂ、及び５５００ｂの結果は、送信機ＩｏＴゲートウェイ５００ｇで実行されたブロック４８００ａ、４９００ａ、及び５５００ａの結果と同様である。したがって、ここでは送信機ＩｏＴゲートウェイ５００ｇと受信機ＩｏＴゲートウェイ５００ｈのどちらも、現在のセッション辞書で以前に記憶された永久辞書を更新した。
【００７５】
７０５０でＩｏＴ装置からのデータ送信で開始するシーケンスステップは、セッション辞書の辞書ＩＤの作成、並びに５５００ａでは送信機ＩｏＴゲートウェイ５００ｇの及び５５００ｂでは受信機ＩｏＴゲートウェイ５００ｈの永久辞書ストアでのセッション辞書の記憶まで、例えばＩｏＴ装置１００ｃによってすべてのデータが送信されるまで、概して何回も繰り返される。
【００７６】
図７は、ブロック４０１０で開始し、新規セッション要求が４０３０でネットワークから受信された後、セッションハンドラ１６００で実行される、セッション初期化時の辞書選択に関する実施例１のプログラムフロー４０００を示す。
【００７７】
続いて、セッション識別子は、例えばＩＰ目的地アドレス及びＴＣＰ目的地ポートといった、セッション要求を含む受信されたネットワークパケットのネットワークパケット情報に基づいて４０４０で生成される。４０５０で、現在のプログラムフローが送信機側ゲートウェイで実行されるかどうかがチェックされる。
【００７８】
肯定の場合、生成されたセッション識別子は、４０５４で、永久辞書ストアの一致するセッション識別子を含む永久辞書ストアブロックを検索するために使用される。４０５６で一致する記憶済み辞書が見つかった場合、以前に見つかった辞書の辞書ＩＤを使用して、辞書ＩＤ  ＴＣＰオプションが４１００で作成される。
【００７９】
その後、以前に作成された辞書ＩＤ  ＴＣＰオプションを含む新規セッション要求が４１１０でＷＡＮに送信される。肯定応答が４１２０で受信され、４１３０で肯定応答は辞書ＩＤ  ＴＣＰオプションについてチェックされる。４１４０で、かかるＴＣＰオプションが見つかったかどうかがチェックされる。かかるＴＣＰオプションが見つかった場合、辞書ＩＤ  ＴＣＰオプションの辞書ＩＤと以前に見つかった記憶済み辞書の辞書ＩＤの両方が４１５０で比較される。４１６０で、以前の比較の結果がチェックされる。両方の辞書ＩＤが等しい場合、プログラムフローは４１６４の発信ラベルＳＯから４１６６の入信ラベルＳＯがジャンプする。４１７０で、セッション辞書が以前に見つかった記憶済み辞書から作成される。
【００８０】
その後、４１８０で、新規セッション使用カウンタが作成される。続いて、４１９０で、プログラムフローが送信機側ゲートウェイで実行されるかどうかが再びチェックされる。肯定の場合、プログラムフローは４２９０で終わる。４０５６で一致する辞書が見つからなかった場合、４０６０で新規セッション辞書が作成され、４０７０で新規セッション使用カウンタが作成される。続いて、４０７５で、プログラムフローが送信機側ゲートウェイで実行されるかどうかが再びチェックされる。
【００８１】
肯定の場合、追加のセッションセットアップが記憶済み辞書を使用することなく４０８０で実行され、４２９０でフローは終了する。否定の場合、フローは４２９０で直ちに終了する。４１４０で辞書ＩＤ  ＴＣＰオプションが見つからなかった場合、プログラムフローは４２４４の発信ラベルＳＮから４２４６の入信ラベルＳＮにジャンプし、４００６０で新規セッションの作成、及び上記の通り以後のステップで続行する。
【００８２】
比較された辞書ＩＤが４１６０のチェックで異なる場合、プログラムフローは４２４４の発信ラベルＳＮから４２４６の入信ラベルＳＮにジャンプし、上記のように続行する。現在のプログラムフローがチェック４０５０で受信機側ゲートウェイで実行されると、その後受信されたパケットは４２３０で辞書ＩＤ  ＴＣＰオプションについてチェックされる。４２４０で、かかるＴＣＰオプションが見つかったかどうかがチェックされる。肯定の場合、見つかった辞書ＩＤ及び生成されたセッション識別子は、４２５０で、一致する辞書ＩＤを有する辞書と一致するセッション識別子の両方を含む永久辞書ストアの永久辞書ストアブロックを検索するために使用される。
【００８３】
４２６０で、かかる永久辞書ストアブロックが見つかったかどうかがチェックされる。肯定の場合、プログラムフローは上述されたようにブロック４１７０で続行する。否定の場合、４２８０で、セッションセットアップ肯定応答は辞書ＩＤなしに送信機側ゲートウェイに送信される。
【００８４】
その後、プログラムフローは４２４４の発信ラベルＳＮから４２４６の入信ラベルＳＮにジャンプし、上述されたように続行する。辞書ＩＤ  ＴＣＰオプションが４２４０の検査で見つからなかった場合、プログラムフローは４２４４の発信ラベルＳＮから４２４６の入信ラベルＳＮにジャンプし、上述されたように続行する。現在のプログラムフローが受信機側ゲートウェイで実行されることが４１９０の検査で明らかになった場合、４２７０で、辞書を含む辞書ＩＤ  ＴＣＰオプションが生成され、生成された辞書ＩＤ  ＴＣＰオプションを含むセッションセットアップ肯定応答が送信機側ゲートウェイに送信される。
【００８５】
図７のプログラムフローの効果は、ネットワークパラメータによって識別された任意のアプリケーションデータの効率的な圧縮をターゲットとしたパターンを含む以前に記憶されたきわめて効率的な辞書の再利用にあり、これにより、送信機側と受信機側の両方が利用可能な選択された辞書を有するわけではない場合に、未使用の、つまり空の辞書が使用される可能性を含め、両方が同じ辞書を使用する。
【００８６】
図８は、例えば図５の一次メモリ１８３０に一時セッションメモリを記憶するために可能なデータ構造を説明する、実施例１の一時セッションメモリ１０００ｅのスキーマを示す。
【００８７】
セッションＩＤフィールド１００２は、ＩｏＴゲートウェイ５００にとって内部のＴＣＰセッションを参照し、このセッションとそのそれぞれの一時セッションメモリブロックとの間のマッピングを可能にする。セッション識別子ＩＤフィールド１００４はセッション識別子スキーマ２２００ｂのＩＤフィールド２２０２ｂを参照する。セッション辞書ＩＤフィールド１００６は、セッション辞書ストア２３００ｂのセッション辞書ＩＤフィールド２３６０ａを参照する。使用カウンタＩＤフィールド１００８は、セッション使用カウンタテーブル２１００ｂのＩＤフィールド２１０２ｂを参照する。使用済みリストＩＤフィールド１００９は、辞書エントリＩＤリストストア２７００のリストＩＤフィールド２７１０を参照する。
【００８８】
例示的な一時セッションメモリエントリ１００５ｈは、セッションＩＤ６で使用され、セッション識別子ＩＤ２３によって参照されるセッション識別子、セッション辞書ＩＤ２２３によって参照されるセッション辞書、使用カウンタＩＤ６５によって参照されるセッション辞書、及び使用済みリストＩＤ２３３によって参照される辞書エントリＩＤリストを使用する。
【００８９】
図８のスキーマの効果は、辞書の符号化及び復号に関係するデータ構造、並びにその関係する辞書使用、並びにメモリの複数の同時セッションの効率計算を管理し、効率的なアクセス及び比較を可能にする可能性にある。
【００９０】
図９は、図８の上述された一時セッションメモリスキーマがどのようにして図１０、図１１、図１２、及び図３０の異なる関係するスキーマを参照しているのかを示している。関係するスキーマは後述される。一時セッションメモリのセッションＩＤフィールド１００２は、各一時セッションの一意の識別子である。
【００９１】
セッション識別子フィールド１００４は、図１０のセッション識別子スキーマのＩＤフィールド２２０２ｂを参照する。セッション識別子ＩＤフィールド１００６は、図１１のセッション辞書スキーマのセッション辞書ＩＤフィールド２１６０ｂを参照する。使用カウンタＩＤフィールド１００８は、図１２のセッション使用カウンタスキーマのＩＤフィールド２１０２ｂを参照する。使用済みリストＩＤフィールド１００９は、図２９の辞書エントリＩＤリストスキーマのリストＩＤフィールド２７１０を参照する。このフィールドは本実施例に関係していないが、実施例３及び続く実施例に関係し、そこでより詳細に説明される。
【００９２】
図１０は、例えば図５の一次メモリ１８３０にセッション識別子を記憶するために可能なデータ構造を説明する、実施例１のセッション識別子テーブル２２００ｂを示している。セッション識別子テーブル２２００ｂは、セッション識別子テーブル２２００ｂのセッション識別子エントリごとに一意の識別子を含むＩＤフィールド２２０２ｂ、ＷＡＮの遠隔受信機２００のＩＰアドレスを含む目的地ＩＰアドレスフィールド２２０４ｂ、及びＷＡＮの遠隔受信機２００での目的地ＴＣＰポート番号を含む目的地ＴＣＰポートフィールド２２０６ｂから成る。
【００９３】
例示的なセッション識別子１０１０ｇはＩＤ２３、目的地ＩＰアドレス１０．１０．０．１、及び目的地ＴＣＰポート番号１８８３を含む。図１０のスキーマの効果は、ネットワークパケット受信時に関係する辞書の迅速な選択を可能にするために、現在使用中の辞書を伴う、関係するネットワークヘッダデータ識別子の記憶にある。
【００９４】
図１１は、例えば図５の一次メモリ１８３０にセッション辞書を記憶するために可能なデータ構造を説明する、実施例１のセッション辞書ストア２３００ｂを示している。セッション辞書ストア２３００ｂの中には、それぞれがセッション辞書ＩＤ２３６０ａによって明確に識別される、ゼロ又は１つの又は複数のセッション辞書１０２０を記憶できる。
【００９５】
セッション辞書は各セッション辞書１０２０に一意のエントリＩＤ２３２０ｂ、文字列又はバイトパターンを含むパターン２３３０ｂ、及び符号化又は復号中の辞書エントリの使用の数を含む使用カウンタ２３４０ｂによって明確に識別されるゼロ、１つ、又は複数のエントリを含む。使用カウンタ２３４０ｂは、使用別の辞書エントリの順序付けを作成するために使用できる。別の実施例では、使用カウンタ２３４０ｂはセッション辞書１０２０から放出される。
【００９６】
別の実施例では、セッション辞書１０２０はより多くのフィールド又は他のフィールドを含み、他の情報による辞書エントリの順序付けを可能にする。例示的なセッション辞書１０２０ｊは、セッション辞書ＩＤフィールド２３６０ｂのセッション辞書ＩＤ２２３によって識別され、ＩＤ２７を有し、文字列パターン“Ｔｉｍｅｓｔａｍｐ＞”を含み、１２５１１回使用された第１のエントリ２３５０ｃを有する少なくとも２つの辞書エントリを含む。
【００９７】
図１２は、例えば図５の一次メモリ１８３０にセッション使用カウンタを記憶するために可能なデータ構造を説明する、実施例１のセッション使用カウンタテーブル２１００ｂを示している。
【００９８】
セッション使用カウンタテーブル２１００ｂはセッション使用カウンタエントリ１０３０を含み、以下のフィールドを含む：セッション使用カウンタテーブル２１００ｂの各セッション使用カウンタエントリを一意に識別するＩＤ２１０２ｂ、送信機側のＩｏＴゲートウェイ５００ａの未処理入力データの量又は受信機側のＩｏＴゲートウェイ５００ｂの処理済み出力データの量を含む非圧縮バイトフィールド２１０４ｂ、送信機側のＩｏＴゲートウェイ５００ａの処理済み出力データの量又は受信機側のＩｏＴゲートウェイ５００ｂの未処理入力データの量を含む圧縮バイトフィールド２１０６ｂ、前回の圧縮バイト対非圧縮バイトの比率の浮動小数点数を含むＲａｔｉｏｎ‐１フィールド２１０８ｂ、及び前回の圧縮バイト対非圧縮バイトの比率に対する、前回のもう１つ前の圧縮バイト対非圧縮バイトの比率の割合の浮動小数点数を含むＲａｔｉｏ  ｃｈａｎｇｅｎ‐１フィールド２１０９ｂ。
【００９９】
セッション使用カウンタ１０３０ｈの第１の例は、ＩＤ６５を含み、４２２３３７２バイトの非圧縮入力データを受信し、３４０６４８３バイトの圧縮バイト、０．７６８８３８の以前の圧縮率、及び０．７１９０９６の以前の圧縮率の変化を生じさせた。これは、関係するセッションの圧縮効率が前回改善し、現在は悪化しているが、全体的な傾向は識別できないことを意味する。
【０１００】
図１２のスキーマの効果は、少数の使用パラメータ、並びに符号化動作及び復号動作の関係効率計算、並びに実質的にはメモリでのその関係辞書の効率計算の管理にあり、これによってアクセスは効率的であり、関係する計算は迅速に且つ効率的に実行できる。
【０１０１】
図１３は、同じ辞書が送信側と受信側の両方で利用できることを検証するために、辞書ＩＤを送信するために使用されるＴＣＰオプションの可能な実施例を説明する、実施例１の辞書ＩＤ  ＴＣＰオプション２５００を示している。辞書ＩＤ  ＴＣＰオプション２５００は、ＴＣＰオプションＩＤフィールド２１５０、ＴＣＰオプション長フィールド２５２０、及び辞書ＩＤフィールド２５３０を含む。ＴＣＰオプションＩＤフィールド２５１０とＴＣＰオプション長フィールド２５２０のどちらも送信制御プロトコル（ＴＣＰ）規格に関係する明細書文書によって説明される意味をもつ。
【０１０２】
辞書ＩＤフィールド２５３０は、永久辞書ストアの記憶済み辞書の１６バイト辞書ＩＤを含む。別の実施例では、辞書ＩＤフィールド２５３０は記憶済み辞書の切り捨てられた辞書ＩＤを含む。切り捨てられた辞書ＩＤの使用により遠隔で辞書を参照するときの不明瞭さのリスクが高まるが、セッション識別子と組み合わせて使用することによりこのリスクは軽減する。
【０１０３】
図１３の辞書ＩＤ  ＴＣＰオプションの効果は、送信機と受信機の両方が同じ辞書を選択するように辞書選択の効率的な同期を可能にし、それにより受信機側が送信機側から送信される圧縮データのストリームから元のデータを取り出すことができることにある。
【０１０４】
図１４は、例えば図５の一次メモリ１８３０に永久辞書ストアを記憶するために可能なデータ構造を説明する、実施例１の永久辞書ストア１１００ｅのスキーマを示している。
【０１０５】
ＩＤフィールドはストア１１００ｅの一意の番号であり、単一エントリに明確を参照することを可能にする。セッション識別子フィールド１１０４は、記憶済みセッション識別子テーブル２２００ａのＩＤフィールド２２０２ａを参照する。辞書ＩＤフィールド１１０６は、記憶済み辞書ストア２３００の記憶済み辞書１１２０の辞書ＩＤフィールド２３１０を参照する。使用カウンタＩＤフィールドは、記憶済み使用カウンタテーブル２１００ａのＩＤフィールド２１０２ａを参照する。
【０１０６】
永久辞書ストア１１００ｅの例示的な永久辞書ブロック１１０５ｋは、一意のＩＤ１によって識別され、ＩＤ１９を有する記憶済みセッション識別子、ＩＤ  ｃｃ７ａａｂｃ３７ｅ１ｃ７ｄ２ｆｅ９８ｂｅ９１８５ｂｄｆｅ４３ｂを有する記憶済み辞書、及び使用カウンタＩＤ１５１を有する記憶済み使用カウンタを参照する。
【０１０７】
図１４の永久辞書ストアスキーマの効果は、辞書記憶及びメモリ内の辞書のその後の再利用に関するデータの効率的な管理にあり、これによりアクセスは効率的となり、上書きのための辞書選択及び可能な評価は、特に図８の関係する一時セッションメモリデータと連携して効率的且つ効果的となることができる。
【０１０８】
図１５は、図１４の上述された永久辞書ストアがどのようにして図１６、図１７、及び図１８の異なる関係するスキーマを参照しているのかを示している。関係するスキーマは後述される。
【０１０９】
永久辞書ストアのセッションＩＤフィールド１１０２は、各記憶済みセッションの一意の識別子である。セッション識別子ＩＤフィールド１１０４は、図１６の記憶済みセッション識別子スキーマのＩＤフィールド２２０２ａを参照する。辞書ＩＤフィールド１１０６は、図１７の記憶済み辞書スキーマの辞書ＩＤフィールド２３１０ａを参照する。使用カウンタＩＤフィールド１１０８は、図１８の記憶済みセッション使用カウンタスキーマのＩＤフィールド２１０２ａを参照する。
【０１１０】
図１６は、例えば図５の一次メモリ１８３０に、記憶済みセッション識別子を記憶するために可能なデータ構造を説明する、実施例１の記憶済みセッション識別子テーブル２２００ａを示している。概して、記憶済みセッション識別子テーブル２２００ａは、セッション識別子テーブル２２００ｂに類似するフィールドを含む。セッション識別子テーブル２２００ｂは一時セッションメモリに記憶されるが、記憶済みセッション識別子テーブル２２００ａは永久辞書ストアに記憶される。
【０１１１】
記憶済みセッション識別子は、記憶済みセッション識別子テーブル２２００ａの記憶済みセッション識別子エントリごとに一意の識別子を含むＩＤフィールド２２０２ａ、ＷＡＮの遠隔受信機２００のＩＰアドレスを含む目的地ＩＰアドレスフィールド２２０４ａ、及びＷＡＮの遠隔受信機２００での目的地ＴＣＰポート番号を含む目的地ＴＣＰポートフィールド２２０６ａを含む。例示的な記憶済みセッション識別子１１１０ｄはＩＤ１９、目的地ＩＰアドレス１０．０．０．１、及び目的地ＴＣＰポート番号１８８３を含む。
【０１１２】
図１７は、例えば図５の一次メモリ１８３０に、記憶済み辞書を記憶するために可能なデータ構造を説明する、実施例１の記憶済み辞書ストア２３００ａを示している。一般的に、セッション辞書１０２０は、記憶済み辞書ストア２３００ａに記憶済み辞書１１２０として記憶でき、したがってセッション辞書１０２０と記憶済み辞書１１２０の両方とも非常に類似している。辞書を記憶するときは、その辞書ＩＤが計算され、記憶済み辞書１１２０の辞書ＩＤフィールド２３１０ａに記憶される。この数字は、辞書の内容を明確に識別する１６バイトＭＤ５ハッシュであり、セッション辞書１０２０のセッション辞書ＩＤフィールド２３６０ａとは異なる。
【０１１３】
記憶済み辞書ストア２３００ａでは、ゼロ又は１つの又は複数の記憶済み辞書１１２０を記憶できる。記憶済み辞書は、各記憶済み辞書１１２０に一意のエントリＩＤ２３２０ａ、文字列又はバイトパターンを含むパターン２３３０ａ、及び符号化又は復号中の辞書エントリの使用数を含む使用カウンタ２３４０ａによって明確に識別されるゼロ、１つの、又は複数のエントリを含む。使用カウンタ２３４０ａは、使用別の辞書エントリの順序付けを作成するために使用できる。
【０１１４】
他の実施例では、記憶済み辞書１１２０はセッション辞書１０２０に類似するフィールドを含む。例示的な記憶済み辞書１１２０ｄは、辞書ＩＤ  ｃｃ７ａａｂｃ３７ｅ１ｃ７ｄ２ｆｅ９８ｂｅ９１８５ｂｄｆｅ４３ｂによって識別され、ＩＤ２７を有し、文字列パターン“ＳｅｔＥｑｕｉｐｍｅｎｔＳｔａｔｕｓ＞”を含み、５１２１６回使用された第１のエントリ２３５０ａを有する、少なくとも２つの辞書エントリを含む。
【０１１５】
図１８は、例えば図５の一次メモリ１８３０に、記憶済み使用カウンタを記憶するために可能なデータ構造を説明する、実施例１の記憶済み使用カウンタテーブル２１００ａを示している。一般的に、セッション使用カウンタ１０３０は記憶済み使用カウンタテーブル２１００ａに記憶済み使用カウンタ１１３０として記憶でき、したがってセッション使用カウンタ１０３０と記憶済み使用カウンタ１１３０の両方のフィールドは類似している。
【０１１６】
記憶済み使用カウンタテーブル２１００ａは記憶済み使用カウンタエントリ１１３０を含み、以下のフィールドを含む：記憶済み使用カウンタテーブル２１００ａで各記憶済み使用カウンタエントリを一意に識別するＩＤ２１０２ａ、送信機側のＩｏＴゲートウェイ５００ａの未処理入力データの量又は受信機側のＩｏＴゲートウェイ５００ｂの処理済み出力データの量のどちらかを含む非圧縮バイトフィールド２１０４ａ、送信機側のＩｏＴゲートウェイ５００ａの処理済み出力データの量又は受信機側のＩｏＴゲートウェイ５００ｂの未処理入力データの量のどちらかを含む圧縮バイトフィールド２１０６ａ、前回の圧縮バイト対非圧縮バイトの比率の浮動小数点数を含むＲａｔｉｏｎ‐１フィールド２１０８ａ、及び前回の圧縮バイト対非圧縮バイトの比率に対する、前回のもう１つ前の圧縮バイト対非圧縮バイトの比率の割合の浮動小数点数を含むＲａｔｉｏ  ｃｈａｎｇｅｎ‐１フィールド２１０９ａ。
【０１１７】
記憶済み使用カウンタ１１３０ｄの第１の例はＩＤ４６を含み、２１０３６３６バイトの非圧縮入力データを受信し、１１８５１８８バイトの圧縮バイト、０．６４４６０５の以前の圧縮率、及び０．８８３４３６の以前の圧縮率の変化を生じさせた。良好な圧縮効率はわずかに劣化したが、再び回復した。
【０１１８】
図１９は、使用量のカウントに必要な情報がどのようにして生成されるのかをよりよく理解するために、実施例１のエンコーダ４３００ｂの簡略化されたプログラムフローを示している。このフローは、参照をサポートするために含まれる。辞書圧縮又は符号化機構の詳細は、該詳細が本実施例の一部ではないため省略されている。
【０１１９】
フローはステップ４３１０で開始し、ステップ４３１５で送信機側のＩｏＴゲートウェイ５００ａのトークンエンコーダ１７００で実行される。第１に、データブロックは４３２０で読み取られる。このデータブロックは通常、ネットワークインタフェースから受信された新規データで充填された任意の受信バッファである。ステップ４３３０で、辞書符号化は、現在の一時セッション辞書を使用し、読み取られたブロックに対して実行され、トークン化された出力データが放出される。
【０１２０】
その後、ステップ４３４０で、読み取られたデータのサイズが、現在の一時セッションメモリブロックの使用カウンタＩＤフィールドによって参照されているセッション使用カウンタ１０３０の非圧縮バイトフィールド２１０４ｂに追加され、ステップ４３５０で、放出された符号化データのサイズが、現在の一時セッションメモリブロックの使用カウンタＩＤフィールドによって参照されているセッション使用カウンタの圧縮バイトフィールド２１０６ｂに追加される。次のステップ４３１５で、プログラムは終了する。
【０１２１】
図２０は、図１９のエンコーダプログラムに類似するデコーダ４４００ｂの簡略化されたプログラムフローを示している。このフローはステップ４４１０で開始し、ステップ４４１５に説明されるように、受信機側のＩｏＴゲートウェイ５００ｂのトークンデコーダ１７１０で実行される。まず、符号化されたデータのブロックは４４２０で読み取られる。
【０１２２】
その後、辞書復号が、現在の一時セッション辞書を使用し、ステップ４４３０で実行され、復号されたデータが放出される。概して、入力データは受信バッファから読み取られ、出力データは送信バッファに書き込まれる。一実施例では、受信バッファと送信バッファの両方とも、図５の一次メモリ１８３０の一部である。
【０１２３】
以後のステップ４４００で、入力データのサイズは、現在の一時セッションメモリブロックの使用カウンタＩＤフィールドによって参照されているセッション使用カウンタ１０３０の圧縮バイトフィールド２１０４ｂに追加され、その後、出力データのサイズは、現在の一時セッションメモリブロックの使用カウンタＩＤフィールドによって参照されているセッション使用カウンタの非圧縮バイトフィールド２１０６ｂに追加される。最後に、プログラムはステップ４４１５で終了する。
【０１２４】
図２１は、例えば使用される辞書の効率を評価するために、データの符号化又は復号の間又は後にセッション使用カウンタにアクセスし、更新することに関係する動作を説明する、使用カウンタマネージャ１５００で実行される、実施例１の使用カウンタマネージャフロー６０００ｃを示している。
【０１２５】
使用カウンタマネージャフロー６０００ｃは、ステップ６０１０で開始され、ステップ６０１５に説明されるように、受信機側のＩｏＴゲートウェイ５００ｂの使用カウンタマネージャ１５００ｂだけではなく、送信機側のＩｏＴゲートウェイ５００ａの使用カウンタマネージャ１５００ａで実行される。ステップ６０２０では、前回の辞書効率が、現在時刻ｔｎｏｗ及び以前のタイムスタンプｔｐｒｅｖを使用して計算されて以降、時間が経過している。ステップ６０３０で、経過した時間が任意の定義された限度εを超えるかどうかがチェックされる。検査が肯定的である場合、現在の一時セッションメモリブロックの使用カウンタＩＤフィールド１００８によって参照される図１２のセッション使用カウンタのＲａｔｉｏｎ‐１フィールドの内容は、ステップ６０４０でＲａｔｉｏｎ‐２に書き込まれる。
【０１２６】
その後、ステップ６０５０で、現在の圧縮率Ｒａｔｉｏｎ‐１は、現在の一時セッションメモリブロックの使用カウンタＩＤフィールド１００８によって参照されるセッション使用カウンタの圧縮バイトフィールドの内容及び現在の一時セッションメモリブロックの使用カウンタＩＤフィールド１００８によって参照されるセッション使用カウンタの非圧縮バイトフィールドの内容を使用して計算され、結果は、現在の一時セッションメモリブロックの使用カウンタＩＤフィールド１００８によって参照されるセッション使用カウンタのＲａｔｉｏｎ‐１フィールドに書き込まれる。
【０１２７】
続いて、ステップ６０６０で、比率の変化が、以前に計算されたＲａｔｉｏｎ‐１フィールド及び以前に計算されたＲａｔｉｏｎ‐２を使用して計算され、結果は、現在の一時セッションメモリブロックの使用カウンタＩＤフィールド１００８によって参照されるセッション使用カウンタのＲａｔｉｏ  ｃｈａｎｇｅｎ‐１に書き込まれる。続くステップ６０７０で、以前のタイムスタンプｔｐｒｅｖは現在時刻ｔｎｏｗに更新され、プログラムフローはステップ６０９９で終わる。ステップ６０３０の検査が否定的であった場合、プログラムフローは終了ステップ６０９９で直接的に続行する。別の実施例では、プログラムフロー６０００ｃのステップ６０２０及び６０３０のチェック及び関係する条件文は、経過時間の代わりに処理済みデータ量に左右される。図２１のフローの効果は、以前に記憶され、更新された辞書使用パラメータに基づいた辞書効率の効率的な計算にある。
【０１２８】
図２２は、実施例１の以下の辞書再利用ストアチェックフローで検査される使用カウンタ測定値及び条件の背後にある論法を説明する目的で、一時セッション辞書の辞書効率の３つのグラフを示している。グラフは、以下の段落で説明されるように、辞書効率の３つの標準的な変化を示す。
【０１２９】
グラフは、圧縮率の変化、つまり経時的な圧縮効率を示す。圧縮率が低いほど、圧縮利得は高くなる。別の実施例では、時間との関係の代わりに、処理済みデータ量との関係を使用できる。一番上のグラフＡ９５１０は、ほとんど変化しないデータが処理されるときの標準的な段階を示し、辞書は当初ほとんど適切なエントリなしに開始したが、圧縮率が経時的によくなっていくように、迅速に適切なパターンを追加している。現在の比率、現在の比率変化、及び以前の比率変化のすべてが効率の改善を示している。
【０１３０】
第２のブラフＢ９５２０で、辞書エントリは処理されているデータとよく一致し、圧縮率のわずかな変化が発生するが、全体的に圧縮率は同じままである。現在の比率が効率を示す、又は以前の比率変化が効率の改善を示す、又は以前の変化及び最後から２番目の比率変化の比較が改善傾向を示す。
【０１３１】
グラフＣ９５３０で、辞書は、入信データと一致せず、十分に迅速に調整することができず、瞬間的な非効率を生じさせるだけではなく、劣化傾向を示している。
【０１３２】
図２３は、セッション辞書の永久辞書ストアへの記憶を検討するために、送信機側と受信機側両方のセッションハンドラ１７００で実行される辞書再利用チェックのプログラムフロー４７００を示す、プログラムフロー図である。
【０１３３】
プログラムフローはステップ４７１０ａで開始し、４７１０ａでセッションハンドラ１７００によって周期的に実行される。続いて、辞書効率は４８００ｄで図２４のチェック使用サブフローを呼び出すことによってチェックされる。結果が４７２０ａで「十分」であるかどうかのチェックが肯定的である場合、４７２２ａで、一致するセッション識別子を有する辞書が永久辞書ストアで検索される。
【０１３４】
類似する辞書が４７２５ａで見つかった場合、現在のセッション使用カウンタと見つかった記憶済み使用カウンタの両方が、４９００で図２５の使用比較サブフローを呼び出すことによって比較される。結果が「記憶済み使用カウンタの方が悪い」であるかどうかの４７３０ａのチェックが肯定的である場合、プログラムフローはステップ４７３５ａで続行し、すべての辞書エントリＩＤ及び辞書のパターンに対するＭＤ５ハッシュを生成することで、現在使用されている一時セッション辞書の辞書ＩＤを生成する。４７４０ａで、以前に見つかった永久辞書ストアブロックの辞書が次いで現在の一時セッション辞書で上書きされ、辞書ＩＤが追加される。４７４５ａで、以前に見つかった永久辞書ストアブロックの記憶済み使用カウンタが次いで現在のセッション使用カウンタで上書きされる。
【０１３５】
続くステップ４７９９ａで、プログラムフローは終了する。４７３０ａの検査が否定的である、つまり４９００の呼び出されたサブフローの放出された結果が「記憶済み使用カウンタの方が良い」である場合、プログラムフローはステップ４７９９ａで直ちに終了する。
【０１３６】
４７２５ａの検査が否定的である、つまりステップ４７２２ａの位置する記憶済み辞書に対する検索で一致する辞書が見つからなかった場合、現在使用されている一時セッション辞書の辞書ＩＤは、上述されたステップ４７３５ａと同様に、辞書のすべての辞書エントリＩＤ及びパターンに対するＭＤ５ハッシュを生成することで、４７５０ａで生成される。
【０１３７】
続いて、４７５５ａで、新規の記憶済み辞書が、現在の一時セッション辞書の内容及び以前に生成された辞書ＩＤで生成される。続いてステップ４７６０ａで、新規の記憶済みセッション識別子が現在の一時セッション識別子の内容で生成される。その後、ステップ４７６５ａで、新規の記憶済み使用カウンタは現在の一時セッション使用カウンタの内容で生成される。
【０１３８】
以前の３つのステップ４７５５ａ、４７６０ａ、及び４７６５ａで生成されるデータ構造は、永久辞書ストアの新規の永久辞書ストアブロックに恒久的に記憶される。プログラムフローは次いでステップ４７９９ａで終了する。４７２０ａの検査が否定的であった、つまり以前のステップ４８００ｄで呼び出されたサブフローの放出された結果が「不十分」だった場合、プログラムフローはステップ４７９９ａで直ちに終了する。
【０１３９】
図２３のプログラムフローの効果は、辞書効率の、例えば連続的な等繰り返される評価及び検討であり、これにより辞書は、その効率が、実際のセッション状態又は状態の変化とは関係なく極大に達すると記憶できる。これは、例えば、データパケットが受信され、圧縮されるたびに辞書効率変化の評価を可能にする。
【０１４０】
圧縮効率の計算及び関係する評価が、セッション使用カウンタが更新されるたびに実行される場合、評価は連続的と呼ばれる。それ以外の場合、各評価間の固定距離  −  データの量又は期間のどちらかに関する  −  が使用される場合、評価は周期的である。１つのかかる例は、固定数の非圧縮バイトの後、例えば１００Ｋｂｙｔｅｓごとの周期的な評価である。別の例は、固定時間の後、例えば１時間おきの周期的な評価である。
【０１４１】
かかる繰り返される評価は、それが辞書効率の評価及びセッション辞書の記憶の関係する検討に使用されるまで、セッションで収集され結合される関係する情報の量と、実際にかかる効率評価の結果の詳細のより細かいレベルとの微調整を可能にする。
【０１４２】
図２４は、現在使用されている一時セッション辞書の効率が永久辞書ストアに恒久的に記憶されるのに十分であるかどうかをチェックするための動作を説明する、実施例１の辞書使用チェックプログラムフロー４８００を示している。
【０１４３】
プログラムフローは、ステップ４８１０で辞書再利用ストアチェックフロー４７００から開始される。次のステップ４８２０で、現在の一時セッションメモリブロックの使用カウンタフィールド１００８によって参照されるセッション使用カウンタの非圧縮バイトフィールドの未処理入力バイトの数が評価される。次のステップ４８２５で、非圧縮バイトの数が任意の限度σを超えるかどうかがチェックされる。別の実施例では、処理済みバイトの数が使用される。結果が肯定的である場合、プログラムフローは４８３０で続行し、現在の圧縮率Ｒａｔｉｏｎが、同じセッション使用カウンタの以前に読み取られた非圧縮バイトフィールド及び圧縮バイトフィールドの値を使用して計算される。
【０１４４】
その後、ステップ４８３５で、計算された圧縮率Ｒａｔｉｏｎが任意の閾値β以下であるかどうかが検査される。検査が肯定的である場合、プログラムフローはステップ４８７０で続行し、信号「十分」を放出し、辞書効率が記憶するのに十分であることを呼出し者に通知する。最後に、ステップ４８９９で、プログラムが終了する。
【０１４５】
ステップ４８３５の検査が否定的である場合、プログラムフローはステップ４８４０で続行し、以前に計算された圧縮率Ｒａｔｉｏｎ‐１と現在の圧縮率Ｒａｔｉｏｎとの間の比率変化Ｒａｔｉｏ  ｃｈａｎｇｅｎは、ステップ４８３０で計算された現在の比率Ｒａｔｉｏｎ及び現在の一時セッションメモリブロックの使用カウンタフィールド１００８によって参照されるセッション使用カウンタのＲａｔｉｏｎ‐１フィールドに記憶された以前に計算されたＲａｔｉｏｎ‐１を使用して計算される。次のステップ４８４５で、計算された比率変化Ｒａｔｉｏ  ｃｈａｎｇｅｎが任意の閾値γ以下であるかどうかが検査される。
【０１４６】
検査が肯定的である場合、プログラムフローは上述のようにステップ４８７０で続行する。検査が否定的である場合、プログラムフローはステップ４８５０で続行し、比率変化の変化は、現在の一時セッションメモリブロックの使用カウンタフィールド１００８によって参照されるセッション使用カウンタの以前に計算された比率変化Ｒａｔｉｏ  ｃｈａｎｇｅｎ及びＲａｔｉｏ  ｃｈａｎｇｅｎ‐１フィールドの内容を使用して計算される。続くステップ４８５５で、上記計算の結果が任意の閾値δ以下であるかどうかがチェックされる。
【０１４７】
結果が肯定的である場合、上述のようにプログラムフローは４８７０で続行する。結果が否定的である場合、プログラムフローはステップ４８６０で続行し、信号「不十分」を放出し、辞書効率が記憶のためには効率的ではないことを呼出し者に通知し、最終的にステップ４８９９で終了する。ステップ４８２５の検査が否定的である場合、プログラムフローは上述のようにステップ４８６０で続行する。
【０１４８】
図２４のプログラムフローの効果は、既存のセッション辞書が記憶されるべきか否かのきわめて効率的な評価であり、これにより記憶済み辞書はすべて高い効率を有する。
【０１４９】
図２５は、一時セッション辞書が以前に記憶された辞書を上書きすべきかどうかを評価するために、現在使用されている一時セッション辞書及び永久辞書ストアブロックの記憶済み辞書の比較に関係する、実施例１の使用比較プログラムフロー４９００を示している。
【０１５０】
プログラムフローはステップ４９１０で開始され、ステップ４９１５に示されるように辞書再利用ストアチェックフロー４７００によってサブフローとして実行される。現在のプログラムフロー開始時、記憶済み辞書はすでに選択されている。第１のプログラムステップ４９２０で、現在のセッションの現在の圧縮率Ｒ１が、現在の一時セッションメモリブロックの使用カウンタフィールド１００８、及び同じセッション使用カウンタの圧縮バイトフィールドによって参照されるセッション使用カウンタの非圧縮バイトフィールドの内容を使用して計算される。
【０１５１】
続くステップ４９３０で、選択された記憶済み辞書の現在の圧縮率Ｒ２は、永久辞書ストアブロックの使用カウンタフィールド１１０８によって参照される記憶済み使用カウンタの非圧縮バイトフィールド、及び同じ記憶済み使用カウンタの圧縮バイトフィールドを使用して計算される。次のステップ４９４０で、現在のセッション辞書比率Ｒ1と選択された記憶済み辞書比率Ｒ２のどちらも、比率Ｒを計算するために使用される。ステップ４９５０で、比率Ｒが任意の閾値λ以下であるかどうかがチェックされる。
【０１５２】
肯定の場合、プログラムフローは信号「記憶済み辞書の方が良い」を放出し、ステップ４９６０で記憶済み辞書の効率がより優れていることを呼出し者に通知し、その後ステップ４９９９で終了する。否定の場合、プログラムフローは、信号「記憶済み辞書の方が悪い」を放出し、ステップ４９７０で記憶済み辞書の効率がより悪いことを呼出し者に通知し、次のステップ４９９９で終了する。
【０１５３】
図２５のプログラムフローの効果は、以前に記憶された辞書及び現在記憶のために検討されているセッション辞書の効率を効率的に評価することで、再利用に利用可能な恒久的に記憶された辞書の辞書効率の連続的な改善にある。
【実施例２】
【０１５４】
実施例２の説明は以下の図、つまり図４及び図２６〜図３１を使用している。辞書があまり活用されない非常に小さいデータブロックの圧縮は、大きいトークンサイズに起因するきわめて非効率的な圧縮を引き起こす。実施例２はこの問題を検討する。
【０１５５】
図４は、データが送信機側ゲートウェイで受信・符号化され、ＷＡＮを介して送信され、受信機側ゲートウェイで受信・復号されるときの構成要素及び構成要素間のデータフローを説明する、本実施例のトークンサイズ最適化動作のブロックチャートである。
【０１５６】
図２６は、メッセージのシーケンス及び本実施例のトークン短縮動作中に実行される動作を示すシーケンス図である。
【０１５７】
図２７は、例えばショートパケットセンサデータ等の入力データを最適化されたサイズのトークンに圧縮するための、送信側トークンエンコーダ１７００で実行されるトークン短縮動作のプログラムフローを示すプログラムフロー図である。
【０１５８】
図２８は、図２７の送信機側のトークン短縮プログラムフローのサブフローとして実行された制限辞書トークンサイズ計算動作のプログラムフローを示すプログラムフロー図である。
【０１５９】
図２９は、図２７のトークン短縮動作中に使用される辞書エントリＩＤの順序付けされたリストを含むために使用される、辞書エントリＩＤリストのデータフィールドを示すデータスキーマである。
【０１６０】
図３０は、図３１の受信機側のトークン短縮動作に示される受信機側トークンデコーダ１７１０と必要なパラメータを同期させるために、図２７のトークン短縮動作中に送信機側トークンエンコーダ１７００から放出される、制限辞書トークンのデータフィールドを示すデータスキーマである。
【０１６１】
図３１は、図２７の送信機側のトークン短縮動作で圧縮されたデータを解凍するために、受信機側トークンデコーダ１７１０で実行される受信機側のトークン短縮動作のプログラムフローを示す、プログラムフロー図である。
【０１６２】
実施例２は、上述されたように、放出されたトークンサイズが最適化されるようにトークン短縮動作によって一般的な辞書符号化機構が拡張される実施例１の変形例である。
【０１６３】
図４は、入力データが送信機側ゲートウェイによって受信され、符号化され、ＷＡＮを介して受信機側ゲートウェイに送信され、再び復号されるときの構成要素及びデータフローを説明する、実施例２のブロック図を示している。
【０１６４】
図４は、図２の機能ブロック図に類似しているが、送信機側と受信機側両方の機能及び構成要素が示され、制限辞書トークン４６０ａ、４６０ｂだけではなく送信機側の仮想セッション辞書１０２５ａ、１０２５ｂ、及び受信機側の１０２５ｃ、１０２５ｄも追加される。２つのネットワークメッセージ４００ｅ、４００ｆは送信機側セッションハンドラ１６００ｃによって受信され、各メッセージは順々に別々に処理される。
【０１６５】
ヘッダ４０２ｄ及びペイロード４０４ｄを含むネットワークメッセージ４００ｅは送信機側セッションハンドラ１６００ｃによって受信され、送信機側セッションハンドラ１６００ｃはヘッダ４０２ｄからの情報を活用し、おそらく永久辞書ストア１１００ｃから以前に記憶されたデータを使用し、既存の一時セッションを選択する又は新規一時セッションを作成するために、永久辞書ストア１１００ｃ及び一時セッションメモリ１０００ｃの情報にアクセスし、次いでトークンエンコーダ１７００ｂにデータと関係する制御情報の両方を送信し、トークンエンコーダ１７００ｂでデータの実際の符号化が発生し、一時セッションメモリストア１０００ｃの関係する一時セッションメモリ１００５ｄからの情報にアクセスしている。符号化は最初に辞書エントリＩＤを新たに初期化された辞書エントリＩＤリスト１０４０ｂに放出し、特定のパラメータによって定義される実際のセッション辞書１０２０ｄ上での連続的なスライドウィンドウである仮想セッション辞書１０２５ａの作成を可能にする。
【０１６６】
これらのパラメータは符号化され、制限辞書トークン４６０ｂに放出される。続いて、ネットワークデータのペイロード４０４ｄは、トークンを放出する仮想セッション辞書１０２５ａを使用し、トークンに符号化され、トークンとして放出される。制限辞書トークン４０６ｄと符号化されたトークンの両方とも次いでペイロード４０４ｆとしてトークンメッセージ４５０ｃで送信され、関係する制御情報は、関係する一時セッションメモリ１００５ｄのセッション使用カウンタ１０３０ｄにアクセスし、おそらく関係するセッション使用カウンタを更新する使用カウンタマネージャ１５００ｃに送信される。結果は次いで一時セッションメモリの記憶を検討することを可能にするために、制御情報としてセッションハンドラ１６００ｃに送り返される。
【０１６７】
トークンメッセージ４５０ｃは、送信機側と同様に、既存の一時セッションを選択する又は新規一時セッションを作成するために、ＷＡＮ３２０ｂを介して送信され、永久辞書ストア１１００ｄ及び一時セッションメモリ１０００ｄからの情報にアクセスしている受信機側セッションハンドラ１６００ｄによって受信される。データ及び関係する制御情報は、次いで、一時セッションメモリ１００５ｃからの関係する情報にアクセスしつつ、トークンメッセージ４５０ｂのペイロード４５４ａを復号する、トークンデコーダ１７１０ｂに転送される。
【０１６８】
第１に、制限辞書トークン４６０ａが復号され、送信機側仮想セッション辞書１０２５ａと同様に、含まれている特定のパラメータ及び実際のセッション辞書１０２０ｄを使用し、仮想セッション辞書１０２５ｃの作成を可能にする。次いで、ペイロード４５４ｂの残りは、仮想セッション辞書１０２５ｃを使用して復号される。結果的に生じる復号されたデータは次いで受信機側発信メッセージ４７０ｂで送信され、関係する制御情報は、関係する一時セッションメモリ１００５ｃの情報にアクセスし、一時セッションメモリの記憶を同様に検討するセッションハンドラ１６００ｄに制御情報を送り返す使用カウンタマネージャ１５００ｄに送信される。ネットワークメッセージ４００ｆは同様に処理される。
【０１６９】
図２６は、トークンサイズ最適化機構に関係する実施例２に関するイベントの一般的なシーケンスを示している。ＩｏＴ装置１００ｄは、７３１０ａで適切な辞書エントリＩＤを辞書エントリＩＤリストに放出するために、任意の辞書符号化機構を使用する、送信機側のＩｏＴゲートウェイ５００ｉにＩｏＴ／センサデータ７３００ａを送信する。７３２０ａで、送信機側のＩｏＴゲートウェイ５００ｉは、トークン符号化のために使用するためのオフセット及び制限トークンサイズを計算し、７３３０ａで、以前に計算されたオフセット及び制限トークンサイズを使用して制限辞書トークンを符号化する。
【０１７０】
７３４０ａで、送信機側のＩｏＴゲートウェイ５００ｉは、受信機側のＩｏＴゲートウェイ５００ｊに標準トークンサイズで符号化された制限辞書トークンを送信し、トークンは復号され、含まれているオフセット及び制限トークンサイズの情報が以後の復号のためのパラメータを更新するために使用される。７３６０ａで、送信機側のＩｏＴゲートウェイは、以前に計算されたオフセットを適用後、辞書エントリＩＤリストのすべてのエントリを以前に計算されたトークンサイズのトークンに符号化し、７３１０ａで受信機側のＩｏＴゲートウェイ５００ｊに制限トークンサイズを有する符号化されたトークンを送信する。７４２０ａで、受信機側のＩｏＴゲートウェイ５００ｊは、以前に更新された復号パラメータを使用し、受信されたトークンを復号し、７３９０ａで、セッション辞書からの復号されたエントリＩＤによって参照されるパターンを選択し、受信機２００ｄに復号されたデータを送信するために、任意の辞書復号機構を使用する。
【０１７１】
その後、７４００ａで、送信機側のＩｏＴゲートウェイ５００ｉはリセットされた制限辞書トークンを符号化し、７３１０ａで制限トークンサイズを有するトークンを受信機側のＩｏＴゲートウェイ５００ｊに送信し、受信機側のＩｏＴゲートウェイ５００ｊは上述されたように同様にトークンを復号し、予約されたエントリＩＤとしてトークンを識別し、復号のためにその後使用されるパラメータをリセットする。最後に、７４３０ａで、送信機側のＩｏＴゲートウェイ５００ｉはそのセッション使用カウンタを更新し、７４４０ａで、受信機側のＩｏＴゲートウェイ５００ｊはそのセッション使用カウンタを更新する。
【０１７２】
図２７は、放出されたトークンサイズを最適化するためにトークン短縮動作を使用するときの送信機側の辞書符号化フローを説明する、実施例２のプログラムフロー５０００を示している。プログラムフロー５０００は５０１０で開始され、一般的な辞書符号化フローの代わりに、ステップ５０１５で説明されるように、送信機側のＩｏＴゲートウェイ５００ａのトークンエンコーダ１７００で実行される。ステップ５０２０で、データのブロックが受信される。一般的に、このデータは受信バッファ内にあり、その次の目的地又はその最終的な目的地に転送されるための準備が完了している。
【０１７３】
続くステップ５０３０及び５０３５はステップ５０２５で開始し、５０３５での条件ステップを通してループを離れることによって、５０２０で受信されたすべてのデータが完全に消費されるまでループで実行される。このループはループ最終ステップ５０４０で区切られる。ループの内側では、ステップ５０３０で、辞書符号化は受信されたデータブロックに対して実行されるが、符号化された辞書エントリＩＤトークンを放出する代わりに、辞書エントリＩＤは辞書エントリＩＤリストに付け加えられる。
【０１７４】
ステップ５０３５で、ブロック５０２０で受信されたすべてのデータが完全に消費されたかどうかがチェックされる。否定の場合、ループは、ステップ５０２５でループの始まりにジャンプすることでステップ５０４０で続行する。それ以外の場合、プログラムフローは、辞書エントリＩＤリストで最小のエントリＩＤｉ１を見つけることによってステップ５０４５で続行する。その後、辞書エントリＩＤリストの最大エントリＩＤｉｎがステップ５０５０で見つけられる。
【０１７５】
続くステップ５４００ａで、図２８の制限辞書トークンサイズ計算サブフローが呼び出され、制限トークンサイズｔ１である放出された結果を用いて制限辞書トークンサイズを計算する。その後、ステップ５０６０で、制限トークンサイズｔ１が標準トークンサイズｔと比較される。ステップ５０６５で、制限トークンサイズｔ１が標準トークンサイズｔよりも小さいかどうかが検査される。結果が肯定的である場合、ステップ５０７０で、オフセットが、最小のエントリＩＤｉ１から最大のエントリＩＤｉを差し引き、予約されたエントリＩＤの数を加算することで計算される。言い換えると、予約されたエントリ、並びに最小の索引及び最大の索引によって区切られたそれらのエントリを除くすべての辞書エントリを辞書から削除し、次いで最小の索引及び最大の索引で区切られたエントリＩＤブロックにオフセットを逆適用する（つまり、差し引く）とき、結果的に生じる仮想辞書は、直接的に及び切れ目なく、通常は元の辞書よりも著しく小さいサイズの、オフセットで調整されたエントリＩＤのブロックが後に続く予約されたエントリＩＤのブロックのみを含む。
【０１７６】
次のステップ５０７５で、制限辞書トークンは、最小の索引から最大の索引を差し引くことによって計算される、予約されていない辞書エントリのブロックのサイズ、及びステップ５０７０で計算されたオフセットを使用し、標準辞書トークンサイズとともに放出される。
【０１７７】
次のステップ５０８０で、符号化のためのトークンサイズが、ステップ５４００ａで呼び出されたサブフローで以前に計算された制限トークンサイズｔ１に設定される。続いて、続くステップ５０９０、５０９５、及び５１００はステップ５０８５で開始し、ループで呼び出され、ステップ５０２５で開始する以前のループのステップ５０３０で充填された辞書エントリＩＤリストのすべてのエントリで反復する。ループの内側では、ステップ５０９０で、オフセットは現在のエントリＩＤから差し引かれる。
【０１７８】
次いで、ステップ５０９５で、オフセットで調整されたエントリＩＤは、符号化のための現在のトークンサイズのトークンを符号化するために使用される。その後、ステップ５１００で、現在のエントリＩＤが辞書エントリＩＤリストの最後のアイテムであるかどうかがチェックされる。否定の場合、ループは、ステップ５０８５でループの始まりにジャンプして戻り、現在のエントリＩＤとして次のエントリＩＤを選択することでステップ５１０５で続行する。それ以外の場合、ループは、５１１０の発信ラベルＳＥから５１１５の入信ラベルＳＥにジャンプし、ステップ５１２０で辞書エントリＩＤリストをクリアすることで終了される。続いて、トークンサイズをリセットするための予約されたエントリＩＤはステップ５１２５で符号化される。一般的に、これは制限サイズから標準サイズへの符号化のためのトークンサイズのリセットを生じさせる。
【０１７９】
別の実施例では、ステップ５１２５は、異なるトークンサイズがステップ５１４０で設定された場合にのみ実行される。さらに別の実施例では、制限辞書トークンが、オフセットがゼロに設定され、サイズが予約されたエントリＩＤなしで完全な辞書に設定された状態で送信され、したがってオフセット及びサイズ情報を適用するときに作成される仮想辞書を元の辞書と等しくさせる。
【０１８０】
次のステップ５１３０で、ステップ５０２０で受信されたデータブロックのサイズは現在の一時セッションメモリブロックのセッション使用カウンタの非圧縮バイトフィールドに追加され、ステップ５１３５で、ステップ５０７５及び５０９５で放出されたすべてのトークンの累積されたサイズは現在の一時セッションメモリブロックのセッション使用カウンタの圧縮バイトフィールドに追加される。最後に、フローはステップ５１９９で終了する。ステップ５０６５の検査が否定的であった、つまり制限辞書トークンサイズｔ１が標準トークンサイズｔよりも大きい場合、プログラムフローは、元の辞書の標準トークンサイズｔに符号化のためのトークンサイズを設定することでステップ５１４０で続行する。プログラムフローは、上述されたようにステップ５０８５で続行する。別の実施例では、ステップ５１４０が省略される。図２７のプログラムフローの効果は、パターン局所性を活用し、辞書をベースの圧縮でショートパケットデータを符号化するときに使用されるトークンサイズの効率的な最適化である。
【０１８１】
図２８は、制限トークンサイズを計算することによるトークンサイズ最適化動作に関係する実施例２のプログラムフロー５４００を示している。プログラムフローはステップ５４１０で開始され、ステップ５４１５で説明されるように、送信機側のＩｏＴゲートウェイ５００ａのトークンエンコーダ１７００で図２７の送信機側短縮フロー５０００によってサブフローとして実行される。呼出しフロー５０００は、最小のエントリＩＤｉ１及び最大のエントリＩＤｉｎを提供する。第１のステップ５４２０で、制限辞書サイズは、最大のエントリＩＤｉｎから最小のエントリＩＤｉ１を差し引くことによって計算される。次のステップ５４３０で、制限辞書サイズは予約されたエントリＩＤのブロックのサイズを加算することで調整される。
【０１８２】
次のステップ５４４０で、制限辞書のための最適なトークンサイズは、以前に計算され、調整された制限辞書サイズの２を底とする対数を使用して計算される。最後に、フローはステップ５４９９で終了する。図２８のプログラムフローの効果は、送信機と受信機両方の側でのトークンサイズ最適化の実際の適用だけではなく、トークンサイズ最適化の評価も可能にするために、最適化されたトークンサイズの効率的な計算である。
【０１８３】
図２９は、例えば図５の一次メモリ１８３０に辞書エントリＩＤリストを記憶するために可能なデータ構造を説明する辞書エントリＩＤリストスキーマを示している。辞書エントリＩＤリストスキーマは、図２７のプログラムフローのブロック５０３０で放出されるように、図１１の現在使用されているセッション辞書のエントリＩＤを参照する、辞書エントリＩＤのリストを含む。複数の辞書エントリＩＤリストは、同時に存在し、リストＩＤフィールド２７１０によって一意に識別される。辞書エントリＩＤリストはおそらく図５の一次メモリ１８３０に記憶される。辞書エントリＩＤリストのエントリＩＤ２７１０は、図８の一時セッションメモリスキーマの使用済みリストＩＤフィールド１００９によって参照される。図２９の辞書エントリＩＤリストの各エントリＩＤ２７２０は、図８の同じ一時セッションメモリスキーマのセッション辞書ＩＤフィールド１００６によって参照されるように、セッション辞書ＩＤによって参照されるセッション辞書の、図１１のエントリＩＤ２３２０ｂを有する辞書エントリを参照している。
【０１８４】
図２７のプログラムフローの放出された各エントリＩＤは、エントリＩＤ２７２０のリストに付け加えられる。２７１０ａの「２３３」のリストＩＤ並びに２つのエントリＩＤ２７２０ａの「２７」及び２７２０ｂの「１５」を有する例示的な辞書エントリＩＤリストが、辞書エントリＩＤリスト１０４０ｄとして示される。
【０１８５】
図３０は、トークンサイズ最適化動作に関係する特殊制限辞書トークンのために可能な符号化を説明する、本実施例の実施例２の制限辞書トークンスキーマ２８００を示している。制限辞書トークンは、制限辞書トークンのために予約された予約済みのエントリＩＤを含むエントリＩＤフィールド２８１０ａを含む。さらに、制限辞書トークン２８００は、仮想制限辞書のために使用されるオフセットを含むオフセットフィールド２８２０ａ、及びサイズが制限された以後のトークンのサイズを含むトークンサイズフィールド２８３０ａを含む。例示的な制限辞書トークンは、予約されたエントリＩＤ１を含むエントリＩＤフィールド２８１０ｂ、オフセット１４２３を含むオフセットフィールド２８２０ｂ、及びトークンサイズ１１を含むトークンサイズフィールド２８３０ｂを含む。つまり、仮想辞書は、予約されたエントリＩＤを含む最大２０４８エントリを含むことがあり、復号された予約されていないエントリＩＤのいずれも、セッション辞書の参照されたパターンを検索する１４２３エントリによってシフトされなければならない。
【０１８６】
図３１は、放出されたトークンサイズを最適化するためにトークン短縮動作を使用するときの受信機側の辞書符号化フローを説明する、実施例２のプログラムフロー５２００を示している。プログラムフロー５２００はステップ５２１０で開始され、例えば図２０の簡略化された復号フロー等、一般的な辞書復号フローの代わりに、ステップ５２１５で説明されるように、受信機側のＩｏＴゲートウェイ５００ｂのトークンエンコーダ１７００で実行される。ステップ５２２０で、オフセットはゼロに初期化される。続いて、ステップ５２２５でデータブロックが受信される。概してこのことは、受信バッファが、読み取られる又は使用される入信データで準備されていることを意味する。次のステップ５２３０で、復号のためのトークンサイズｔは、現在の一時セッション辞書によって定義されるように、標準トークンサイズｔｄに設定される。
【０１８７】
その後、ループはステップ５２３５で開始され、ステップ５２６５でループ終了条件のためのチェックまですべての続くプログラムフローブロックを呼び出す。ループでは、ステップ５２２５で以前に受信されたデータブロックは、すべてのデータが消費されるまで処理される。ループの内側の第１のステップは５２４０であり、トークンは、例えば上述されたステップ５２３０、又は後述されるステップ５２５５又は５３０５の１つで以前に設定されたトークンサイズｔを使用して復号される。その後、トークンが制限辞書トークンであるかどうかが５２４５で検査される。検査が肯定的である場合、フローはステップ５２５０で続行し、制限辞書トークンのトークンサイズフィールドのオフセット及び制限トークンサイズが読み取られる。続くステップ５２５５で、復号のためのトークンサイズｔは以前のステップ５２５０で読み取られるトークンサイズに設定される。続いて、ステップ５２６０で、オフセットは、ステップ５２５０で読み取られる制限辞書トークンからの値に設定される。
【０１８８】
その後、すべてのデータが完全に消費されたかどうか、ループ終了条件がステップ５２６５で検査される。否定の場合、ループはステップ５２９０のループの終わりからステップ５２３５のループの始まりにジャンプすることで続行し、その後のプログラムフローは上述された通りである。復号されたトークンが制限辞書トークンであったかどうか５２４５の検査の結果が否定的である場合、プログラムフローはステップ５３００で続行し、復号されたトークンが特別なリセット制限辞書トークンであるかどうかがチェックされる。結果が肯定的である場合、プログラムフローはステップ５３０５で続行し、トークンサイズｔの設定値は、現在使用されている一時セッション辞書によって定義されるように、トークンを復号するために使用されるトークンサイズを標準トークンサイズｔｄに設定する。プログラムフローは、先述されたように、ステップ５２６５のループ終了条件検査で続行する。復号されたトークンが制限辞書トークンであるかどうかステップ５３００の検査が否定的である場合、現在のオフセットが０より大きいかどうかを検査することでステップ５３１０で続行する。肯定の場合、現在のオフセットをトークンの復号されたエントリＩＤ番号に加算することでステップ５３１５で続行する。その後、ステップ５３３０で、一時セッション辞書を活用し、標準辞書復号を実行し、復号されたデータｄに復号されたパターンを付け加え、放出する。このデータは図５の一次メモリ１８３０の一時送信バッファであってよい。プログラムフローは、先述されたように、ステップ５２６５のループ終了条件検査で続行する。ステップ５３１０の検査が否定的である場合、すなわち現在のオフセットが０以下である場合、プログラムフローは上述されたように、直ちにステップ５３３０で続行する。
【０１８９】
ステップ５２６５のループ終了条件検査が肯定的である場合、プログラムフローはステップ５２７０の発信ラベルＳＤからステップ５２７５の入信ラベルＳＤにジャンプすることで続行する。次のステップ５２８０で、ステップ５２２５で受信されるデータのサイズが現在の一時セッションメモリブロックのセッション使用カウンタの圧縮バイトフィールドに追加される。
【０１９０】
次のステップ５２８５で、例えばステップ５３３０で充填されるように、送信バッファのサイズ全体等のすべての放出されたパターンの累積されたサイズは、現在の一時セッションメモリのセッション使用カウンタの非圧縮バイトフィールドに追加される。最後に、ステップ５３９９で、プログラムフローは終了する。
【０１９１】
図３１のプログラムフローの効果は、受信機側での図２７のプログラムフローで最適化されたトークンを復号する能力にある。
【実施例３】
【０１９２】
実施例３は上記の実施例の変形例であり、説明のために個々の図を使用していない。  
実施例３では、実施例３の上述されたトークンサイズ最適化動作が、実施例１の辞書再利用動作が使用されないＩｏＴゲートウェイで使用される。
【０１９３】
実施例３の一実施例では、各セッションは、空の辞書を用いて又は辞書の符号化及び復号機構が実行できるように初期化された辞書を用いて辞書の符号化及び復号を始める。実施例３の別の実施例では、事前に初期化された辞書が使用されるが、辞書は記憶又は更新されない。したがって、実施例３は、実施例２で説明されるトークンサイズ最適化動作のみを使用する辞書の符号化及び復号機構に焦点を当てる。
【０１９４】
上述されたように、本実施例の標準的なシステムは使用中の辞書の圧縮効率を連続的に監視し、記憶する辞書の圧縮効率の評価、並びにおそらく使用中の辞書の圧縮効率と更新する辞書の圧縮効率との比較に基づいて新規辞書の記憶又は既存の辞書の更新を決定する。
【０１９５】
本実施例の別の標準的なシステムは、符号化を第１の辞書エントリ放出段階及び第２のトークン符号化段階に分割し、第２のトークン符号化段階の前に、第１のエントリ放出段階の間に活用されるエントリの概算を含む、元の辞書に基づいた小さい仮想辞書を作成する。これにより同じ仮想辞書はオフセットを使用するだけで元の辞書から作成でき、小さい仮想辞書のサイズのみを反映するためにトークンサイズを一時的に削減し、オフセット及び削減されたトークンサイズの効率的な通信を可能にして、一時的に削減されたトークンサイズで符号化されたトークンの復号を可能にする。
【０１９６】
本実施例は、データ圧縮方法に関する本発明の態様を含む。この方法では、送信機ゲートウェイはセッション辞書に基づいて受信機ゲートウェイにトークンを送信する。そして、この方法はさらに、転送データを圧縮するためにセッション辞書の必要な部分を指定すること、トークンの置換に使用される制限トークンのサイズを計算すること、制限トークンとトークンのサイズを比較すること、及び制限トークンのサイズがトークンのサイズよりも小さい場合、送信機ゲートウェイによって制限トークンを受信機ゲートウェイに送信することを含む。
【０１９７】
すなわち、このネットワークトラフィック転送方法は、送信されたデータを圧縮するために辞書圧縮機構を使用し、データの有限ブロックを圧縮するときに辞書圧縮機構の辞書の活用に関して放出されたトークンを圧縮する。より詳細には、トークン圧縮機構を使用するこの方法は、データの有限ブロックを圧縮するために使用されるすべての辞書エントリＩＤがサブセットに組み込まれ、サブセットはオフセット及びサイズのみを使用し、辞書から作成でき、サブセットが辞書よりも少ないエントリを含むように辞書のすべての辞書エントリＩＤの連続サブセットを活用する。
【０１９８】
上記方法では、連続サブセットは、辞書圧縮機構がまずリストの終わりに辞書エントリＩＤを放出し、その後リストの最小辞書エントリＩＤ及び最大辞書エントリＩＤを計算することで計算される。そして、辞書圧縮機構は、連続サブセットの長さを使用することで一時トークンサイズを計算し、リスト順序で放出された辞書エントリＩＤのリストの辞書エントリＩＤごとに、オフセット及び連続サブセットの長さだけではなく、元の辞書のコピーのみを保持する受信機によって復号できる、一時トークンサイズのトークンを放出する。
【０１９９】
上述の実施例に従って、再利用される辞書の辞書効率は連続的に改善され、ショートパケットを符号化するときの活用が不十分な大きい辞書に起因するトークンサイズオーバヘッドは大幅に削減され、圧縮効率を大幅に改善する。
【符号の説明】
【０２００】
１００ａ：ＩｏＴ装置＃１
１５０ａ：ＩｏＴ装置＃１のネットワークデータ
４００ａ：メッセージ＃１
４０２ａ：メッセージ＃１ヘッダ
４０４ａ：メッセージ＃１ペイロード
１００ｂ：ＩｏＴ装置＃２
１５０ｂ：ＩｏＴ装置＃２のネットワークデータ
４００ｂ：メッセージ＃２
４０２ｂ：メッセージ＃２ヘッダ
４０４ｂ：メッセージ＃２ペイロード
３００ａ：送信機側ＬＡＮ
５００ａ：送信機側のＩｏＴゲートウェイ
６００ａ：送信機側のＩｏＴゲートウェイの機能ブロック
３２０：ＷＡＮ
５００ｂ：受信機側のＩｏＴゲートウェイ
６００ｂ：受信機側のＩｏＴゲートウェイの機能ブロック
３００ｂ：受信機側ＬＡＮ
２００ａ：受信機＃１
２００ｂ：受信機＃２
【図１】
2018006964.tif 000003
【図２】
2018006964.tif 000004
【図３】
2018006964.tif 000005
【図４】
2018006964.tif 000006
【図５】
2018006964.tif 000007
【図６】
2018006964.tif 000008
【図７】
2018006964.tif 000009
【図８】
2018006964.tif 000010
【図９】
2018006964.tif 000011
【図１０】
2018006964.tif 000012
【図１１】
2018006964.tif 000013
【図１２】
2018006964.tif 000014
【図１３】
2018006964.tif 000015
【図１４】
2018006964.tif 000016
【図１５】
2018006964.tif 000017
【図１６】
2018006964.tif 000018
【図１７】
2018006964.tif 000019
【図１８】
2018006964.tif 000020
【図１９】
2018006964.tif 000021
【図２０】
2018006964.tif 000022
【図２１】
2018006964.tif 000023
【図２２】
2018006964.tif 000024
【図２３】
2018006964.tif 000025
【図２４】
2018006964.tif 000026
【図２５】
2018006964.tif 000027
【図２６】
2018006964.tif 000028
【図２７】
2018006964.tif 000029
【図２８】
2018006964.tif 000030
【図２９】
2018006964.tif 000031
【図３０】
2018006964.tif 000032
【図３１】
2018006964.tif 000033
【外国語明細書】
2018006964000001.pdf