(57)【要約】      （修正有）【課題】効率的なパケット転送を容易にする第１のノードにおけるシステムを提供する。【解決手段】動作の際に、システムは、第１のノードのストレージデバイスに、種類および長さ（ＴＬ）文字列とバイトアラインされた圧縮置換文字列との間のマッピングを含む静的辞書を格納する。システムは、バイトアラインされた圧縮置換文字列を符号化技術に基づいて符号化して、ビットアラインされた符号化置換文字列を生成し、符号化置換文字列と前記ＴＬ文字列との間のマッピングを符号化辞書に格納し、さらに、パケットにおいてＴＬ文字列を特定した場合に、ＴＬ文字列を符号化置換文字列で置き換え、パケットを符号化辞書をローカルストレージデバイスに格納している第２のノードへと伝送することにより、ＴＬ文字列のビットアラインされた圧縮を容易にする。【選択図】図１Ｂ
2017092958.tif 000002
【特許請求の範囲】
【請求項１】
効率的なパケット転送のためのコンピュータによって実行される方法であって、
第１のノードのストレージデバイスに、種類および長さ（ＴＬ）文字列とバイトアラインされた圧縮置換文字列との間のマッピングを含む静的辞書を格納するステップと、
前記バイトアラインされた圧縮置換文字列を符号化技術に基づいて符号化し、ビットアラインされた符号化置換文字列を生成するステップと、
前記符号化置換文字列と前記ＴＬ文字列との間のマッピングを符号化辞書に格納するステップと、
パケットにおける前記ＴＬ文字列の特定に応答して、該ＴＬ文字列を前記符号化置換文字列で置き換えるステップと、
前記パケットを前記符号化辞書をローカルストレージデバイスに格納している第２のノードへと伝送することにより、ＴＬ文字列のビットアラインされた圧縮を容易にするステップと
を含む方法。
【請求項２】
前記パケットは、コンテンツ指向ネットワーク（ＣＣＮ）メッセージであり、前記ＣＣＮメッセージの名称は、最も全体的なレベルから最も個別なレベルへと順に並べられた連続する名称コンポーネントを含む階層構造可変長識別子（ＨＳＶＬＩ）であり、
当該方法は、前記ＣＣＮメッセージの固定ヘッダを圧縮固定ヘッダで置き換えるステップをさらに含む、請求項１に記載の方法。
【請求項３】
種類、長さ、および値（ＴＬＶ）文字列の圧縮表現を、前記パケットにおける前記ＴＬＶ文字列の特定に応答して生成するステップと、
前記ＴＬＶ文字列の前記圧縮表現を、前記第１のノードの前記ストレージデバイス内の学習辞書に格納するステップと、
後続の第２のパケットにおける前記ＴＬＶ文字列の特定に応答して、前記第２のパケットにおける前記ＴＬＶ文字列を前記圧縮表現に基づいて圧縮するステップと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記静的、符号化、および学習辞書における前記パケットのＴＬペアの不一致に応答して、該ＴＬペアを該ＴＬペアの種類および長さのより短いビット長での表現を使用してコンパクト化するステップ
をさらに含む、請求項１に記載の方法。
【請求項５】
パケットの転送を容易にするためのコンピュータシステムであって、
プロセッサと、
前記プロセッサによって実行されたときに、
第１のノードのストレージデバイスに、種類および長さ（ＴＬ）文字列とバイトアラインされた圧縮置換文字列との間のマッピングを含む静的辞書を格納するステップと、
前記バイトアラインされた圧縮置換文字列を符号化技術に基づいて符号化し、ビットアラインされた符号化置換文字列を生成するステップと、
前記符号化置換文字列と前記ＴＬ文字列との間のマッピングを符号化辞書に格納するステップと、
パケットにおける前記ＴＬ文字列の特定に応答して、該ＴＬ文字列を前記符号化置換文字列で置き換えるステップと、
前記パケットを前記符号化辞書をローカルストレージデバイスに格納している第２のノードへと伝送することにより、ＴＬ文字列のビットアラインされた圧縮を容易にするステップと
を含む方法を前記プロセッサに実行させるインストラクションを格納したストレージデバイスと
を備えるコンピュータシステム。
【請求項６】
前記パケットは、コンテンツ指向ネットワーク（ＣＣＮ）メッセージであり、前記ＣＣＮメッセージの名称は、最も全体的なレベルから最も個別なレベルへと順に並べられた連続する名称コンポーネントを含む階層構造可変長識別子（ＨＳＶＬＩ）であり、
前記方法は、前記ＣＣＮメッセージの固定ヘッダを圧縮固定ヘッダで置き換えるステップをさらに含む、請求項５に記載のコンピュータシステム。
【請求項７】
前記方法は、
種類、長さ、および値（ＴＬＶ）文字列の圧縮表現を、前記パケットにおける前記ＴＬＶ文字列の特定に応答して生成するステップと、
前記ＴＬＶ文字列の前記圧縮表現を、前記第１のノードの前記ストレージデバイス内の学習辞書に格納するステップと、
後続の第２のパケットにおける前記ＴＬＶ文字列の特定に応答して、前記第２のパケットにおける前記ＴＬＶ文字列を前記圧縮表現に基づいて圧縮するステップと
をさらに含む、請求項５に記載のコンピュータシステム。
【請求項８】
前記方法は、
前記静的、符号化、および学習辞書における前記パケットのＴＬペアの不一致に応答して、該ＴＬペアを該ＴＬペアの種類および長さのより短いビット長での表現を使用してコンパクト化するステップ
をさらに含む、請求項７に記載のコンピュータシステム。
【請求項９】
コンピュータによって実行されたときに、
第１のノードのストレージデバイスに、種類および長さ（ＴＬ）文字列とバイトアラインされた圧縮置換文字列との間のマッピングを含む静的辞書を格納するステップと、
前記バイトアラインされた圧縮置換文字列を符号化技術に基づいて符号化し、ビットアラインされた符号化置換文字列を生成するステップと、
前記符号化置換文字列と前記ＴＬ文字列との間のマッピングを符号化辞書に格納するステップと、
パケットにおける前記ＴＬ文字列の特定に応答して、該ＴＬ文字列を前記符号化置換文字列で置き換えるステップと、
前記パケットを前記符号化辞書をローカルストレージデバイスに格納している第２のノードへと伝送することにより、ＴＬ文字列のビットアラインされた圧縮を容易にするステップと
を含む方法を前記コンピュータに実行させるインストラクションを格納した非一時的なコンピュータによって読み取り可能な記憶媒体。
【請求項１０】
前記パケットは、コンテンツ指向ネットワーク（ＣＣＮ）メッセージであり、前記ＣＣＮメッセージの名称は、最も全体的なレベルから最も個別なレベルへと順に並べられた連続する名称コンポーネントを含む階層構造可変長識別子（ＨＳＶＬＩ）であり、
前記方法は、前記ＣＣＮメッセージの固定ヘッダを圧縮固定ヘッダで置き換えるステップをさらに含む、請求項９に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、広くには、デジタルコンテンツの流通に関する。より具体的には、本開示は、ＣＣＮメッセージのヘッダ圧縮に関する。
【背景技術】
【０００２】
インターネットおよび電子商取引の拡散が、膨大な量のデジタルコンテンツを生み出し続けている。コンテンツ指向ネットワーク（ＣＣＮ）アーキテクチャが、そのようなデジタルコンテンツのアクセスおよび処理を容易にするために設計されている。ＣＣＮは、種々のコンテンツアイテムを求める「インタレスト」パケットを送信し、返事として「コンテンツオブジェクト」パケットを受け取ることによって互いに通信するネットワーククライアント、転送者（例えば、ルータ）、およびコンテンツ生成者などのエンティティまたはノードを含む。ＣＣＮのインタレストおよびコンテンツオブジェクトは、典型的には階層構造可変長識別子（ＨＳＶＬＩ）であるそれらの固有名称によって特定される。ＨＶＬＩは、最も全体的なレベルから最も個別なレベルへと順に並べられた連続する名称コンポーネントを含むことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ＣＣＮメッセージ（例えば、ＣＣＮノードからのメッセージ）は、そのヘッダにいくつかの繰り返されるフィールドを含むことができる。種々のフィールドの実際の値に加えて、ヘッダは、フィールドに関するフィールド情報（例えば、種類および長さ）を運ぶことができる。例えば、ＨＳＶＬＩの種々の名称コンポーネントは、種々の値ならびにそれらのそれぞれの種類および長さを有し得る。しかしながら、ＨＳＶＬＩの各々のコンポーネントが「名称」という種類であり得るため、同じフィールド情報が繰り返される。結果として、ＣＣＮメッセージのヘッダ内の情報が、繰り返しの多いものとなる可能性があり、パケットの転送時のリソースの利用が非効率的になる可能性がある。
【課題を解決するための手段】
【０００４】
一実施形態は、効率的なパケット転送を容易にする第１のノードにおけるシステムを提供する。動作の際に、システムは、第１のノードのストレージデバイスに、種類および長さ（ＴＬ）文字列とバイトアラインされた圧縮置換文字列との間のマッピングを含む静的辞書を格納する。システムは、バイトアラインされた圧縮置換文字列を符号化技術に基づいて符号化して、ビットアラインされた符号化置換文字列を生成し、符号化置換文字列と前記ＴＬ文字列との間のマッピングを符号化辞書に格納する。システムは、パケットにおいてＴＬ文字列を特定した場合に、ＴＬ文字列を符号化置換文字列で置き換え、パケットを符号化辞書をローカルストレージデバイスに格納している第２のノードへと伝送することにより、ＴＬ文字列のビットアラインされた圧縮を容易にする。
【０００５】
この実施形態の変種において、パケットは、コンテンツ指向ネットワーク（ＣＣＮ）メッセージである。ＣＣＮメッセージの名称は、最も全体的なレベルから最も個別なレベルへと順に並べられた連続する名称コンポーネントを含む階層構造可変長識別子（ＨＳＶＬＩ）である。次いで、システムは、ＣＣＮメッセージの固定ヘッダを圧縮固定ヘッダで置き換える。
【０００６】
この実施形態の変種において、システムは、種類、長さ、および値（ＴＬＶ）文字列の圧縮表現を、パケットにおけるＴＬＶ文字列の特定に応答して生成する。システムは、ＴＬＶ文字列の圧縮表現を、第１のノードのストレージデバイス内の学習辞書（ｌｅａｒｎｅｄ  ｄｉｃｔｉｏｎａｒｙ）に格納する。システムは、後続の第２のパケットにおいてＴＬＶ文字列を特定した場合に、第２のパケットにおけるＴＬＶ文字列を圧縮表現に基づいて圧縮する。
【０００７】
さらなる変種において、システムは、静的、符号化、および学習辞書におけるパケットのＴＬペアの不一致の場合に、ＴＬペアをＴＬペアの種類および長さのより短いビット長での表現を使用してコンパクト化する。
【０００８】
さらなる変種においては、静的、符号化、または学習辞書のエントリが、どの辞書にエントリが属するのかを示す識別パターンを含む。
【０００９】
この実施形態の変種において、符号化は、ハフマン符号化に基づく。
【００１０】
さらなる変種において、ハフマン符号は、（ｉ）固定された種類および固定された長さ、（ｉｉ）中間の値を存在させない一連のＴＬペア、（ｉｉｉ）固定された種類および指定されたビット長さ（ここで、ハフマン符号に指定された数のビットが続く）、および（ｉｖ）固定された長さおよび可変のビット長さ（ここで、ハフマン符号に可変の長さの値が続く）のうちの１つ以上を表す。
【００１１】
さらなる変種において、可変の長さの値は、値の範囲の始まりおよびビット数を示すプレフィックスとして符号化され、可変のビット長さは、範囲の始まりとビット数によって表される値との和として計算される。
【図面の簡単な説明】
【００１２】
【図１Ａ】図１Ａは、本発明の実施形態によるメッセージのヘッダ圧縮を容易にする典型的なコンテンツ指向ネットワーク（ＣＣＮ）を示している。
【図１Ｂ】図１Ｂは、本発明の実施形態によるＣＣＮメッセージのヘッダを圧縮するための方法を説明するフロー図を示している。
【図２Ａ】図２Ａは、本発明の実施形態によるＣＣＮメッセージの典型的な圧縮可能固定ヘッダを示している。
【図２Ｂ】図２Ｂは、本発明の実施形態によるＣＣＮメッセージの典型的な圧縮ヘッダを示している。
【図２Ｃ】図２Ｃは、本発明の実施形態によるＣＣＮメッセージの典型的な圧縮固定ヘッダフォーマットを示している。
【図２Ｄ】図２Ｄは、本発明の実施形態によるＣＣＮメッセージの固定ヘッダを圧縮するための方法を説明するフロー図を示している。
【図３Ａ】図３Ａは、本発明の実施形態による静的辞書の参照に基づくＣＣＮメッセージのヘッダの種類および長さ（ＴＬ）ペアの典型的な圧縮を示している。
【図３Ｂ】図３Ｂは、本発明の実施形態によるＣＣＮメッセージのヘッダのＴＬペアを圧縮するための典型的な圧縮置換文字列フォーマットを示している。
【図３Ｃ】図３Ｃは、本発明の実施形態による静的辞書の参照に基づくＣＣＮメッセージのヘッダのＴＬペアの圧縮のための方法を説明するフロー図を示している。
【図４Ａ】図４Ａは、本発明の実施形態による学習辞書の参照に基づくＣＣＮメッセージのヘッダの種類、長さ、および値（ＴＬＶ）の典型的な圧縮を示している。
【図４Ｂ】図４Ｂは、本発明の実施形態によるＴＬＶ文字列を学習して学習辞書のエントリを生成するための方法を説明するフロー図を示している。
【図４Ｃ】図４Ｃは、本発明の実施形態による学習辞書の参照に基づくＣＣＮメッセージのヘッダのＴＬＶ文字列の圧縮のための方法を説明するフロー図を示している。
【図５Ａ】図５Ａは、本発明の実施形態によるビットアラインされた符号化辞書のエントリのための典型的なフォーマットを示している。
【図５Ｂ】図５Ｂは、本発明の実施形態による符号化辞書の生成方法を説明するフロー図を示している。
【図６】図６は、本発明の実施形態によるＣＣＮメッセージのヘッダ圧縮を容易にする典型的なコンピュータおよび通信システムを示している。
【発明を実施するための形態】
【００１３】
図面において、同じ参照番号は、同じ図面構成要素を指している。
【００１４】
以下の説明は、実施形態の製作および使用を当業者にとって可能にするために提示され、特定のアプリケーションおよびその要件の文脈において提示される。開示の実施形態の種々の変更が、当業者にとって容易に明らかであり、本明細書において定められる全体的な原理は、本発明の技術的思想および技術的範囲から離れることなく、他の実施形態およびアプリケーションに適用可能である。したがって、本発明は、示される実施形態に限られず、本明細書に開示の原理および特徴に矛盾しない最も広い範囲が与えられるべきである。
【００１５】
概要
本発明の実施形態は、ネットワークを介して伝送されるインタレストメッセージなどのコンテンツ指向ネットワーキング（ＣＣＮ）メッセージ（ＣＣＮパケットとも称される）のヘッダ圧縮を容易にするシステムを提供する。ＣＣＮメッセージは、固定ヘッダと、ゼロ以上の随意によるヘッダフィールドと、複数のメッセージ本体フィールドとを含む。固定ヘッダは、典型的にはパケットの大部分においてビット長に関して過剰に用意されるいくつかのフィールドを含む。さらに、ヘッダおよび本体フィールドは、種類、長さ、および値（ＴＬＶ）フォーマットによって表される。ＴＬＶフィールドの一部は、中間の値を有さない連続するＴＬペアを含むことができる。これは、ＣＣＮメッセージのヘッダにおける高度に予測可能な情報（例えば、繰り返される種類および長さ）につながる可能性がある。
【００１６】
この問題を解決するために、提示される発明の実施形態は、圧縮固定ヘッダフォーマットを使用して固定ヘッダを圧縮し、静的、学習、および／または符号化辞書を使用してＴＬＶフィールドを圧縮する。ＣＣＮノードが、固定ヘッダを圧縮するための１つ以上の圧縮固定ヘッダフォーマットを維持する。ノードは、ＴＬペアの圧縮のためのあらかじめ定めることができる静的辞書も維持する。ノードは、ＴＬＶ文字列を学習し、対応する圧縮置換文字列を生成し、それらの間のマッピングを学習辞書のエントリに維持することもできる。ノードは、学習辞書のこのエントリをピアノードと共有することで、ピアノードへの後続のメッセージのヘッダにおいて学習したＴＬＶ文字列を圧縮することができる。いくつかの実施形態において、ノードは、圧縮の効率を改善するために符号化技術（例えば、ハフマン符号化）を適用することによって静的辞書をさらに符号化することができる。
【００１７】
動作時に、メッセージをピアへと伝送する前に、ノードは、圧縮固定ヘッダフォーマットのうちの１つに基づいて固定ヘッダを圧縮する。次いで、ノードは、ヘッダおよびメッセージフィールドを解析してＴＬペア文字列を得、静的辞書からＴＬペア文字列に一致するそれぞれの圧縮置換文字列（ＣＲＳ）を得、ＴＬペア文字列を対応する置換文字列で置き換える。いくつかの実施形態において、ノードは、静的辞書の代わりに符号化辞書においてＴＬペア文字列を参照することができる。いくつかのさらなる実施形態においてノードは、ヘッダおよびメッセージフィールドを解析してＴＬＶ文字列を得、学習辞書からＴＬＶ文字列に一致するそれぞれの圧縮置換文字列を得、ＴＬＶ文字列を対応する圧縮置換文字列で置き換えることもできる。ＴＬペアがいずれの辞書においても一致を引き起こさない場合でも、ノードは、依然として、より小さいビットフィールドでのＴＬペアのコンパクトな表現を使用することによってＴＬペアの長さを減らすことができる。これらの技術のうちの１つ以上を使用して、ノードは、ＣＣＮメッセージのヘッダを圧縮する。
【００１８】
本開示において、用語「ヘッダ圧縮」は、アプリケーションペイロードを除くパケットにおけるフレーミングおよびシグナリングのオーバヘッドの量の削減という一般的な語法にて使用される。ＣＣＮメッセージにおいて、ヘッダ圧縮は、パケットフレーミング（固定ヘッダ）、フィールドフレーミング（種類−長さ−値）、ならびにＣＣＮプロトコルの一部である暗号鍵またはハッシュ値などのシグナリングに当てはまる。
【００１９】
以下の用語が、ＣＣＮアーキテクチャを説明するために使用される。
【００２０】
コンテンツオブジェクト：固有名称に結びつけられた１つの名前付きのデータ。コンテンツオブジェクトは、「永続的」であり、すなわちコンテンツオブジェクトは、コンピューティングデバイス内のあちこちを移動し、あるいは異なるコンピューティングデバイスにまたがって移動し得るが、変更されることはない。コンテンツオブジェクトの何らかのコンポーネントが変更される場合、その変更を行ったエンティティが、更新後のコンテンツを含む新たなコンテンツオブジェクトを生成し、新たなコンテンツオブジェクトを新たな固有名称に結びつける。
【００２１】
固有名称：ＣＣＮにおける名称は、典型的には、位置とは無関係であり、コンテンツオブジェクトを一意に特定する。データ転送デバイスは、名称または名称のプレフィックス部分を使用することによって、コンテンツオブジェクトのネットワークアドレスまたは物理的な位置にかかわらずに、コンテンツオブジェクトを生成または格納するネットワークノードにパケットを転送することができる。いくつかの実施形態において、名称は、階層構造可変長識別子（ＨＳＶＬＩ）であってよい。ＨＳＶＬＩを、さまざまなやり方で構造化することができるいくつかの階層コンポーネントに分割することができる。例えば、個々の名称コンポーネントｐａｒｃ、ｈｏｍｅ、ｃｃｎ、およびｔｅｓｔ．ｔｘｔを、左側に位置するプレフィックス部分が上位であるようなやり方で構造化して、名称「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ」を形成することができる。すなわち、名称「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ」が、「／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ」の「親」または「プレフィックス部分」であり得る。さらなるコンポーネントを、共同作業による文書などのコンテンツアイテムの異なるバージョンの間の区別のために使用することができる。
【００２２】
いくつかの実施形態において、名称は、コンテンツオブジェクトのデータ（例えば、チェックサム値）および／またはコンテンツオブジェクトの名称のエレメントから導出されたハッシュ値など、非階層の識別子を含むことができる。ハッシュに基づく名称の説明が、米国特許出願第１３／８４７，８１４号に記載されている。
【００２３】
名称は、フラットラベル）であってもよい。以下で、「名称」は、階層による名称または名称のプレフィックス部分、フラットな名称、固定長の名称、任意長の名称、あるいはラベル（例えば、マルチプロトコル・ラベル・スイッチング（ＭＰＬＳ）ラベル）など、名称−データネットワークにおけるデータのあらゆる名称を指して使用される。
【００２４】
インタレスト：データの要求を知らせるパケットであり、そのデータの名称（または、名称のプレフィックス部分）を含んでいるパケット。データ消費者が、情報セントリックネットワークのいたる所に要求またはインタレストを散布することができ、そのような要求またはインタレストを、ＣＣＮルータが、要求またはインタレストを満足させるべく要求されたデータを提供することができるストレージデバイス（例えば、キャッシュサーバ）またはデータ生成者に伝えることができる。
【００２５】
本明細書に開示の方法は、ＣＣＮネットワークに限定されず、他のアーキテクチャにも同様に適用可能である。ＣＣＮアーキテクチャの説明は、米国特許出願第１２／３３８，１７５号に記載されている。
【００２６】
典型的なネットワークおよび通信
図１Ａが、本発明の実施形態によるメッセージのヘッダ圧縮を容易にする典型的なコンテンツ指向ネットワーク（ＣＣＮ）を示している。ＣＣＮであってよいネットワーク１００が、クライアントデバイス１１６、コンテンツ生成デバイス１１８、ならびにノード１０２、１０４、１０６、１０８、１１０、１１２、および１１４に位置するルータまたは他の転送デバイスを含むことができる。ノードは、コンピュータシステム、エンドポイント代表ユーザ、ならびに／あるいはインタレストを生成でき、もしくはコンテンツを生成することができるデバイスであってよい。ピアＣＣＮノード１０２および１１４が、静的辞書、学習辞書、および符号化辞書を共有すると仮定する。また、ノード１０２および１１４は、お互いがサポートする圧縮固定ヘッダフォーマットを承知することができる。いくつかの実施形態において、静的辞書は、（例えば、ネットワーク管理者によって）あらかじめ設定され、ネットワーク１００を介して伝えられる。
【００２７】
動作時に、ＣＣＮノード１０２は、メッセージ１２０（例えば、コンテンツを求めるインタレスト）を生成することができる。メッセージ１２０は、固定ヘッダ、随意によるヘッダ、およびＣＣＮメッセージペイロードを含む。ノード１０２は、メッセージ１２０のヘッダおよびメッセージフィールドを圧縮し、圧縮ヘッダ１２１を生成することができる。圧縮ヘッダ１２１は、圧縮固定ヘッダフォーマットに基づいて生成された圧縮固定ヘッダ１２２、静的（および／または、符号化）辞書に基づく圧縮ＴＬペア１２４およびＴＬペアの対応する値１２５、学習辞書に基づく圧縮ＴＬＶ１２６、ならびに辞書内のエントリにマッチしていないコンパクト化ＴＬペア１２８のうちの１つ以上を含むことができる。いくつかの実施形態において、ノード１０２は、圧縮ヘッダ１２１にコンテクスト識別子を含む。コンテクスト識別子は、どの辞書が圧縮ヘッダ１２１の生成に使用されたのかを示すことができる。
【００２８】
ノード１０２は、メッセージ１２０をピアＣＣＮノード１１４へと送信する。ノード１１４が、メッセージ１２０を受信し、圧縮ヘッダ１２１からコンテクスト識別子を得、コンテクスト識別子から辞書情報を得る。次いで、ノード１１４は、圧縮固定ヘッダ１２２のヘッダフィールドからそのフォーマットに基づいて情報を得る。次いで、ノード１１４は、圧縮ＴＬペア１２４に関して静的（および／または、符号化）辞書において逆参照（すなわち、逆照合）を実行して、元のＴＬペアを得、そのＴＬペアの文脈において値１２５を使用する。同じやり方で、ノード１１４は、共有の学習辞書に基づいて圧縮ＴＬＶ１２６から元のＴＬＶを得る。また、ノード１１４は、コンパクト化ＴＬペア１２８のフィールドからそのフォーマットに基づいて情報を得る。このようにして、ノード１１４は、辞書の逆参照に基づいて生成される固定ヘッダ１３２および随意によるヘッダ１３４を含む圧縮されていないヘッダ１３０を生成する。このやり方で、ピアノード１０２および１１４は、圧縮ヘッダを有するＣＣＮメッセージを交換することができ、伝送およびヘッダ処理における効率性が達成される。
【００２９】
ヘッダ圧縮の概要
図１Ｂが、本発明の実施形態によるＣＣＮメッセージのヘッダを圧縮するための方法を説明するフロー図１５０を示している。動作時、ＣＣＮノードのヘッダ圧縮システムが、ヘッダ圧縮の候補メッセージを特定する（動作１５２）。候補メッセージの例として、これらに限られるわけではないが、別のＣＣＮノードから受信した非圧縮メッセージ、ＣＣＮがそのヘッダを解凍したメッセージ、およびＣＣＮノードによって生成されたメッセージが挙げられる。次いで、システムは、圧縮固定ヘッダフォーマットに基づいてメッセージの固定ヘッダを圧縮する（動作１５４）。フォーマットは、効率的なやり方で固定ヘッダの種々のフィールドについて最も一般的な値を表す。
【００３０】
システムは、静的辞書においてメッセージの随意によるヘッダおよびメッセージ本体からのＴＬペア文字列を参照し、対応する圧縮置換文字列を特定する。次いで、システムは、ＴＬペア文字列を特定した圧縮置換文字列で置き換える（動作１５６）。いくつかの実施形態において、システムは、（例えば、ハフマン符号化を適用することによって）静的辞書を符号化することによって生成される符号化辞書において参照を実行することができる。符号化置換文字列が可変長である場合、符号化置換文字列の前にＴＬペア文字列の符号化後の長さが配置される。次いで、システムは、学習辞書においてメッセージの随意によるヘッダおよびメッセージ本体からのＴＬＶ文字列を参照し、対応する圧縮置換文字列を特定する。次いで、システムは、ＴＬＶ文字列を特定した圧縮置換文字列で置き換える（動作１５８）。
【００３１】
いずれかのＴＬペアが辞書のエントリに一致しない場合も、システムは、依然として、ＴＬペアのサイズを縮小することができる。その場合、システムは、辞書のエントリに一致しないＴＬペアについてパターンを使用することによってＴＬペアをコンパクト化する（動作１６０）。いくつかの実施形態において、システムは、圧縮ヘッダにコンテクスト識別子を取り入れる（動作１６２）。このコンテクスト識別子は、圧縮固定ヘッダに先行でき、圧縮ヘッダの生成に用いられた１つ以上の辞書を特定することができる。例えば、ピアノードが複数の静的辞書を有する場合、圧縮ヘッダを有するメッセージを受け取るピアノードは、どの辞書を圧縮ヘッダの解凍に使用すべきかを、コンテクスト識別子から決定することができる。
【００３２】
固定ヘッダ圧縮
図２Ａは、本発明の実施形態によるＣＣＮメッセージの典型的な圧縮可能固定ヘッダを示している。ＣＣＮメッセージの通常の固定ヘッダ２３０は、典型的には、複数のフィールドを含む。これらのフィールドは、バージョン２０２、パケット種類２０４、パケット長さ２０６、ホップ限界２０８、およびヘッダ長さ２１２のうちの１つ以上を含む。加えて、固定ヘッダ２３０は、予約済みフィールド２１０も含むことができる。しかしながら、ノードが固定ヘッダ２３０を有するパケットを受け取るとき、ノードは、パケットのヘッダ（すなわち、固定および／または随意によるヘッダ）が圧縮されているか否かを知ることができない可能性がある。
【００３３】
この問題を解決するために、固定ヘッダ２３０のフォーマットが、圧縮可能固定ヘッダ２３２へと変更される。バージョンフィールド２０２のビットが、パターンフィールド２００（すなわち、ビットパターン）、短縮バージョンフィールド２０３、および予備ビット２１４を含むように再分配される。パターンフィールド２００は、パケットが圧縮されているか否かを示すことができる。パターンフィールド２００は、どの固定ヘッダフォーマットが圧縮固定ヘッダの生成に使用されているかも示すことができる。例えば、パターン「０００」が、パケットが圧縮されていないことを示すことができ、パターン「００１」が、特定の圧縮固定ヘッダフォーマットを示すことができる。
【００３４】
図２Ｂは、本発明の実施形態によるＣＣＮメッセージの典型的な圧縮ヘッダを示している。圧縮ヘッダ２３４は、圧縮固定ヘッダ２２６の前に追加される。圧縮固定ヘッダ２２６が、固定ヘッダ２３２と同じフィールド長さを有してよいことに、注意すべきである。しかしながら、圧縮固定ヘッダ２２６のパターンが、後続の随意によるヘッダが圧縮される場合に、それを圧縮されたヘッダとして依然として特定する。このやり方で、ピアノードは、圧縮された随意によるヘッダを知る。
【００３５】
圧縮ヘッダ２３４は、コンテクストパターン（ＣＰ）２２０、コンテクスト識別子（ＣＩＰ）２２２、および巡回冗長検査（ＣＲＣ）フィールド２２４を含む。いくつかの実施形態において、ＣＲＣフィールド２２４は、ｈｔｔｐ：／／ｔｏｏｌｓ．ｉｅｔｆ．ｏｒｇ／ｈｔｍｌ／ｒｆｃ４９９５において入手することができる「Ｔｈｅ  ＲＯｂｕｓｔ  Ｈｅａｄｅｒ  Ｃｏｍｐｒｅｓｓｉｏｎ（ＲＯＨＣ）  Ｆｒａｍｅｗｏｒｋ」という名称のＩＥＴＦ  Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ（ＲＦＣ）  ４９９５において論じられているロバストヘッダ圧縮（ＲＯＨＣ）に基づいて算出される。コンテクスト識別子２２２は、さまざまな長さ（例えば、バイトアライメントのための３ビットまたは１０ビット）を有することができる。コンテクストパターン２２０は、コンテクスト識別子の長さを示す。
【００３６】
図２Ｃが、本発明の実施形態によるＣＣＮメッセージの典型的な圧縮固定ヘッダフォーマットを示している。この例において、圧縮固定ヘッダは、フォーマット２４１、２５１、または２６１にて表され得る。これらのフォーマットの各々は、効率的な処理のためにバイトアラインされることができる。フォーマット２４１は、フォーマット２４１を特定するパターン２４２（例えば、「０１０」）、バージョンフィールド２４３、パケット種類フィールド２４４、パケット長さフィールド２４５、およびホップ限界フィールド２４６を含む。フォーマット２４１は、ヘッダが固定されたヘッダ長さを有し、それを表すための専用のビットを必要としない場合に、適している。フォーマット２５１は、フォーマット２５１を特定するパターン２５２（例えば、「０１１」）、バージョンフィールド２５３、パケット種類フィールド２５４、ヘッダ長さフィールド２５５、およびパケット長さフィールド２５６を含む。フォーマット２５１は、メッセージがホップ限界を有さない場合に適している。
【００３７】
フォーマット２６１は、フォーマット２６１を特定するパターン２６２（例えば、「００１」または「１００」）、バージョンフィールド２６３、パケット種類フィールド２６４、ヘッダ長さフィールド２６５、パケット長さフィールド２６６、およびホップ限界フィールド２６７を含む。フォーマット２６１は、固定ヘッダのそれぞれのフィールドが必要とされる場合に適している。しかしながら、フォーマット２６１のフィールド長さは、異なる可能性があり、パターン２６２が、フィールド長さの違いを示すことができる。例えば、圧縮固定ヘッダ２２６が固定ヘッダ２３２と同じフィールド長さを必要とする場合、パターン２６２は、或るビットパターン（例えば、「００１」）をとることができる。他方で、フィールド長さが固定ヘッダ２３２よりも短い場合、パターン２６２は、別のビットパターン（例えば、「１００」）をとることができる。フォーマット２６１におけるフィールドは、同じままであることができ、あるいはヘッダ長さフィールドを、ヘッダ長さに加えて戻りコードを表すためにさらに分割することができる。
【００３８】
図２Ｄが、本発明の実施形態によるＣＣＮメッセージの固定ヘッダを圧縮するための方法を説明するフロー図２８０を示している。動作時、ＣＣＮノードのヘッダ圧縮システムが、図２Ｃに関連して説明したように、メッセージの固定ヘッダのフィールドのそれぞれの値を特定し（動作２８２）、特定された値に基づいて固定ヘッダフォーマットを決定する（動作２８４）。次いで、システムは、決定された固定ヘッダフォーマットに基づいて固定ヘッダを圧縮する（動作２８６）。
【００３９】
静的辞書を用いたＴＬ圧縮
図３Ａが、本発明の実施形態による静的辞書の参照に基づくＣＣＮメッセージのヘッダのＴＬペアの典型的な圧縮を示している。この例において、メッセージの随意によるヘッダは、値Ｖ３を含むＴＬＶ３０２を、中間の値を含まない一式の連続するＴＬペア（Ｔ０，Ｌ０）、（Ｔ１，Ｌ１）、および（Ｔ２，Ｌ２）を先行させつつ含む。例えば、連続するＴＬペアは、検証種類、ハッシュ値（例えば、（セキュア・ハッシュ・アルゴリズム）ＳＨＡ−２５６）、および鍵（例えば、公開鍵）、ならびにそれらのそれぞれの長さを表すことができる。これらの種類の各々および対応する長さが固定されているため、連続するＴＬペア（Ｔ０，Ｌ０）、（Ｔ１，Ｌ１）、および（Ｔ２，Ｌ２）を、静的辞書のエントリ内のただ１つの圧縮置換文字列（ＣＲＳ）３０６によって表すことができる。ノードは、静的辞書における参照を実行し、文字列３０６を得、連続するＴＬペア（Ｔ０，Ｌ０）、（Ｔ１，Ｌ１）、および（Ｔ２，Ｌ２）を、メッセージのヘッダ内の圧縮ＴＬペア３０４として置き換えることができる。ここで、圧縮は、「種類」（例えば、Ｔ０）において始まり、「値」（例えば、Ｖ３）の前で終わる。
【００４０】
静的辞書を、ドメイン知識の解析（例えば、周波数解析）に基づいて既知のＴＬペア文字列を使用して構築することができる。静的辞書を、特定の場合について構築することもできる。例えば、静的辞書は、クライアントにとって最も一般的に使用されるＴＬペアについて存在することができる。ノードは、複数の静的辞書を含むことができ、コンテクスト識別子は、どの静的辞書が圧縮に使用されたのかを示すことができる。ノードが静的辞書の使用を開始できる前に、ネットワークの他のそれぞれのノードも、静的辞書の写しを記憶すべきである。いくつかの実施形態においては、静的辞書が、ネットワークのそれぞれのノードへと伝えられる。
【００４１】
図３Ｂが、本発明の実施形態によるＣＣＮメッセージのヘッダのＴＬペアを圧縮するための典型的な圧縮置換文字列フォーマットを示している。この例において、圧縮置換文字列３０６は、フォーマット３１１、３２１、または３３１にて表され得る。これらのフォーマットの各々は、効率的な処理のためにバイトアラインされることができる。フォーマット３１１は、フォーマット３１１を特定するパターン３１２（例えば、「１０」）と、圧縮鍵３１３とを含む。この圧縮鍵３１３は、圧縮ヘッダ内の単一または連続するＴＬペアを表すことができる。圧縮鍵３１３は、静的辞書において対応するＴＬペアにマッピングされる。圧縮鍵３１３を表すためのビットの数は、さまざまであり得、パターン３１２は、圧縮鍵３１３に割り当てられたビットの数を示す。フォーマット３１１は、ＴＬペアが固定された長さを有し、それを表すためのビットを必要としない場合に、適している。
【００４２】
他方で、フォーマット３２１は、フォーマット３２１を特定するパターン３２２（例えば、「０」または「１１０」）、圧縮鍵３２３、および長さ３２４を含む。圧縮鍵３２３および／または長さ３２４を表すためのビットの数は、さまざまであり得、パターン３２２は、圧縮鍵３２３および長さ３２４に割り当てられたビットの数を示す。圧縮鍵３２３は、単一または連続するＴＬペアを表すことができ、長さ３２４は、ＴＬペアの長さを表すことができる。フォーマット３２１は、ＴＬペアを圧縮置換文字列で置き換えることができ、その長さを長さ３２４におけるビットによって表すことができる場合に、適している。ここで、両方のフォーマット３１１および３２１は、辞書のヒット（すなわち、静的辞書における参照の成功）をエンコードすることができる。
【００４３】
しかしながら、辞書のミスが生じる場合も、ノードは、ＴＬペアを、種類および長さをより少数のビットを使用して表すことによって、やはりコンパクト化することができる。フォーマット３３１が、コンパクト化されたＴＬペアを表している。フォーマット３３１は、フォーマット３３１を特定するパターン３３２（例えば、「１１１０」、「１１１１１０」、または「１１１１１１１」）と、種類３３３と、長さ３３４とを含む。種類３３３および／または長さ３３４を表すためのビットの数は、さまざまであり得、パターン３３２は、種類３３３および長さ３３４に割り当てられたビットの数を示す。大部分のＴＬペアに関して、フォーマット３３１は、ＴＬペアの長さよりも短くなり得る。換言すると、フォーマット３３１は、より少数のバイトを用いて種類３３３および／または長さ３３４を表すことで、ＴＬペアをコンパクト化することができる。
【００４４】
図３Ｃが、本発明の実施形態による静的辞書の参照に基づくＣＣＮメッセージのヘッダのＴＬペアの圧縮のための方法を説明するフロー図３５０を示している。動作の際に、ＣＣＮノードのヘッダ圧縮システムは、静的辞書の参照のためにメッセージの随意によるヘッダにおいて単一または連続する（すなわち、中間の値が存在しない）ＴＬペア文字列を得る（動作３５２）。システムは、静的辞書においてトークンに一致するエントリを特定する（動作３５４）。次いで、システムは、エントリから圧縮置換文字列を読み出し（動作３５６）、随意によるヘッダおよびメッセージ本体におけるＴＬペア文字列を圧縮置換文字列で置き換える（動作３５８）。
【００４５】
学習辞書を用いたＴＬＶ圧縮
図４Ａが、本発明の実施形態による学習辞書の参照に基づくＣＣＮメッセージのヘッダのＴＬＶの典型的な圧縮を示している。この例では、メッセージの随意によるヘッダが、一連のＴＬＶ（Ｔ０，Ｌ０，Ｖ０）、（Ｔ１，Ｌ１，Ｖ１）、および（Ｔ２，Ｌ２，Ｖ２）を含むＴＬＶ４１２を含んでいる。ＴＬＶがトークンを表す場合、ノードは、ＴＬＶ文字列を学習し、圧縮置換文字列４１４を生成し、圧縮置換文字列４１４で学習辞書にエントリを生成する。他方で、ＴＬＶがカウンタを表す場合、ノードは、ＴＬＶ文字列を学習し、ＴＬＶの種類およびオフセットのためのベース値４０９をエンコードする圧縮鍵４０８を備える置換カウンタ４１６を決定する。ノードは、置換カウンタ４１６で学習辞書にエントリを生成する。圧縮置換文字列４１４および置換カウンタ４１６を、効率的な処理のためにバイトアラインさせることができる。ここで、圧縮は、「種類」（例えば、Ｔ０）において始まり、「値」（例えば、Ｖ２）で終わる。
【００４６】
次いで、ノードは、エントリをピアノードと共有する。ノードは、別の交換メッセージ（例えば、固定ヘッダのパケットの種類が「辞書」を示している）を送信することができる。交換メッセージは、トークンおよびカウンタの両方のＴＬＶに関する１つ以上の辞書のエントリ（すなわち、辞書定義）を運ぶことができる。ノードは、帯域内交換（例えば、データメッセージへの相乗り）を使用して辞書のエントリを送信することもできる。ストリーミングを容易にするために、学習された値は、暗号化されずに送信される。帯域内交換は、自身の固有のＣＲＣを有することができ、パケット内の辞書情報を指し示すためにメッセージのフッタにおいて逆オフセットおよび長さを有することができる。
【００４７】
ピアノードが辞書のエントリを受信したとき、ピアノードは、ノードへと受け取り通知を送り返す。いくつかの実施形態において、受け取り通知は、情報の効率的な交換のために静的辞書に基づくエントリに基づく。それぞれのノードは、学習（および、静的）辞書におけるそれぞれのエントリのためのタイマを維持することができる。エントリが或る時間期間にわたって使用されない場合、ノードは、そのエントリを時間切れにし、辞書から取り除く。受け取り確認を受信すると、ノードは、後続のメッセージのヘッダにおいて、トークンＴＬＶ文字列を圧縮置換文字列４１４で置き換える。他方で、メッセージのヘッダがカウンタＴＬＶを含む場合、ノードは、カウンタＴＬＶから現在値を取得し、現在値およびベース値４０９に基づいてオフセットを算出する。次いで、ノードは、カウンタＴＬＶ文字列をオフセットが続く置換カウンタ４１６で置き換える。
【００４８】
例えば、ＴＬＶは、名称「／ｆｏｏ／ｂａｒ／ｃｈｕｎｋ＝７」を表すことができる。ここで、（Ｔ０，Ｌ０，Ｖ０）が、名称の種類、名称コンポーネント「ｆｏｏ」の長さ、および文字列「ｆｏｏ」にそれぞれ対応する。同様に、（Ｔ１，Ｌ１，Ｖ１）は、名称コンポーネント「ｂａｒ」を表し、（Ｔ２，Ｌ２，Ｖ２）は、名称コンポーネント「ｃｈｕｎｋ＝７」を表す。ファイルを、複数のチャンクへとさらに分割することができ、「ｃｈｕｎｋ＝７」は、ファイルの８番目のチャンクを表すことができる。（Ｔ０，Ｌ０，Ｖ０）および（Ｔ１，Ｌ１，Ｖ１）は、それぞれのチャンクについて繰り返されるため、ノードは、（Ｔ０，Ｌ０，Ｖ０）および（Ｔ１，Ｌ１，Ｖ１）をまとめて圧縮置換文字列４１４で表してＴＬＶ文字列を圧縮することができる。他方で、（Ｔ２，Ｌ２，Ｖ２）は、カウンタを表すため、ノードは、（Ｔ２，Ｌ２，Ｖ２）をオフセット（例えば、Ｖ２−ベース値４０９）が続く置換カウンタ４１６で置き換えることによって（Ｔ２，Ｌ２，Ｖ２）を圧縮することができる。
【００４９】
ピアノードが、圧縮された随意によるヘッダおよびメッセージ本体を有するメッセージを受信するとき、ピアノードは、学習辞書への逆照合を適用し、トークンＴＬＶ文字列を得る。同じやり方で、ピアノードは、カウンタＴＬＶ文字列のベース値を得ることができる。次いで、ピアノードは、ベース値およびオフセットを使用し、値を算出する。圧縮および解凍が、２つのピアノードの間または通信のエンドポイント（例えば、インタレストの生成者および消費者）の間であり得ることに、注意すべきである。
【００５０】
ベース値４０９を（例えば、より大きいカウンタ値に適応するために）変更すべき場合、ノードは、置換カウンタ４１６を有するエントリ内のベース値４０９を更新し、更新後のエントリをピアノードへと送信する。ノードは、更新されたエントリを送信するために交換メッセージまたは帯域内交換を使用することができる。いくつかの実施形態において、ノードは、学習辞書においてカウンタＴＬＶ文字列について異なる圧縮鍵を有する複数の置換カウンタを生成することができる。これらの置換カウンタは、各々が或る範囲のカウンタ値のためのベースを表す異なるベース値に対応する。ノードは、これらの置換カウンタをピアノードと共有する。より大きいカウンタ値が必要とされるとき、ノードは、単純に次の範囲のカウンタ値のためのベース値を使用する。このやり方で、ノードは、ピアノードからの交換の受け取り確認を待つことを回避することができる。
【００５１】
この例において、圧縮置換文字列４１４は、パターン４０２（例えば、「１１１１０」、「１１１１１１０」、または「１１１１１１１０」）および圧縮鍵４０４を含む。圧縮鍵４０４を表すためのビットの数（すなわち、圧縮鍵４０４の長さ）は、さまざまであり得、パターン４０２は、圧縮鍵４０４に割り当てられたビットの数を示す。圧縮鍵４０４（したがって、圧縮置換文字列４１４）の長さは、学習辞書のエントリにおけるＴＬＶ文字列の長さに比例することができる。例えば、ＴＬＶ文字列が名称セグメント、鍵識別子、または公開鍵である場合、圧縮置換文字列４１４の長さは、それぞれ２、３、または４バイトであり得る。同様に、置換カウンタ４１６は、圧縮鍵４０８に割り当てられたビット数を示すパターン４０６を含む。効率的にオフセットを計算するために、計算後のオフセットは、オフセットの範囲を表すプレフィックス（例えば、「０」、「１０」、「１１０」、「１１１０」、および「１１１１０」）を有することができる。これにより、オフセットは、該当の範囲に含まれる値を示すために必要なビットしか使用せず、したがってさらなる圧縮が達成される。
【００５２】
図４Ｂは、本発明の実施形態によるＴＬＶ文字列を学習して学習辞書のエントリを生成するための方法を説明するフロー図４５０を示している。動作において、ＣＣＮノードのヘッダ圧縮システムは、メッセージのヘッダから特定のＴＬＶ文字列を学習する（動作４５２）。次いで、システムは、図４Ａに関連して説明したように、学習したＴＬＶ文字列がカウンタＴＬＶ文字列であるか否かを確認する（動作４５４）。否である場合、システムは、学習辞書において学習したＴＬＶ文字列へとマッピングされた圧縮置換文字列を含むエントリを生成する（動作４５６）。そうでない場合、システムは、学習辞書においてカウンタのためのベース値および学習したＴＬＶ文字列の種類へとマッピングされた置換カウンタを含むエントリを生成する（動作４５８）。次いで、システムは、交換メッセージおよび／または帯域内交換を使用してピアノードとエントリを交換する（動作４６０）。
【００５３】
図４Ｃが、本発明の実施形態による学習辞書の参照に基づくＣＣＮメッセージのヘッダのＴＬＶ文字列の圧縮のための方法を説明するフロー図４７０を示している。動作時に、ＣＣＮノードのヘッダ圧縮システムは、学習辞書の参照のためのＴＬＶ文字列を得（動作４７２）、学習辞書においてＴＬＶ文字列（または、ＴＬＶ文字列の種類）に一致するエントリを特定する（動作４７４）。次いで、システムは、エントリがカウンタエントリであるか否かを確認する（動作４７６）。
【００５４】
否である場合、システムは、エントリから圧縮置換文字列を読み出し（動作４７８）、ＴＬＶ文字列を圧縮置換文字列で置き換える（動作４８０）。そうでない場合、システムは、エントリから置換カウンタおよびカウンタのベース値を読み出す（動作４８２）。次いで、システムは、ＴＬＶ文字列から現在値を得、ベース値および現在値に基づいてオフセットを算出する（動作４８４）。システムは、ＴＬＶ文字列をオフセットが続く置換カウンタで置き換える（動作４８６）。
【００５５】
符号化辞書を用いたＴＬ圧縮
図５Ａが、本発明の実施形態によるビットアラインされた符号化辞書のエントリのための典型的なフォーマットを示している。この例において、ＣＣＮノードは、静的辞書５０２に符号化を適用して、符号化辞書５０４を生成することができる。いくつかの実施形態において、符号化は、ハフマン符号化である。結果として、符号化辞書５０４におけるエントリは、静的辞書５０２における圧縮置換文字列を表すハフマンツリー（すなわち、ハフマン符号）の葉ノードに対応することができる。圧縮置換文字列の符号化によって、ノードは、対応する符号化置換文字列（ＥＲＳ）５０６を生成する。符号化置換文字列５０６は、固定されたＴＬペア、連続するＴＬペア、固定された種類およびビット長さ、ならびに固定された種類および符号化後の長さを表すことができる。
【００５６】
この例において、符号化置換文字列５０６は、フォーマット５２２または５２４にて表され得る。符号化置換文字列５０６は、ハフマン符号化に基づいて生成され得るため、これらのフォーマットは、ビットアラインされることができる。フォーマット５２２は、解凍に符号化辞書が使用されるべきである旨を示すパターン５１２（例えば、「０」）を含む。フォーマット５２２は、ハフマンツリーからの文字列である符号化圧縮鍵５１４をさらに含む。フォーマット５２４において、符号化圧縮鍵５１４は、符号化後長さフィールド５１６に先行する。符号化後長さフィールド５１６は、値の範囲に対応するプレフィックスを含む。残りのビットは、その範囲内の値を表すために使用される。符号化辞書を用いたＴＬペアの圧縮は、図３Ｃに関連して説明されている。
【００５７】
図５Ｂは、本発明の実施形態による符号化辞書の生成方法を説明するフロー図５５０を示している。動作時に、ＣＣＮノードのヘッダ圧縮システムは、静的辞書から圧縮置換文字列を特定する（動作５５２）。システムは、特定された文字列を、対応するＴＬペアの重み（例えば、それぞれの頻度）に基づいて符号化する（動作５５４）。いくつかの実施形態において、この符号化は、ハフマン符号化に基づいて行われ、重みは、対応するＴＬペアの出現の頻度を表す。システムは、符号化に基づいて符号化置換文字列を生成し（動作５５６）、可変の長さを有する符号化置換文字列の符号化後長さを生成する（動作５５８）。次いで、システムは、符号化置換文字列（および、該当する場合には、それらの符号化後長さ）を符号化辞書に含める（動作５６０）。
【００５８】
典型的なコンピュータおよび通信システム
図６が、本発明の実施形態によるＣＣＮメッセージのヘッダ圧縮を容易にする典型的なコンピュータおよび通信システムを示している。コンピュータおよび通信システム６０２は、プロセッサ６０４、メモリ６０６、およびストレージデバイス６０８を含む。メモリ６０６は、管理されたメモリとして働き、１つ以上のメモリプールを格納するために使用されることができる揮発メモリ（例えば、ＲＡＭ）を含むことができる。さらに、コンピュータおよび通信システム６０２を、表示装置６１０、キーボード６１２、およびポインティングデバイス６１４に接続することができる。ストレージデバイス６０８は、オペレーティングシステム６１６、ヘッダ圧縮システム６１８、およびデータ６３２を格納することができる。
【００５９】
ヘッダ圧縮システム６１８は、コンピュータおよび通信システム６０２によって実行されたときに本明細書に記載の方法および／またはプロセスをコンピュータおよび通信システム６０２に実行させることができるインストラクションを含むことができる。具体的には、ヘッダ圧縮システム６１８は、コンテンツ指向ネットワーク（ＣＣＮ）メッセージに対応するパケットを受信するためのインストラクションを含むことができ（通信機構６２８）、ここでＣＣＮメッセージの名称は、最も全体的なレベルから最も個別なレベルへと順に並べられた連続する名称コンポーネントを含む階層構造可変長識別子（ＨＳＶＬＩ）である。
【００６０】
ヘッダ圧縮システム６１８は、ＣＣＮメッセージの固定ヘッダを圧縮するためのインストラクションをさらに含むことができる（固定ヘッダ圧縮機構６２０）。ヘッダ圧縮システム６１８は、静的辞書に基づいて単一または連続するＴＬペアを圧縮（および、解凍）するためのインストラクションも含むことができる（静的圧縮機構６２２）。ヘッダ圧縮システム６１８は、学習辞書においてＴＬＶ文字列を学習し、学習辞書に基づいてＴＬＶ文字列を圧縮（および、解凍）するためのインストラクションを含むことができる（学習圧縮機構６２４）。ヘッダ圧縮システム６１８は、学習辞書をピアノードと交換するためのインストラクションも含むことができる（通信機構６２８）。さらに、ヘッダ圧縮システム６１８は、静的辞書の符号化を学習して符号化辞書を生成し、符号化辞書を使用して単一または連続するＴＬペアを圧縮（および、解凍）するためのインストラクションを含むことができる（符号化圧縮機構６２６）。辞書を、メモリ６０６および／またはストレージデバイス６０８に格納することができる。
【００６１】
データ６３２は、本明細書に記載の方法および／またはプロセスによって入力として必要とされ、あるいは出力として生成される任意のデータを含むことができる。具体的には、データ６３２は、少なくとも、コンテンツ指向ネットワーク（ＣＣＮ）メッセージに対応するパケット、最も全体的なレベルから最も個別なレベルへと順に並べられた連続する名称コンポーネントを含む階層構造可変長識別子（ＨＳＶＬＩ）であるＣＣＮメッセージの名称、インタレストメッセージであるＣＣＮメッセージ、インタレスト戻りメッセージに対応するパケット、ならびにＣＣＮメッセージまたはインタレストメッセージの名称に対応する利用可能な転送経路が存在しないことに対応するエラー状態の知らせを格納することができる。
【００６２】
この詳細な説明において述べられるデータ構造および符号は、典型的には、コンピュータシステムによる使用のために符号および／またはデータを格納することができる任意のデバイスまたは媒体であってよいコンピュータにとって読み取り可能な記憶媒体上に記憶される。コンピュータにとって読み取り可能な記憶媒体として、これらに限られるわけではないが、揮発メモリ、不揮発メモリ、ディスク駆動装置、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）、などの磁気および光記憶装置、あるいは現時点において公知またはこれから開発されるコンピュータにとって読み取り可能な媒体を格納することができる他の媒体が挙げられる。
【００６３】
この詳細な説明の部分において述べられる方法およびプロセスを、上述のとおりのコンピュータにとって読み取り可能な記憶媒体に格納されてよい符号および／またはデータとして具現化することができる。コンピュータシステムがコンピュータにとって読み取り可能な記憶媒体に格納された符号および／またはデータを読み出して実行するとき、コンピュータシステムは、データ構造および符号として具現化され、コンピュータにとって読み取り可能な記憶媒体に格納された方法およびプロセスを実行する。
【００６４】
さらに、上述の方法およびプロセスは、ハードウェアモジュールまたは装置に含まれることができる。例えば、ハードウェアモジュールまたは装置として、これらに限られるわけではないが、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定の時点において特定のソフトウェアモジュールまたはコードを実行する専用または共有のプロセッサ、ならびに現時点において公知またはこれから開発される他のプログラマブルな論理素子を挙げることができる。ハードウェアモジュールまたは装置の作動時に、ハードウェアモジュールまたは装置は、ハードウェアモジュールまたは装置の内部に含まれる方法およびプロセスを実行する。
【図１Ａ】
2017092958.tif 000003
【図１Ｂ】
2017092958.tif 000004
【図２Ａ】
2017092958.tif 000005
【図２Ｂ】
2017092958.tif 000006
【図２Ｃ】
2017092958.tif 000007
【図２Ｄ】
2017092958.tif 000008
【図３Ａ】
2017092958.tif 000009
【図３Ｂ】
2017092958.tif 000010
【図３Ｃ】
2017092958.tif 000011
【図４Ａ】
2017092958.tif 000012
【図４Ｂ】
2017092958.tif 000013
【図４Ｃ】
2017092958.tif 000014
【図５Ａ】
2017092958.tif 000015
【図５Ｂ】
2017092958.tif 000016
【図６】
2017092958.tif 000017