以下、本発明の各実施の形態について、図面を参照して詳細に説明する。
(実施の形態1)
本発明の実施の形態1は、本発明の基本的態様の一例である。
図1は、本実施の形態に係る受信端末の構成の一例を示すブロック図である。
図1において、受信端末400は、受信スタック部410、発行管理部440、およびH−RTT計測部450を有する。
受信スタック部410は、通信ネットワークに接続する。発行管理部440は、通信ネットワークに対して、データの返信を要求するパケットであるデータ要求パケットを送信する。H−RTT計測部450は、データ要求パケットの再送を行う迄のタイムアウト時間を決定し、決定したタイムアウト時間に従って、受信スタック部410がデータを受信する迄データ要求パケットの再送を行う。
ただし、受信スタック部410は、複数の通信インターフェイスを介して、通信ネットワークに接続する。発行管理部440は、複数の通信インターフェイスのそれぞれから、データ要求パケットを送信する。H−RTT計測部450は、通信インターフェイス毎に、通信インターフェイスとデータを保有するノードであるデータ保有ノードとの間のRTT(Round Trip Time)を計測する。そして、H−RTT計測部450は、計測されたRTTに基づいて、タイムアウト時間を通信インターフェイス毎に決定する。
なお、受信端末400は、図示しないが、例えば、CPU(central processing unit)、制御プログラムを格納したROM(read only memory)等の記憶媒体、RAM(random access memory)等の作業用メモリ、および通信回路等を有する。この場合、上記した各部の機能は、CPUが制御プログラムを実行することにより実現される。
このような受信端末400は、複数の通信インターフェイスからデータ要求パケットの送信および再送を行うことができる、したがって、受信端末400は、1つの通信インターフェイスのみを用いる場合に比べて、データをより高速に受信することができる。すなわち、受信端末400は、CCNを適用したベストエフォート型ネットワークからデータを受信する場合においても、高速なデータ受信を実現することができる。
ところが、複数の通信インターフェイスから無駄なインタレストパケットの送信が行われると、通信ネットワークに掛かる負荷は、1つの通信インターフェイスのみを用いる場合に比べて高くなる。一方で、通常、データ保有ノード迄のRTTは、通信インターフェイス毎に異なり、適切なタイムアウト時間も通信インターフェイス毎に異なる。
そこで、受信端末400は、上述の通り、通信インターフェイス毎に、通信インターフェイスとデータ保有ノードとの間(つまり、受信端末400とデータ保有ノードとの間)のRTTを、計測し、計測されたRTTに基づいて、タイムアウト時間を通信インターフェイス毎に決定する。これにより、受信端末400は、適切なタイムアウト時間を、通信インターフェイス毎に決定し、複数の通信インターフェイスからの無駄なインタレストパケットの送信を低減することができる。
したがって、本実施の形態に係る受信端末400は、CCNを適用したベストエフォート型ネットワークからデータを受信する場合においても、高速なデータ受信とネットワーク負荷の軽減とを両立することができる。
(実施の形態2)
本発明の実施の形態2は、本発明をCCNに対応した受信端末に適用した場合の、本発明の具体的態様の一例である。以下、CCNに対応したノードは、「CCNノード」と総称する。
<通信システムの構成>
まず、本実施の形態に係る通信システムの構成について説明する。
図2は、本実施の形態に係る受信端末を含む通信システムの構成の一例を示すシステム構成図である。
図2において、通信システム100は、CCNネットワーク200、送信端末300、第1の受信端末4001、および第2の受信端末4002を有する。
CCNネットワーク200は、CCNを適用した通信ネットワークである。本実施の形態において、CCNネットワーク200は、第1〜第5のCCNルータ2101〜2105と、これらを接続する複数のネットワーク接続メディア220を有するものとする。ただし、CCNネットワーク200は、図示する以外にも多数のノードが接続され、多数のノードが互いに通信の帯域を共有する、ベストエフォート型ネットワーク(例えばインターネット)である。
第1の受信端末4001および第2の受信端末4002は、同一の構成を有するため、適宜、「受信端末400」としてまとめて説明する。また、第1〜第5のCCNルータ2101〜2105は、同一の構成を有するため、適宜、「CCNルータ210」としてまとめて説明する。
CCNルータ210は、CCNに対応したルータである。すなわち、CCNルータ210は、CCNにおけるインタレストパケット(以下、単に「インタレストパケット」という)の受信を行う。インタレストパケットは、データの返信を要求するパケットであり、本発明の「データ要求パケット」を構成する。
なお、本実施の形態において、全てのデータには、予め、そのデータを提供するサービスのサービス種別が定義されているものとする。また、以下の説明において、インタレストパケットによる返信の要求の対象となっているデータは、「対象データ」といい、対象データを保有しているCCNノードは、「データ保有ノード」という。本実施の形態では、例えば、送信端末300がデータ保有ノードである他、各CCNルータ210および受信端末400もデータ保有ノードと成り得る。
CCNルータ210は、インタレストパケットを受信すると、自己がデータ保有ノードである場合、対象データを格納したパケット(以下「データパケット」という)を、インタレストパケットの送信元へ向けて返信する。なお、インタレストパケットの送信元は、例えば、第1の受信端末4001であり、以下「要求元」という。また、CCNルータ210は、自己がデータ保有ノードではない場合、他のCCNノードにインタレストパケットを転送する。
また、このインタレストパケットの転送の際、CCNルータ210は、自己のPIT(Pending Information Table)に、その転送を記録する。そして、CCNルータ210は、このPITに転送が記録されているインタレストパケットと同一のインタレストパケットを受信した場合、その受信したインタレストパケットについては転送を行わない(非特許文献1参照)。
そして、CCNルータ210は、データ保有ノード(例えば、送信端末300)から対応するデータパケットを受信した場合、そのデータパケットを、要求元へ転送する。その際、CCNルータ210は、転送したデータパケットの複製をキャッシュし、以降、データ保有ノードの1つとなる。すなわち、CCNルータ210は、転送したデータパケットの複製をキャッシュした以降、当該データに対するインタレストパケットを他のCCNノードに転送せずに、自らデータパケットの返信を行う。
また、このデータパケットの転送の際、CCNルータ210は、自己のPITから、対応するインタレストパケットの転送の記録を削除する。
ネットワーク接続メディア220は、有線あるいは無線の通信回線接続媒体である。具体的には、ネットワーク接続メディア220は、例えば、無線LAN回線、イーサネット(登録商標)ケーブル、あるいは、WiFi(登録商標)、WiMAX(登録商標)、LTE等の公衆無線回線である。
送信端末300は、第1の受信端末4001および第2の受信端末4002の対象データを、最初に保有しているCCNノード(以下「発信元」という)である。すなわち、送信端末300は、時刻0秒(t:0sec)において、通信システム100における唯一のデータ保有ノードであるものとする。
本実施の形態において、送信端末300は、デジタルビデオカメラ310からビデオデータを入力する装置である。そして、送信端末300は、時刻0秒(t:0sec)から、入力したビデオデータをリアルタイムでエンコードして、データパケットとして送出する装置である。すなわち、送信端末300は、ビデオデータを保有し、インタレストパケットに応じてビデオデータを分割した断片部分(以下「分割データ」という)を格納したデータパケットを返信する。これにより、送信端末300は、映像の生中継(ビデオストリーミングの配信)を実現する。
なお、送信端末300は、各データパケットに、分割データの入力時刻(撮影時刻)を示すタイムスタンプ値を記録する。タイムスタンプ値は、標準時間における時刻であってもよいし、ビデオデータの開始時刻からの相対的な時刻であってもよい。タイムスタンプ値の記録は、例えば、RFC3550で規定されているRTPヘッダを用いて行われてもよい。あるいは、タイムスタンプ値の記録は、例えば、送信端末300と各受信端末400との間で同期可能なクロックを基準とした相対値を基準として、独自に規定されたヘッダを用いて行われてもよい。例えば、送信端末300は、ビデオデータのRTP伝送で用いられるように、9000Hzを基準クロックとして、エンコーダ開始時刻からの基準クロックの経過時刻をパケット中に刻印してもよい。
受信端末400は、2つの通信インターフェイスを介して、CCNネットワーク200に接続し、2つの通信インターフェイスのそれぞれから、インタレストパケットを送信する。すなわち、受信端末400は、マルチインターフェイスの端末である。2つの通信インターフェイスが接続するネットワーク接続メディア220は、同一の種類のものであってもよいし、異なる種類のものであってもよい。そして、受信端末400は、通信インターフェイス毎に、通信インターフェイスとデータ保有ノードとの間のRTTを計測し、測定したRTTに基づいて、インタレストパケットの再送を行う迄のタイムアウト時間を決定する。
CCNにおいて、転送の対象となるデータは、上述の通り、データの所在ではなく、データに付されたコンテンツ名によって識別される。
<コンテンツ名の例>
図3は、コンテンツ名の一例(名前設計の一例)を示す図である。
図3に示すように、コンテンツ名510は、サービス特定(user/app supplied name)領域511と、データ断片特定領域512とから成る。
サービス特定領域511は、全体として、サービス名を記述する。なお、サービス特定領域511は、グローバリルータブル名(globally-routable name)領域513と、機関名(organizational name)領域514とから成る。グローバリルータブル名領域513は、例えば、呼確立に用いられる情報であるグローバリルータブル名を記述する。機関名領域514は、例えば、ネットワーク接続メディア220における伝送に用いられる情報を記述する。
データ断片特定領域512は、分割データの識別情報を記述する。かかる識別情報は、例えば、分割データに付与された通番である。
図3に示す例において、サービス特定領域511の記述内容は、蓄積された、あるいは生中継の、ビデオのストリーミングサービスにおける特定セッションのビデオデータを表している。また、データ断片特定領域512の記述内容は、ビデオデータの分割データのうち、「1」という通番のものを表している。
なお、コンテンツ名510は、1つの分割データのみを示す情報ではなく、複数の分割データを包括的に示す情報であってもよい。この場合、各CCNノードにおいて、コンテンツ名510は、例えば、分割データの通番をビデオデータの時間軸に対応付けたタイムシーケンステーブルを用いて、解釈される。すなわち、CCNノードは、コンテンツ名510を、いわば関数として取扱い、関数の実行結果を指し示すものであると解釈してもよい。
図4は、ビデオデータのタイムシーケンステーブルの一例を示す図である。
図4に示すように、タイムシーケンステーブル520は、開始時刻521と終了時刻522との組によって定義される時間範囲毎に、分割データの通番523を、対応付けて記述している。開始時刻521および終了時刻522は、例えば、ビデオデータの撮影時刻に対応する時間軸である。
図4の例では、例えば、「T1」という開始時刻521と「T2」という終了時刻522との組に対応付けて、「1−100」という通番523が記述されている。これは、ビデオデータの撮影場所の標準時間における時刻t=T1から時刻t=T2迄の間に撮影された映像が、「1」という通番から「100」という通番迄の分割データ群に対応することを示す。
タイムシーケンステーブル520に記述される時間範囲毎の長さは、1秒間あるいは30秒等、映像シーンの区切りに合わせて適切に設定されていることが望ましい。タイムシーケンステーブル520に記述される時間範囲の合計時間長さは、10分等、映像の全再生時間となる。
データ保有ノード(例えば送信端末300)は、このようなタイムシーケンステーブル520を保持している。あるいは、データ保有ノードは、他のノードが保持しているタイムシーケンステーブル520を、適宜参照する。これにより、データ保有ノードは、時間範囲あるいは位置範囲によるデータの指定を受け付け、タイムシーケンステーブル520を利用して該当するデータを返信するサービスを、提供することができる。
図5は、時間範囲を示すコンテンツ名の例を示す図である。
図5に示すように、コンテンツ名510は、例えば、サービス特定領域511に、タイムシーケンステーブルを使用するサービスのサービス名を記述する。そして、コンテンツ名510は、例えば、データ断片特定領域512に、「range(t1,t2)」という、時間範囲を示す関数を記述する。
図2の送信端末300は、例えば、図4に示すタイムシーケンステーブル520を保持し、図5に示すコンテンツ名510を指定したインタレストパケットを受信する。この場合、送信端末300は、「range()」を、時刻に関する関数と解釈し、「t1」および「t2」を、時刻を示す引数と解釈する。すなわち、送信端末300は、「range(t1,t2)」という関数を、「時刻t1から時刻t2迄の間に撮影された映像に対応する分割データの返信が要求されている」と解釈する。そして、送信端末300は、図4に示すタイムシーケンステーブル520から、該当する分割データが、「1」という通番から「100」という通番迄の分割データ群であると解釈し、これらを格納したデータパケットを返信する。
このように、時間範囲は、閉じられた時間である。また、位置範囲は、例えば、ある道路のA地点からB地点までの間の区間というように、閉じられた空間である。このような、時間範囲あるいは位置範囲等を指定して、その範囲に関連するデータを検索する手法は、レンジサーチと呼ばれる。
なお、各受信端末400が、現在時刻からRTTの時間長さよりも先の未来の時刻迄レンジサーチの範囲を広げて、繰り返しインタレストパケットを発行すると、CCNネットワーク200全体の輻輳を招く。したがって、このようなレンジサーチ範囲の拡大とインタレストパケットの繰り返し送信は、避けることが望ましい。
なお、図3および図5で説明したコンテンツ名510は、例えば、バイナリエンコーディングされて使用される。
受信端末400は、対象データのコンテンツ名を格納したインタレストパケットを、CCNネットワーク200に送信する。
<インタレストパケットの構成例>
図6は、インタレストパケットの構成の一例を示す図である。
図6に示すように、インタレストパケット530は、コンテンツ名(content name)531、セレクタ(selector)532、およびノンス(nonce)533を含む。コンテンツ名531は、インタレストパケット530の送信元が返信を要求する対象として指定する映像データの分割データのコンテンツ名である。コンテンツ名531は、例えば、図3および図5に示すコンテンツ名510である。ノンス533は、使い捨て乱数値である。セレクタ532は、要求の優先度、発行元のフィルタ、スコープ等である。
このようなインタレストパケット530は、映像データの分割データを指定し、指定した分割データの配信がインタレストパケット530の送信元(例えば、第1の受信端末4001)によって、要求することを示す。なお、図示しないが、インタレストパケット530には、インタレストパケット530の送信元を示す情報およびその他が付与されている。
インタレストパケットが指定する分割データを保持(キャッシュを含む)しているCCNノード(例えば、送信端末300)は、すなわち、データ保有ノードである。データ保有ノードは、インタレストパケットを受信すると、指定された分割データ(主信号)を格納したデータパケットを生成する。そして、当該CCNノードは、生成したデータパケットを、インタレストパケットの送信元へ向けて送信する。
<データパケットの構成例>
図7は、データパケットの構成の一例を示す図である。
図7に示すように、データパケット540は、コンテンツ名(content name)541、署名(signature)542、署名済み情報(signed Info)543、およびデータ(data)544を含む。
データ544は、データパケット540が格納する分割データである。コンテンツ名541は、データパケット540が格納する分割データのコンテンツ名である。すなわち、コンテンツ名541は、例えば、図3および図5に示すコンテンツ名510である。署名542は、データパケット540が格納する分割データに対する、ダイジェスト・アルゴリズム(digest algorithm)、あるいは、ウィットネス(witness)等による電子署名である。署名済み情報544は、署名済みの、出版元ID、キーロケータ(key locator)、遅延時間(stale time)等を含む。
このようなデータパケット540は、分割データが真正であることを証明しつつ、映像データの分割データを格納して伝送することができる。なお、図示しないが、データパケット540には、データパケット540の送信元および送信先を示す情報およびその他が付与されている。
このような仕組みにより、各受信端末400は、コンテンツの所在が分からなくても、コンテンツ名に基づいて、コンテンツを取得することができる。通信システム100全体の動作の具体例については、後述する。
このような通信システム100は、各受信端末400において、コンテンツの所在が分からなくても、コンテンツ名に基づいてコンテンツを取得することを可能にする。
<各装置の構成>
次に、CCNルータ210および受信端末400のそれぞれの構成について説明する。
図8は、CCNルータ210および受信端末400の構成の一例を示すブロック図である。
<CCNルータの構成>
図8において、CCNルータ210は、キャッシュ部211およびCCN転送スタック部212を有する。
キャッシュ部211は、送信端末300から送信されたデータパケットのうち、過去にCCNルータ210が転送を行ったデータパケットの複製をキャッシュする。
CCN転送スタック部212は、CCNのプロトコル動作を行う。すなわち、CCN転送スタック部212は、受信端末400から送信されたインタレストパケットを受信する。CCN転送スタック部212は、対応するデータパケットがキャッシュ部211にキャッシュされていない場合、CCN転送スタック部212が保持する転送テーブルに従って、受信したインタレストパケットを他のCCNノードへ転送する。
また、CCN転送スタック部212は、送信端末300から送信されたデータパケットを、そのデータパケットの送信先である受信端末400に対して転送する。より具体的には、CCN転送スタック部212は、データパケットを受信すると、そのデータパケットを要求するインタレストパケットを転送した方向とは逆の方向へ、データパケットを転送する。各CCNルータ210でこのような動作が行われることにより、データパケットは、最終的に、インタレストパケットの送信元の受信端末400に到達する。
また、CCN転送スタック部212は、このようなデータパケットの転送を行う際に、そのデータパケットの複製を、キャッシュ部211にキャッシュさせる。そして、CCN転送スタック部212は、以降にいずれかの受信端末400からこのキャッシュされたデータパケットを要求するインタレストパケットを受信した場合、インタレストパケットの転送を行わずに、自らデータパケット送信を行う。すなわち、CCN転送スタック部212は、キャッシュ部211にキャッシュされたデータパケットを、インタレストパケットの送信元の受信端末400へ返信する。
<受信端末の構成>
図8において、受信端末400は、CCN受信スタック部411、第1のフェイス421、第2のフェイス422、呼確立部430、発行管理部440、データストア部480、および映像デコーダ部490を有する。
CCN受信スタック部411は、ネットワーク接続メディア220を介してCCNネットワーク200に接続し、パケットの送受を行う。本実施の形態において、CCN受信スタック部411は、別個の通信インターフェイスである第1のフェイス421および第2のフェイス422を構成するものとする。これにより、CCN受信スタック部411は、図2で説明したように、同時に2つのCCNルータ210と接続することが可能となっている。
第1のフェイス421および第2のフェイス422は、それぞれ、接続するネットワーク接続メディア220に対応した情報管理を行う。第1のフェイス421は、第1のH−RTT計測部451、第1の再送キュー部461、および第1の帯域推定部471を有する。第2のフェイス422は、第2のH−RTT計測部452、第2の再送キュー部462、および第2の帯域推定部472を有する。これらの機能については後述する。
呼確立部430は、サービス種別が定義された複数のデータの中から対象データを決定し、受信端末400とデータ保有ノードとの間の呼を確立する。
本実施の形態において、呼確立部430は、受信端末400と送信端末300との間で、ビデオストリーミングの配信を受けるための通信の呼を確立する。具体的には、呼確立部430は、受信端末400と、対象データを提供するサービス(以下「対象サービス」という)を実施している送信端末300との間で、ビデオ配信の呼(session−a)を確立する。
より具体的には、呼確立部430は、コンテンツ名510のグローバリルータブル名領域513(図3参照)を指定したインタレストパケットを、発行する。呼確立部430は、このインタレストパケットの発行を、例えば、発行管理部440、第1および第2のH−RTT計測部451、452、およびCCN受信スタック部410を介して行う。
該当するサービスを提供するCCNノードが、CCNネットワーク200に存在(接続)しているとする。この場合、当該CCNノード(例えば送信端末300)から、コンテンツ名510の機関名領域514を含む応答(データパケット)が返信される。呼確立部430は、このデータパケットの受信を、例えば、CCN受信スタック部410、第1および第2のH−RTT計測部451、452、および発行管理部440を介して行う。
これにより、呼確立部430は、受信した機関名領域514を用いて、コンテンツ名510のサービス特定領域511(対象サービスのサービス名)を生成可能な状態となり、サービス提供元との呼を確立する。
呼確立部430は、受信端末400と発信元(本実施の形態では、送信端末300)との間で、ビデオデータの生中継のビデオデータを取得するための呼を確立することができる。あるいは、呼確立部430は、受信端末400と発信元以外のCCNノード(本実施の形態では、いずれかのCCNルータ210)との間で、当該CCNノードに蓄積されたビデオデータを取得するための呼を確立することもできる。
そして、呼確立部430は、呼が確立されると、対象サービスのサービス名と、対象データの分割データの通番とを、発行管理部440へ通知する。
発行管理部440は、対象サービスのメディア(ビデオデータあるいは情報データ等)を取得するためのインタレストパケットの発行を管理する。すなわち、発行管理部440は、通知されたサービス名および通番を指定したインタレストパケットを生成する。そして、発行管理部440は、生成したインタレストパケットを、第1のH−RTT計測部451および第2のH−RTT計測部452のそれぞれに発行する。
具体的には、発行管理部440は、通知されたサービス名および通番を、サービス特定領域511およびデータ断片特定領域512に記述し、コンテンツ名510を生成する(図3および図5参照)。そして、発行管理部440は、このコンテンツ名510を指定したインタレストパケットを生成する。このとき、発行管理部440は、例えば、データ断片特定領域512の値を増やしながら、インタレストパケットを順次発行する。
これにより、発行管理部440は、第1のH−RTT計測部451および第2のH−RTT計測部452とCCN受信スタック部411とを介して、CCNネットワーク200に対してインタレストパケットを送信する。このようなインタレストパケットの連続的な発行により、受信端末400は、特定の時間(現在あるいは過去)に配信されているビデオデータを、連続的に受け取ることが可能となる。
ただし、上述の通り、第1のH−RTT計測部451は第1のフェイス421を構成し、第2のH−RTT計測部452は第2のフェイス422を構成している。したがって、発行管理部440は、2つの通信インターフェイスのそれぞれから、インタレストパケットを送信する。
なお、本実施の形態において、発行管理部440は、第1のH−RTT計測部451および第2のH−RTT計測部452に対して、同一のインタレストパケットを、ほぼ同時に発行するものとする。
第1のH−RTT計測部451および第2のH−RTT計測部452は、それぞれ、発行管理部440から発行されたインタレストパケットを、CCN受信スタック部411を介して送信する。
より具体的には、第1のH−RTT計測部451は、発行管理部440から発行されたインタレストパケットを、CCN受信スタック部411を介して第1のフェイス421からCCNネットワーク200へ向けて送信する。そして、第1のH−RTT計測部451は、当該インタレストパケットの複製を、当該インタレストパケットの送信時刻と対応付けて、第1の再送キュー部461に格納する。
また、第2のH−RTT計測部452は、発行管理部440から発行されたインタレストパケットを、CCN受信スタック部411を介して第2のフェイス422からCCNネットワーク200へ向けて送信する。そして、第2のH−RTT計測部452は、当該インタレストパケットの複製を、当該インタレストパケットの送信時刻と対応付けて、第2の再送キュー部462に格納する。
そして、第1のH−RTT計測部451および第2のH−RTT計測部452は、CCNネットワーク200から返信されてきたデータパケットを、CCN転送スタック部212を介して受信する。そして、第1のH−RTT計測部451および第2のH−RTT計測部452は、受信したデータパケットを、データストア部480へ出力する。更に、第1のH−RTT計測部451および第2のH−RTT計測部452は、受信したデータパケットに対応するインタレストパケットを、第1の再送キュー部461および第2の再送キュー部462の両方から削除する。
また、第1のH−RTT計測部451および第2のH−RTT計測部452は、それぞれ、インタレストパケットの再送を行う迄のタイムアウト時間を、決定する。
より具体的には、第1のH−RTT計測部451は、インタレストパケットの送信時刻と対応するデータパケットの受信時刻との差分から、受信端末400とデータ保有ノードとの間のRTTを第1のフェイス421について計測する。そして、第1のH−RTT計測部451は、当該計測結果の統計値に基づいて、第1のフェイス421から送信されるインタレストパケットのタイムアウト時間を決定する。
また、第2のH−RTT計測部452は、インタレストパケットの送信時刻と対応するデータパケットの受信時刻との差分から、受信端末400とデータ保有ノードとの間のRTTを第2のフェイス422について計測する。そして、第2のH−RTT計測部452は、当該計測結果の統計値に基づいて、第2のフェイス422から送信されるインタレストパケットのタイムアウト時間を決定する。
すなわち、第1のH−RTT計測部451および第2のH−RTT計測部452は、通信インターフェイス毎に、受信端末400とデータ保有ノードとの間のRTTを計測する。そして、第1のH−RTT計測部451および第2のH−RTT計測部452は、計測されたRTTに基づいて、タイムアウト時間を、通信インターフェイス毎に決定する。
そして、第1のH−RTT計測部451および第2のH−RTT計測部452は、それぞれ、受信したデータパケットの、到着時刻と送信元を特定する情報とを、記録管理する。送信元を特定する情報は、例えば、CCNネットワーク200がインターネット等のIP(Internet Protocol)網である場合、送信元IPアドレスとすればよい。あるいは、送信元を特定する情報は、CCNネットワーク200が無線のアドホック網である場合、MACアドレス等のLayer2のパケットの送信元アドレスとすればよい。
すなわち、第1のH−RTT計測部451および第2のH−RTT計測部452は、それぞれ、自己が決定したタイムアウト時間に従って、CCN受信スタック部411がデータを受信する迄、インタレストパケットの再送を行う。より具体的には、第1の再送キュー部461および第2の再送キュー部462は、それぞれ、インタレストパケット毎に、対応する送信時刻およびタイムアウト値が示すタイムアウト時刻が到来すると、再送を行う。
第1の再送キュー部461および第2の再送キュー部462は、それぞれ、第1のH−RTT計測部451および第2のH−RTT計測部452から入力されたインタレストパケットを、格納する。
第1の帯域推定部471は、第1のH−RTT計測部451におけるデータパケットの受信状況やRTTの計測結果に基づいて、第1のフェイス421の利用可能帯域を推定する。ここで、利用可能帯域とは、対象データを受信するために利用することが可能な帯域をいう。
第2の帯域推定部472は、第2のH−RTT計測部452におけるデータパケットの受信状況やRTTの計測結果に基づいて、第2のフェイス422の利用可能帯域を推定する。
すなわち、第1の帯域推定部471および第2の帯域推定部472は、通信インターフェイス毎に、受信端末400とデータ保有ノードとの間の利用可能帯域を推定する。
なお、第1のH−RTT計測部451は、第1の帯域推定部471が推定した利用可能帯域に基づいて、第1のフェイス421からのインタレストパケットの送信を抑制するか否かを決定する。また、第2のH−RTT計測部452は、第2の帯域推定部472が推定した利用可能帯域に基づいて、第2のフェイス422からのインタレストパケットの送信を抑制するか否かを決定する。
すなわち、本実施の形態の受信端末400は、推定した利用可能帯域に基づいて、インタレストパケットの送信を抑制するか否かを、フェイス毎に決定する。
データストア部480は、第1のH−RTT計測部451および第2のH−RTT計測部452から入力されたデータパケットから分割データを抽出し、通番に従って目的の順序に並べ直して、映像デコーダ部490へ出力する。すなわち、データストア部480は、分割データから元のビデオデータを復元する。
より具体的には、データストア部480は、入力されたデータパケットから抽出した分割データを一時的に蓄積し、再生すべき時刻になると、分割データを映像デコーダ部490へ出力する。
データストア部480で各分割データが蓄積される時間の長さは、タイムアウト時間のm倍(mは正の整数)であってもよいし、固定値であってもよい。例えば、各分割データが蓄積される時間の長さは、受信端末400全体で決定されたタイムアウト時間の最大値に、mを乗じた長さとしてもよい。
この場合、インタレストパケットの再送が最大m回行われる間、分割データは映像デコーダ部490に入力されず、その分、遅れたタイミングの映像が出力されることになる。一方で、パケットロスが発生している環境でも、再生すべき時刻迄に分割データが蓄積されている可能性が高くなる。
なお、データストア部480は、各分割データの再生すべき時刻を、パケットの到着時刻ではなく、データパケットに記録されているタイムスタンプ値が示す時刻を基準として決定する。
映像デコーダ部490は、入力されたビデオデータを適切に解釈し、映像再生装置あるいは映像レコーダ等の外部装置で表示可能な信号に変換し、変換した信号を、当該外部装置へ送信する。
また、受信端末400は、図示しないが、例えば、CPU、制御プログラムを格納したROM等の記憶媒体、RAM等の作業用メモリ、および通信回路等を有する。この場合、上記した各部の機能は、CPUが制御プログラムを実行することにより実現される。
このような構成により、受信端末400は、2つの通信インターフェイスからインタレストパケットの送信および再送を行うことができる。また、受信端末400は、通信インターフェイス毎に、受信端末400とデータ保有ノードとの間のRTTを計測してタイムアウト時間を決定することができる。
これにより、受信端末400は、CCNを適用したベストエフォート型ネットワークであるCCNネットワーク200から、ネットワーク負荷の増大を防いだ状態で、対象データを高速に受信することができる。
<サービス名に基づくタイムアウト決定方針の選択>
なお、本実施の形態において、上述の第1のH−RTT計測部451および第2のH−RTT計測部452は、それぞれ、対象データのサービス種別に応じて、タイムアウト時間の動作を変更するものとする。
すなわち、第1のH−RTT計測部451および第2のH−RTT計測部452は、タイムアウト決定方針を、対象データのサービス種別に応じて、対象データ毎に決定するものとする。ここで、タイムアウト決定方針とは、RTTに基づいて前記タイムアウト時間を決定する際の方針をいう。
この場合、第1のH−RTT計測部451および第2のH−RTT計測部452は、例えば、複数のタイムアウト決定方針と、サービス種別テーブルおよびタイムアウト決定方針テーブルとを記憶している。サービス種別テーブルは、サービス名とサービス種別との対応関係を記述したテーブルである。タイムアウト決定方針テーブルは、サービス種別とタイムアウト決定方針との対応関係を記述したテーブルである。
図9は、サービス種別テーブルの一例を示す図である。
図9に示すように、サービス種別テーブル550は、サービス名551とサービス種別552とを対応付けて記述している。サービス名551は、コンテンツ名510のサービス特定領域511に記述されるサービス名(図3および図5参照)に対応している。
図10は、タイムアウト決定方針テーブルの一例を示す図である。
図10に示すように、タイムアウト決定方針テーブル560は、サービス種別561とタイムアウト決定方針562とを対応付けて記述している。サービス種別561は、サービス種別テーブル550のサービス種別552に対応している。
タイムアウト決定方針562としては、図10に示すように、例えば、「EMAWA」、「Largest」、および「Latest−RTT」という3つのタイムアウト決定方針が定義されている。
「EMAWA」は、通信インターフェイス毎に過去に計測された複数のRTTの指数加重平均から、タイムアウト時間を決定する内容である。「Largest」は、第1のフェイス421および第2のフェイス422の全体において、過去の所定の区間に計測された複数のRTTの最大値から、タイムアウト時間を決定する内容である。「Latest−RTT」は、通信インターフェイス毎に計測されたRTTのうち最新のものに基づいてタイムアウト時間を決定する内容である。
第1のH−RTT計測部451および第2のH−RTT計測部452は、例えば、これらのテーブルを用いて、対象データ毎に、タイムアウト時間決定方針を選択し、選択した方針に沿ってタイムアウト時間を決定する。
なお、第1のH−RTT計測部451および第2のH−RTT計測部452は、サービス種別テーブル550とタイムアウト決定方針テーブル560とを統合したテーブルを用いてもよい。あるいは、第1のH−RTT計測部451および第2のH−RTT計測部452は、テーブル参照という形ではなく、後述のように、判断処理フローの実行という形によって、タイムアウト時間決定方針を選択してもよい。
<受信端末の動作>
次に、受信端末400の動作について説明する。
図11は、受信端末400の動作の一例を示すフローチャートである。受信端末400は、例えば、ユーザ操作によりサービス名が入力される等して、データ受信を指示される毎に、図11に示す動作を行う。
まず、ステップS1100において、呼確立部430は、受信端末400とデータ保有ノード(例えば、送信端末300またはCCNルータ210)との間で呼を確立する。
この時点で、少なくとも1回は、インタレストパケットの送信と、そのインタレストパケットに対応するデータパケットの受信とが行われていることになる。
CCN受信スタック部411は、いずれかのフェイスでデータパケットを受信すると、自らが送信したインタレストパケットに対応するデータパケットであるか否かを検査する。CCN受信スタック部411は、受信したデータパケットが送信したインタレストパケットにマッチする場合、データパケットの到着時刻(受信時刻)を示す情報と共に、受信したデータパケットに付加する。そして、CCN受信スタック部411は、データパケットを、第1のH−RTT計測部451および第2のH−RTT計測部452へ出力する。
第1のH−RTT計測部451および第2のH−RTT計測部452は、入力されたデータパケットを、それぞれ、第1の再送キュー部461および第2の再送キュー部462を探索する。そして、第1のH−RTT計測部451および第2のH−RTT計測部452は、入力されたデータパケットが、それぞれのフェイスから送信されたインタレストパケットに対応したデータパケットに該当するかどうかを検査する。
第1のH−RTT計測部451および第2のH−RTT計測部452は、入力されたデータパケットが対応するフェイスから送信されたインタレストパケットにマッチする場合、当該データパケットの受信を完了する。
そして、ステップS1200において、第1のH−RTT計測部451および第2のH−RTT計測部452は、タイムアウト決定処理を行う。タイムアウト決定処理は、インタレストパケットの再送におけるタイムアウト時間を、サービス種別に応じて、フェイス毎に決定する処理である。
本実施の形態において、第1のH−RTT計測部451および第2のH−RTT計測部452は、タイムアウト決定方針テーブル560の内容を、タイムアウト決定処理の実行によって実現するものとする。タイムアウト決定処理の詳細については後述する。
そして、ステップS1300において、発行管理部440は、第1のH−RTT計測部451および第2のH−RTT計測部452を介して、第1のフェイス421および第2のフェイス422の両方から、インタレストパケットを送信する。
そして、ステップS1400において、第1のH−RTT計測部451は、決定したタイムアウト時間を設定して、インタレストパケットを第1の再送キュー部461に記録する。また、第2のH−RTT計測部452は、決定したタイムアウト時間を設定して、インタレストパケットを第2の再送キュー部462に記録する。
そして、ステップS1500において、第1のH−RTT計測部451および第2のH−RTT計測部452は、送信したいずれかのインタレストパケットがタイムアウトとなったか否かを判断する。具体的には、第1のH−RTT計測部451は、第1の再送キュー部461に格納されているインタレストパケットに設定されたタイムアウト時間のいずれかが、満了したか否かを判断する。また、第2のH−RTT計測部452は、第2の再送キュー部462に格納されているインタレストパケットに設定されたタイムアウト時間のいずれかが、満了したか否かを判断する。
第1のH−RTT計測部451および第2のH−RTT計測部452は、いずれかのインタレストパケットがタイムアウトとなった場合(S1500:YES)、ステップS1600へ進む。また、第1のH−RTT計測部451および第2のH−RTT計測部452は、いずれのインタレストパケットもタイムアウトとなっていない場合(S1500:NO)、後述のステップS1700へ進む。
ステップS1600において、第1のH−RTT計測部451および第2のH−RTT計測部452のうち、インタレストパケットがタイムアウトになった計測部は、対応するフェイスからインタレストパケットを再送する。この際、インタレストパケットを再送した計測部は、最初にインタレストパケットを送信したときと同様に、対応する再送キュー部に、タイムアウト時間を設定してインタレストパケットを記録する。
そして、ステップS1700において、第1のH−RTT計測部451および第2のH−RTT計測部452は、データパケットを受信したか否かを判断する。
第1のH−RTT計測部451および第2のH−RTT計測部452は、データパケットを受信していない場合(S1700:NO)、ステップS1500へ戻る。また、第1のH−RTT計測部451および第2のH−RTT計測部452は、データパケットを受信した場合(S1700:YES)、ステップS1800へ進む。
ステップS1800において、第1のH−RTT計測部451および第2のH−RTT計測部452のうち、データパケットを受信した計測部は、当該データパケットをデータストア部480へ出力する。また、データパケットを受信した計測部は、第1のフェイス421および第2のフェイス422から(つまり、第1の再送キュー部461および第2の再送キュー部462から)、対応するインタレストパケットを削除する。
そして、ステップS1900において、データストア部480は、入力されたデータパケットに対する処理(分割データ抽出、通番に沿った連結)を行う。
そして、ステップS2000において、発行管理部440は、ステップS1100で各対象データの全てを受信完了したか否かを判断する。発行管理部440は、対象データの全てをまだ受信完了していない場合(S2000:YES)、ステップS1200へ戻る。また、発行管理部440は、呼が切断された場合(S2000:NO)、一連の処理を終了する。
なお、図11では、呼の確立から終了までの一連の動作を想定して説明したが、例えば単一の呼の中で、再生時刻を戻すようなアプリケーションの場合も同様のインタレストパケットの再送管理を行っている。例えば、過去の監視カメラの映像を閲覧するようなアプリケーションの場合、呼が確立した後、取得したい画像は1時間前、あるいは、10分前であったりするが、それぞれのインタレストパケットの再送管理は、同じ方法を適用することができる。
また、後の渋滞情報の取得の例で説明するような単一のパケットで構成される情報を取得するような場合でも、インタレストパケットの再送管理は、同様に適用することができる。
図12は、タイムアウト決定処理(S1200)の一例を示すフローチャートである。
まず、ステップS1201において、第1のH−RTT計測部451および第2のH−RTT計測部452のうち、データパケットを受信した計測部(以下「受信計測部」という)は、それぞれ、対象データのサービス種別を特定する。具体的には、受信計測部は、例えば、サービス種別テーブル550(図9参照)を参照する。そして、受信計測部は、コンテンツ名510のサービス特定領域511(図3および図5参照)に記述されたサービス名に対応するサービス種別を、対象データのサービス種別とする。
そして、受信計測部は、ステップS1202〜S1203に示す判断処理により、以降の処理を分岐する。すなわち、受信計測部は、特定されたサービス種別が「Type−1」である場合、ステップS1205、S1206へ進む。受信計測部は、特定されたサービス種別が「Type−2」である場合、ステップS1207、S1208へ進む。また、受信計測部は、特定されたサービス種別が「Type−3」である場合、ステップS1209へ進む。
ステップS1205において、受信計測部は、受信したデータパケットに基づいてRTTを計測し、計測されたRTTを保持する。この計測されたRTTは、少なくとも、フェイス毎にN世代(Nは2以上の整数)に亘って保持する。すなわち、受信端末400は、フェイス毎に、N世代の計測されたRTTを保持する。ここで、世代とは、計測されたRTTの数に対応する。このようなN世代分のRTTの保持は、例えば、FIFO(First In First Out)の原理により容易に実現することができる。
そして、ステップS1206において、受信計測部は、対応するフェイスで過去に計測されたN世代分のRTTから、これらの指数加重移動平均を算出することにより、採用するタイムアウト時間を決定する。例えば、受信計測部は、以下の式(1)を用いて、タイムアウト時間RTO(Retransmission Time Out)を決定する。ここで、RTTiは、i世代前(iは1〜Nの整数)のRTT計測値であり、αiは、RTTiに対する重み(ただし、α1〜αNの合計値はN)である。βは、1以上の実数である。
RTO=β×Σ(RTTi×αi)/N ・・・(1)
なお、本実施の形態のように、受信端末400が無線通信を介してCCNネットワーク200に接続する場合、受信計測部は、Layer2のドライバから得られる無線の輻輳状態を表す値に応じて、重みαiを変化させてもよい。例えば、受信計測部は、無線の輻輳状態を表す値が大きい場合、より新しい世代のRTT計測値の重みαiが増大するように、重みαiの分布を変更する。
あるいは、受信計測部は、TCP(Transmission Control Protocol)の内部で計算されているように、式(2)を用いてRTTを算出し、更に、式(3)を用いてタイムアウト値RTOを算出してもよい。ここで、RTTmは、最新のRTT(今回計測されたRTT)である。
RTT=a×RTT+(1−a)×RTTm ・・・(2)
RTO= RTT+4×D ・・・(3)
ただし、a=7/8、D=a×D+(1−a)×|RTT−RTTm|
また、式(1)のβとして、β=(RTT+4×D)/RTT を用いてもよい。
また、第1のH−RTT計測部451および第2のH−RTT計測部452は、タイムアウト時間の初期値を、CCNネットワーク200に対応した妥当なタイムアウト時間のうち最大値を採用してもよい。例えば、CCNネットワーク200がインターネット上で運用される場合、タイムアウト時間の初期値は、500ms程度とすることが好ましい。
また、CCNネットワーク200が非常に多くのノードが接続されているものである場合、タイムアウト時間の初期値は、TCPのキープアライブタイムの値と同等の値であることが好ましい。受信端末400が無線通信を介してCCNネットワーク200と接続する場合、コリジョン防止可能な最大値(例えば30秒)であることが望ましい。
ステップS1207において、受信計測部は、受信したデータパケットに基づいてRTTを計測し、計測されたRTTを、受信端末400の全体でN世代分保持する。
そして、ステップS1208において、受信計測部は、過去に受信端末400の全体で計測されたN世代分のRTTから、これらの最大値を抽出することにより、採用するタイムアウト時間を決定する。
ステップ1209において、受信計測部は、過去に計測されたRTTのうちRTTm(今回計測されたRTT)に基づいて、採用するタイムアウト時間を決定する。例えば、受信計測部は、以下の式(4)を用いて、タイムアウト時間RTOを算出する。ここで、βは、1以上の実数である。
RTO=β×RTTm ・・・(4)
なお、受信計測部は、例えば、受信端末400の処理負荷や、データの伝送経路の負荷軽減を、データの受信速度に優先させるべきか否か判断してもよい。そして、受信計測部は、このような負荷軽減を受信速度に優先させるべきと判断したことを条件として、Type−2を選択するようにしてもよい。すなわち、受信計測部は、受信端末400のCPU負荷や回線の利用状況負荷を勘案し、これらの負荷が高い場合に、強制的にType−2を選択するようにしてもよい。
<利用可能帯域の推定手法>
回線の利用状況負荷は、第1の帯域推定部471および第2の帯域推定部472が推定する利用可能帯域に基づいて判断することができる。ここでは、利用可能帯域の推定手法の具体例について説明する。
第1の帯域推定部471および第2の帯域推定部472は、TFRC(TCP Friendly Rate Control、RFC3448参照)に準じて、対応するフェイスとデータ保有ノードとの間の経路の利用可能帯域を推定する。第1の帯域推定部471および第2の帯域推定部472は、以下、適宜「帯域推定部」と総称する。
TFRCで帯域を推定するには、RTTの計測、損失イベント率の計測、およびパケットサイズの把握が必要である。
RTTの計測は、上述の通りである。
損失イベント率は、RTT時間以内に発生したパケット損失を、一つの損失として計算した場合の、パケット損失事象の発生率である。単位時間当たりのインタレストパケット数は、上述の通りインタレストパケットの送信が管理されているため、把握することができる。したがって、損失イベント率は、対応するデータパケットの受信の有無から、容易に算出することができる。
パケットサイズは、対象データのサービス種別から把握することができる。パケットサイズは、例えば、対象データの提供サービスがビデオメディアの伝送である場合、かかる伝送で静的に用いられる、1280バイトあるいは512バイトといったパケット長を採用することができる。また、パケットサイズは、対象データの提供サービスが、音声メディアの伝送であり、固定長のパケットサイズを採用している場合、そのパケットサイズを採用することができる。あるいは、パケットサイズは、フェイス毎に受信されたデータパケットのサイズの統計値(例えば平均値)を、採用することができる。
帯域推定部は、例えば、以下の式(5)を用いて、利用可能帯域Xcalを推定する。ここで、RはRTTであり、pは損失イベント率であり、Sはパケット長であり、t_RTOはタイムアウト時間または4Rである。
なお、帯域推定部は、算出した利用可能帯域を、送信端末300に送信してもよい。そして、送信端末300は、受信した利用可能帯域に基づいて、ビデオデータのエンコードレートを変更してもよい。具体的には、送信端末300は、例えば、送信するデータパケットが消費する帯域が、受信した利用可能帯域以下となるように、ビデオデータのエンコーダに目標ビットレートの変更を指示してもよい。
また、受信計測部は、例えば、対応するフェイスにおいて、データパケットの平均受信ビットレートが利用可能帯域を超えている場合、インタレストパケットの再送を一時延期してもよい。すなわち、受信計測部は、タイムアウト時刻が到来した時点ではなく、タイムアウト時刻から所定の時間が経過した後に、インタレストパケットの再送を行うようにしてもよい。
このような動作により、受信端末400は、通信インターフェイス毎に、インタレストパケットを送信する度に適切なタイムアウト時間を決定することができる。すなわち、受信端末400は、接続するCCNノードの変化、データ保有ノードの変化、および、輻輳状態の変化に柔軟に対応して、適切な頻度でインタレストパケットの再送を行うことができる。
<通信システムの全体動作の例>
以下、図2を参照して、通信システム100の全体動作の具体例について説明する。
なお、本実施の形態では、第1の受信端末4001および第2の受信端末4002のそれぞれのCCNネットワーク200との接続状態を、以下のように想定する。
また、本実施の形態において、第1の受信端末4001は、時間の経過と共に、第1の位置P1から第2の位置P2を経て第3の位置P3へと移動している。第1の受信端末4001は、第1の位置P1に時刻t=1〜3(単位は、例えば、秒)の間、第2の位置P2に時刻t=3〜6の間、第3の位置P3に時刻t=6〜10の間、位置している。
第1の位置P1は、第1の受信端末4001が第1のCCNルータ2101および第2のCCNルータ2102と無線通信を行う位置である。第2の位置P2は、第1の受信端末4001が第2のCCNルータ2102および第4のCCNルータ2104と無線通信を行う位置である。第3の位置P3は、第1の受信端末4001が第4のCCNルータ2104および第5のCCNルータ2105と無線通信を行う位置である。
すなわち、第1の受信端末4001の2つの接続先は、時間と共に変化している。これは、例えば、第1の受信端末4001が、複数の回線との接続を維持しつつ移動し、これに伴って、接続先を変更していくケースである。複数の回線とは、例えば、無線LAN等と、3G(3rd Generation)あるいは4G(4th Generation)の公衆無線回線との組み合わせである。また、接続先とは、例えば、無線LANのアクセスポイントおよび公衆無線回線の基地局である。
また、第2の受信端末4002は、第4の位置P4に、時刻t=4〜30の間、位置している。第4の位置P4は、第2の受信端末4002が第3のCCNルータ2103および第5のCCNルータ2105と無線通信を行う位置である。
すなわち、第2の受信端末4002は、第1の受信端末4001の接続先が第2のCCNルータ2102および第4のCCNルータ2104と接続している間、第3のCCNルータ2103および第5のCCNルータ2105との接続を開始する。
また、第1の受信端末4001および第2の受信端末4002は、共に、送信端末300が時刻t=0において保持しているビデオデータ(以下、単に「ビデオデータ」という)を、受信の対象として要求するものとする。より具体的には、第1の受信端末4001および第2の受信端末4002は、ビデオデータの分割データを指定したインタレストパケットを、CCNネットワーク200へ送信するものとする。
また、送信端末300は、時刻t=0から、「/service−liveAndStoredStreaming/session−a/video/time−seq−table/」というサービス名のデータについて、送信化可能状態にあるものとする。送信化可能状態とは、インタレストパケットを受け付け、対応するインタレストパケットが指定する分割データを、データパケットに格納して返信することが可能な状態にあることをいう。更に、送信端末300は、図4に示すタイムシーケンステーブル520を保持しているものとする。
なお、第1のCCNルータ2101〜第5のCCNルータ2105の間では、経路制御プロトコルにより、データパケットのキャッシュ状況に関する情報が、逐次共有される。かかる情報は、特定の名前空間について、どのようなコンテンツ名に対応するデータパケットをどのCCNルータ210がキャッシュしているかを示す情報である。また、情報の更新は、一定時間毎に、あるいは、CCNルータ210間のリンク(回線)の切断が検知される毎に、行われる。
そして、各CCNルータ210は、各データについて、データ保有ノード迄の論理的な距離を計算し、その論理的な距離が最短となる回線に対して、当該データを指定したインタレストパケットを転送する。具体的には、CCNルータ210間のリンクは、論理的な重みが付与されており、この重みを加味したグラフ構造中の最短経路を、ダイクストラのOSPF(Open Shortest Path First)のアルゴリズムを用いて求める。このプロトコルをCCN用に拡張したものは、OSPFN(OSPF for Named-data networking)として知られている(非特許文献2参照)。
なお、以下の説明において、「/service−liveAndStoredStreaming/session−a/video/time−seq−table/range(1,3)」というコンテンツ名を指定したインタレストパケットは、「インタレストパケットA」という。
また、「1」という通番の分割データを要求するインタレストパケットのうち、第1の受信端末4001が送信したものは、「インタレストパケットB−1」という。そして、「1」という通番の分割データを要求するインタレストパケットのうち、第2の受信端末4002が送信したものは、「インタレストパケットC−1」という。すなわち、インタレストパケットB−1およびインタレストパケットC−1は、いずれも、「/service−liveAndStoredStreaming/session−a/video/sequential−number/1」というコンテンツ名を指定したインタレストパケットである。
また、インタレストパケットB−1あるいはインタレストパケットC−1に対する応答のデータパケットは、「データパケット−1」という。すなわち、データパケット−1は、「/service−liveAndStoredStreaming/session−a/video/sequential−number/1」というコンテンツ名のデータを格納したデータパケットである。
また、「31」という通番の分割データを要求するインタレストパケットは、「インタレストパケット−31」という。すなわち、インタレストパケット−31は、「/service−liveAndStoredStreaming/session−a/video/sequential−number/31」というコンテンツ名を指定したインタレストパケットである。
また、インタレストパケット−31に対する応答のデータパケットは、「データパケット−31」という。すなわち、データパケット−31は、「/service−liveAndStoredStreaming/session−a/video/sequential−number/31」というコンテンツ名のデータを格納したデータパケットである。
まず、第1の受信端末4001は、時刻t=1〜3の間(つまり、第1の位置P1にあるとき)に、インタレストパケットAを発行したとする。このインタレストパケットAは、CCNネットワーク200を経由して、送信端末300に到達する。
送信端末300は、インタレストパケットAを受け取ると、タイムシーケンステーブル520(図4参照)を参照し、インタレストパケットAに対応する分割データ群の開始通番を、データパケットに含めて応答する。ここでは、コンテンツ名が、「時刻t=1から時刻t=2迄の間に撮影された映像に対応する分割データの返信」を要求していることを示す。このため、送信端末300は、「1」という通番を、開始通番として、受信端末400へ通知する。
なお、このとき、送信端末300は、インタレストパケットAに対応する分割データ群の終了通番を、データパケットに含めて応答してもよい。例えば、「30」という通番の分割データは、時刻t=3に対応していたとする。この場合、送信端末300は、「30」という通番を、終了通番として、受信端末400へ通知する。
すると、第1の受信端末4001は、インタレストパケットB−1を、第1のフェイス421および第2のフェイス422のそれぞれから送信する。通信回線の状況が良ければ、送信された2つのインタレストパケットB−1は、それぞれ、第1のCCNルータ2101および第2のCCNルータ2102に到達する。また、通信回線が輻輳している場合、あるいは、無線通信電波の状況が悪い場合、送信された2つのインタレストパケットB−1は、第1のCCNルータ2101および第2のCCNルータ2102に到達せず、消失することもあり得る。
第1のCCNルータ2101および第2のCCNルータ2102に到達した2つのインタレストパケットB−1は、CCNの転送ルールに従って、データ保有ノード迄転送されていく。
この時点(時刻t=3)では、第1の受信端末4001がデータを要求する最初の受信端末400であるものとする。この場合には、いずれのCCNルータ210も、インタレストパケットB−1に対応するデータパケットをまだキャッシュしていないため、送信端末300に向けて転送されていく。したがって、第1のCCNルータ2101に届いたインタレストパケットB−1は、送信端末300へと転送される。
また、第2のCCNルータ2102に届いたインタレストパケットB−1は、第1のCCNルータ2101へと転送される。しかし、既に第1のCCNルータ2101において先にインタレストパケットB−1の転送が行われていた場合には、第1のCCNルータ2101のPITにその転送が記録されている。このため、第2のCCNルータ2102から第1のCCNルータ2101へと届いたインタレストパケットB−1の転送は、見送られる。
送信端末300は、インタレストパケットB−1を受信すると、対応する分割データを格納したデータパケット−1を、インタレストパケットB−1を受信した方向と逆の方向に送信する。すなわち、送信端末300は、データパケット−1を、第1のCCNルータ2101へ返信する。
第1のCCNルータ2101は、データパケット−1を受信すると、これをキャッシュし、PITから該当するエントリーを削除し、インタレストパケットBの送信元である第1の受信端末4001へ転送する。なお、第1のCCNルータ2101は、インタレストパケットBの別の送信元がPITに登録されている場合には、その送信元に対してもデータパケット−1を転送する。
同様にして、通信システム100では、第1の受信端末4001が第1の位置P1にある間、「2、3、・・・、30」という通番で、複数のインタレストパケットが連続的に発行され、対応する複数のデータパケットが返信されていく。
次に、第1の受信端末4001は、時刻t=3において、第2の位置P2に移動する。このとき、第1の受信端末4001では、第1のフェイス421が論理的に削除され、第1のCCNルータ2101との接続が切断される。そして、第1の受信端末4001では、新たなフェイス(新たな第1のフェイス421として扱うこともできる)が生成され、第4のCCNルータ2104と接続される。
第1の受信端末4001は、時刻t=3〜6の間(つまり、第2の位置P2にあるとき)に、インタレストパケット−31を発行したとする。このインタレストパケット−31は、CCNネットワーク200を経由して、送信端末300に到達する。
送信端末300は、データパケット−31を返送する。すなわち、データパケット−31は、CCNネットワーク200内を転送され、第1の受信端末4001に到達する。このとき、例えば、第1のCCNルータ2101および第2のCCNルータ2102には、データパケット−31がキャッシュされる。
ここで、時刻t=4において、第2の受信端末4002が、インタレストパケットC−1を、第3のCCNルータ2103および第5のCCNルータ2105のそれぞれに送信したとする。この場合、第3のCCNルータ2103は、例えば、論理的な距離が近い第1のCCNルータ2101に対して、インタレストパケットC−1を転送する。同様に、第5のCCNルータ2105は、例えば、論理的な距離が近い第4のCCNルータ2104に対して、インタレストパケットC−1を転送する。第4のCCNルータ2104は、このインタレストパケットC−1を、例えば、論理的な距離が近い第2のCCNルータ2102へ転送する。
第1のCCNルータ2101および第2のCCNルータ2102は、既に、データパケット−1をキャッシュしているため、自らデータパケット−1の返信を行う。第1のCCNルータ2101が送信したデータパケット−1は、第3のCCNルータ2103を経て、第2の受信端末4002へ返信される。また、第2のCCNルータ2102から送信されたデータパケット−1は、第4のCCNルータ2104および第5のCCNルータ2105を経て、第2の受信端末4002へ返信される。
すなわち、第2の受信端末4002は、第3のCCNルータ2103に接続するフェイスと、第5のCCNルータ2105に接続するフェイスとの両方から、データパケット−1を受信する。第3のCCNルータ2103に接続するフェイスは、第1のフェイス421とする。そして、第5のCCNルータ2105に接続するフェイスは、第2のフェイス422とする。
第1のフェイス421におけるRTTは、第2の受信端末4002がインタレストパケットC−1を第1のフェイス421から送信してから、対応するデータパケットを受け取る迄の時間である。また、第2のフェイス422におけるRTTは、第2の受信端末4002がインタレストパケットC−1を第2のフェイス422から送信してから、対応するデータパケットを受け取る迄の時間である。第2の受信端末4002は、上述の通り、これらフェイス毎のRTTを計測し、サービス名に応じたタイムアウト決定方針に従って、タイムアウト時間を、フェイス毎に決定する。
フェイス毎にRTTは異なるため、画一的なプレイアウトバッファ制御(すなわちデータストア部480での再生時刻のタイムアウト制御)のみでは、高信頼なデータパケット伝送としては不十分である。インタレストパケットの再送タイミングが遅れる場合には、ビデオデータを構成する分割データが、再生すべきタイミング迄に届かなくなるおそれがある。一方で、再生すべきタイミングを遅くした場合には、このような事態を防ぐことができるが、リアルタイム性が失われ、生中継の価値が下がる。例えば、生中継の映像を見ながら会話をするといったユースケースには、適さないものとなる。
この点、本実施の形態に係る受信端末400は、上述の通りフェイス毎にタイムアウト時間を決定するので、適切なタイミングでインタレストパケットを再送することができ、高速なタイミングでデータパケットを取得することができる。
次に、第1の受信端末4001は、時刻t=6において、第3の位置P3に移動する。第1の受信端末4001は、時刻t=6〜10の間(つまり、第3の位置P3にあるとき)に、「61」という通番の分割データを要求するインタレストパケットを発行したとする。
「61」という通番の分割データを格納したデータパケットは、例えば、第4のCCNルータ2104、第5のCCNルータ2105にキャッシュされている。一方、「1」という通番の分割データを格納したデータパケットは、例えば、第1のCCNルータ2101にキャッシュされている。そして、第2の受信端末4002と第5のCCNルータ2105との間の距離は、第2の受信端末4002と第1のCCNルータ2101との間の距離よりも短い。したがって、第2の受信端末4002における、「61」という通番の分割データを要求するインタレストパケットの再送は、「1」という通番の分割データを要求するインタレストパケットの再送よりも、早いタイミングで行うことができる。
以上説明したように、本実施の形態に係る受信端末400は、2つのフェイス毎に、受信端末400とデータ保有ノードとの間のRTTを計測してタイムアウト時間を決定することができる。これにより、本実施の形態に係る受信端末400は、CCNを適用したベストエフォート型ネットワークであるCCNネットワーク200から、ネットワーク負荷の増大を防いだ状態で、対象データを高速に受信することができる。したがって、例えば、対象データがビデオデータである場合、本実施の形態に係る受信端末400は、低遅延でデータ欠損のない映像再生を可能にする。
また、本実施の形態に係る受信端末400は、対象データのサービス種別に応じて、タイムアウト決定方針を選択する。これにより、本実施の形態に係る受信端末400は、対象データのサービス種別に適したタイミングで、インタレストパケットの再送を行うことができ、より高信頼なデータ受信を実現することができる。
なお、以上の説明では、受信端末400は、同一のインタレストパケットを2つのフェイスの両方から送信するとしたが、これに限定されない。受信端末400は、例えば、偶数通番の分割データに関するインタレストパケットを第1のフェイス421のみから送信し、奇数通番の分割データに関するインタレストパケットを第2のフェイス422のみから送信してもよい。
(実施の形態3)
本発明の実施の形態は、本発明を車々間通信システムに適用した場合の、本発明の具体的態様の一例である。
<通信システムの構成>
図13は、本実施の形態に係る車々間通信システムの構成の一例を示すシステム構成図である。
図13に示すように、車々間通信システム600は、第1〜第4の道路611〜614上に位置する、第1〜第11の車両621〜631により構成される。
第1の道路611および第2の道路612は、互いに並行して東京と横浜とを結ぶ幹線道路である。第1の道路611は渋滞しておらず、第2の道路612は渋滞しているものとする。また、第3の道路613および第4の道路614は、それぞれ第1の道路611と第2の道路612とを結ぶ生活道路である。
第1〜第11の車両621〜631は、それぞれ、本実施の形態に係るCCNノードを、例えばカーナビゲーションシステムの一部として搭載した車両である。ここで、本実施の形態に係るCCNノードとは、本実施の形態に係る送信端末300、CCNルータ210、および受信端末400の機能を有するCCNノードとする。第1〜第11の車両621〜631は、CCNの機能に関して、同一の構成を有するため、適宜、「車両620」と総称する。
各車両620は、物理的な距離が近い他の車両620を無線通信により認識し、当該他の車両620との間で論理的な回線接続を有している。物理的な距離が近い車両620とは、互いに相手の無線通信エリア内に位置することである。物理的な距離が近い車両620の組は、例えば、第1の車両621と第2の車両622、第2の車両622と第3の車両623、第3の車両623と第4の車両624、第4の車両624と第7の車両627である。すなわち、第1〜第11の車両621〜631の間は、複数の論理回線により接続され、網目状の通信経路が形成されている。
第1〜第11の車両621〜631の間では、通信経路の構成を示す経路情報、および、名前空間の情報が、例えばOLSR(Optimized Link State Routing)により交換されている。OLSRは、アドホックネットワーク間の経路制御プロトコルの1つである。すなわち、車々間通信システム600では、インタレストパケットおよびデータパケットの転送が可能な状態となっている。
<関数名称の定義>
車々間通信システム600では、コンテンツ名に使用できる関数として、複数の関数が予め定義されているものとする。
図14は、車々間通信システム600で定義されている関数の例を示す図である。
図14に示すように、車々間通信システム600では、「arearange(r1,r2)」、「timerange(t1,t2)」、および「latest」という複数の関数が定義されている。
「arearange(r1,r2)」は、位置r1から位置r2迄の空間範囲(観測位置の範囲)に関する情報を指定するための関数である。すなわち、この関数を含むコンテンツ名を指定したインタレストパケットは、位置r1から位置r2迄の空間範囲に関する情報の返信を要求していると解釈される。
このような関数は、例えば、経度および緯度の組によって特定される範囲の情報、東京都内の情報、あるいは、国道1号線の東京−横浜間の情報等を、返信の対象として指定することを可能にする。
なお、例えば、階を示す情報と、基準基地局1を示す情報と、基準基地局2との距離とを引数とする関数は、3次元的な位置範囲指定を可能にする。このような3次元的な位置範囲指定は、例えば、特定のビルの3階における商品の展示位置の検索や、マンションの電力検針情報の検索などを可能にする。
「timerange(t1,t2)」は、時刻t1から時刻t2迄の時間範囲(発生時刻の範囲)に関する情報を指定するための関数である。すなわち、この関数を含むコンテンツ名を指定したインタレストパケットは、時刻t1から時刻t2迄の時間範囲に関する情報の返信を要求していると解釈される。本実施の形態では、この関数を用いることにより、例えば、直前の数分以内の情報、あるいは、過去の特定の期間の情報等を、返信の対象として指定することができる。
「latest」は、最新の情報を指定するための関数である。すなわち、この関数を含むコンテンツ名を指定したインタレストパケットは、データ保持ノードが保持する情報のうち最新のものの返信を要求していると解釈される。本実施の形態では、この関数を用いることにより、例えば、最新の静止画、最新のニュース記事(広報文書)、最新の掲示板発言、現在の温度計の値、あるいは、最新のデータストアのハッシュ値等を、返信の対象として指定することができる。
図13の各車両620は、自己が保持するデータを要求するインタレストパケットを他の車両620から受信した場合、当該データを格納したデータパケットを返信する。
ここで、各車両620は、インタレストパケットを無線通信により定期的に送信しているものとする。これにより、各車両620は、道路網のうち東京と横浜との間の区間の通過時間に関する情報(以下、「東京横浜間道路情報」という)を、車々間通信によって複数の車両の間で共有しているものとする。
このような情報共有が行われる場合の情報の流れを説明するために、第6の車両626が、レンジサーチによるインタレストパケットを送信した場合を想定する。
なお、東京横浜間道路情報のサービス名は、「service−loadcondition/time−tokyo−yokohama」であるものとする。
図15は、第6の車両626が要求するデータのコンテンツ名の一例を示す図である。
図15に示すように、第6の車両626が送信するインタレストパケットのコンテンツ名710は、東京横浜間道路情報のサービス名711と、時刻t1から時刻t2迄の時間範囲を指定する関数712とからなる。このようなコンテンツ名710を指定したインタレストパケットは、時刻t1から時刻t2迄の東京横浜間道路情報の返信を要求していると解釈される。
図13の第6の車両626が送信したインタレストパケットは、第1のフェイス421を介して接続している第5の車両625と、第2のフェイス422を介して接続している第11の車両631との両方に到達する(矢印701、702)。
例えば、第4の車両624は、第6の車両626が送信したインタレストパケットと同様のインタレストパケットを第6の車両626よりも前に送信し得る。あるいは、第4の車両624自身が、道路を走行することによって実績データを計測し、東京横浜間道路情報を生成していることもあり得る。これらの場合、第4の車両624は、対応するデータパケットをキャッシュしていることになる。
この場合、第4の車両624は、第6の車両626が送信したインタレストパケットを第5の車両625および第8の車両628を経由で受信すると、対象データを、第6の車両626に返信する。
ところで、第8の車両628に到達したインタレストパケットは、第8の車両628が第4の車両624および第10の車両630と接続している場合、第10の車両630にも到達する。第10の車両630が、対象データを保持しておらず、かつ、第9の車両629と接続している場合、インタレストパケットは、更に第9の車両629に到達する。第9の車両629は、第1の道路611を通過した他の車両620からの情報を保持している場合がある。
各車両620は、インタレストパケットが指定するサービス名711(図15参照)に対応している場合、インタレストパケットが指定する関数712(図15参照)を実行する。そして、各車両620は、マッチするデータを保有している場合(つまり、データ保有ノードである場合)、当該データを格納したデータパケットを生成して、要求元である第6の車両626へ返信する。
<データパケットの構成>
図16は、第6の車両626に返信されるデータパケットの構成の一例を示す図である。
図16に示すように、データパケット720は、例えば、コンテンツ名721、署名722、署名済情報723、観測時刻724、通過時間725、および通過経路情報726から成る。
コンテンツ名721は、インタレストパケットで指定されたコンテンツ名(つまり、データパケット720が格納するデータのコンテンツ名)である。署名722および署名済情報723は、データの正当性を検証するための情報である(非特許文献1参照)。観測時刻724、通過時間725、および通過経路情報726は、東京横浜間道路情報であり、発信元のCCNノードが過去の走行データから生成した情報である。
例えば、ある車両620が、東京−横浜間を、時刻tα(ただし、t1<tα<t2)迄の30分間で、国道15号線を経由して走行したとする。この場合、その車両620に、例えば、カーナビゲーションシステムの一部として搭載されたアプリケーションは、観測時刻724として時刻tαを表す文字列を、通過時間725に30分を表す文字列をそれぞれ記述する。また、かかるアプリケーションは、通過経路情報726として、国道15号線の東京−横浜の区間を示す文字列を、記述する。これらの記述は、例えば、TLV(Type Length Value)形式で行われる。なお、かかるアプリケーションは、これらの情報を、予め定義された特定の区切り記号を用いて、1つの情報としてまとめてデータパケット720に記述してもよい。
なお、データ保有ノードは、複数のデータがマッチする場合、観測時刻724〜通過経路情報726を繰り返し記述したデータパケットを返送してもよい。繰り返し記述の数は、例えば、10以下等の有限個である。
データパケット720を受信した第6の車両626は、例えば、データパケット720から元の東京横浜間道路情報を復元し、カーナビゲーションシステムの機能の一部としてこれをドライバに提示する。
なお、第6の車両626は、レンジサーチの対象となる時間範囲あるいは位置範囲を、直近の時間および直近の範囲へと縮めながら、インタレストパケットの発行を繰り返してもよい。これにより、第6の車両626は、最適な通行経路に関する情報を、ドライバに提示することができる。
第1〜第11の車両621〜631の間の通信状態によっては、インタレストパケットやデータパケットが損失することがある。しかし、第6の車両626は、複数のフェイスを備え、フェイス毎にタイムアウトを算出するので、高速に再送要求を送信することができる。例えば、第6の車両626は、第2の道路612と第4の道路614との交差点に差し掛かる前に、第1の道路611を経由した方が短時間で東京−横浜間を通行可能であることを、ドライバに知らせることができる。
なお、コンテンツ名は、上述の例以外にも、様々な態様を採り得る。
図17は、コンテンツ名の他の例を示す図である。
図17において、コンテンツ名730は、東京−横浜間の車輪がスリップした位置を示す情報のうち、時刻t1から時刻t2迄の範囲の情報を指定するコンテンツ名の一例である。コンテンツ名740は、東京−横浜間でワイパーが動いた区間を示す情報のうち、時刻t1から時刻t2迄の範囲の情報を指定するコンテンツ名の一例である。コンテンツ名750は、本日観測された特定エリアの気温を示す情報のうち、位置xy1から位置xy2迄の範囲の情報を指定するコンテンツ名の一例である。コンテンツ名760は、最近に観測された特定エリアの気温を示す情報のうち、位置xy1から位置xy迄の範囲の情報を指定するコンテンツ名の一例である。
このように、パケットロスが発生するような車々間通信の環境であっても、本発明を適用した各車両620は、適切なタイミングで渋滞情報を取得することができる。すなわち、本発明は、車々間通信にも好適である。より具体的には、本発明は、渋滞区間に近づくにつれて時刻の範囲、時間の範囲を適切に絞った情報を収集するアプリケーションを構築する際にも、適用することができる。これにより、本発明は、パケットロスの発生する環境であっても、曲がるべき交差点を通過する前により高精度な情報を適切なタイミングで取得することができる。
なお、本発明に係る受信端末が指定するコンテンツ名の名前空間は、以上説明した各実施の形態の内容に限定されるものではなく、例えば、非特許文献2で定義されている名前空間を採用してもよい。また、以上説明した各実施の形態は、CCNをベストエフォート型ネットワーク上で運用することを想定しているが、本発明の適用はこれに限定されない。本発明は、例えば、ICN(Information Centric Network)を、ベストエフォート型ネットワーク上で運用する場合にも、同様に適用可能である。ここで、ICNとは、コンテンツに、階層的な名前ではなくフラットなIDを付与して、通信ネットワーク内の適切なキャッシュから情報を取得するタイプの、通信ネットワークである。
本開示の受信端末は、通信ネットワークに接続する受信スタック部と、前記通信ネットワークに対して、データの返信を要求するパケットであるデータ要求パケットを送信する発行管理部と、前記データ要求パケットの再送を行う迄のタイムアウト時間を決定し、決定した前記タイムアウト時間に従って、前記受信スタック部が前記データを受信する迄前記データ要求パケットの再送を行うH−RTT計測部と、を有し、前記受信スタック部は、複数の通信インターフェイスを介して、前記通信ネットワークに接続し、前記発行管理部は、前記複数の通信インターフェイスのそれぞれから、前記データ要求パケットを送信し、前記H−RTT計測部は、前記通信インターフェイス毎に、前記通信インターフェイスと前記データを保有するノードであるデータ保有ノードとの間のRTTを計測し、計測されたRTTに基づいて、前記タイムアウト時間を前記通信インターフェイス毎に決定する。
また、上記受信端末において、前記ネットワークは、CCNを適用したベストエフォート型ネットワークであり、前記通信インターフェイスは、CCNのフェイスであり、前記データ要求パケットは、CCNのインタレストパケットであってもよい。
また、上記受信端末において、前記H−RTT計測部は、前記受信スタック部が前記データを受信すると、前記複数の通信インターフェイスの全てにおいて、前記データ要求パケットの再送を停止してもよい。
また、上記受信端末は、サービス種別が定義された複数のデータの中から前記返信の要求の対象となる前記データを決定し、前記受信端末と前記データ保有ノードとの間の呼を確立する呼確立部、を更に有し、前記H−RTT計測部は、前記RTTに基づいて前記タイムアウト時間を決定する際の方針であるタイムアウト決定方針を、前記サービス種別に応じて前記データ毎に決定してもよい。
また、上記受信端末において、前記H−RTT計測部は、過去に計測された複数の前記RTTの指数加重平均から、前記タイムアウト時間を決定してもよい。
また、上記受信端末において、前記H−RTT計測部は、前記データの伝送経路の負荷軽減を、前記データの受信速度に優先させるべきか否か判断し、前記負荷軽減を前記受信速度に優先させるべきと判断したことを条件として、前記複数の通信インターフェイスの全てにおいて過去の所定の区間に計測された複数の前記RTTの最大値から、前記タイムアウト時間を決定してもよい。
また、上記受信端末は、前記通信インターフェイス毎に、前記受信端末と前記データ保有ノードとの間の利用可能帯域を推定する帯域推定部、を更に有し、前記H−RTT計測部は、前記帯域推定部が推定した前記利用可能帯域に基づいて、前記データ要求パケットの送信を抑制するか否かを、前記通信インターフェイス毎に決定してもよい。
本開示の受信方法は、通信ネットワークに接続する接続ステップと、前記通信ネットワークに対して、データの返信を要求するパケットであるデータ要求パケットを送信する要求ステップと、データ要求パケットの再送を行う迄のタイムアウト時間を決定するタイムアウト決定ステップと、決定された前記タイムアウト時間に従って、前記データ要求パケットの再送を行う再要求ステップと、を有し、前記接続ステップは、複数の通信インターフェイスを介して、前記通信ネットワークに接続し、前記要求ステップは、前記複数の通信インターフェイスのそれぞれから、前記データ要求パケットを送信し、前記タイムアウト決定ステップは、前記通信インターフェイス毎に、前記通信インターフェイスと前記データを保有するノードであるデータ保有ノードとの間のRTTを計測し、計測されたRTTに基づいて、前記タイムアウト時間を前記通信インターフェイス毎に決定し、前記再送要求ステップは、前記データを受信すると、前記複数の通信インターフェイスの全てにおいて、前記データ要求パケットの再送を停止してもよい。
2012年11月28日出願の特願2012−259985の日本出願に含まれる明細書、図面および要約書の開示内容は、すべて本願に援用される。