(57)【要約】      （修正有）【課題】情報中心ネットワーク（ＩＣＮ）におけるルータのルーティングテーブルのサイズを削減する。【解決手段】ルータは、コンテンツの一部に関連付けられた名称を示すインタレストを受信するように構成された受信モジュールを含み、また、インタレストが転送されることができるかどうかを判定し、インタレストが第２のルータに転送されることができるという判定に応答して、第２のルータによってルータに割り当てられた識別子のセットから識別子を選択し、インタレストに識別子を挿入することによってインタレストを処理するように構成されたインタレスト処理モジュールを含み、さらに、第２のルータに対して処理されたインタレストを転送するように構成された転送モジュールを含む。【選択図】図１０
2017069951.tif 000002
【特許請求の範囲】
【請求項１】
情報中心ネットワーク（ＩＣＮ）におけるルータにおいて、
コンテンツの一部についてのインタレストを受信するように構成され、前記インタレストが前記コンテンツの一部に関連付けられた名称を示す受信モジュールと、
前記インタレストが転送されることができるかどうかを判定し、
前記インタレストが第２のルータに転送されることができるという判定に応答して、前記第２のルータによって前記ルータに割り当てられた識別子のセットから識別子を選択し、
前記インタレストに前記識別子を挿入することによって前記インタレストを処理する
ように構成されたインタレスト処理モジュールと、
前記第２のルータに対して前記処理されたインタレストを転送するように構成された転送モジュールとを備える、ルータ。
【請求項２】
前記転送モジュールが、さらに、
前記インタレストが転送されることができないと前記インタレスト処理モジュールが判定したことに応答して、前記インタレストに対する応答を送信するように構成されている、請求項１に記載のルータ。
【請求項３】
前記インタレスト処理モジュールが、
前記コンテンツの一部をみつけることができないこと、
前記コンテンツの一部を公表する宛先ルータまでのルートをみつけることができないこと、
前記インタレストがループを移動していることのいずれかに基づいて、前記インタレストが転送されることができないことを判定するように構成されており、
前記転送モジュールによって送信された応答が否定応答を含む、請求項２に記載のルータ。
【請求項４】
前記インタレスト処理モジュールが、前記インタレストが前記ルータのローカルユーザから受信されたと判定したことに応答して、ローカルインタレストテーブルに基づいて同じコンテンツの一部についての以前のインタレストが存在するかどうかを判定し、
そうである場合、
前記ローカルインタレストテーブルに前記ローカルユーザを追加することによって前記受信したインタレストを集約し、
そうでない場合、
前記コンテンツの一部についての前記ローカルインタレストテーブルに新たなエントリを作成するように構成されている、請求項１に記載のルータ。
【請求項５】
前記受信したインタレストが以前の識別子を担持し、前記インタレスト処理モジュールが、さらに、
前記以前の識別子に基づいてローカルルーティングテーブルにおける検索を実行し、
一致するエントリがみつかったことに応答して、前記選択された識別子として前記一致するエントリを使用し、
一致するエントリがみつからなかったことに応答して、前記選択された識別子を取得してローカルルーティングテーブルにエントリを生成するために前記以前の識別子に全単射関数を適用し、前記生成されたエントリが、前記選択された識別子と、前記ルータが前記インタレストを受信した第３のルータとを指定し、
前記受信したインタレストに担持された前記以前の識別子を前記選択された識別子と置き換えることによって前記処理されたインタレストを生成するように構成されている、請求項１に記載のルータ。
【請求項６】
前記識別子のセットが連続的に増加又は減少する数値のセットを含む、請求項１に記載のルータ。
【請求項７】
さらに、
前記インタレストに対する応答を受信するように構成された応答受信モジュールと、
前記受信した応答を処理するように構成された応答処理モジュールと、
前記処理された応答を転送するように構成された応答転送モジュールとを備え、
前記受信した応答を処理するとき、前記応答処理モジュールが、前記応答によって担持された応答識別子に基づいて、前記ルータに対して前記インタレストを転送する第３のルータを指定する、ローカルルーティングテーブルにおける一致するエントリを識別し、
前記第３のルータに固有の関数を使用して応答転送識別子に前記応答識別子をマッピングし、
前記応答識別子を前記応答転送識別子と置き換えることによって前記処理された応答を生成するように構成されている、請求項１に記載のルータ。
【請求項８】
コンピューティングデバイスによって実行されたときに前記コンピューティングデバイスに情報中心ネットワーク（ＩＣＮ）におけるコンテンツ交換のための方法を実行させる命令を記憶する非一時的コンピュータ読み取り可能な記憶媒体において、前記方法が、
前記ＩＣＮにおける第１のノードにより、コンテンツの一部についてのインタレストを受信することであって、前記インタレストが前記コンテンツの一部に関連付けられた名称を示すことと、
前記インタレストが第２のノードに対して転送されることができるという判定に応答して、前記第２のノードによって前記第１のノードに割り当てられた識別子のセットから識別子を選択することと、
前記インタレストに前記識別子を挿入することによって前記インタレストを処理することと、
前記第２のノードに対して前記処理されたインタレストを転送することとを備える、コンピュータ読み取り可能な記憶媒体。
【請求項９】
前記方法が、さらに、
前記インタレストが転送されることができないという判定に応答して、前記インタレストに対する応答を送信することを備える、請求項８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１０】
コンピュータ実行可能な方法において、
情報中心ネットワーク（ＩＣＮ）における第１のノードにおいて、コンテンツの一部についてのインタレストを受信することであって、前記インタレストが前記コンテンツの一部に関連付けられた名称を示すことと、
前記インタレストが第２のノードに対して転送されることができるという判定に応答して、前記第２のノードによって前記第１のノードに割り当てられた識別子のセットから識別子を選択することと、
前記インタレストに前記識別子を挿入することによって前記インタレストを処理することと、
前記第２のノードに対して前記処理されたインタレストを転送することとを備える、コンピュータ実行可能な方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、情報中心ネットワーク（ＩＣＮ）に関する。より具体的には、本開示は、インタレスト毎に転送状態を維持しないＩＣＮアーキテクチャに関する。
【背景技術】
【０００２】
インターネット及び電子商取引の普及は、ネットワーク業界における革命的な変化を刺激し続けている。今日では、オンライン映画鑑賞から毎日のニュース配信、小売売上高及びインスタントメッセージまで、かなりの数の情報交換がオンラインで行われている。増加する数のインターネットアプリケーションはまたモバイルになってきている。しかしながら、現在のインターネットは、主にロケーションベースのアドレッシング方式で動作する。２つの最もユビキタスなプロトコルであるインターネットプロトコル（ＩＰ）及びイーサネット（登録商標）プロトコルは、双方とも、エンドホストアドレスに基づいている。すなわち、コンテンツの消費者は、典型的には物理オブジェクト又は位置に関連しているアドレス（例えば、ＩＰアドレス又はイーサネット（登録商標）メディアアクセス制御（ＭＡＣ）アドレス）からコンテンツを明示的に要求することによってコンテンツを受信することができるにすぎない。この制限のあるアドレッシング方式は、刻々と変化するネットワークの要求を満たすために次第に不十分になってきている。
【０００３】
近年、コンテンツが直接名称付けられてアドレッシングされる情報中心ネットワーク（ＩＣＮ）アーキテクチャが業界において提案されている。典型的なＩＣＮアーキテクチャであるコンテンツ中心ネットワーク（ＣＣＮ）は、コンテンツ伝送に対する新たなアプローチをもたらす。コンテンツが移動するエンドツーエンド会話としてのアプリケーションレベルでみられるネットワークトラフィックを有する代わりに、コンテンツは、固有名称に基づいて要求又は返送され、ネットワークは、提供者から消費者へとコンテンツをルーティングする責を担う。コンテンツは、テキスト、画像、映像及び／又は音声などの任意の形態のデータを含む通信システムにおいて伝送されることができるデータを含むことに留意されたい。消費者及び提供者は、ＣＣＮの内部又は外部のコンピュータ又は自動プロセスにおける人とすることができる。コンテンツの一部は、コンテンツ全体又はコンテンツの各部を指すことができる。例えば、新聞記事は、データパケットとして具現化されたコンテンツの複数部分によって表されることができる。コンテンツの一部はまた、認証データ、作成日付、コンテンツ所有者などの情報を有するコンテンツの一部を記述又は増補するメタデータに関連付けることができる。
【０００４】
ＣＣＮ又は名称付きデータネットワーキング（ＮＤＮ）などの既存のインタレストベースのＩＣＮアプローチにおいて、ルータ（又はネットワークにおけるノード）は、特定の名称付きデータオブジェクト（ＮＤＯ）についてのインタレストが受信されるインターフェース及びそのようなインタレストが転送されるインターフェースを含むインタレスト状態を記憶するために、保留インタレストテーブル（ＰＩＴ）を維持する必要がある。ＰＩＴは、元の要求者の身元を隠しながらインタレストを満たすＮＤＯが元の要求者まで戻る逆経路をたどるのを可能とする。しかしながら、ルータによって処理されるインタレスト数が増えるのにともない、ルータがネットワーク内のルータの数よりもはるかに多くのインタレストを処理することから、伝統的なルーティングテーブルのサイズよりも大きい大きさの多くのオーダとすることができるＰＩＴのサイズがとても大きくなる。
【０００５】
本開示において使用される用語は、一般に、以下のように定義される（それらの解釈はそのように限定されるものではない）。
【０００６】
「ＨＳＶＬＩ」：名称とも称される階層的構造化可変長識別子である。それは、可変長オクテット文字列とすることができる名称要素の順序付きリストである。人間が読める形式において、ｃｃｎｘ：／ｐａｔｈ／ｐａｒｔなどの形式で表現することができる。また、ＨＳＶＬＩは、人間が読めるものでなくてもよい。上述したように、ＨＳＶＬＩは、コンテンツを指し、それらは、コンテンツについての組織的構造を表現することができ且つ人間にとって少なくとも部分的に有意とすることができるのが望ましい。ＨＳＶＬＩの個別の要素は、任意長を有することができる。さらにまた、ＨＳＶＬＩは、明示的に区切られた要素を有することができ、バイトの任意のシーケンスを含むことができ、人間が読める文字に限定されるものではない。最長接頭辞一致検索は、ＨＳＶＬＩを有するパケットの転送に重要である。例えば、「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ」におけるインタレストを示すＨＳＶＬＩは、「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ／ｔｅｓｔ．ｔｘｔ」及び「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ／ｂａｒ．ｔｘｔ」の双方に一致する。名称要素の数の観点で最長の一致は、最も特異的であるために最良であると考えられる。ＨＳＶＬＩの詳細な説明は、２００９年９月２３日に出願された発明者Ｖａｎ  Ｌ．  Ｊａｃｏｂｓｏｎ及びＪａｍｅｓ  Ｄ．  Ｔｈｏｒｎｔｏｎによる「階層的構造化可変長識別子を有するパケットを転送するためのシステム」と題された米国特許第８，１６０，０６９号明細書においてみることができる。
【０００７】
「インタレスト」：コンテンツオブジェクトについての要求である。インタレストは、同じ名称接頭辞を有する複数のオブジェクトを選択するために使用することができるＨＳＶＬＩ名称接頭辞及び他の任意のセレクタを指定する。名称がインタレスト名称接頭辞と一致する（及び、必要に応じて発行者鍵ＩＤなど他の要求されたパラメータが一致する）任意のコンテンツオブジェクトは、インタレストを満たす。
【０００８】
「コンテンツオブジェクト」：インタレストに応答して送信されたデータオブジェクトである。それは、暗号化署名を介して互いに結合しているＨＳＶＬＩ名称及びコンテンツペイロードを有する。必要に応じて、全てのコンテンツオブジェクトは、コンテンツオブジェクトのＳＨＡ−２５６ダイジェストから構成された暗黙的な端末名称要素を有する。１つの実施形態において、暗黙的なダイジェストは、有線で転写されないが、必要に応じて、各ホップにおいて計算される。この開示において、用語「コンテンツオブジェクト（ＣＯ）」及び用語「名称付きデータオブジェクト（ＮＤＯ）」は互換性がある。
【０００９】
「フェース」：ＣＣＮにおいて、用語フェースは、インターフェースの概念の一般化である。フェースは、ネットワーク又は直接アプリケーションパーティに接続されることができる。フェースは、特定のネットワークインターフェース上でブロードキャスト又はマルチキャストパケットを送受信するか又は下層伝送においてポイントツーポイントアドレッシングを使用して若しくはトンネル（例えば、ＴＣＰトンネル）を使用してパケットを送受信するように構成されることができる。フェースはまた、ＵＤＰ又はＯＳ固有のプロセス間通信経路のようなカプセル化を介して、同じマシン上で実行されている単一のアプリケーションプロセスへの接続とすることができる。全てのメッセージは、フェースを介して到達し、フェースを介して送信される。この開示において、用語「隣接者」は、用語「フェース」と互換可能であり、インタレストの到来又は発信インターフェースを指す。
【００１０】
「接頭辞」：この開示において、用語「接頭辞」は、特定のコンテンツオブジェクトの名称又はコンテンツオブジェクトについての名称接頭辞のいずれかを指すために使用することができる。
【発明の概要】
【課題を解決するための手段】
【００１１】
本発明の１つの実施形態は、情報中心ネットワーク（ＩＣＮ）におけるルータを提供する。ルータは、コンテンツの一部についてのインタレストを受信するように構成された受信モジュールを含む。インタレストは、コンテンツの一部に関連付けられた名称を示す。ルータはまた、インタレストが転送されることができるかどうかを判定し、インタレストが第２のルータに転送されることができるという判定に応答して、第２のルータによってルータに割り当てられた識別子のセットから識別子を選択し、インタレストに識別子を挿入することによってインタレストを処理するように構成されたインタレスト処理モジュールを含む。ルータは、さらに、第２のルータに対して処理されたインタレストを転送するように構成された転送モジュールを含む。
【００１２】
この実施形態の変形例において、転送モジュールは、さらに、インタレストが転送されることができないとインタレスト処理モジュールが判定したのに応答してインタレストに対する応答を送信するように構成されている。
【００１３】
さらなる変形例において、インタレスト処理モジュールは、コンテンツの一部をみつけることができないこと、コンテンツの一部を公表する宛先ルータまでのルートをみつけることができないこと、及び、インタレストがループを移動していることのいずれかに基づいて、インタレストが転送されることができないことを判定するように構成されている。転送モジュールによって送信された応答は否定応答を含む。
【００１４】
この実施形態における変形例において、インタレスト処理モジュールは、インタレストがルータのローカルユーザから受信されたという判定に応答して、ローカルインタレストテーブルに基づいて、同じコンテンツの一部についての以前のインタレストが存在するかどうかを判定するように構成されている。そうである場合、インタレスト処理モジュールは、ローカルインタレストテーブルにローカルユーザを追加することによって受信したインタレストを集約する。そうでない場合、インタレスト処理モジュールは、コンテンツの一部についてのローカルインタレストテーブルに新たなエントリを作成する。
【００１５】
この実施形態における変形例において、受信したインタレストは、以前の識別子を担持する。識別子を選択するとき、インタレスト処理モジュールは、以前の識別子に基づいてローカルルーティングテーブル内の検索を実行し、一致するエントリがみつかったことに応答して、選択された識別子として一致するエントリを使用し、一致するエントリがみつからなかったことに応答して、選択された識別子を取得してローカルルーティングテーブルにエントリを生成するために以前の識別子に全単射関数を適用するように構成されている。生成されたエントリは、選択された識別子と、ルータがインタレストを受信した第３のルータとを指定する。インタレスト処理モジュールは、さらに、受信したインタレストに担持された以前の識別子を選択された識別子と置き換えることによって処理されたインタレストを生成する。
【００１６】
この実施形態における変形例において、識別子のセットは、連続的に増加又は減少する数値のセットを含む。
【００１７】
この実施形態における変形例において、ルータは、さらに、インタレストに対する応答を受信するように構成された応答受信モジュールと、受信した応答を処理するように構成された応答処理モジュールと、処理された応答を転送するように構成された応答転送モジュールとを備える。受信した応答を処理するとき、応答処理モジュールは、応答によって担持された応答識別子に基づいて、ルータに対してインタレストを転送する第３のルータを指定する、ローカルルーティングテーブルにおける一致するエントリを識別し、第３のルータに固有の関数を使用して応答転送識別子に応答識別子をマッピングし、応答識別子を応答転送識別子と置き換えることによって処理された応答を生成するように構成されている。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の実施形態にかかる、ネットワークの例示的なアーキテクチャを図示している。
【図２】図２は、本発明の実施形態にかかる、例示的な転送情報ベース（ＦＩＢ）を図示する図である。
【図３】図３は、本発明の実施形態にかかる、例示的なローカルインタレスト収集テーブル（ＬＩＧＨＴ）を図示する図である。
【図４】図４は、本発明の実施形態にかかる、例示的な匿名ルーティングテーブル（ＡＲＴ）を図示する図である。
【図５】図５は、本発明の実施形態にかかる、例示的なローカル間隔設定テーブル（ＬＩＳＴ）を図示する図である。
【図６Ａ】図６Ａは、本発明の実施形態にかかる、ＣＣＮ−ＧＲＡＭがインタレストループを検出する方法を図示している。
【図６Ｂ】図６Ｂは、本発明の実施形態にかかる、ＣＣＮ−ＧＲＡＭがインタレストループを検出する方法を図示している。
【図７Ａ】図７Ａは、本発明の実施形態にかかる、ＣＣＮ−ＧＲＡＭがシングルパスルーティング及び一時ルーティングテーブルループによって動作する方法を図示している。
【図７Ｂ】図７Ｂは、本発明の実施形態にかかる、ＣＣＮ−ＧＲＡＭがシングルパスルーティング及び一時ルーティングテーブルループによって動作する方法を図示している。
【図７Ｃ】図７Ｃは、本発明の実施形態にかかる、ＣＣＮ−ＧＲＡＭがシングルパスルーティング及び一時ルーティングテーブルループによって動作する方法を図示している。
【図８】図８は、本発明の実施形態にかかる、インタレストにおける割り当てられた識別子（ＡＩＤ）のマッピングを図示する図である。
【図９】図９は、本発明の実施形態にかかる、インタレストに対する応答におけるＡＩＤのマッピングを図示する図である。
【図１０】図１０は、本発明の実施形態にかかる、例示的なＣＣＮ−ＧＲＡＭルータのアーキテクチャを表す図である。
【図１１】図１１は、本発明の実施形態にかかる、例示的なインタレスト処理アルゴリズムを図示する図である。
【図１２】図１２は、本発明の実施形態にかかる、例示的なインタレスト処理アルゴリズムを図示する図である。
【図１３】図１３は、本発明の実施形態にかかる、データパケットを処理するための例示的なアルゴリズムを図示する図である。
【図１４】図１４は、本発明の実施形態にかかる、ＮＡＣＫを処理するための例示的なアルゴリズムを図示する図である。
【図１５】図１５は、本発明の実施形態にかかる、ＣＣＮ−ＧＲＡＭについての例示的なシステムを図示している。
【発明を実施するための形態】
【００１９】
図面において、同様の参照符号は、同じ図要素を指している。
【００２０】
概説
本発明の実施形態は、新規なＣＣＮシステムである匿名メッセンジャ用ルートのＣＣＮ収集（ＣＣＮ−ＧＲＡＭ）を提供する。ＣＣＮ−ＧＲＡＭを実装するルータは、もはや保留インタレストテーブル（ＰＩＴ）を維持する必要はない。具体的には、ＣＣＮ−ＧＲＡＭは、宛先ベースの転送テーブルを使用した匿名データグラムとしてそれらに対してインタレスト及び応答を転送することによってステートレス転送プレーンによって動作する。各ルータは、その隣接者に間隔を割り当て、その隣接者から間隔の割り当てを受け、各間隔は連続識別子のセットである。ルータがインタレストを転送するとき、それは、インタレストをラベル付けするためにインタレストの受信機によって割り当てられた間隔から識別子を選択する。このラベルは、ホップ・バイ・ホップベースで変更される。インタレストの前ホップとインタレストを転送するために使用される識別子との間のマッピングは、インタレストに対する応答がインタレストの逆経路に沿って正確に転送し返されることができることを保証するためにローカルルーティングテーブルにおいて維持される。さらに、ＣＣＮ−ＧＲＡＭはまた、インタレストループを防止するために距離ベースの転送戦略を使用する。
【００２１】
ＣＣＮアーキテクチャ
一般に、ＣＣＮは、インタレスト及びコンテンツオブジェクトという２つの種類のメッセージを使用する。インタレストは、コンテンツオブジェクトの「名称」とも称される階層的構造化可変長識別子（ＨＳＶＬＩ）を担持し、そのオブジェクトについての要求として機能する。ネットワーク要素（例えば、ルータ）が同じ名称についての複数のインタレストを受信した場合、それはそれらのインタレストを集約することができる。一致するコンテンツオブジェクトとともにインタレストの経路に沿ったネットワーク要素は、インタレストを満たすそのオブジェクトをキャッシュして返送することができる。コンテンツオブジェクトは、インタレストの発信元へのインタレストの逆経路をたどる。
【００２２】
本開示において使用される用語は、一般に、以下のように定義される（それらの解釈はそのように限定されるものではない）。
【００２３】
「ＨＳＶＬＩ」：名称とも称される階層的構造化可変長識別子である。それは、可変長オクテット文字列とすることができる名称要素の順序付きリストである。人間が読める形式において、ｃｃｎｘ：／ｐａｔｈ／ｐａｒｔなどの形式で表現することができる。また、ＨＳＶＬＩは、人間が読めるものでなくてもよい。上述したように、ＨＳＶＬＩは、コンテンツを指し、それらは、コンテンツについての組織的構造を表現することができ且つ人間にとって少なくとも部分的に有意とすることができるのが望ましい。ＨＳＶＬＩの個別の要素は、任意長を有することができる。さらにまた、ＨＳＶＬＩは、明示的に区切られた要素を有することができ、バイトの任意のシーケンスを含むことができ、人間が読める文字に限定されるものではない。最長接頭辞一致検索は、ＨＳＶＬＩを有するパケットの転送に重要である。例えば、「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ」におけるインタレストを示すＨＳＶＬＩは、「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ／ｔｅｓｔ．ｔｘｔ」及び「／ｐａｒｃ／ｈｏｍｅ／ｂｏｂ／ｂａｒ．ｔｘｔ」の双方に一致する。名称要素の数の観点で最長の一致は、最も特異的であるために最良であると考えられる。ＨＳＶＬＩの詳細な説明は、２００９年９月２３日に出願された発明者Ｖａｎ  Ｌ．  Ｊａｃｏｂｓｏｎ及びＪａｍｅｓ  Ｄ．  Ｔｈｏｒｎｔｏｎによる「階層的構造化可変長識別子を有するパケットを転送するためのシステム」と題された米国特許第８，１６０，０６９号明細書においてみることができる。
【００２４】
「インタレスト」：コンテンツオブジェクトについての要求である。インタレストは、同じ名称接頭辞を有する複数のオブジェクトを選択するために使用することができるＨＳＶＬＩ名称接頭辞及び他の任意のセレクタを指定する。名称がインタレスト名称接頭辞と一致する（及び、必要に応じて発行者鍵ＩＤなど他の要求されたパラメータが一致する）任意のコンテンツオブジェクトは、インタレストを満たす。
【００２５】
「コンテンツオブジェクト」：インタレストに応答して送信されたデータオブジェクトである。それは、暗号化署名を介して互いに結合しているＨＳＶＬＩ名称及びコンテンツペイロードを有する。必要に応じて、全てのコンテンツオブジェクトは、コンテンツオブジェクトのＳＨＡ−２５６ダイジェストから構成された暗黙的な端末名称要素を有する。１つの実施形態において、暗黙的なダイジェストは、有線で転写されないが、必要に応じて、各ホップにおいて計算される。この開示において、用語「コンテンツオブジェクト」及び用語「名称付きデータオブジェクト（ＮＤＯ）」は互換性がある。
【００２６】
「フェース」：ＣＣＮにおいて、用語フェースは、インターフェースの概念の一般化である。フェースは、ネットワーク又は直接アプリケーションパーティに接続されることができる。フェースは、特定のネットワークインターフェース上でブロードキャスト又はマルチキャストパケットを送受信するか又は下層伝送においてポイントツーポイントアドレッシングを使用して若しくはトンネル（例えば、ＴＣＰトンネル）を使用してパケットを送受信するように構成されることができる。フェースはまた、ＵＤＰ又はＯＳ固有のプロセス間通信経路のようなカプセル化を介して、同じマシン上で実行されている単一のアプリケーションプロセスへの接続とすることができる。全てのメッセージは、フェースを介して到達し、フェースを介して送信される。この開示において、用語「隣接者」は、用語「フェース」と互換可能であり、インタレストの到来又は発信インターフェースを指す。
【００２７】
「接頭辞」：この開示において、用語「接頭辞」は、特定のコンテンツオブジェクトの名称又はコンテンツオブジェクトについての名称接頭辞のいずれかを指すために使用することができる。
【００２８】
前述したように、ＨＳＶＬＩは、コンテンツの一部を示し、階層的に構造化されており、最も一般的なレベルから最も特定のレベルまで順序付けられた連続要素を含む。各ＨＳＶＬＩの長さは固定されていない。コンテンツ中心ネットワークにおいて、従来のＩＰネットワークとは異なり、パケットは、ＨＳＶＬＩによって識別されることができる。例えば、「ａｂｃｄ／ｂｏｂ／ｐａｐｅｒｓ／ｃｃｎ／ｎｅｗｓ」は、コンテンツの名称とすることができ、対応するパケット、すなわち、「ＡＢＣＤ」と名付けられた組織における「Ｂｏｂ」と名付けられたユーザについての新聞の「ｃｃｎ」コレクションからの「ｎｅｗｓ」記事を識別する。コンテンツの一部を要求するために、ノードは、コンテンツの名称によってそのコンテンツにおけるインタレストを表現する（例えば、ブロードキャストする）。コンテンツの一部におけるインタレストは、コンテンツの名称又は識別子に応じたコンテンツについてのクエリとすることができる。コンテンツは、ネットワークにおいて利用可能な場合、コンテンツを記憶する任意のノードから要求ノードに対して返送される。ルーティングインフラストラクチャは、情報を有する可能性が高い有望なノードに対してインタレストをインテリジェントに伝播した後、インタレストメッセージが移動する逆経路に沿って利用可能なコンテンツを運ぶ。基本的に、コンテンツオブジェクトは、インタレストメッセージによって残されたブレッドクラムにしたがい、それゆえに要求ノードに到達する。
【００２９】
図１は、本発明の実施形態にかかる、ネットワークの例示的なアーキテクチャを図示している。この例において、ネットワーク１８０は、ノード１００〜１４５を備える。ネットワーク内の各ノードは、１つ以上の他のノードに接続されている。ネットワーク接続１８５は、そのような接続の例である。ネットワーク接続は実線で示されているが、各線はまた、１つのノードが他のノードに結合することができるサブネットワーク又はスーパーネットワークを表現することができる。ネットワーク１８０は、コンテンツ中心のローカルネットワーク、スーパーネットワーク又はサブネットワークとすることができる。１つのネットワーク内のノードが他のネットワーク内のノードに到達することができるように、これらのネットワークのそれぞれは、相互接続することができる。ネットワーク接続は、ブロードバンド、無線、電話、衛星又は任意の種類のネットワーク接続とすることができる。ノードは、コンピュータシステム、ユーザを表すエンドポイント及び／又はインタレストを生成したり若しくはコンテンツを発信したりすることができる装置とすることができる。
【００３０】
本発明の実施形態によれば、消費者は、コンテンツの一部についてのインタレストを生成し、ネットワーク１８０内のノードに対してそのインタレストを転送することができる。コンテンツの一部は、ネットワークの内部又は外部に配置することができる発行者又はコンテンツ提供者によってネットワーク１８０内のノードに記憶されることができる。例えば、図１において、コンテンツの一部におけるインタレストは、ノード１０５において発生する。コンテンツがノードにおいて利用可能でない場合、インタレストは、第１のノードに結合された１つ以上のノードへと流れる。例えば、図１において、インタレストは、利用可能なコンテンツを有していないノード１１５に流れる（インタレストフロー１５０）。次に、インタレストは、ノード１１５から同様にコンテンツを有しないノード１２５に流れる（インタレストフロー１５５）。そして、インタレストは、利用可能なコンテンツを有するノード１３０に流れる（インタレストフロー１６０）。そして、コンテンツオブジェクトのフローは、コンテンツが配信されるノード１０５に到達するまでその経路を引き返す（コンテンツフロー１６５、１７０及び１７５）。認証などの他のプロセスは、コンテンツのフローに含まれることができる。
【００３１】
ネットワーク１８０において、コンテンツホルダ（ノード１３０）とインタレスト生成ノード（ノード１０５）との間の経路における任意数の中間ノード（ノード１００〜１４５）は、それがネットワークを介して移動するのにともないコンテンツのローカルコピーをキャッシュする際に加入することができる。キャッシングは、ローカルにキャッシュされたコンテンツに対するアクセスを暗黙的に共有することによって他の加入者の近傍に位置する第２の加入者についてのネットワーク負荷を低減する。
【００３２】
従来のＣＣＮにおいて、各ノードは（ルータとも称される）は、転送情報ベース（ＦＩＢ）、コンテンツストア（ＣＳ）及び保留インタレストテーブル（ＰＩＴ）を含む３つの主要なデータ構造を維持する。
【００３３】
ＦＩＢは、一致コンテンツオブジェクトのポテンシャルソースに向けてインタレストパケットを転送するために使用される。典型的に、ルーティングプロトコルは、ネットワーク内の全てのノード間でＦＩＢを投入するために使用される。従来のＣＣＮにおいて、ＦＩＢエントリは、大抵の場合、一致するインタレストが転送されるべき少なくとも１つのフェースの物理アドレスを含む各エントリとともに名称接頭辞によってインデックス付けされる。インタレストメッセージを転送するとき、一致するエントリをみつけるためにＦＩＢにおいて名称最長接頭辞一致検索が実行される。
【００３４】
コンテンツストア（ＣＳ）は、ＩＰルータにおいて使用されるバッファメモリと同様である。より具体的には、ＣＳは、このノードを通過するコンテンツオブジェクトを一時的にバッファリングし、異なる消費者による効率的なデータ検索を可能とする。ルータがインタレストパケットを受信したとき、それは、上流のインタレストを発行する前にそのコンテンツストアに一致するコンテンツオブジェクトがあるかどうかを最初にチェックする。
【００３５】
保留インタレストテーブル（ＰＩＴ）は、インタレスト状態のキャッシュとして機能する。ＰＩＴは、返送されるコンテンツオブジェクトがその要求者に対して逆インタレスト経路をたどって下流に送信されることができるようにコンテンツ発信元に向かって上流に転送されるインタレストを追跡する。これは、上流及び下流のネットワークフローを維持する。ＣＣＮにおいては、インタレストパケットのみがルーティングされる。返送コンテンツオブジェクトは、コンテンツ要求者に戻るインタレストパケットの軌跡をたどる。インタレストについてのＰＩＴエントリは、インタレストの名称又は名称接頭辞と、そのインタレストが要求された１つ又は複数の到来フェースとを指定する。
【００３６】
インタレストパケットが特定のフェースに到達すると、コンテンツ名又はＨＳＶＬＩに基づいて最長一致検索が行われる。名称検索に使用されるインデックス構造は、ＣＳ一致がＦＩＢ一致よりも好ましいＰＩＴ一致よりも好まれるように順序付けられる。したがって、インタレストに一致するＣＳにおけるコンテンツオブジェクトが既に存在する場合、コンテンツオブジェクトは、インタレストが到達したフェースを介して送出され、インタレストは破棄される。そうでない場合、ＰＩＴは、一致をみつけることができるかどうかを確認するためにチェックされる。そうである場合、インタレストの到達フェースは、ＰＩＴエントリの要求フェースリストに追加され、インタレストは破棄される。そうでない場合、ＦＩＢはチェックされ、インタレストは、一致するＦＩＢエントリに記載された１つ以上のフェースに沿って転送される。
【００３７】
ＣＣＮ−ＧＲＡＭ：交換及び記憶される情報
前述したように、現在のＩＣＮ（例えば、ＣＣＮ又はＮＤＮ）は、ルータが各インタレストについての転送状態を維持することを意味するステートフル転送プレーンを使用する。しかしながら、これは、ルータを通過する各インタレストについての転送状態を維持しないステートレス転送プレーンの全ての問題を解決しない。インタレストの集約は、インタレストに転送ループを移動させることがあることが示されている。それらはローカルコンテンツ制作者又はキャッシュされたコンテンツを有するルータに到達することができないことから、ルーピングインタレストは、決して応答を受信しないことがある。その結果、これらのインタレストは、それらがタイムアウトするまでＰＩＴに滞在する必要がある。インタレストルーピングに加えて、様々なルータのＦＩＢ間の一時的な不一致はまた、ちょうど制御プレーンにおいて「無限にカウントする」古いルーティングプロトコルのようにＰＩＴにおいて「無限に待機している」インタレストをもたらすことがある。これは、はるかに長い待ち時間及び輻輳につながることがある。
【００３８】
さらに重要なことに、各未承諾インタレストに対する応答を転送する方法を覚えるためにＰＩＴを使用すると、敵がＰＩＴのサイズを急増させることを目的とした悪質なインタレストを送信するインタレストフラッディング攻撃を含むステートレス転送プレーンに存在しない新たな種類の攻撃に対してルータを脆弱にする。これらの攻撃に対する完全な解決策は、今日存在していない。
【００３９】
例えばインターネットプロトコル（ＩＰ）及びイーサネット（登録商標）プロトコルなどの従来のネットワークプロトコルは、「ステートレス」転送プレーンアプローチを構成するデータグラム転送を使用する。例えば、ＩＰネットワークにおいて、コンテンツの普及は、ＩＰデータグラムにカプセル化された（アプリケーション及びトランスポートプロトコルによって定義されるように）ヘッダに基づいている。ＮＤＮ及びＣＣＮと比較すると、ＩＰデータグラム転送は、転送プレーンにおいてはるかに少ない記憶装置オーバーヘッドを招き、転送テーブルのオーバーフローを目的とした攻撃の対象ではない。しかしながら、ＩＰデータグラムにより、発信元は、データグラムによって担持されるグローバルに固有な識別子によって表される。ＮＤＮ又はＣＣＮにおけるＩＰデータグラムの単純な採用は、架空の発信元を作成することによってマウントされる攻撃に対して脆弱とすることがある。それらに対して要求及び応答するコンテンツは、多様な経路を移動することができ、転送を必要以上に複雑とする。これらの経路間の調整はない。
【００４０】
インタレストベースのＩＣＮ及びデータグラム転送の双方の利益を得るために、本発明のいくつかの実施形態において、新たなアプローチ、すなわち匿名メッセンジャ用のＣＣＮ収集（ＣＣＮ−ＧＲＡＭ）が使用される。ＣＣＮ−ＧＲＡＭは、宛先ベースの転送テーブルを使用した匿名データグラムとして、それらに対してインタレスト及び応答を転送することによってステートレス転送プレーンによって動作する。ステートレス転送を容易とするために、既知の名称接頭辞までのルートを確立して維持するためにルータによって積極的なルーティングアプローチが使用される。コンテンツ消費者に代わって特定のコンテンツについてのインタレストを発信するルータに対する匿名ルートを維持するために新規なオンデマンドルーティングアプローチもまた使用される。コンテンツ消費者の身元を隠すために、ユーザにサービスを提供するローカルルータのみがユーザの身元を把握し、他のルータ、コンテンツ提供者又はキャッシングサイトは、ユーザの代わりにインタレストを発信するルータを識別することができない。
【００４１】
動作中において、ＣＣＮ−ＧＲＡＭは、ノード間のコンテンツの交換を実現するために、インタレスト、データパケット及び（否定応答（ＮＡＣＫ）などの）特定の制御メッセージを使用する。ＩＰデータグラムと同様に、ＣＣＮ−ＧＲＡＭにおいて送信されたメッセージは、発信元及び宛先を指定する。インタレストについて、宛先は、コンテンツオブジェクトの名称（例えば、ＮＤＯ）とすることができ、発信元は、匿名識別子とすることができる。データパケット及びＮＡＣＫについて、発信元は、ＮＤＯの名称とすることができ、宛先は、匿名識別子とすることができる。
【００４２】
コンテンツオブジェクト（ＣＯ）ｎ（ｊ）を要求するノードｋによって送信されたインタレストは、Ｉ［ｎ（ｊ），ＡＩＤＩ（ｋ）］で表され、要求されたＣＯ（ｎ（ｊ））の名称及びインタレストの発信元の身元を隠すためにホップ・バイ・ホップベースで変更される割り当てられた識別子（ＡＩＤＩ（ｋ））を記載している。いくつかの実施形態において、割り当てられた識別子は、ＩＰデータグラムのヘッダの一部であるＩＰアドレスと同様の方法でインタレストパケットのヘッダフィールドに含めることができる。しかし、ＩＰデータグラムとは異なり、この割り当てられた識別子（ＡＩＤ）は、インタレストを発信するルータの身元（又はアドレス）を明らかにしない。
【００４３】
インタレストに対する応答においてルータｉによって送信されたデータパケットは、ＤＰ［ｎ（ｊ），ｓｐ（ｊ），ＡＩＤＲ（ｉ）］として表され、送信されるＣＯの名称（ｎ（ｊ））、必要に応じてＣＯを検証するために使用される署名ペイロード（ｓｐ（ｊ））、及び、その真の身元を明らかにすることなくデータパケットの意図された受信者を表す割り当てられた識別子（ＡＩＤＲ（ｉ））を記載している。一方、インタレストに対する応答においてルータｉによって送信された制御メッセージ（ＮＡＣＫ）は、ＮＡ［ｎ（ｊ），ＣＯＤＥ，ＡＩＤＲ（ｉ）］として表される。ここで、ＣＯＤＥは、ＮＡＣＫを送信するための理由を記載している。ＮＡＣＫを送信するための考えられる理由は、（ａ）インタレストループが検出されたこと、（ｂ）要求されたコンテンツに向かうルートがみつからないこと、及び、（ｃ）コンテンツがみつからないことである。
【００４４】
インタレスト、ＣＯ及びＮＡＣＫの転送を実現するために、ＧＲＡＭルータは、転送情報ベース、任意のローカルインタレスト収集テーブル（ＬＩＧＨＴ）、匿名ルーティングテーブル（ＡＲＴ）及びローカル間隔設定テーブル（ＬＩＳＴ）を維持する。
【００４５】
図２は、本発明の実施形態にかかる、例示的な転送情報ベース（ＦＩＢ）を図示する図である。各ルータのＦＩＢは、各隣接ルータによって達成される既知の各名称接頭辞までの距離を記載している。図２において、ＦＩＢ２００は、コンテンツ名称接頭辞を使用してインデックス付けされた多数のエントリを含む。各エントリは、名称接頭辞及び名称接頭辞を公表するノードまでのホップ数によって識別されるコンテンツへの次ホップを記載している。表記のために、ルータｉにおいて、ＦＩＢは、ＦＩＢｉとして表され、ＦＩＢエントリ２０２などの名称接頭辞ｎ（ｊ）＊についての各ＦＩＢエントリは、
【００４６】
【数１】
2017069951.tif 000003
【００４７】
として表される。各ＦＩＢエントリは、各次ホップ隣接者についての距離のリストを含むことができることに留意されたい。
【００４８】
【数２】
2017069951.tif 000004
【００４９】
に記載されたｎ（ｊ）＊までの次ホップのセットは、
【００５０】
【数３】
2017069951.tif 000005
【００５１】
として表される。各次ホップ
【００５２】
【数４】
2017069951.tif 000006
【００５３】
について、隣接者ｑを通る名称接頭辞ｎ（ｊ）＊までの距離（例えば、ホップ数）は、Ｄ（ｉ，ｎ（ｊ）＊，ｑ）として表される。ＦＩＢｉにおける各エントリは、ルータのルーティングテーブル内の対応するエントリの寿命によって決定される最大時間だけ記憶される。いくつかの実施形態において、特定の次ホップについてのＦＩＢエントリはまた、全ての隣接者間の次のホップのランキングを含むことができる。
【００５４】
図３は、本発明の実施形態にかかる、例示的なローカルインタレスト収集テーブル（ＬＩＧＨＴ）を図示する図である。ルータのＬＩＧＨＴは、ローカルに利用可能なコンテンツのインデックスであるとともに、リモートであり且つローカルユーザによって要求されたコンテンツである。具体的には、ルータｉに記憶されたＬＩＧＨＴ（ＬＩＧＨＴｉ）は、ルータｉによって要求された又はルータｉに既に記憶されたＣＯの名称を一覧表示する。図３において、ＬＩＧＨＴ３００は、ＣＯ名称によってインデックス付けされた多数のエントリを含む。エントリ３０２などの各エントリは、ＣＯの名称、ＣＯへのポインタ及びコンテンツがリモートであるときにＣＯを要求したローカル消費者のリストを記載している。例えば、エントリ３０２は、ＣＯの名称（ｎ（ｊ））と、ｎ（ｊ）へのポインタ（ｐ［ｎ（ｊ）］）と、ローカル消費者を識別する識別子のリスト（ｌｃ［ｎ（ｊ）］）とを記載している。ＣＯについてのローカル消費者がない場合、識別子のリストは空である。ローカルキャッシュ及びローカルコンテンツの消費者を有するルータのみがＬＩＧＨＴを維持するために必要とされ、一方、中継ルータはＬＩＧＨＴを維持する必要はないことに留意されたい。
【００５５】
図４は、本発明の実施形態にかかる、例示的な匿名ルーティングテーブル（ＡＲＴ）を図示する図である。ＡＲＴは、インタレストを使用してオンデマンドで維持され、ローカル識別子によって表される宛先までの経路を記載している。それらの識別子はローカルであることから、ルータは、そのような識別子を使用してインタレストの発信元を識別することができない。図４において、ルータｉにおけるＡＲＴ４００（ＡＲＴｉ）は、割り当てられた識別子を使用してインデックス付けされたエントリ４０２及び４０４などの多数のエントリを含む。各エントリは、割り当てられた識別子、前ホップ及びおそらくは（ローカルに生成されたインタレストについての）名称接頭辞を記載している。表記のために、ＡＲＴｉ（ａ，ｐ，ｎ）は、割り当てられた識別子ａ、前ホップｐ及び名称接頭辞ｎについてのエントリを表すために使用される。図４において、エントリ４０２は、名称接頭辞ｎ（ｊ）＊によって最良に一致する名称を有するＣＯについてのインタレストの発信元であるルータｉの結果として割り当てられた識別子ａ１について作成されたエントリである。エントリ４０２は、割り当てられた識別子（ａ１）、前ホップ（ルータｉ）及び一致する接頭辞（ｎ（ｊ）＊）を記載することができる。一方、エントリ４０４は、他のルータから受信したインタレストを転送するルータｉの結果として割り当てられた識別子ａｋについて作成されたエントリである。エントリ４０４は、インタレストの割り当てられた識別子ａｋ及びルータｉが識別子ａｋを割り当てる前ホップ（ｐｉ（ａｋ））を記載することができる。エントリ４０４における名称接頭辞は空に設定される。ＡＲＴｉにおける各エントリは、数秒の最大寿命だけ記憶される。
【００５６】
図５は、本発明の実施形態にかかる、例示的なローカル間隔設定テーブル（ＬＩＳＴ）を図示する図である。ルータにおいて維持されるＬＩＳＴは、ルータがその隣接者に割り当て且つ各隣接者がルータに割り当てるローカル識別子の間隔を記載している。いくつかの実施形態において、各ローカル間隔は、連続的に増加又は減少する数値識別子のチャンクである。例えば、１つのルータによってその隣接者のいずれかに割り当てられたローカル間隔は、１から始まり且つ５０で終了する識別子のセットとすることができる。図５において、ＬＩＳＴ５００は、ルータのフェースを使用してインデックス付けされたエントリ５０２などの多数のエントリを含む。各エントリは、隣接者（フェース）によって現在のルータに割り当てられたローカル識別子の間隔（ローカル間隔）とともに、現在のルータによって隣接者に割り当てられたローカル間隔を記載している。表記のために、ＬＩＳＴｉは、ルータｉに維持されるＬＩＳＴを表し、ＬＩｉ（ｋ，ｉ）は、隣接者ｋによってルータｉに割り当てられたローカル間隔を表し、ＬＩｉ（ｉ，ｋ）は、隣接者ｉによってルータｋに割り当てられたローカル間隔を表す。
【００５７】
ＣＣＮ−ＧＲＡＭ：ループフリー転送
ＣＣＮ−ＧＲＡＭは、名称接頭辞に関するＦＩＢに記憶されているルーティングデータが不一致であり且つルーティングテーブルループを含む場合であっても、インタレストがルーティングループを移動することができないのを保証するために距離ベースのループフリー転送規則（ＬＦＲ）を実装する。具体的には、ルータは、隣接者がインタレストを転送したときの隣接者よりも少なくとも１つのインターフェースを通る接頭辞に近いことをルータが判定した場合にのみ隣接者からのインタレストを受け入れる。インタレストループを防止するために使用することができる距離ベースの転送戦略の詳細な説明は、２０１４年１２月１６日に出願された発明者Ｊｏｓｅ  Ｊ．  Ｇａｒｃｉａ−Ｌｕｎａ−Ａｃｅｖｅｓによる「距離ベースのインタレスト転送のためのシステム及び方法」と題された同時係属の米国特許出願第１４／５７２，６０８号（代理人整理番号ＰＡＲＣ−２０１４０１７８ＵＳ０１）においてみることができる。
【００５８】
ＣＣＮ−ＧＲＡＭを実装するルータがインタレストを受信したとき、それらは、以下の条件が満たされた場合にルータｉが隣接者ｋからのインタレストＩ［ｎ（ｊ），ＡＩＤＩ（ｋ）］を受け入れることができることを記載するループフリー転送規則（ＬＦＲ）に基づいてインタレストを受け入れるかどうかを最初に判定する。
∃ν∈Ｎｉ（Ｄ（ｉ，ｎ（ｊ）＊，ｋ＞Ｄ（ｉ，ｎ（ｊ）＊，ν）
【００５９】
図６Ａ〜図６Ｂは、本発明の実施形態にかかる、ＣＣＮ−ＧＲＡＭがインタレストループを検出する方法を図示している。図６Ａに示されるように、ネットワーク６００は、ノード６０２〜６１４などの多数のノードを含む。マルチパスは、ノード６０２とノード６１４との間に存在し、ルーティングテーブルは、ノード６０４−ノード６０６−ノード６０８−ノード６０４というループを含むことができる。図６Ａにおいて、ルータからその隣接者へと発信する各リンクにおいて、一対の数字が記載されており、これは、ｎ（ｊ）（ノード６１４）まで隣接者を通るホップ数（第１の番号）と、ＦＩＢに応じた隣接者のランキング（第２の番号）とを示す。同じリンクについて、２つの対が存在する可能性があり、各対が対に近いルータにおけるＦＩＢに記憶されることに留意されたい。例えば、ルータ６０４からルータ６０６までのリンクにおいて、２つの番号対、対（４，１）及び対（５，２）がリンクの隣に示されている。番号対（４，１）は、ルータ６０４に隣接し且つルータ６０４のＦＩＢに記憶されており、番号対（５，２）は、ルータ６０６に隣接し且つルータ６０６のＦＩＢに記憶される。具体的には、ルータ６０４に隣接する番号対（４，１）は、その隣接者６０６を介したｎ（ｊ）までのホップ数が４であり、隣接者６０６がルータ６０４のＦＩＢにおいて番号１にランク付けしていることを示す。一方、ルータ６０６に隣接する番号対（５，２）は、その隣接者６０４からｎ（ｊ）までのホップ数が５であり、隣接者６０４がルータ６０６のＦＩＢにおいて番号２にランク付けしていることを示す。
【００６０】
表記のために、隣接者、コンテンツまでのそのホップ数及びそのランキングを示すためにタプル（ν，ｈ，ｒ）を使用することができる。そのようなタプルは、名称接頭辞ｎ（ｊ）＊のもとにＦＩＢに記載されたエントリとすることができることに留意されたい。例えば、ＦＩＢｎｏｄｅ６０４は、タプル（ノード６０６，４，１）、（ノード６１０，４，２）及び（ノード６０８，６，３）を一覧表示することができる。同様に、ＦＩＢｎｏｄｅ６０２は、タプル（ノード６０４，５，１）を一覧表示することができ、ＦＩＢｎｏｄｅ６０６は、タプル（ノード６０８，６，１）、（ノード６０４，５，２）及び（ノード６１２，３，３）を一覧表示することができ、ＦＩＢｎｏｄｅ６０８は、タプル（ノード６０６，５，１）及び（ノード６０４，５，２）を一覧表示することができる。ノード６１０及び６１２についての部分的なＦＩＢエントリもまた、図６Ａに示されていることに留意されたい。
【００６１】
図６Ｂは、ＣＣＮ−ＧＲＡＭルータがインタレストを転送する方法を図示している。図６Ｂに示された例において、ルータ６０４は、時間ｔ１においてルータ６０２から名称ｎ（ｊ）についてのインタレストＩ［ｎ（ｊ），ＡＩＤＩ］を受信した。ノード６０４に記憶されたＦＩＢによれば、（ＬＦＲを満たす）５＝Ｄ（ノード６０４，ｎ（ｊ）＊，ノード６０２）＞Ｄ（ノード６０４，ｎ（ｊ）＊，ノード６０６）＝３であり、ルータ６０６は、ルータ６１０よりも高くランク付けされる。したがって、ルータ６０４は、インタレストを受け入れてルータ６０６に対してそれを転送する。ルータ６０６は、時間ｔ２においてインタレストを受信し、４＝Ｄ（ノード６０６，ｎ（ｊ）＊，ノード６０４）＞Ｄ（ノード６０６，ｎ（ｊ）＊，ノード６１２）＝２であることから、それを受け入れる。そして、ルータ６０６は、ルータ６１２がＬＦＲを満たす最も高くランク付けされた隣接者であることから、インタレストについての次ホップとしてルータ６１２を使用する。インタレストが移動するルートは、時系列ｔ１→ｔ２→ｔ３をたどる破線によって示されている。
【００６２】
同様に、ルータ６０８によって生成されたインタレストは、各中継ルータがＬＦＲを満たさなければならないことから、ループを移動することなく、ｎ（ｊ）に向けてルータ６１２に対して転送される（ルートは、時系列ｔ３→ｔ４→ｔ５をたどる異なる破線によって示されている）。
【００６３】
図７Ａ〜図７Ｃは、本発明の実施形態にかかる、ＣＣＮ−ＧＲＡＭがシングルパスルーティング及び一時ルーティングテーブルループによって動作する方法を図示している。図において、ネットワーク７００は、ノード７０２〜７１４などの多数のノードを含む。図７Ａにおいて、各ルータは、そのＦＩＢに記載された各接頭辞についての単一の次ホップ及び１つのホップ数を有する。例えば、ルータ７１４によって公表される名称接頭辞ｎ（ｊ）＊について、ルータ７０４は、（リンク（ノード７０４、ノード７１０）が失敗する前に）隣接ルータ７１０を介した４のホップ数を一覧表示し、ルータ７０６は、隣接ルータ７０８を介した６のホップ数を一覧表示する。ルータから名称接頭辞ｎ（ｊ）＊までの距離は、経路のホップ数に正比例しなくてもよいことに留意されたい。例えば、リンク（ノード７０６、ノード７１２）は、制限された帯域幅又は長い遅延を有してもよく、したがって、ノード７０６は、ノード７１４においてｎ（ｊ）＊に到達するためにノード７０８を通る経路を優先してもよい。
【００６４】
ルータ７０４とルータ７１０との間のリンクが失敗した場合、ルータ７０６は、図７Ａに示されるように、時間ｔ０においてリンク失敗を反映するようにそのＦＩＢを更新する。ここで、ルータ７０４は、隣接ルータ７０６を介した４のホップ数を一覧表示する。そのようなリンク失敗は、インタレストが転送されているときにネットワーク７００内のルータがｎ（ｊ）について一貫性のないＦＩＢ状態を有することをもたらすことに留意されたい。例えば、ルータ７０６は、そのＦＩＢをまだ更新しておらず、一時的なルーティングテーブルのループをもたらすことがある。時間ｔ１において、ルータ７０２は、ルータ７０４に対してインタレストＩ［ｎ（ｊ），ＡＩＤＩ］を送信する。図７Ｂは、ルータ７０４が時間ｔ２においてルータ７０６に対してインタレストを転送することを示している。図７Ｂはまた、ＬＦＲに違反している
【００６５】
【数５】
2017069951.tif 000007
【００６６】
であることから、ルータ７０６が時間ｔ３においてインタレストに対してＮＡＣＫで応答することを示している。ＮＡＣＫは、ループが検出されたときにＮＡＣＫについての理由を示す。ＮＡＣＫは、最終的に、図７Ｃに示されるように、時間ｔ４においてインタレストの発信元であるルータ７０２に対して転送される。
【００６７】
図７Ｂはまた、時間ｔ３において、ルータ７０８がルータ７０４に対して名称ｎ（ｊ）についてのインタレストを送信することを示している。そのようなインタレストはまた、図７Ｃに示されるように、ＬＦＲ違反に起因して時間ｔ５においてルータ７０６からのＮＡＣＫを促す。図７Ｃはまた、ルータ７０４が時間ｔ６においてルータ７０６からルータ７０８に対してＮＡＣＫを転送することを図示している。有限時間内において、ＦＩＢｎｏｄｅ７０４、ＦＩＢｎｏｄｅ７０６及びＦＩＢｎｏｄｅ７０８は、新たなトポロジ状態を反映するように更新される。具体的には、ノード７０６についてのＦＩＢは、もはやその次ホップとしてノード７０８を一覧表示することができず、ｎ（ｊ）＊に関するノード７０２からのインタレストは、ｎ（ｊ）＊、すなわちノード７１４に向かってノード７０４、７０６及び７１２のチェーンに沿って転送されることができる。同様に、有限時間内において、ｎ（ｊ）＊に関するノード７０８からのインタレストは、ｎ（ｊ）＊に向かってノード７０６及び７１２に対して転送されることができる。
【００６８】
ＣＣＮ−ＧＲＡＭ：匿名宛先に対する転送
宛先ベースの転送テーブルアプローチを使用してデータパケット及びＮＡＣＫを転送するために、ルータは、意図された宛先を一義的に表すことができる識別子を必要とする。しかしながら、ＩＰデータグラム転送とは対照的に、ＣＮＮにおいては、宛先は、転送ルータ、キャッシングサイト又はコンテンツ制作者がデータパケット又はＮＡＣＫを促すインタレストを発信したルータを識別することができるように匿名としなければならない。
【００６９】
インタレストにおいて使用される識別子は、インタレストの発信元ルータによってランダムに割り当てられるノンスとすることができ、そのようなノンスについての名称空間は、小さな確率の衝突を確保するのに十分な大きさとすることができる（すなわち、同じノンスを使用する複数のルータ）。しかしながら、そのような識別子を割り当てるための送信者開始アプローチは、いくつかの欠点を有する。第１に、それは、ルータのチームがインタレストのいくつかの発信元の身元をみつけるのを可能とすることがある。第２に、それは、偽の識別子の作成に基づく攻撃を受けることがある。第３に、識別子の長さは、衝突を低減させるのに十分な大きさを必要とする。
【００７０】
そのような欠点を回避するために、ＣＣＮ−ＧＲＡＭは、データパケット及びＮＡＣＫを転送するために使用することができるローカル識別子を割り当てることによって新規な受信機開始アプローチを採用する。このアプローチは、データパケット及びＮＡＣＫが促進インタレストによって移動する逆経路にわたって送信されるという事実を利用する。
【００７１】
ＣＣＮ−ＧＲＡＭにおいて、各ルータは、それらがルータに対して転送するインタレストに担持された割り当てられた識別子（ＡＩＤ）としてそのような識別子を隣接者が順次使用することができるように、その隣接者に割り当てることができるローカル識別子の大規模なセットを有する。いくつかの実施形態において、ルータは、ルータが複数の隣接者に対して同じローカル識別子を与えることができないように、その隣接者に対して等しい長さの識別子の非重複の連続ローカル間隔（ローカル間隔）を割り当てる。換言すれば、ルータは、その隣接者を一義的に識別するためにローカル間隔を使用することができる。全てのローカル間隔が同じ長さを有する（すなわち、同数の識別子が各間隔に含まれる）ことを考えると、ローカル間隔は、間隔の開始における識別子によって固有に定義される。その隣接者に割り当てられたローカル間隔及びその隣接者によってルータに割り当てられたローカル間隔は、ルータのＬＩＳＴに記憶される。
【００７２】
説明を簡略化するため、ルータは、それらの隣接者間隔を交換し且つそれに応じてそれらのＬＩＳＴを移入したものとすることができ、ローカル間隔は、それらが割り当てられた後に長期間にわたって変化しない。ルータは、多数の方法でそれらの隣接者によってローカル間隔を交換することができる。いくつかの実施形態において、この交換は、インタレスト及びデータパケットを使用してデータプレーンにおいて行うことができる。例えば、ルータは、隣接者間隔が要求されることを表す一般的な名称及び空のＡＩＤを記載するインタレストを送信する。一方、ローカル間隔が記載されることができる簡潔な方法（識別子がその間隔を表す）を考えると、交換はまた、制御プレーンにおいて実行するルーティングプロトコルの一部として容易に行うことができる。例えば、ルータは、ＨＥＬＬＯメッセージ、リンク状態公表又は距離更新において間隔識別子を交換することができる。
【００７３】
ルータｉがローカル消費者に代わってＣＯｎ（ｊ）に関するインタレストを発信するとき、それは、名称接頭辞ｎ（ｊ）＊に向かって隣接者ｋに対してインタレストＩ［ｎ（ｊ），ＡＩＤＩ（ｉ）］を送信することができる。このインタレストによって担持される識別子（ＡＩＤＩ（ｉ））は、ルータｋによって割り当てられ且つ異なる宛先用に現在使用されていないＬＩｉ（ｋ，ｉ）からの識別子を含むことができる。ＡＩＤＩ（ｉ）を選択した後、ルータｉは、ＡＲＴｉにエントリ［ＡＩＤＩ（ｉ），ｉ］を記憶し、そのようなエントリに接頭辞名ｎ（ｊ）＊を追加することができる。
【００７４】
一方、ルータｋがルータｉから受信したインタレストＩ［ｎ（ｊ），ＡＩＤＩ（ｉ）］を隣接者ｙに対して転送するとき、ルータｋは、インタレスト（ＡＩＤＩ（ｉ））に担持される識別子を独自の識別子（ＡＩＤＩ（ｋ））と置き換えることができる。いくつかの実施形態において、そのような識別子は、キーとしてＡＩＤＩ（ｉ）を使用して間隔ＬＩｋ（ｙ，ｋ）から選択されることができる。全てのローカル間隔が同じ長さであることを考えると、ルータｋは、ＡＩＤＩ（ｋ）の値を決定するためにＬＩｋ（ｋ，ｉ）からＬＩｋ（ｙ，ｋ）への任意の１対１のマッピングを使用することができる。このマッピングは、関数ｆｋ（ｉ，ｙ）：ＬＩｋ（ｋ，ｉ）→ＬＩｋ（ｙ，ｋ）として表すことができる。ＡＩＤＩ（ｋ）を選択した後、ルータｋは、ＡＲＴｋにエントリ［ＡＩＤＩ（ｋ），ｉ］を記憶することができる。
【００７５】
ルータｋが隣接者ｙから受信したデータパケットＤＰ［ｎ（ｊ），ｓｐ（ｊ），ＡＩＤＲ（ｙ）］を転送すると、それは、データパケットが送信されなければならない（インタレストについての前ホップとしてＡＴＲに一覧表示された）次ホップｘを判定するために独自のＡＲＴ（ＡＲＴｋ）においてキーとしてＡＩＤＲ（ｙ）を使用することができる。次ホップｘを考えると、ルータｉは、ＡＩＤＲ（ｙ）∈ＬＩｋ（ｙ，ｋ）をＡＩＤＲ（ｋ）∈ＬＩｋ（ｋ，ｘ）にマッピングするために逆関数
【００７６】
【数６】
2017069951.tif 000008
【００７７】
を使用し、ルータｘに対してＤＰ［ｎ（ｊ），ｓｐ（ｊ），ＡＩＤＲ（ｋ）］を転送する。同じアプローチは、ＮＡＣＫを転送するために使用することができる。
【００７８】
多くの全単射は、１つのローカル間隔から他へと識別子をマッピングするためにルータによって使用することができる。例えば、ローカル間隔ＬＩにおける識別子ｉは、ＬＩ（ｉ）によって表される。２つのローカル間隔をＬＩＡ＝［ＬＩＡ（ｓｔａｒｔ），ＬＩＡ（ｅｎｄ）］及びＬＩＢ＝［ＬＩＢ（ｓｔａｒｔ），ＬＩＢ（ｅｎｄ）］とする。ここで、ＬＩ（ｓｔａｒｔ）及びＬＩ（ｅｎｄ）は、各ローカル間隔の開始及び終了点である。識別子ＡＩＤＡ∈ＬＩＡから識別子ＡＩＤＢ∈ＬＩＢを取得するための単純な方法は、間隔の長さのＡＩＤＢ＝ＡＩＤＡ−ＬＩＡ（ｓ）＋ＬＩＢ（ｓ）モジュロを計算することである。逆関数は同じとすることができる。
【００７９】
いったんルータが指定されたローカル識別子を使用してインタレストを発信すると、他の発信元ルータによって作成された識別子との衝突は存在するべきではないことに留意されたい。これは、新たな宛先にインタレストを発信し且つ受信したインタレストにおけるＡＩＤを転送されたインタレストにおけるＡＩＤにマッピングするために全単射（すなわち、１対１の対応）を使用するとき、各ルータが新たなＡＩＤを使用するためである。転送されたインタレストにおけるＡＩＤは、その次ホップによってルータに与えられるローカル間隔内の識別子のいずれかにならなければならない。
【００８０】
図８は、本発明の実施形態にかかる、インタレストにおけるＡＩＤのマッピングを図示する図である。図８において、ルータ８０２は、ルータ８０４、８０６及び８０８などの多数の隣接ルータを含む。ルータ８０２におけるＬＩＳＴは、ルータ８０２によって隣接ルータ８０４、８０６及び８０８に割り当てられた間隔とともに、その隣接者によってルータ８０２に割り当てられた間隔を含む。各間隔は、ハッチングを付した矩形によって示されるように連続識別子のチャンクを含む。実線矢印は、間隔の割り当て方向を示している。例えば、ルータ８０２からルータ８０４まで指す矢印は、矢印の経路における間隔８１４がルータ８０２によってルータ８０４に割り当てられた連続識別子のセットを表すことを示しており、ＬＩｎｏｄｅ８０２（ノード８０２，ノード８０４）として表すことができる。同様に、間隔８１６及び８１８は、それぞれ、ルータ８０２によってルータ８０６及び８０８に割り当てられた連続識別子のセットを表しており、それぞれ、ＬＩｎｏｄｅ８０２（ノード８０２，ノード８０６）及びＬＩｎｏｄｅ８０２（ノード８０２，ノード８０８）として表すことができる。図８はまた、それぞれ、その隣接者８０４、８０６及び８０８によってルータ８０２に割り当てられた間隔である間隔８２４、８２６及び８２８を図示している。それらは、ＬＩｎｏｄｅ８０２（ノード８０４，ノード８０２）、ＬＩｎｏｄｅ８０２（ノード８０６，ノード８０２）及びＬＩｎｏｄｅ８０２（ノード８０８，ノード８０２）として表される。これらの間隔における識別子は、インタレストを転送するためにルータによって使用することができる。間隔を指す破線矢印は、インタレストに挿入された識別子が対応する間隔から選択されることを示している。例えば、ルータ８０２がルータ８０４からインタレストを受信するとき、インタレストは、間隔８１４（ＬＩｎｏｄｅ８０２（ノード８０２，ノード８０４））から選択された割り当てられた識別子（ＡＩＤ）を含むべきである。ルータ８０２がルータ８０６に対して受信したインタレストを転送するとき、それは、受信したＡＩＤ∈ＬＩｎｏｄｅ８０２（ノード８０２，ノード８０４）をＡＩＤ∈ＬＩｎｏｄｅ８０２（ノード８０６，ノード８０２）にマッピングし、受信したインタレストにおける識別子をマッピングされた識別子と置き換える必要がある。図８における二重矢印は、２つのＡＩＤ間のマッピングを示している。いくつかの実施形態において、ルータ８０２は、受信したインタレストにおけるＡＩＤを転送されたインタレストにおけるＡＩＤにマッピングするために全単射関数に対する入力として受信したＡＩＤを使用する。このマッピングは、ルータ８０２のＡＲＴに記憶されることができる。ルータ８０２がインタレストに対する応答を受信すると、それは、受信した応答におけるＡＩＤにおいて使用するための逆関数を判定するために、そのＡＲＴにおけるエントリを使用することができる。
【００８１】
そのルータに割り当てられた又はそのルータによって割り当てられた間隔に加えて、ルータ８０２はまた、ＬＩｎｏｄｅ８０２（ノード８０２，ノード８０２）として表される、それ自体のために間隔８１０を確保することができる。この間隔における識別子は、ローカルに生成されたインタレスト、すなわち、そのローカル消費者に代わってルータ８０２によって生成されたインタレストについてルータ８０２によって使用される。
【００８２】
図９は、本発明の実施形態にかかる、インタレストに対する応答におけるＡＩＤのマッピングを図示する図である。図９において、ルータ９０２は、ＣＯｎ（ｊ）についてのインタレストを発信する。具体的には、ルータ９０４を介してｎ（ｊ）＊に向かってインタレストを送信するために、ルータ９０２は、ルータ９０４によって割り当てられた間隔からＡＩＤＩ（ノード９０２）＝１０を選択し、転送されるインタレストにおいてこのＡＩＤを使用し、そのＡＲＴにエントリ［１０，ノード９０２］を記憶する。ルータ９０４がインタレストを受信すると、それは、次ホップとしてルータ９０６を識別し、（間隔９１４に属する）受信したインタレストにおけるＡＩＤをルータ９０６によってルータ９０４に対して割り当てられた間隔（間隔９２６）から選択された識別子にマッピングするために全単射マッピング関数を使用する。破線矢印９３２は、そのようなマッピングを示している。ルータ９０４は、受信したインタレストにおけるＡＩＤを置き換えるためにＡＩＤＩ（ノード９０４）＝２５０として選択された識別子を使用し、ルータ９０６に対してインタレストを転送し、そのＡＲＴにエントリ［２５０，ノード９０２］を記憶する。同様に、ルータ９０６は、独自のＬＩＳＴに基づいて、（それがインタレストを転送することを決定した場合には）同様のマッピングを行うことができるか又はインタレストに対して応答（例えば、データパケット又はＮＡＣＫ）を送信することができる。
【００８３】
ルータ９０４がＡＩＤＲ（ノード９０６）＝２５０を有するルータ９０４からのデータパケットを受信すると、それは、一致するエントリについてそのＡＲＴをチェックする。ＡＲＴエントリは、前ホップがノード９０２であることを示している；したがって、ルータ９０４は、ルータ９０２についての逆マッピング関数を使用する必要がある。逆マッピングは、破線矢印９３４によって示されるように、ＡＩＤＲ（ノード９０６）＝２５０からＡＩＤＲ（ノード９０４）＝１０へのマッピングをもたらすことができる。そして、ルータ９０４は、受信したデータパケットにおけるＡＩＤをマッピングされたＡＩＤと置き換えることができ、ルータ９０２に対してデータパケットを送信することができる。ルータ９０２は、そのＡＲＴに基づいて、データパケットがローカル消費者のためのものであると判定することができる。
【００８４】
非常に少数のルータが含まれる場合であっても、インタレストを発信するルータのみがインタレストの発信元を判定することができることが図９からわかる。これは、インタレストが移動する逆経路を介して応答を転送するために使用される識別子が各ホップにおいてインタレストの受信機によって割り当てられるためである。報告された識別子の役割もまた明確である：それらは、ルータがデータパケット又はＮＡＣＫを転送するときに使用するための逆関数を選択することを補助しているにすぎない。
【００８５】
ＣＣＮ−ＧＲＡＭ：ルータアーキテクチャ
図１０は、本発明の実施形態にかかる、例示的なＣＣＮ−ＧＲＡＭルータのアーキテクチャを表す図である。図１０において、ＣＣＮ−ＧＲＡＭルータ１０００は、フェース１００２、１００４及び１００６などの多数のフェースと、インタレスト処理モジュール１００８と、転送モジュール１０１０と、応答処理モジュール１０１２と、制御メッセージ生成モジュール１０１４と、データベース１０１６とを含む。
【００８６】
フェース１００２〜１００６は、物理インターフェースのみならず、インタレストデータパケット及びＮＡＣＫを含むパケットの送受信が可能なアプリケーションプロセスを含むことができる。インタレスト処理モジュール１００８は、様々なフェース上で受信されたインタレストを処理する責を担う。いくつかの実施形態において、インタレスト処理モジュール１００８は、上述したループフリー転送規則（ＬＦＲ）に基づいて到来インタレストを受け入れるかどうかを判定する。インタレストが受け入れられた場合、インタレスト処理モジュール１００８は、受信したインタレストにおけるＡＩＤを新たなＡＩＤにマッピングするためにデータベース１０１６に維持されるＡＲＴを使用し、マッピングに基づいてインタレストに含まれるＡＩＤをスワップする。転送モジュール１０１０は、インタレスト、データパケット又はＮＡＣＫなどのパケットをフェースに対して転送する責を担う。いくつかの実施形態において、転送モジュール１０１０は、ＡＩＤマッピングに基づいてデータパケット及びＮＡＣＫを転送する。制御メッセージ生成モジュール１０１４は、インタレスト処理モジュール１００８がインタレストを拒否又は削除したとき、異なるＮＡＣＫメッセージを含むことができる制御メッセージを生成する。いくつかの実施形態において、制御メッセージ生成モジュール１０１４は、それらに限定されるものではないが、インタレストループが検出されたとき、要求されたコンテンツに向かうルートがみつからないとき、及び、コンテンツがみつからないときを含む様々な条件下でＮＡＣＫメッセージを生成する。応答処理モジュール１０１２は、インタレストに対する応答において受信したＮＡＣＫのデータパケットを処理する責を担う。いくつかの実施形態において、応答処理モジュール１０１２は、ＡＩＤマッピングをみつけるためにデータベース１０１６に維持されたＡＲＴをチェックし、マッピングに基づいて応答に含まれるＡＩＤをスワップする。データベース１０１６は、ＦＩＢ、任意のＬＩＧＨＴ、ＡＲＴ及びＬＩＳＴというＣＣＮ−ＧＲＡＭの動作に必要とされるデータ構造を記憶する。
【００８７】
ＣＣＮ−ＧＲＡＭ：転送状態の維持
ＮＤＮ及びＣＣＮにおけるように、ＣＣＮ−ＧＲＡＭにおけるルータは、名称接頭辞の発信元としてそれ自体を公表するそれらのサイトまでのルートを維持し、制御プレーンにおいて動作するルーティングプロトコルを使用してそれらのルーティングテーブルを移入する。ルータは、それらのルーティングテーブルに記憶されたデータに基づいて名称接頭辞へのルートとともにＦＩＢを移入する。ＦＩＢエントリの寿命は、ルーティングプロトコルの動作によって決定される。以下の説明において、マルチパスルーティングプロトコルがＦＩＢを移入するために使用され且つルータは各隣接ルータから名称接頭辞までのホップ数距離を把握することができるものとする。この情報は、ルータのＦＩＢに記憶されることができる。また、各ルータは適切に初期化され、ローカル消費者を表すために使用される識別子を把握し、全ての隣接者を把握し、各隣接者に関連付けられたローカル識別子間隔を把握しているものとする。
【００８８】
図１１は、本発明の実施形態にかかる、例示的なインタレスト処理アルゴリズムを図示する図である。この例において、インタレストは、ローカル消費者から受信され、インタレストは、ＣＯの名称及びローカル消費者の名称を記載している。図１１に示されるように、ルータｉがローカル消費者ｃからインタレストを受信すると、それは、要求されたコンテンツがローカルに記憶されているか又は同じコンテンツについての要求が保留中であるかを判定するためにＬＩＧＨＴをチェックする。コンテンツがローカルに記憶されている場合、データパケットは、ＣＯを要求するユーザに返送される（図１１における５行目）。同じコンテンツについての要求が保留中である場合、ユーザの名称は、ＣＯを要求したユーザのリストに追加される（図１１における７行目）。この開示において、名称接頭辞の発信元としてそれ自体公表するルータは、ローカルに記憶された接頭辞に関連付けられている全てのＣＯを有する必要があるものとする。ルータｉが名称接頭辞ｎ（ｊ）＊の発信元であると記載しており且つその接頭辞における名称を有する特定のＣＯがローカルにみつからない場合、ＮＡＣＫは、コンテンツがみつからなかった旨を記載して返送される（図１１における１１行目）。
【００８９】
ＣＯがリモートであり且つＦＩＢエントリがｎ（ｊ）に一致することができる名称接頭辞について存在しない場合、ＮＡＣＫは、ＣＯへのルートをみつけることができなかった旨を記載して返送される（図１１における１４行目）。そうでない場合、ルータｉは、そのＬＩＧＨＴにおいてＣＯｎ（ｊ）についてのエントリを作成し（図１１における１６行目）、ｎ（ｊ）に一致する名称接頭辞についてのそのＦＩＢにおいて最も高くランク付けされた隣接者を介してインタレストを転送する（図１１における１７〜２０行目）。分散型又はローカルアルゴリズムを含む様々なランク付け機構が隣接者をランク付けするために使用可能である。例えば、隣接者は、宛先又はリンク性能までの距離に基づいてランク付けされることができる。
【００９０】
インタレストを転送するとき、ルータｉはまた、ＡＲＴエントリがインタレストが転送される選択された後行者について存在するかどうかを判定するためにそのＡＲＴをチェックする。そうである場合、ＡＲＴエントリにおける既存の識別子は、受信したインタレストにおける識別子を置き換えるために使用される。そうでない場合、インタレストが転送される前に新たなＡＲＴエントリが作成される。新たなＡＲＴエントリにおける識別子は、ルータｉがインタレストの発信元である結果として作成された任意の他のＡＲＴエントリのために使用されていない（図１１における２０行目）。
【００９１】
図１２は、本発明の実施形態にかかる、例示的なインタレスト処理アルゴリズムを図示する図である。図１１とは異なり、図１２において、ルータｉによって処理されるインタレストは、隣接ルータｋから受信される。図１１に示されるアルゴリズムとは異なり、隣接者から受信したインタレストを処理するとき、ルータｉは、もはやインタレストを集約しない。代わりに、ルータｉは、単純なマッピング関数を使用して前ホップから受信したインタレストにおけるＡＩＤを次ホップに対して転送されるインタレストにおけるＡＩＤに単にマッピングすることができる。
【００９２】
ルータｉがコンテンツ要求を受信すると、それは、要求されたコンテンツがローカルにキャッシュされたかどうかを判定する。そうである場合、データパケットは返送される（図１２における６行目）。それが名称接頭辞ｎ（ｊ）＊の発信元であり且つ名称ｎ（ｊ）を有するＣＯがローカルにみつからない旨をルータｉが記載している場合、ＮＡＣＫは、コンテンツをみつけることができなかった旨を記載して返送される（図１２における１０行目）。ＣＯがリモートであり且つＦＩＢエントリがｎ（ｊ）＊について存在しない場合、ルータｉは、ＣＯについてのルートをみつけることができなかった旨を記載するＮＡＣＫを送信する（図１２における１２行目）。上述したＮＡＣＫにおけるＡＩＤは、受信したインタレストにおけるＡＩＤと同じであることに留意されたい。
【００９３】
ルータｉは、ＬＦＲを満たすｎ（ｊ）＊に対する次ホップνに対してインタレストを転送しようとする（最良の接頭辞はｎ（ｊ）について一致する）。ＬＦＲを満たす最も高くランク付けされたルータは、インタレストについての後行者及びルータｉとして選択される（図１２における１５〜１６行目）。転送されたインタレストにおいて使用されるＡＩＤは、ルータｋから受信したＡＩＤを選択された次ホップνによってルータｉに割り当てられた対応するＡＩＤに（全単射関数を使用して）マッピングすることにより得られる（図１２における１７行目）。ＡＲＴｉにおけるエントリが同じＡＩＤ及び前ホップｋについて存在しない場合、新たなＡＲＴエントリが作成される。エントリは、同じ経路及びＡＩＤが使用される任意の名称接頭辞について有効である。したがって、エントリの名称接頭辞は空のままである（図１２における２１行目）。そして、ルータｉは、元のＡＩＤをマッピングされたＡＩＤに置き換えることによってインタレストを転送する。
【００９４】
図１３は、本発明の実施形態にかかる、データパケットを処理するための例示的なアルゴリズムを図示する図である。ルータｉがデータパケットを受信すると、それは、必要に応じて、署名を検証することができ、検証が失敗した場合にはデータパケットを廃棄することができる（図１３における３〜４行目）。ルータｉは、さらに、コンテンツを要求したローカルユーザを有するかどうかを（そのＡＲＴエントリに基づいて）判定する。そうである場合、データパケットは、ＬＩＧＨＴに記憶された情報に基づいてそれらの消費者に対して送信される（図１３における６〜８行目）。ＡＲＴエントリによって判定されたように、隣接者ｋから転送されたインタレストに対する応答においてデータパケットが受信された場合、ルータｉは、受信したデータパケットにおけるＡＩＤを隣接者ｋに対して転送されたデータパケットにおけるＡＩＤにマップするために逆マッピング関数を使用する（図１３における１１行目）。ルータｉは、必要に応じて、エッジ又はオンパスキャッシングがサポートされている場合にはデータオブジェクトを記憶することができる。
【００９５】
図１４は、本発明の実施形態にかかる、ＮＡＣＫを処理するための例示的なアルゴリズムを図示する図である。ルータｉがＮＡＣＫを受信すると、それは、インタレストの発信元であったかどうかを（そのＡＲＴエントリに基づいて）判定する。そうである場合、ＮＡＣＫは、ＬＩＧＨＴに記憶された情報に基づいてローカル消費者に対して送信される（図１４における４〜６行目）。ＡＲＴエントリによって判定されたように、隣接者ｋから転送されたインタレストに対する応答においてデータパケットが受信された場合、ルータｉは、受信したＮＡＣＫにおけるＡＩＤを隣接者ｋに対して転送されたＮＡＣＫにおけるＡＩＤにマップするために逆マッピング関数を使用する（図１４における９行目）。
【００９６】
前述したように、ＣＣＮ−ＧＲＡＭは、インタレストが移動するルートをマッピングするためにインタレストに担持されたローカル識別子を使用し、それゆえに、大きなＰＩＴを維持する必要性をなくす。消費者から制作者への又は制作者から消費者へのルートが完全に匿名のままであることを確実にするために、これらのローカル識別子の割り当ては、慎重に設計される。より表面的には、受信機開始アプローチは、ローカル識別子の割り当てに使用される。
【００９７】
ＣＣＮ−ＧＲＡＭは、コンテンツがデータパケットにおいて保護される方法又は名称がＣＯのペイロードに確実にリンクされることができる方法に対して変更を行うものではないことから、キャッシュポイズニング攻撃を制限又は排除するためにＣＣＮ及びＮＤＮにおいて採用されるのと同じコンテンツセキュリティ機能を使用することができる。さらに、ＣＣＮ−ＧＲＡＭは、ルータの転送テーブルを圧倒することを目的としてインタレストフラッディング攻撃をマウントするように悪意のあるユーザの能力を排除するという点で、ＣＣＮ及びＮＤＮに対する巨大な利点を享受する。ＣＣＮ−ＧＲＡＭにおいて、侵入者は、接頭辞の数を無制限にするために宛てられたインタレストを発信するルータを妥協しなければならない。この場合が管理されることができるとしても、隣接ルータに対してインタレストを転送するルータを考えると、その隣接者からのインタレストにおいて使用されるためにＡＩＤを取得しなければならない。
【００９８】
ＰＩＴを使用する代わりに、ＣＣＮ−ＧＲＡＭルータは、インタレスト状態を維持するためにＡＲＴを使用する。インタレストの転送状態を維持するためにＡＲＴを使用することは、特にコンテンツ要求のレートが高い場合、ＰＩＴにおけるインタレストあたりの転送状態を保持するアプローチに対して大きな利点を示す。ＰＩＴのサイズは、コンテンツ要求のレートが増加するのにともない劇的に大きくなることができるのに対して、ＡＲＴのサイズは、コンテンツ要求レートに対して略一定に維持することができる。実際に、コンテンツ要求レートが低い場合、ＡＲＴにおけるエントリの平均数は、ＰＩＴにおけるエントリの平均数よりも大きくすることができる。これは、それらが表すルートがインタレスト及びそれらの応答によって実際に使用されるか否かにかかわらず、ＡＲＴエントリが長期間（例えば、数秒）保持されるためである。一方、ＰＩＴエントリは、対応するインタレストが満たされた直後に削除される。しかしながら、コンテンツ要求レートが増加するのにともない、与えられたＡＲＴエントリが多くのインタレストについて使用可能であるのに対して、異なるＰＩＴエントリは、各インタレストについて必要とされることから、ＰＩＴのサイズは、ＡＲＴのサイズの１０倍から２０倍よりも大きくすることができる。一般に、軽負荷時に使用することができないＡＲＴエントリを維持するためのコストは、高負荷時に既存のＡＲＴエントリを使用して転送される多くのインタレストから得られるシグナリング遅延の大幅な減少によって補償されることができることが期待されることができる。どれくらい多くのインタレストがルートを移動するのかとは無関係にＡＲＴエントリが記憶されることを考えると、ＡＲＴのサイズは、コンテンツがキャッシュされている場所とは無関係である。一方、ＬＩＧＨＴのサイズは、ローカルに要求されたか又は経路上でキャッシュされたＣＯの数の関数であり、ＬＩＧＨＴの平均サイズは、ローカル要求によって支配される。ＣＣＮ−ＧＲＡＭルータはまた、ＬＩＳＴを維持し、ＬＩＳＴの平均サイズは、通常はインタレストの数よりも小さい大きさの数であるネットワーク内のルータの数によって決定される。
【００９９】
コンピュータ及び通信システム
図１５は、本発明の実施形態にかかる、ＣＣＮ−ＧＲＡＭについての例示的なシステムを図示している。ＣＣＮ−ＧＲＡＭについてのシステム１５００は、プロセッサ１５１０と、メモリ１５２０と、記憶装置１５３０とを含む。記憶装置１５３０は、典型的には、メモリ１５２０にロード可能であり且つ上述した方法を実行するためにプロセッサ１５１０によって実行可能な命令を記憶する。１つの実施形態において、記憶装置１５３０における命令は、インタレスト処理モジュール１５３２と、応答処理モジュール１５３４と、転送モジュール１５３６と、制御メッセージ生成モジュール１５３８とを実装することができ、それらの全ては様々な手段を介して互いに通信することができる。記憶装置１５３０は、さらに、ローカルインタレスト収集テーブル１５４０、転送情報ベース１５４２、匿名ルーティングテーブル１５４４及びローカル間隔設定テーブル１５４６などの多数のデータ構造を含むことができる。
【０１００】
いくつかの実施形態において、モジュール１５３２、１５３４、１５３６及び１５３８は、部分的又は全体的にハードウェアで実装することができ、プロセッサ１５１０の一部とすることができる。さらに、いくつかの実施形態において、システムは、別個のプロセッサ及びメモリを含まなくてもよい。代わりに、それらの特定のタスクを実行することに加えて、モジュール１５３２、１５３４、１５３６及び１５３８は、別個に又は一体的に、汎用又は専用計算エンジンの一部とすることができる。
【０１０１】
記憶装置１５３０は、プロセッサ１５１０によって実行されることになるプログラムを記憶する。具体的には、記憶装置１５３０は、ＣＣＮ−ＧＲＡＭについてのシステム（アプリケーション）を実装するプログラムを記憶する。動作中において、アプリケーションプログラムは、記憶装置１５３０からメモリ１５２０にロードされることができ、プロセッサ１５１０によって実行されることができる。その結果、システム１５００は、上述した機能を実行することができる。システム１５００は、（タッチスクリーンディスプレイとすることができる）任意のディスプレイ１５８０、キーボード１５６０及びポインティングデバイス１５７０に結合されることができ、また、ネットワーク１５８２に対して１つ以上のネットワークインターフェースを介して結合されることができる。
【０１０２】
この詳細な説明に記載されたデータ構造及びコードは、典型的には、コンピュータシステムによって使用するためのコード及び／又はデータを記憶することができる任意の装置又は媒体であり得るコンピュータ読み取り可能な記憶媒体に記憶される。コンピュータ読み取り可能な記憶媒体は、これらに限定されるものではないが、揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（ディジタル多用途ディスク若しくはディジタルビデオディスク）などの磁気及び光記憶装置、又は、現在知られている若しくは今後開発されるコンピュータ読み取り可能な媒体を記憶することができる他の媒体を含む。
【０１０３】
詳細な説明のセクションに記載された方法及びプロセスは、上述したようなコンピュータ読み取り可能な記憶媒体に記憶されることができるコード及び／又はデータとして具体化することができる。コンピュータシステムがコンピュータ読み取り可能な記憶媒体に記憶されたコード及び／又はデータを読み取って実行する場合、コンピュータシステムは、データ構造及びコードとして具現化されてコンピュータ読み取り可能な記憶媒体内に記憶された方法及びプロセスを実行する。
【０１０４】
さらにまた、本願明細書に記載された方法及びプロセスは、ハードウェアモジュール又は装置に含めることができる。例えば、これらのモジュール又は装置は、これらに限定されるものではないが、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定の時間に特定のソフトウェアモジュール若しくはコードの一部を実行する専用又は共有プロセッサ、及び／又は、現在知られている若しくは今後開発される他のプログラマブル論理デバイスを含むことができる。ハードウェアモジュール又は装置が起動されると、それらは、それらの内部に含まれる方法及びプロセスを実行する。
【図１】
2017069951.tif 000009
【図２】
2017069951.tif 000010
【図３】
2017069951.tif 000011
【図４】
2017069951.tif 000012
【図５】
2017069951.tif 000013
【図６Ａ】
2017069951.tif 000014
【図６Ｂ】
2017069951.tif 000015
【図７Ａ】
2017069951.tif 000016
【図７Ｂ】
2017069951.tif 000017
【図７Ｃ】
2017069951.tif 000018
【図８】
2017069951.tif 000019
【図９】
2017069951.tif 000020
【図１０】
2017069951.tif 000021
【図１１】
2017069951.tif 000022
【図１２】
2017069951.tif 000023
【図１３】
2017069951.tif 000024
【図１４】
2017069951.tif 000025
【図１５】
2017069951.tif 000026