(57)【要約】  本発明によれば、一般的な圧縮スキームのネゴシエーションを達成して、通信しているソフトウェアプロセスの間で通信効率を増大させるため、第１のソフトウェアプロセスと通信している第２のソフトウェアプロセスへ、第１のソフトウェアプロセスでの圧縮能力を表すメッセージを送信する圧縮スキームのネゴシエーション方法及びその関連した装置が提案されている。第２のソフトウェアプロセスは、圧縮オプションの表示で応答し、次いで、第１のソフトウェアプロセスと第２のソフトウェアプロセスとの間の通信圧縮が確立される。更に、本発明によれば、トンネリングをカプセル化して、第１のメッセージと第２のメッセージとの交換へ適用し、圧縮スキーム・ネゴシエーション・フレームワークと、実際に適用されるトランスポートプロトコルとの疎結合を達成することが提案されている。
2007524314.tif 000002
【特許請求の範囲】
【請求項１】
通信しているソフトウェアプロセス間のデータ転送率の良い通信のための圧縮スキームのネゴシエーション方法であって、
ソフトウェアプロセスの圧縮能力を表す第１のメッセージを交換して、前記ソフトウェアプロセスとの後続通信中に使用される通信圧縮スキームを定めるステップと、
前記第１のメッセージに応答して圧縮オプションを表す第２のメッセージを交換し、前記圧縮能力及び前記圧縮オプションの関数として後続通信中に使用される前記通信圧縮スキームを確立するステップとを含んでおり、
前記第１のメッセージ及び前記第２のメッセージは、メッセージ交換に使用されるトランスポートプロトコルとの互換性を得るためにカプセル化されるものである
方法。
【請求項２】
前記第１のメッセージが、異なる抽象レベルにある圧縮能力を表すものである、請求項１に記載の方法。
【請求項３】
前記抽象レベルが、圧縮スキームのネゴシエーションの状態に従って選択される、請求項２に記載の方法。
【請求項４】
前記第１のメッセージが、圧縮利得に従って順序づけられたリストとして、前記ソフトウェアプロセスによってサポートされる圧縮スキームを表すものである、請求項１ないし３のいずれか一項に記載の方法。
【請求項５】
前記第１のメッセージが、圧縮クラス、圧縮規格、または圧縮インプリメンテーションに従って、異なる抽象レベルにある圧縮能力を表すものである、請求項２ないし４のいずれか一項に記載の方法。
【請求項６】
前記第１のメッセージが、前記圧縮クラスに従って、圧縮クラス識別子を介して圧縮能力を表すものである、請求項５に記載の方法。
【請求項７】
前記第１のメッセージが、前記圧縮クラスの名称及び／又は前記圧縮クラスの説明を任意的に表すものである、請求項６に記載の方法。
【請求項８】
前記第１のメッセージが、前記圧縮規格に従って、圧縮規格識別子を介して圧縮能力を表すものである、請求項５に記載の方法。
【請求項９】
前記第１のメッセージが、更に、互換性識別子及び／又は規格の作成者を表すものである、請求項８に記載の方法。
【請求項１０】
前記第１のメッセージが、規格の名称、規格の説明、規格ドキュメント識別、規格の更新、少なくとも１つの規格のパラメータ、及び／又は規格の認証者を任意的に表すものである、請求項９に記載の方法。
【請求項１１】
前記第１のメッセージが、前記圧縮インプリメンテーションに従って、圧縮インプリメンテーション識別子を介して圧縮能力を表すものである、請求項５に記載の方法。
【請求項１２】
前記第１のメッセージが、更に、前記圧縮インプリメンテーションの互換性識別子、前記圧縮インプリメンテーションの作成者、及び／又は前記圧縮インプリメンテーションに関する圧縮規格識別子を表すものである、請求項１１に記載の方法。
【請求項１３】
前記第１のメッセージが、前記圧縮インプリメンテーションの名前、前記圧縮インプリメンテーションの説明、少なくとも１つの前記圧縮インプリメンテーションのパラメータ、及び／又は前記圧縮インプリメンテーションの認証者を任意的に表すものである、請求項１１または１２に記載の方法。
【請求項１４】
前記圧縮オプションを表す第２のメッセージが、少なくとも第１のメッセージの応答ステータスコードと第１のメッセージの識別とを含むものである、請求項１ないし１３のいずれか一項に記載の方法。
【請求項１５】
前記第２のメッセージが、前記第１のメッセージへの応答の文字列の説明を任意的に含むものである、請求項１４に記載の方法。
【請求項１６】
前記第１のメッセージと前記第２のメッセージとが、ソフトウェアプロセスの実行中に交換される、請求項１ないし１５のいずれか一項に記載の方法。
【請求項１７】
前記第１のメッセージと前記第２のメッセージとが、前記圧縮スキームのネゴシエーションが合意されるまで複数回交換される、請求項１ないし１６のいずれか一項に記載の方法。
【請求項１８】
前記通信圧縮スキームを確立するために前記圧縮インプリメンテーションを起動するステップを含む、請求項１ないし１７のいずれか一項に記載の方法。
【請求項１９】
前記通信圧縮スキームを確立するために前記圧縮インプリメンテーションを発見するステップを含む、請求項１ないし１７のいずれか一項に記載の方法。
【請求項２０】
前記通信圧縮スキームを確立するために前記圧縮インプリメンテーションをダウンロードするステップを含む、請求項１９に記載の方法。
【請求項２１】
前記圧縮インプリメンテーションがコード・リポジトリからダウンロードされる、請求項２０に記載の方法。
【請求項２２】
前記圧縮スキームのネゴシエーションの開始時にタイムアウトのメカニズムを起動するステップを更に含む、請求項１ないし２１のいずれか一項に記載の方法。
【請求項２３】
前記圧縮スキームを再構成するため、前記ソフトウェアプロセスの実行時に実行される、請求項１ないし２２のいずれか一項に記載の方法。
【請求項２４】
前記圧縮スキームが確立されないとき、前記圧縮スキームを適用しないでデータ通信へフォールバックするステップを含む、請求項１から２３の一項に記載の方法。
【請求項２５】
前記第１のメッセージが前記ソフトウェアプロセスから送信され、前記第２のメッセージが前記ソフトウェアプロセスで受信される、請求項１ないし２４のいずれか一項に記載の方法。
【請求項２６】
前記ソフトウェアプロセスと通信している更なるソフトウェアプロセスで前記第１のメッセージが受信され、前記更なるソフトウェアプロセスから第２のメッセージが送信される、請求項１ないし２４のいずれか一項に記載の方法。
【請求項２７】
前記ソフトウェアプロセスから圧縮スキーム・ネゴシエーション・ソフトウェアプロセスへ前記第１のメッセージが送信される、請求項１ないし２４のいずれか一項に記載の方法。
【請求項２８】
前記圧縮スキーム・ネゴシエーション・ソフトウェアプロセスからの前記第２のメッセージが、前記ソフトウェアプロセスで受信される、請求項２７に記載の方法。
【請求項２９】
前記ソフトウェアプロセスと通信している前記更なるソフトウェアプロセスからの前記第２のメッセージが前記ソフトウェアプロセスで受信される、請求項２７に記載の方法。
【請求項３０】
通信しているソフトウェアプロセス間のデータ転送率の良い通信のための圧縮スキームのネゴシエーション装置であって、
ここで前記ネゴシエーション装置が、圧縮スキーム通信ユニットと圧縮スキーム確立ユニットとを含むものであって、
前記圧縮スキーム通信ユニットが、ソフトウェアプロセスとの後続通信で使用される通信圧縮スキームを定めるために前記ソフトウェアプロセスの圧縮能力を表す第１のメッセージを交換するように構成され、
前記圧縮スキーム通信ユニットが、後続通信で使用される前記通信圧縮スキームを確立するため、前記第１のメッセージに応答して圧縮オプションを表す第２のメッセージを交換するように構成され、
前記圧縮スキーム確立ユニットが、前記圧縮能力と前記圧縮オプションとの関数として圧縮スキームを確立するように構成され、
前記圧縮スキーム通信ユニットが、メッセージ交換に使用されるトランスポートプロトコルとの互換性を得るために、前記第１のメッセージと前記第２のメッセージとをカプセル化するように構成される
装置。
【請求項３１】
異なる抽象レベルで前記圧縮能力を表すために前記第１のメッセージをセットアップするように構成された圧縮能力指定ユニットを含む、請求項３０に記載の装置。
【請求項３２】
前記圧縮能力指定ユニットが、圧縮スキームのネゴシエーションの状態に従って抽象レベルを選択するように構成されている、請求項３１に記載の装置。
【請求項３３】
前記圧縮能力指定ユニットは、前記第１のメッセージをセットアップするように構成されており、前記第１のメッセージは、圧縮利得に従って順序づけられたリストとして、ソフトウェアプロセスによってサポートされる圧縮スキームを表すものである、請求項３０ないし３２のいずれか一項に記載の装置。
【請求項３４】
前記圧縮能力指定ユニットが、圧縮クラスと圧縮規格と圧縮インプリメンテーションとのいずれかに従って異なる抽象レベルにある前記圧縮能力を表す前記第１のメッセージをセットアップするように構成されている、請求項３１ないし３３のいずれか一項に記載の装置。
【請求項３５】
前記圧縮能力指定ユニットが、前記圧縮クラスに従って、圧縮クラス識別子を介して前記圧縮能力を表す前記第１のメッセージをセットアップするように構成されている、請求項３４に記載の装置。
【請求項３６】
前記圧縮能力指定ユニットが、前記圧縮クラスの名前及び／又は前記圧縮クラスの説明を任意的に表す前記第１のメッセージをセットアップするように構成されている、請求項３５に記載の装置。
【請求項３７】
前記圧縮能力指定ユニットが、前記圧縮規格に従って、圧縮規格識別子を介して前記圧縮能力を表す前記第１のメッセージをセットアップするように構成されている、請求項３４に記載の装置。
【請求項３８】
前記圧縮能力指定ユニットが、互換性識別子及び／又は規格の作成者を表す前記第１のメッセージをセットアップするように構成されている、請求項３７に記載の装置。
【請求項３９】
前記圧縮能力指定ユニットが、規格の名前、規格の説明、規格ドキュメントの識別、規格の修正、少なくとも１つの規格のパラメータ、及び／又は規格の認証者を任意的に表す前記第１のメッセージをセットアップするように構成されている、請求項３８に記載の装置。
【請求項４０】
前記圧縮能力指定ユニットが、圧縮インプリメンテーション識別子で前記圧縮インプリメンテーションを表す前記第１のメッセージをセットアップするように構成されている、請求項３４に記載の装置。
【請求項４１】
前記圧縮能力指定ユニットが、前記圧縮インプリメンテーションの前記互換性識別子、前記圧縮インプリメンテーションの作成者、及び／又は圧縮インプリメンテーションに関する圧縮規格識別子を表す前記第１のメッセージをセットアップするように構成されている、請求項４０に記載の装置。
【請求項４２】
前記圧縮能力指定ユニットが、前記圧縮インプリメンテーションの名前、前記圧縮インプリメンテーションの説明、少なくとも１つの圧縮インプリメンテーションパラメータ、及び／又は前記圧縮インプリメンテーションの認証者を任意的に表す前記第１のメッセージをセットアップするように構成されている、請求項４０または４１に記載の装置。
【請求項４３】
前記第１のメッセージの少なくとも応答ステータスコード及び識別を表す第２のメッセージをセットアップするように構成された圧縮オプション指定ユニットを含む、請求項３０から４２の一項に記載の装置。
【請求項４４】
前記圧縮オプション指定ユニットが、前記第１のメッセージへの応答の文字列の説明を任意的に表す前記第２のメッセージをセットアップするように構成されている、請求項４３に記載の装置。
【請求項４５】
前記圧縮スキーム通信ユニットが、前記ソフトウェアプロセスの実行時に前記第１のメッセージ及び前記第２のメッセージを交換するように構成されている、請求項３０ないし４４のいずれか一項に記載の装置。
【請求項４６】
前記圧縮スキーム通信ユニットが、圧縮スキームのネゴシエーションが合意されるまで前記第１のメッセージ及び前記第２のメッセージを複数回交換するように構成されている、請求項３０ないし４５のいずれか一項に記載の装置。
【請求項４７】
前記通信圧縮スキームを確立するため、前記圧縮インプリメンテーションを起動するように構成された圧縮インプリメンテーション起動ユニットを含む、請求項３０ないし４６のいずれか一項に記載の装置。
【請求項４８】
前記通信圧縮スキームを確立するため、前記圧縮インプリメンテーションを発見するように構成された圧縮インプリメンテーション発見ユニットを含む、請求項３０ないし４６のいずれか一項に記載の装置。
【請求項４９】
前記通信圧縮スキームを確立するため、前記圧縮インプリメンテーションをダウンロードするように構成された圧縮インプリメンテーションダウンロード・ユニットを含む、請求項４８に記載の装置。
【請求項５０】
前記圧縮インプリメンテーションダウンロード・ユニットが、コード・リポジトリから前記圧縮インプリメンテーションをダウンロードするように構成されている、請求項４９に記載の装置。
【請求項５１】
前記圧縮スキームのネゴシエーションの開始時にタイムアウトのメカニズムを起動するように構成された制御ユニットを更に含む、請求項３０ないし５０のいずれか一項に記載の装置。
【請求項５２】
前記圧縮スキームを再構成するため、前記ソフトウェアプロセスの実行時に前記圧縮スキームのネゴシエーションを実行する、請求項３０ないし５１のいずれか一項に記載の装置。
【請求項５３】
前記圧縮スキームが確立されないとき、圧縮スキームの適用なしにデータ通信へのフォールバックを開始するように制御ユニットが構成されている、請求項３０ないし５２のいずれか一項に記載の装置。
【請求項５４】
前記圧縮スキーム通信ユニットが、前記第１のメッセージを送信し、前記第２のメッセージを受信するように構成されている、請求項３０ないし５３のいずれか一項に記載の装置。
【請求項５５】
前記圧縮スキーム通信ユニットが、前記第１のメッセージを受信し、前記第２のメッセージを送信するように構成されている、請求項３０ないし５４のいずれか一項に記載の装置。
【請求項５６】
圧縮スキームのネゴシエーション装置の内部メモリへ直接ロード可能なコンピュータプログラム製品あって、圧縮スキームのネゴシエーション装置のプロセッサ上で実行する際、請求項１ないし２９のいずれか一項に記載の方法を実行するソフトウェアコード部を含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮スキームのネゴシエーションに関し、具体的には、通信しているソフトウェアプロセスと関連装置との間のデータ転送率の良い通信のための圧縮スキームをネゴシエーションする方法に関する。
【背景技術】
【０００２】
通常、圧縮スキームの適用によって、異なるソフトウェアプロセス間で情報を交換する間、メモリ容量または伝送容量を低減することができる。特に無線環境において、関連したプロトコル・メッセージを含むデータ交換のために圧縮スキームを適用することは、不十分な無線周波数帯域（wireless spectrum）を更に効率的に使用することに寄与する。
【０００３】
現今、様々なタイプのアプリケーションに対応した非常に多様な圧縮スキームが存在している。例を挙げると、インターネットにおけるデータ交換の圧縮スキーム、例えば、ＷｉｎＺｉｐ、ＸＭＬデータの圧縮スキーム、及び、例えば、Ｕ．Ｎｉｅｄｅｒｍｅｉｅｒ，Ｊ．Ｈｅｕｅｒ，Ａ．Ｈｕｔｔｅｒ，Ｗ．Ｓｔｅｃｈｅｌｅ及びＡ．Ｋａｕｐ著の「Ａｎ  ＭＰＥＧ−７  ｔｏｏｌ  ｆｏｒ  ｃｏｍｐｒｅｓｓｉｏｎ  ａｎｄ  ｓｔｒｅａｍｉｎｇ  ｏｆ  ＸＭＬ  ｄａｔａ」（ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｍｕｌｔｉｍｅｄｉａ  ａｎｄ  Ｅｘｐｏ，Ｌａｕｓａｎｎｅ，Ｓｗｉｔｚｅｒｌａｎｄ、２００２年８月）、「ｈｔｔｐ：／／ｗｗｗ．ｗ３．ｏｒｇ／ＴＲ／ｗｂｘｍｌ」で公開されているＷＢＸＭＬ（Wireless Binary XML）、Ｈ．Ｌｉｅｆｋｅ及びＤ．Ｓｕｃｉｕ著の「ＸＭＩＩＩ：Ａｎ  Ｅｆｆｉｃｉｅｎｔ  Ｃｏｍｐｒｅｓｓｏｒ  ｆｏｒ  ＸＭＬ  Ｄａｔａ」（Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  ＭＳＣＩＳ−９９−２６，Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｐｅｎｎｓｙｌｖａｎｉａ，１９９９年）、及びＤ．Ｓａｌｏｍｏｎ著の「Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ」（Ｔｈｅ  Ｃｏｍｐｌｅｔｅ  Ｒｅｆｅｒｅｎｃｅ，Ｓｐｒｉｎｇｅｒ，Ｎｅｗ  Ｙｏｒｋ，１９９７年）に記載されている圧縮スキームが存在する。
【０００４】
圧縮スキームのネゴシエーションに関しては、使用されるコーデック及びコンテンツの圧縮またはディジタル化をネゴシエーションするため、マルチメディアコンテンツの配信サービスまたはマルチメディアの通信サービス、例えば、Ｈ．３２３またはＳＩＰのような関連ネゴシエーションメカニズムがある。同様に、ＨＴＴＰプロトコルは、ＭＩＭＥタイプの圧縮スキームを使用して、所定の情報コンテンツに対する符号化について、リクエスト中のソフトウェアプロセスに通知する。
【０００５】
しかし、全ての既知の圧縮スキームのネゴシエーション方法は、或る一定のタイプのアプリケーションに制限される。したがって、通信しているソフトウェアプロセスの間のデータ転送率の良い通信を実現するために、異なる言語、バージョンで書かれ、異なるオペレーティングシステムの下で動作している異なるプロセスに対して、実行中に圧縮スキームのネゴシエーション及び再構成を保証するような一般的な圧縮スキーム・ネゴシエーション・フレームワーク（compression scheme negotiation framework）は存在しない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記の見地から、本発明の問題は、一般的な圧縮スキームのネゴシエーションを達成して、通信しているソフトウェアプロセスの間の通信効率を増加させることである。
【課題を解決するための手段】
【０００７】
本発明によれば、この目的は、通信しているソフトウェアプロセスの間のデータ転送率の良い通信のための圧縮スキームのネゴシエーション方法及びこれに関連した装置によって達成される。
【０００８】
本方法は、第１のステップで、ソフトウェアプロセスの圧縮能力（compression capability）を表す第１のメッセージの交換を達成し、ソフトウェアプロセスとの間で後続の通信で使用される通信圧縮スキームを定める。更に、第１のメッセージに応答して、圧縮オプションを表す第２のメッセージがソフトウェアプロセスとの間で交換される。
【０００９】
次に、圧縮能力及び圧縮オプション(compression option)の関数として、または言い換えれば、ソフトウェアプロセスで利用可能な圧縮スキーム機能と、通信に提供された圧縮オプション、例えば、利用可能な圧縮スキーム、圧縮利得（compression gain）等との関係及びマッチングに従って、ソフトウェアプロセスとの後続通信ための通信圧縮スキームが確立される。
【００１０】
更に、本発明の圧縮スキームのネゴシエーション方法によれば、関連したメッセージの交換で使用されるトランスポートプロトコルとの互換性を得るため、第１のメッセージ及び第２のメッセージをカプセル化することが提案されている。
【００１１】
言い換えれば、本発明によれば、第１のメッセージ及び第２のメッセージへトンネリング（tunneling）を適用することが提案されている。
【発明の効果】
【００１２】
本発明の重要な利点は、カプセル化及びトンネリングを介して達成される柔軟性である。カプセル化及びトンネリングによって、圧縮スキーム・ネゴシエーション・フレームワークは、圧縮スキーム・ネゴシエーション・フレームワークのために使用されるトランスポートプロトコルから独立することができる。より低いレイヤのプロトコルが第１及び第２のメッセージを包むので、より低いレイヤのトランスポートプロトコルメッセージを設計の意思決定として事前に指定する必要はない。これによって、より高いレベルのプロトコルスタックに存在する本発明の圧縮スキーム・ネゴシエーション・フレームワークの中で、より低いレイヤのプロトコルを広範囲に適用することができる。言い換えれば、本発明は、圧縮スキーム・ネゴシエーション・フレームワークのセットアップ中に、実施の特定態様の考慮を回避することができる。
【００１３】
更に、本発明の圧縮スキーム・ネゴシエーション・フレームワークの一般性は、通信しているソフトウェアプロセスの間のデータ転送率が効率的な通信になるために圧縮ソフトウェアのネゴシエーション及び頒布の全ての機能性態様を動作可能にする拡張可能メカニズムの中でプロセス間通信をサポートする。異なる言語、バージョンで書かれ、異なるオペレーティングシステムの下で実行している異なるソフトウェアプロセスは、圧縮スキームをより効率的に適用するために、ネゴシエーション・フレームワークを確実に使用できるように、本発明の圧縮スキームのネゴシエーション方法及び関連するフレームワークを使用することができる。
【００１４】
更に、本発明の他の利点は、プロセス間ネゴシエーション、通信データの圧縮、及び圧縮スキームのネゴシエーションの分野、更に事前にインストールされた圧縮スキームのランタイムリコンフィグレーション（runtime reconfiguration）の分野へも一般的に応用できることである。したがって、本発明から利益を受けるソフトウェアアプリケーションは、例えば、ＸＭＬメタデータを使用するアプリケーション間通信、シグナリングのためにネゴシエーションされた圧縮スキームを使用するアプリケーション間通信、データ転送速度の効率的な通信サービスのために既存の圧縮ソフトウェアを管理、発見、及び使用するプロセスをリクエストするソフトウェアアプリケーション等を含んでいる。
【００１５】
好ましい実施形態によれば、プロセスが既存の圧縮スキームを管理、発見、及び使用できるようにするため、異なるタイプのメッセージは、関係するソフトウェアプロセスによって使用されるように定義されている。本発明によれば、各々のタイプのメッセージが、圧縮スキームのネゴシエーション中にソフトウェアプロセスとの間で交換されることは要求されないが、異なるタイプのメッセージは、異なるレベルの命令で圧縮能力を表すことができることが示されている。好ましくは、命令のレベルは、圧縮スキームのネゴシエーション状態に従って選択される。
本発明の好ましい実施形態によれば、異なる抽象レベルにある圧縮能力の指定レベルは、圧縮クラス（compression class）、圧縮規格（compression specification）、及び／又は圧縮インプリメンテーション（compression implementation）である。圧縮クラスは、圧縮スキームの最も一般的な記述であり、より具体的な圧縮規格が次に続き、その次に、圧縮スキームを実行する実際のコードを意味する圧縮インプリメンテーションが続くようになっている。
したがって、本発明によれば、圧縮スキームの可用性に依存して、圧縮スキームの仕様を定める抽象レベルを変更することができる。例えば、もし圧縮スキームの規格を記述するメッセージによって、関連した圧縮スキームの使用について合意に至らないならば、圧縮クラスを交換する抽象レベルを１つステップアップして、発見可能な圧縮スキームの範囲を広くすることができる。次に、利用可能なクラスに従って１つの圧縮スキームを識別した圧縮スキーム規格のレベルへ戻り、続いてソフトウェアプロセスとの間でペイロード・データ（payload data）を実際に交換するために使用される実際の圧縮スキームのインプリメンテーションを行うことができる。
【００１６】
ここで、利点は、ネゴシエーション中に、各々のタイプのメッセージをソフトウェアプロセスとの間で交換する必要がないことである。もし圧縮スキームのインプリメンテーションが、２つのメッセージの最小シーケンスのみを使用してネゴシエーション可能であれば、これは、本発明によれば効率的であり奨励されることである。圧縮スキームのネゴシエーション中の各々のメッセージ交換は、ソフトウェアプロセスによって使用される最終の圧縮スキームのインプリメンテーションを制限するために使用されている。
【００１７】
したがって、本発明による圧縮スキームのネゴシエーション方法は、必要最低限として、圧縮スキーム規格の指定を要求するだけである。この場合、圧縮スキームの指定のみがなされ、関係するソフトウェアプロセスは、ネゴシエーションされた圧縮スキームの規格の既存の実装をローカルで有し、したがって、更なる圧縮スキーム・ネゴシエーション・メッセージ（compression scheme negotiation message）の交換は必要でない。
【００１８】
本発明の好ましい実施形態によれば、圧縮スキームのネゴシエーションは、ソフトウェアプロセスの初期化の時点で達成されるだけでなく、ソフトウェアプロセスが開始された後、その実行時でも達成されるようになっている。
【００１９】
したがって、本発明は、更に、圧縮スキームの動的な再ネゴシエーションをサポートする。データ通信の間に必要な圧縮利得の量に依存して、データ転送が効率的な通信及び帯域幅節減のために圧縮スキームを適応させることが可能である。
【００２０】
更に、この好ましい実施形態は、利用可能な圧縮ソフトウェア及び異なるプロセスの圧縮の再ネゴシエーションに基づくランタイムリコンフィグレーションの可能性に関して、柔軟性を増加させる。
【００２１】
更に、ソフトウェアプロセスの適用中の任意の時点で、関連したソフトウェアプロセスのために最も効率的な圧縮ソフトウェアを選択して、例えば、メタデータまたは信号データ等を交換することができる。
【００２２】
更に他の好ましい実施形態によれば、本発明による圧縮スキーム・ネゴシエーション・フレームワークは、更に、通信圧縮スキームを確立する圧縮インプリメンテーションの発見をサポートし、更に好ましくは、関連した発見の後に、例えば、圧縮コード・リポジトリ（compression code repository）からの圧縮ソフトウェアインプリメンテーションのダウンロードをサポートする。
【００２３】
本発明のこの好ましい実施形態の重要な利点は、圧縮スキームのソフトウェアに関して増加した柔軟性及び可用性である。
【００２４】
更に、通信スキームをベースとした通信を目的とする各々のソフトウェアプロセスのために、関連した圧縮ソフトウェアをリアルタイムで発見及びダウンロードして、ソフトウェアプロセスがインストール及び初期化される装置において、メモリ容量を最小化することができる。これは、携帯装置、例えば、携帯電話及び携帯システム手帳に特に有用である。しかし、これは、更に、ソフトウェアプロセスがインストールされてよい非携帯性の装置にも有益である。
【００２５】
更に、本発明の他の好ましい実施形態によれば、圧縮スキームのネゴシエーションのためにタイムアウトのメカニズム（timeout mechanism）が提供される。更に好ましくは、圧縮スキームの適用なしにデータ通信へフォールバックすることが可能であり、タイムアウトのメカニズムのために設定された時間間隔内で、圧縮スキームを確立しなくてもよい。
【００２６】
したがって、本発明によれば、更に、圧縮スキームのネゴシエーションによって合意が達成されない状況が考えられる。つまり、この稀なケースの場合でも、非圧縮データの情報交換へのフォールバックによって、ソフトウェアプロセスが終了することはない。これによって、ソフトウェアプロセス通信の間に固定量の圧縮が必要であることを理論的枠組みとして残しながら、最大レベルでのソフトウェアプロセスの動作可能性を維持することができる。
【００２７】
本発明の他の好ましい実施形態によれば、圧縮スキームのネゴシエーション装置の内部メモリへ直接ロード可能なコンピュータプログラム製品が提供される。このコンピュータプログラム製品は、圧縮スキームのネゴシエーション装置のプロセッサで実行する際、本発明のプロセスを実行するソフトウェアコード部を含んでいる。
【００２８】
したがって、本発明は、更に、コンピュータまたはプロセッサシステムで本発明の方法のステップを実施するために提供される。結論として、そのような実施は、コンピュータシステム、または、更に具体的には、例えば、圧縮スキームのネゴシエーション装置に含まれるプロセッサ上で実行されるコンピュータプログラム製品を提供する。
【００２９】
本発明の機能を定義するこのプログラムは、多くの形態でコンピュータ又はプロセッサへ提供することができる。この形態は、非限定的に、非書き込み可能記憶媒体、例えば、プロセッサまたはコンピュータＩ／Ｏアタッチメントによって読み取り可能なＲＯＭ又はＣＤ−ＲＯＭディスクのような読み取り専用メモリデバイスに永続的に記憶された情報を含み、更に書き込み可能記憶媒体、即ち、フロッピー（登録商標）ディスク及びハードドライブに記憶された情報を含み、又は通信媒体、例えば、ネットワーク及び／又はモデムを介する電話網及び／又はインターネットまたは他のインタフェースデバイスを介してコンピュータ又はプロセッサへ伝送される情報を含んでいる。理解すべきは、そのような媒体は、本発明の概念を実装するような、プロセッサで読み取り可能な命令を搬送する際に、本発明の代替の実施形態を表すことである。
【発明を実施するための最良の形態】
【００３０】
次に、図面を参照して、本発明の最良の形態及び好ましい実施形態を説明する。
【００３１】
以下では、図面を参照して、本発明の最良形態及び好ましい実施形態を説明する。本発明の具体的特徴が参照されるが、それらの特徴はソフトウェア及び／又はハードウェア又は任意のそれらの組み合わせによって実施することができる。
【００３２】
更に、本発明の圧縮スキームのネゴシエーション方法を実施する装置は、ソフトウェアプロセスがインストールされる任意のタイプの携帯装置または非携帯装置であり、例えば、携帯電話、携帯システム手帳、ラップトップコンピュータ、パーソナルコンピュータ、ネットワークコンピュータ、固定電話等である。
【００３３】
更に、本発明によれば、圧縮スキームのネゴシエーション方法を使用するソフトウェアのタイプは、通信機能性がソフトウェアプロセスの中へ組み込まれている限り、特定タイプのソフトウェアプロセスへ限定されることはない。典型的な例は、例えば、音声、データ、及び／又はマルチメディアデータを交換するため携帯装置で実行しているソフトウェアアプリケーション、オペレーティングシステムのソフトウェアプロセス、モバイル及び非モバイル通信ネットワークで実行しているソフトウェアプロセス、ＬＡＮネットワーク、ＷＡＮネットワーク、ＶＰＮネットワークを実行しているソフトウェアプロセスであってよい。
【００３４】
ソフトウェアプロセスのタイプもまた、異なるオブジェクト及び／又は非オブジェクト指向プログラミング言語でコード化され、任意のタイプのオペレーティングシステムで実行する分散タイプであってよい。本発明の具体的特徴の実現にハードウェアが含まれる場合、このハードウェアは汎用ハードウェア、例えば、市販されているプロセッサまたは専用のアプリケーション用の特定のハードウェアであってよい。
【００３５】
一般的に、本発明による圧縮スキーム・ネゴシエーション・フレームワークは、ネットワーク・ソフトウェアプロセス（network software process）の間のデータ転送率の良い通信のために、圧縮スキームのネゴシエーション及び関連した圧縮ソフトウェアの頒布の全ての機能態様に関与する拡張可能なメカニズムである。本発明による一般的な圧縮スキーム・ネゴシエーション・フレームワークを使用して、異なるプログラミング言語で書かれ、異なるバージョンで入手され、異なるオペレーティングシステムの下で実行する異なるソフトウェアプロセスが、その実行時に圧縮スキームをネゴシエーション及び再構成するため本発明の教示を確実に使用して、ネットワーク・ソフトウェアプロセス間のデータ転送率の良い通信を可能にする。
【００３６】
図１は、本発明に係る通信しているソフトウェアプロセスの間のデータ転送率の良い通信のための圧縮スキームのネゴシエーション装置１０の概略図を示している。
【００３７】
図１で示されているように、圧縮スキームのネゴシエーション装置１０は、コントローラ１２と、圧縮スキーム通信ユニット（compression scheme communication unit）１４と、圧縮スキーム確立ユニット（compression scheme establishment unit）１６とを備えている。
【００３８】
図２は、図１で示されている圧縮スキームのネゴシエーション装置の動作のフローチャートを示している。
【００３９】
図２で示されているように、ステップＳ１０では、圧縮スキーム通信ユニット１４は、通信補償スキーム（communication compensation scheme）を定めるためソフトウェアプロセスの圧縮能力を表す情報の交換を達成する。次に、通信圧縮スキーム（communication compression scheme）は、ソフトウェアプロセスとの後続通信で使用される。
【００４０】
本発明によれば、圧縮能力の指定とは、ソフトウェアプロセスとの通信中に圧縮スキームを適用するために必要な圧縮に関連した機能のメッセージングを意味している。典型的な例は、本発明の範囲を制限することなく、利用可能な圧縮ソフトウェアのインプリメンテーション、圧縮利得に従った圧縮インプリメンテーションの順序リスト、目標圧縮率の指定などである。
【００４１】
図２で示されているように、ステップＳ１２では、圧縮スキーム通信ユニット１４は、第１のメッセージに応答して、圧縮オプションを表す第２のメッセージの交換を達成する。第２のメッセージの交換によって、後続通信で使用される通信圧縮スキームを確立することができる。
【００４２】
ここで、本発明で意味する圧縮オプションとは、圧縮スキーム・ネゴシエーション・フレームワークを開始したソフトウェアプロセスと通信するリモート側の圧縮能力及び利用可能な圧縮スキームに関する情報であることに留意すべきである。圧縮オプションの典型的な例は、先に概説したような圧縮能力に類似している。
【００４３】
図２で示されているように、ステップＳ１４では、圧縮スキーム確立ユニット１６は、第１及び第２のメッセージと共にそれぞれ送信された圧縮能力及び圧縮オプションの関数として圧縮スキームの確立を達成する。ここで、この機能は、ソフトウェアプロセスによって指定された圧縮スキーム機能と、それに応答して受け取られた圧縮オプションとの最良マッチを達成することである。
【００４４】
上記のほかに、動作可能なように、図１で示されている圧縮スキームのネゴシエーション装置１０のコントローラ１２は、圧縮スキーム通信ユニット１４と圧縮スキーム確立ユニット１６との異なる動作を調整及び同期するように構成されている。更に、本発明によれば、圧縮スキーム通信ユニット１４は、第１のメッセージと第２のメッセージとをカプセル化するように構成され、メッセージ交換に使用されるトランスポートプロトコルと互換性を有するように適用される。
【００４５】
したがって、圧縮スキーム通信ユニット１４は、例えば、ＴＣＰ／ＩＰ、ＵＣＰ／ＩＰのような特定タイプのトランスポートプロトコル、又は例えば、ＯＳＩの第３層（ネットワーク層）に従うような任意の他のタイプのネットワーク層のプロトコルから独立しており、基礎となるトランスポートプロトコル有する圧縮ネゴシエーション・フレームワークを確立する。
【００４６】
カプセル化を理由として、または、言い換えれば、圧縮スキームのネゴシエーションに関連したメッセージをトンネリングしたことによって、本発明に従った圧縮スキーム・ネゴシエーション・フレームワークは、適用されるトランスポート層のプロトコルから独立している。
【００４７】
最も一般的な意味では、本発明によるトンネリングとは、ＯＳＩ参照モデルの同じ層（レイヤ）で２つの異なるプロトコルを相互運用することである。その場合、１つのプロトコルのデータが他のプロトコルのデータパケットの中へ再びカプセル化され、ＯＳＩ参照モデルの同じ層が２回パスされる。これは、１つのプロトコルから他のプロトコルへの遷移を可能にし、したがって、先に概説したようにトランスポート層のプロトコルへのフレームワークの疎結合（loosely coupling）を可能にする。
【００４８】
図３は、図１で示されている圧縮スキーム通信ユニット１４の更に詳細な図を示している。
【００４９】
図３で示されているように、圧縮スキーム通信ユニット１４は、圧縮能力指定ユニット（compression scheme indication unit）１８と、圧縮オプション指定ユニット（compression option indication unit）２０とを含んでいる。ここで、図３では、圧縮能力指定ユニット１８及び圧縮オプション指定ユニット２０が、圧縮スキーム通信ユニット１４へ統合されるように示されているが、双方のコンポーネントは、分散されてもよいことに留意すべきである。
【００５０】
双方のサブユニットが圧縮スキーム通信ユニット１４の中に設けられると仮定すると、関連する圧縮スキームのネゴシエーション装置は、圧縮スキームのネゴシエーションに関して双方向のメッセージ交換をサポートするように構成される。
【００５１】
しかし、分散環境では、図９を参照して後で詳細に説明するように、圧縮のネゴシエーションへそれ以上は関係しない１つのソフトウェアプロセスだけを介して圧縮能力を提供し、他のソフトウェアプロセスによって圧縮オプションの提供を達成するように考慮することができる。
【００５２】
図４は、図３で示されている圧縮スキーム通信ユニット１４の動作のフローチャートを示している。
【００５３】
図４で示されているように、ステップＳ１６において、圧縮能力指定ユニット１８は、異なる抽象レベルにある圧縮能力を表す。更に以下で詳細に説明するように、圧縮能力を表す抽象レベルは、例えば、圧縮スキームのネゴシエーション・プロセスのネゴシエーションの状態に従って選択されるようになっている。
【００５４】
図４で示されているように、ステップＳ１８において、圧縮オプション指定ユニット２０は、少なくとも応答ステータスコードと機能メッセージの識別とを表している。ここで、機能メッセージの識別は、これが前に送信された圧縮能力の指定への応答であることを、コーリングソフトウェアプロセス（calling software process）へ示しており、圧縮能力と関連した圧縮オプションの指定との関係を確立するように応答する。
【００５５】
更に、応答ステータスコードは、圧縮能力の或る一定の指定が、通信中において関連した圧縮スキームを次に適用するために、更なるソフトウェアプロセスによって満たされるかどうかを示している。
【００５６】
更に、圧縮スキームを適用するオプションの指定は、詳細に以下で説明するように、文字列記述、圧縮ソフトウェアのダウンロードオプション等を含んでいてよい。
【００５７】
図５は、前述した異なる抽象レベルにある圧縮スキームをネゴシエーションするための多重状態のメッセージ交換を詳細に示している。
【００５８】
図５で示されているように、本発明によれば、圧縮スキームを識別する異なる抽象レベルは、分類レベル（classification level）と、規格レベル（specification level）と、インプリメンテーションレベル（implementation level）とである。
【００５９】
ここで、分類レベルは、或る一定のクラス、例えば、冗長性を低減する圧縮スキーム、冗長性及び無関係情報を低減する圧縮スキーム、対称圧縮、非対称圧縮、無関連な情報を無視する圧縮スキーム、交換されるデータの情報を使用する圧縮スキーム、フラクタル圧縮（fractal compression）、ハフマン符号化（Huffman cording）、ウェーブレット圧縮（Wavelet compression）、ＧＩＦ、ＪＢＧ、ＪＰＥＧ、ＰＮＧ、ＭＪＰＥＧ、ＭＰＥＧ、Ｍｕｓｉｃａｍを指定する場合のように、圧縮スキームの最も抽象的な記述である。圧縮クラスの与えられた例は単なる例であって、任意のタイプの分類が本発明によってカバーされることに注意すべきである。
【００６０】
更なる抽象レベルは、規格レベルである。規格レベルは、その上で圧縮スキーム、即ち、例えば、具体的な圧縮アルゴリズムの名前を識別するために使用される。
【００６１】
更に他の抽象レベルは、インプリメンテーションレベルである。インプリメンテーションレベルによって、後続する初期化のために動作可能な圧縮ソフトウェアコードを参照することができる。
【００６２】
図５で示されているように、典型的には、本発明は、初期のネゴシエーション状態として、規格レベルについての圧縮能力の指定を有する。もし機能の指定に対する応答が、通信相手側での関連した圧縮スキームの可用性を示すならば、次のステップは、具体的な圧縮スキームのインプリメンテーション、即ち、関連したソフトウェア部分の識別となる。
【００６３】
別の方法では、圧縮スキームを定めるため抽象の程度を増加することを考慮することができる。即ち、適用される圧縮スキームを定める分類レベルへ移動することを考慮することができる。このネゴシエーションの状態の遷移に続いて、分類レベルから規格レベル及びインプリメンテーションレベルへの抽象程度の段階的縮小が続く。ここで、インプリメンテーションレベルは最終的なネゴシエーションの状態であり、この状態によって、具体的な圧縮スキームのインプリメンテーションの初期化が可能となる。
【００６４】
図６は、図１で示されている圧縮スキーム確立ユニット１６の概略図を示している。
【００６５】
図６で示されているように、圧縮スキーム確立ユニットは、圧縮インプリメンテーション起動ユニット（compression implementation activation unit）２２と、圧縮インプリメンテーション発見ユニット（compression implementation discovery unit）２４と、圧縮インプリメンテーションダウンロードユニット（compression implementation downloading unit）２６を備えている。
【００６６】
図７は、図６で示されている圧縮スキーム確立ユニット１６の動作のフローチャートを示している。
【００６７】
図７で示されているように、ステップＳ２０において、圧縮インプリメンテーション起動ユニットは、圧縮スキーム・ネゴシエーション・プロセスの結果として生成された具体的な圧縮スキームのインプリメンテーションが、圧縮スキーム・ネゴシエーション・プロセスを開始したソフトウェアプロセスのために利用可能であるかどうかを決定する。利用可能（イエス）である場合、圧縮インプリメンテーション起動ユニットは、ステップＳ２２を実行して、ネゴシエーションされた圧縮スキームのインプリメンテーションを起動するようになっている。
【００６８】
図７で示されているように、もしステップＳ２０における問合せの結果が利用不可能（ノー）であれば、圧縮インプリメンテーション発見ユニット２４が起動され、例えば、圧縮スキームのネゴシエーションを開始したソフトウェアプロセスが存在する処理ノードで局所的に、又は圧縮スキームのネゴシエーションを開始したソフトウェアプロセスが存在する処理ノードと通信している他の処理ノードで間接的に、ネゴシエーションされた圧縮スキームのインプリメンテーションを発見できるかどうかを問合せるようになっている。
【００６９】
図７で示されているように、もしステップＳ２４における問合せの結果がイエスであれば、圧縮インプリメンテーションダウンロードユニット２６がステップＳ２６を実行して圧縮スキームのインプリメンテーションをダウンロードし、その後のステップＳ２２で圧縮スキームのインプリメンテーションが起動される。もしステップＳ２４での問合せ結果がノーであれば、ステップＳ２８が図１のコントローラ１２によって実行され、圧縮スキームのネゴシエーションを開始したソフトウェアプロセスの通信プロセスが全く圧縮されないで継続するようになっている。別の選択肢としては、以前に確立されていた圧縮スキームへのフォールバックを起動することである。
【００７０】
上記のほかに、異なる機能ユニットと、図１から図７に関して説明した処理と、動作ステップの調整とが、図１で示されている圧縮スキームのネゴシエーション装置１０のコントローラ１２によって実行されることに留意すべきである。
【００７１】
これまで説明した機能のほかに、圧縮スキームのネゴシエーション装置１０のコントローラ１２は、例えば、ソフトウェアプロセスの実行中に圧縮スキームを再ネゴシエーションするため、これまで説明した異なるステップを数回反復するように構成されている。
【００７２】
図８は、本発明によれば、ソフトウェアプロセスの実行中に、そのように圧縮スキームを再ネゴシエーションする例を示している。
【００７３】
図８で示されている例において、２つの異なるソフトウェアプロセスＡ及びＢが、最初は圧縮スキームＣ１を使用して、相互に通信していると仮定する。ここで、圧縮スキームを再ネゴシエーションする時間間隔の始めに、例えば、ソフトウェアプロセスＡが、前述したように圧縮能力を表すメッセージを送信することができる。次に、圧縮オプションを表す応答メッセージが続いて送信される。メッセージ交換のプロセスは、圧縮スキームのネゴシエーションの合意を達成するため、数回反復されてよい。その後で、圧縮スキームのネゴシエーションの結果が圧縮スキームＣ２であると仮定して、適用された圧縮スキームがＣ１からＣ２へ変更される前に、関連したインプリメンテーションが同期して起動されるようになっている。
【００７４】
図８は、本発明によれば、図１で示されているコントローラ１２が、タイムアウト限度メカニズム（timeout limit mechanism）を圧縮スキームのネゴシエーションへ適用するように構成されていることを示している。タイムアウトメカニズムを適用することによって、現在動作している通信ソフトウェアプロセスのダウンタイムを最小化することができる。これは、実時間タイプのソフトウェアアプリケーションで特に重要である。更に、他の利点は、ネゴシエーションの合意を達成できないことが予見されるとき、ネゴシエーションの時間間隔を不必要に延長しないことである。
【００７５】
図９は、本発明に係る圧縮スキームのネゴシエーションのメッセージ交換パターンの例を示している。
【００７６】
図９で示されているように、本発明に従った圧縮スキーム・ネゴシエーション・フレームワークの典型的な適用シナリオは、第１のソフトウェアプロセスＡと第２のソフトウェアプロセスＢとの間で、圧縮能力を表す第１のメッセージを交換し、圧縮オプションを表す第２のメッセージを交換することである。第２の典型的な例は、ソフトウェアプロセスＡとソフトウェアプロセスＢとの双方と通信する仲介圧縮スキーム・ネゴシエーション・プロセスＮが関係することである。ここで、圧縮能力の指定は、ソフトウェアプロセスＡからネゴシエーション・プロセスＮへ送信され、次に、ネゴシエーション・プロセスＮはソフトウェアプロセスＢと通信して、適切な圧縮オプションの指定をソフトウェアプロセスＡへ戻す。
【００７７】
更に、他の適用シナリオは、ソフトウェアプロセスＡが圧縮能力をネゴシエーション・プロセスＮへ指定し、次に、ネゴシエーション・プロセスＮがソフトウェアプロセスＢと圧縮のネゴシエーションを合意することである。最後に、ソフトウェアプロセスＢは、ソフトウェアプロセスＡへ圧縮オプションを指定する。
【００７８】
これまで、圧縮能力と圧縮オプションとを表す異なるメッセージが言及されたが、次に、これらのメッセージの詳細を説明する。前述したように、これらのメッセージは、異なる抽象レベルにある圧縮スキームのネゴシエーションに関連している。したがって、これらのメッセージは、典型的には、圧縮スキームをネゴシエーションするための、クラスの抽象レベルと、規格の抽象レベルと、インプリメンテーションの抽象レベルとに関連している。
【００７９】
したがって、第１のメッセージは、圧縮スキームのクラスの存在を知らせる情報を含む圧縮クラスのメッセージである。下記の表で示されるように、圧縮クラスのメッセージの要素は、必須または任意として分類されてよい。更に、下記ではユニフォームリソース識別子（uniform resource identifier）が参照されているが、関連情報の他の指定も、本発明の範囲に含まれることが明らかである。この見地から、圧縮クラスのメッセージの要素は、次のとおりである。
【表１】
2007524314.tif 000003
【００８０】
更なるメッセージは、後続の請求項において、第１のメッセージと呼ばれる圧縮規格のメッセージである。圧縮規格のメッセージは、圧縮スキームの規格を一意に識別する情報を含んでいる。圧縮規格のメッセージの要素は、次のとおりである。
【表２】
2007524314.tif 000004
【００８１】
更に、圧縮能力を表す他の例は、圧縮インプリメンテーションのメッセージの使用である。このメッセージは、ネゴシエーションするプロセスの１つが実行時にインプリメンテーションを要求する場合に、圧縮規格の具体的実装に関する情報、例えば、圧縮規格を実装するソースコードを含むパッケージＵＲＩを提供するために使用される。圧縮インプリメンテーションのメッセージの要素は、次のとおりである。
【表３】
2007524314.tif 000005
【００８２】
更なるメッセージは、圧縮オプションの指定に関しており、したがって圧縮能力を表すメッセージへの応答を含む圧縮応答メッセージと呼ばれてよい。圧縮応答メッセージの要素は、次のとおりである。
【表４】
2007524314.tif 000006
【００８３】
上記の見地から、後続の図１０から図１２は、単なる例として考えられたものであり、本発明の範囲を制限しないメッセージシーケンスの例を示している。特に、本発明に係る圧縮スキームのネゴシエーション方法及び装置を使用して、メッセージが、２つの関与するソフトウェアプロセスＡとＢとの間で交換される。
【００８４】
図１０は、圧縮スキームネゴシエーションのメッセージシーケンスの第１の例を示している。この例によれば、圧縮スキームのネゴシエーションの最小限の一群が示されている。第１のソフトウェアプロセスＡは規格メッセージを送信し、第２のソフトウェアプロセスＢは応答を決定して、示された圧縮規格をソフトウェアプロセスＡへ肯定応答として戻す。
【００８５】
図１１は、圧縮スキームネゴシエーションのメッセージシーケンスの第２の例を示している。この例は、圧縮インプリメンテーションもソフトウェアプロセスＡとソフトウェアプロセスＢとの間でネゴシエーションされる点で第１の例とは異なる。更に、ダウンロードの初期化と、現在のデポジトリからソフトウェアプロセスＢへの圧縮ソフトウェアのダウンロードとが示されている。この場合、選択されたインプリメンテーションは、圧縮スキームのネゴシエーションが開始される前はソフトウェアプロセスＢで利用できないと仮定する。
【００８６】
図１２は、本発明に係る圧縮スキームネゴシエーションのメッセージシーケンスの第３の例を示している。ここで、この例は、図３に関して先に概説したように複数の抽象レベルの遷移に関連している。まず、ソフトウェアプロセスＡは、非肯定応答とソフトウェアプロセスＡへのネゴシエーション・プロセスの継続予測とを表す関連応答において圧縮規格のメッセージを交換する。次に、ソフトウェアプロセスＡは、圧縮クラスのメッセージを介して高い抽象レベルへ進行する。ソフトウェアプロセスＢは応答を決定し、示されたクラスに確認応答し、ソフトウェアプロセスＡの継続を要求する。次に、ソフトウェアプロセスＡは、規格の抽象レベルへ再びステップバックし、第２の規格メッセージを送信する。次に、ソフトウェアプロセスＢは、応答を決定し、例えば、肯定応答とソフトウェアプロセスＡへのネゴシエーション・プロセスの継続予測とを表すようになっている。次に、ソフトウェアプロセスＡは、インプリメンテーションの抽象レベルへステップダウンし、関連メッセージをソフトウェアプロセスＢへ送信する。関連したインプリメンテーションは、ソフトウェアプロセスＢで利用できないと仮定した場合、図１２を参照して分かるようにコードデポジトリからのダウンロードを実行し、肯定表す応答と圧縮スキームのネゴシエーションで合意された圧縮スキームの継続リクエストとを送ることができる。
【００８７】
次に、本発明の範囲を制限しない更なる詳細な例が、ＪＸＴＡ、即ち、ｈｔｔｐ：／ｗｗｗ．ＪＸＴＡ．ｏｒｇにおいて詳細に説明されている。ＪＸＴＡはプロトコル・メッセージの集合であり、トランスポートプロトコルから独立しており、先に概説したように本発明の好ましい実施形態の例となるベースを形成する。
【００８８】
ＪＸＴＡは、本発明から利点を受ける発見プロトコルである。下記ではＰ２Ｐとも呼ばれるＰ２Ｐ（ピアツーピア）プロトコルが、例として選択される。なぜなら、Ｐ２Ｐプロトコルの非常に分散された通信及びルーティングスキームに起因して、Ｐ２Ｐプロトコルの全体的なシグナリング負荷が比較的に高いからである。
【００８９】
更に、ＪＸＴＡでは、主としてＸＭＬメタデータを広範に使用してＪＸＴＡプロトコルのメッセージをパスするため、オーバヘッドによる非効率性が広く知られている。ＸＭＬだけの測定されたオーバヘッドコストは、典型的には、追加のＴＣＰ／ＩＰ及びＨＴＴＰオーバヘッドを考慮に入れる前に、全体のユーザデータ・パケットの５０％近くに達する。したがって、もし構文解析のＸＭＬメタデータが省略され、例えば、ＭＰＰで概説されるように、データが、例えば、固定バイトの順序で送信されたならば、ＪＸＴＡ発見プロトコル（JXTA discovery protocol）によって、送信された単一メッセージの全体のサイズは半分だけ縮小可能である。
【００９０】
追加のＸＭＬメタデータを有しない平文の使用は、オーバヘッドのサイズを顕著に縮小するであろう。更に、もしＸＭＬメタデータの除去がオプションでなければ、送信された使用データに文字列圧縮技法を使用して、メッセージサイズの他の顕著な減少を達成することができる。文字列圧縮（string compression）の使用は、オーバヘッドを平均で４０％〜５０％だけ低減し、それによってＪＸＴＡ発見プロトコル及び他の共通Ｐ２Ｐプロトコルのシグナリング負荷に大きなインパクトを与える。
【００９１】
したがって、本発明によれば、ＸＭＬメタデータを除去する代わりに、ＸＭＬメタデータを含むＪＸＴＡ発見プロトコル・メッセージへ圧縮スキームを適用し、ＪＸＴＡ発見プロトコルにおけるＸＭＬ構文解析の柔軟性を維持することが提案されている。Ｐ２Ｐシグナリングで圧縮スキームを使用するためには、双方のプロセスが同じ圧縮スキームを使用して相互運用性を得ることが必要である。これは、まさしく本発明によってサポートされている。ＪＸＴＡ発見プロトコルによれば、もし１つの特定の圧縮スキームが必須であれば、柔軟性の顕著な部分が失われるであろう。したがって、本発明によれば、ＪＸＴＡ発見プロトコルへの拡張が解決方法となる。
【００９２】
更に詳細には、ＪＸＴＡ発見プロトコル・ウエルカム・メッセージ（JXTA discovery protocol welcome message）を使用し、先に概説したように、使用される圧縮スキームを定めるための圧縮のネゴシエーション及び再構成メカニズムを含むことが可能である。
【００９３】
ＪＸＴＡ発見プロトコルによれば、ＴＣＰ／ＩＰ接続が確立された後、２つのＪＸＴＡ端点または関連したソフトウェアプロセスの間で交換される最初のメッセージは、バイナリ・ウエルカム・メッセージである。バイナリ・ウエルカム・メッセージは双方のソフトウェアプロセスによって送られ、例えば、双方のソフトウェアプロセスのＴＣＰ／ＩＰ上でマップされるポイントアドレスの交換に使用される。
【００９４】
更に、バイナリ・ウエルカム・メッセージは、ＪＸＴＡソフトウェアプロセスがアクティブであるかどうかの問合せを送る可能性を提供し、したがって任意のネットワークノードは、通信が正しく確立されているかどうかを評価することができる。したがって、ＪＸＴＡソフトウェアプロセスは、できるだけ早くこのメッセージを送信するべきであり、対向するソフトウェアプロセスのウエルカム・メッセージを受信する前に他のメッセージを送信してはならない。
【００９５】
本発明のフレームワークの中では、ウエルカム・メッセージは、人が読み取れるように定義されている。これはデバッグを簡単にし、更に、ウェブブラウザまたはテルネット（Telnet）を使用してＪＸＴＡ接続を確立することができる。要求される目標ノードのアドレスを定義するため、＜ｗｅｌｃｏｍｅｄｅｓｔ＞フィールドが使用される。もし目標ノードが指定されなければ、この値はデフォルトに設定されるべきである。したがって、接続を開始する公開ＩＰアドレスを指定するためには、フィールド＜ｗｅｌｃｏｍｅａｄｄｒ＞が使用される。更に、フィールド＜ｗｅｌｃｏｍｅＰｒｏｃｅｓｓ＞は、このプロセスのプロセスＩＤを指定する。プロセスは、フィールド＜ｎｏｐｒｏｐ＞を使用して、ブロードキャストメッセージの受信を必要とするか（値＝０）、そうでないか（値＝１）を指定することができる。
【００９６】
圧縮をサポートするため、本発明によれば、圧縮トンネル・メッセージ＜ＬＣＣＭ＞と圧縮トンネル・メッセージ＜ＣＣＭ＞との２つのフィールドの長さを加えることによって、ＪＸＴＡウエルカム・メッセージを拡張することが提案されている。
【００９７】
フィールド＜ＬＣＣＭ＞は、後続の圧縮クラスのメッセージの長さの値をバイトで指定し、フィールド＜ＣＣＭ＞は、圧縮クラスのメッセージの定義に従ってウエルカム・メッセージを送るプロセスの全てのサポートされた圧縮スキームをリストする。ノードによってサポートされる圧縮スキームは、圧縮クラスのメッセージの定義に従ってリストの中に圧縮クラスＩＤ（CompressionClassID）が記述される。圧縮クラスＩＤは、リストの中で１つの「？」文字によって分離され、したがって各々の圧縮スキームが自動的に検出可能である。圧縮スキームのリストは、最高圧縮利得を有する圧縮スキームから始まる順序づけられたリストである。つまり、ＪＸＴＡウエルカム・メッセージは、先に概説したように、本発明の圧縮スキーム・ネゴシエーション・フレームワークの全ての必須メッセージを含んでいる。
【００９８】
ＪＸＴＡソフトウェアプロセスの１つが、拡張されたウエルカム・メッセージを受け取るや否や、それは、受信ノードによってサポートされた第１の圧縮スキームを、受信されたリストから選択する。したがって、全てのＪＸＴＡソフトウェアプロセスによってサポートされた最良の圧縮スキームが自動的に選択され、後続の通信中に全ての出ＪＸＴＡメッセージを圧縮するために使用可能である。もし双方のＪＸＴＡソフトウェアプロセスによってサポートされる圧縮スキームが発見されなければ、ソフトウェアプロセスは、デフォルトの平文ＸＭＬの送信スキームへフォールバックする。
【００９９】
先に概説した拡張を使用すると、非圧縮ＪＸＴＡ通信プロセスによって生成されたオーバヘッドの６０％までを節減する結果を生じ、ＸＭＬメタデータによってＪＸＴＡ発見プロトコルへ加えられた柔軟性を制限することもない。したがって、ＪＸＴＡ発見プロトコルは、例えば、移動通信環境のような狭い帯域幅接続の場合でも使用可能である。
【０１００】
これまで図面を参照して、本発明の好ましい実施形態及び例を説明したが、明らかに、本発明は、その変形及び修正を用いて実施されてよいことに留意すべきである。これらの変形及び修正は、本発明の範囲から逸脱して自明であり、当業者によって容易に行われるものである。
【０１０１】
したがって、本明細書に添付された請求項の範囲が、本明細書で記述された説明に限定されることはない。むしろ、請求項は、添付された請求項で概説された本発明の全ての態様を包含するように解釈されるべきである。これらの態様の中には、当業者によって同一の物として扱われる特徴が含まれる。
【図面の簡単な説明】
【０１０２】
【図１】本発明に係る通信しているソフトウェアプロセスの間のデータ転送率の良い通信のための圧縮スキームのネゴシエーション装置の概略図を示している。
【図２】図１で示されている圧縮スキームのネゴシエーション装置の動作のフローチャートを示している。
【図３】図１で示されている圧縮スキーム通信ユニットの更に詳細な概略図を示している。
【図４】図３で示されている圧縮スキーム通信ユニットの動作のフローチャートを示している。
【図５】異なる抽象レベルにある圧縮スキームのネゴシエーションの多重状態のメッセージ交換を示している。
【図６】図１で示されている圧縮スキーム確立ユニットの更に詳細な概略図を示している。
【図７】図６で示されている圧縮スキーム確立ユニットの動作のフローチャートを示している。
【図８】本発明に係るソフトウェアプロセスの実行時における圧縮スキームの再ネゴシエーションの例を示している。
【図９】本発明に係る圧縮スキームのネゴシエーションのメッセージ交換パターンの例を示している。
【図１０】本発明に係る第１の圧縮スキームのネゴシエーション・メッセージ・シーケンスの図を示している。
【図１１】本発明に係る第２の圧縮スキームのネゴシエーション・メッセージ・シーケンスの図を示している。
【図１２】本発明に係る第３の圧縮スキームのネゴシエーション・メッセージ・シーケンスの図を示している。
【図１】
2007524314.tif 000007
【図２】
2007524314.tif 000008
【図３】
2007524314.tif 000009
【図４】
2007524314.tif 000010
【図５】
2007524314.tif 000011
【図６】
2007524314.tif 000012
【図７】
2007524314.tif 000013
【図８】
2007524314.tif 000014
【図９】
2007524314.tif 000015
【図１０】
2007524314.tif 000016
【図１１】
2007524314.tif 000017
【図１２】
2007524314.tif 000018
【手続補正書】
【提出日】平成18年10月31日(2006.10.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
通信しているソフトウェアプロセス間のデータ転送率の良い通信のための圧縮スキームのネゴシエーション方法であって、
ソフトウェアプロセスの圧縮能力を表す第１のメッセージを交換して、前記ソフトウェアプロセスとの後続通信中に使用される通信圧縮スキームを定めるステップと、
前記第１のメッセージに応答して圧縮オプションを表す第２のメッセージを交換し、前記圧縮能力及び前記圧縮オプションの関数として後続通信中に使用される前記通信圧縮スキームを確立するステップとを含んでおり、
前記第１のメッセージ及び前記第２のメッセージは、メッセージ交換に使用されるトランスポートプロトコルとの互換性を得るためにカプセル化され、
前記第１のメッセージが、圧縮クラス、圧縮規格、又は圧縮インプリメンテーションに従って異なる抽象レベルで圧縮能力を表すものである
方法。
【請求項２】
前記第１のメッセージが、圧縮利得に従って順序づけられたリストとして、前記ソフトウェアプロセスによってサポートされる圧縮スキームを表すものである、請求項１に記載の方法。
【請求項３】
前記第１のメッセージが、前記圧縮クラスに従って、圧縮クラス識別子を介して圧縮能力を表すものである、請求項１に記載の方法。
【請求項４】
前記第１のメッセージが、前記圧縮規格に従って、圧縮規格識別子を介して圧縮能力を表すものである、請求項１に記載の方法。
【請求項５】
前記第１のメッセージが、前記圧縮インプリメンテーションに従って、圧縮インプリメンテーション識別子を介して圧縮能力を表すものである、請求項１に記載の方法。
【請求項６】
前記圧縮オプションを表す第２のメッセージが、少なくとも第１のメッセージの応答ステータスコードと第１のメッセージの識別とを含むものである、請求項１ないし５のいずれか一項に記載の方法。
【請求項７】
前記第１のメッセージと前記第２のメッセージとが、ソフトウェアプロセスの実行中に交換される、請求項１ないし６のいずれか一項に記載の方法。
【請求項８】
前記通信圧縮スキームを確立するために前記圧縮インプリメンテーションを起動するステップを含む、請求項１ないし７のいずれか一項に記載の方法。
【請求項９】
前記通信圧縮スキームを確立する前記圧縮インプリメンテーションをダウンロードすることによって、前記通信圧縮スキームを確立する前記圧縮インプリメンテーションを発見するステップを含む、請求項１ないし７のいずれか一項に記載の方法。
【請求項１０】
前記圧縮スキームのネゴシエーションの開始時にタイムアウトのメカニズムを起動するステップを更に含む、請求項１ないし９のいずれか一項に記載の方法。
【請求項１１】
前記圧縮スキームが確立されないとき、前記圧縮スキームを適用しないでデータ通信へフォールバックするステップを含む、請求項１ないし１０のいずれか一項に記載の方法。
【請求項１２】
通信しているソフトウェアプロセス間のデータ転送率の良い通信のための圧縮スキームのネゴシエーション装置であって、ここで、前記ネゴシエーション装置が、圧縮スキーム通信ユニットと圧縮スキーム確立ユニットと圧縮能力指定ユニットとを含むものであって、
前記圧縮スキーム通信ユニットが、ソフトウェアプロセスとの後続通信で使用される通信圧縮スキームを定めるために前記ソフトウェアプロセスの圧縮能力を表す第１のメッセージを交換するように構成され、
前記圧縮スキーム通信ユニットが、後続通信で使用される前記通信圧縮スキームを確立するため、前記第１のメッセージに応答して圧縮オプションを表す第２のメッセージを交換するように構成され、
前記圧縮スキーム確立ユニットが、前記圧縮能力と前記圧縮オプションとの関数として圧縮スキームを確立するように構成され、
前記圧縮スキーム通信ユニットが、メッセージ交換に使用されるトランスポートプロトコルとの互換性を得るために、前記第１のメッセージと前記第２のメッセージとをカプセル化するように構成され、
圧縮能力指定ユニットが、圧縮クラス、圧縮規格、又は圧縮インプリメンテーションに従って異なる抽象レベルで圧縮能力を表す前記第１のメッセージをセットアップするように構成されているものである、
装置。
【請求項１３】
前記圧縮能力指定ユニットは、前記第１のメッセージをセットアップするように構成されており、前記第１のメッセージは、圧縮利得に従って順序づけられたリストとして、ソフトウェアプロセスによってサポートされる圧縮スキームを表すものである、請求項１２に記載の装置。
【請求項１４】
前記圧縮能力指定ユニットが、前記圧縮クラスに従って、圧縮クラス識別子を介して前記圧縮能力を表す前記第１のメッセージをセットアップするように構成されている、請求項１２に記載の装置。
【請求項１５】
前記圧縮能力指定ユニットが、前記圧縮規格に従って、圧縮規格識別子を介して前記圧縮能力を表す前記第１のメッセージをセットアップするように構成されている、請求項１２に記載の装置。
【請求項１６】
前記圧縮能力指定ユニットが、圧縮インプリメンテーション識別子で前記圧縮インプリメンテーションを表す前記第１のメッセージをセットアップするように構成されている、請求項１２に記載の装置。
【請求項１７】
前記第１のメッセージの少なくとも応答ステータスコード及び識別を表す第２のメッセージをセットアップするように構成された圧縮オプション指定ユニットを含む、請求項１２ないし１６のいずれか一項に記載の装置。
【請求項１８】
前記圧縮スキーム通信ユニットが、前記ソフトウェアプロセスの実行時に前記第１のメッセージ及び前記第２のメッセージを交換するように構成されている、請求項１２ないし１７のいずれか一項に記載の装置。
【請求項１９】
前記通信圧縮スキームを確立するため、前記圧縮インプリメンテーションを起動するように構成された圧縮インプリメンテーション起動ユニットを含む、請求項１２ないし１８のいずれか一項に記載の装置。
【請求項２０】
前記通信圧縮スキームを確立する前記圧縮インプリメンテーションをダウンロードすることによって、前記通信圧縮スキームを確立する前記圧縮インプリメンテーションを発見するように構成された圧縮インプリメンテーション発見ユニットを含む、請求項１２ないし１８のいずれか一項に記載の装置。
【請求項２１】
前記圧縮スキームのネゴシエーションの開始時にタイムアウトのメカニズムを起動するように構成された制御ユニットを更に含む、請求項１２ないし２０のいずれか一項に記載の装置。
【請求項２２】
前記圧縮スキームが確立されないとき、圧縮スキームの適用なしにデータ通信へのフォールバックを開始するように制御ユニットが構成されている、請求項１２ないし２１のいずれか一項に記載の装置。
【請求項２３】
圧縮スキームのネゴシエーション装置の内部メモリへ直接ロード可能なコンピュータプログラム製品あって、圧縮スキームのネゴシエーション装置のプロセッサ上で実行する際、請求項１ないし１１のいずれか一項に記載の方法を実行するソフトウェアコード部を含むコンピュータプログラム製品。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
圧縮スキームのネゴシエーションに関しては、使用されるコーデック及びコンテンツの圧縮またはディジタル化をネゴシエーションするため、マルチメディアコンテンツの配信サービスまたはマルチメディアの通信サービス、例えば、Ｈ．３２３またはＳＩＰのような関連ネゴシエーションメカニズムがある。同様に、ＨＴＴＰプロトコルは、ＭＩＭＥタイプの圧縮スキームを使用して、所定の情報コンテンツに対する符号化について、リクエスト中のソフトウェアプロセスに通知する。
ＵＳ−Ａ−５，５５７，７４９では、送信者プロセスと受信者プロセスとの双方によって理解される共通の圧縮／解凍方法が決定されたとき、送信者及び受信者プロセスのためにデータを自動的に圧縮及び解凍する方法が記載されている。ここで、接続を確立する過程で、ＯＰＥＮルーチンが、送信者のコンピュータシステムと受信者のコンピュータシステムとの間で圧縮／解凍方法を自動的にネゴシエーションする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
本発明によれば、この目的は、通信しているソフトウェアプロセスの間のデータ転送速度の効率的な通信をするために、請求項１の特徴を有する圧縮スキームのネゴシエーション方法、及び請求項１２の特徴を有する関連した圧縮スキームのネゴシエーション装置によって達成される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
更に、本発明の圧縮スキームのネゴシエーション方法によれば、関連したメッセージの交換で使用されるトランスポートプロトコルとの互換性を得るため、第１のメッセージ及び第２のメッセージをカプセル化することが提案されている。
本発明によれば、異なる抽象レベルでの圧縮能力の指定レベルは、圧縮クラス（compression class）、圧縮規格（compression specification）、及び／又は圧縮インプリメンテーション（compression implementation）である。圧縮クラスは、圧縮スキームの最も一般的な記述であり、より具体的な圧縮規格が次に続き、その次に、圧縮スキームを実行する実際のコードを意味する圧縮インプリメンテーションが続くようになっている。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
更に、本発明の他の利点は、プロセス間ネゴシエーション、通信データの圧縮、及び圧縮スキームのネゴシエーションの分野、更に事前にインストールされた圧縮スキームのランタイムリコンフィグレーション（runtime reconfiguration）の分野へも一般的に応用できることである。したがって、本発明から利益を受けるソフトウェアアプリケーションは、例えば、ＸＭＬメタデータを使用するアプリケーション間通信、シグナリングのためにネゴシエーションされた圧縮スキームを使用するアプリケーション間通信、データ転送速度の効率的な通信サービスのために既存の圧縮ソフトウェアを管理、発見、及び使用するプロセスをリクエストするソフトウェアアプリケーション等を含んでいる。
更に、本発明の利点は、圧縮スキームの可用性に依存して、圧縮スキームの仕様を定める抽象レベルを変更することができる。例えば、もし圧縮スキームの規格を記述するメッセージによって、関連した圧縮スキームの使用について合意に至らなければ、圧縮クラスを交換する抽象レベルを１つステップアップして、発見可能な圧縮スキームの範囲を広くすることができる。次に、利用可能なクラスに従って１つの圧縮スキームを識別した圧縮スキーム規格のレベルへ戻り、続いてソフトウェアプロセスとの間でペイロード・データ（payload data）を実際に交換するために使用される実際の圧縮スキームのインプリメンテーションを行うことができる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
好ましい実施形態によれば、プロセスが既存の圧縮スキームを管理、発見、及び使用できるようにするため、異なるタイプのメッセージは、関係するソフトウェアプロセスによって使用されるように定義されている。本発明によれば、各々のタイプのメッセージが、圧縮スキームのネゴシエーション中にソフトウェアプロセスとの間で交換されることは要求されないが、異なるタイプのメッセージは、異なるレベルの命令で圧縮能力を表すことができることが示されている。好ましくは、命令のレベルは、圧縮スキームのネゴシエーション状態に従って選択される。
【国際調査報告】
2007524314.tif 000019
2007524314.tif 000020