(本発明の一態様を得るに至った経緯)
以下、本開示の一態様を得るに至った経緯について説明する。
[CCN網におけるコンテンツデータの配信]
まず、CCN網におけるコンテンツデータの配信について説明する。
図1は、CCN網上でのコンテンツ配信システムの一例を示す図である。
図1に示すコンテンツ配信システム900は、パブリッシャー901と、CCNルータ903および905と、CCN網904とを備える。
パブリッシャー901は、コンテンツ902を保持しており、興味パケットの応答としてコンテンツ902の一次配信を行う。
CCNルータ903および905は、CCN網904における中継装置の一例であり、CCN網904を介して接続されている。
CCNルータ903は、PIT(Pending Interest Table)911と、キャッシュ912と、FIB(Forwarding Information Base)913とを備え、CCNルータ905は、PIT906と、キャッシュ907と、FIB908とを備える。キャッシュ907およびキャッシュ912は、一度受信したコンテンツデータを記憶する。PIT906およびPIT911は、どのネットワークインターフェイス(以下フェイスと記述する)から興味パケットを受信し、どのフェイスに送信したかを記憶する。FIB908およびFIB913は、各名前空間に対するデータへの興味パケットはどのフェイスに送信すればよいかを記憶する。
CCN網904は、1以上のCCNルータによって構成されている。すべてのCCNルータ内にはCCNルータ903および905と同様に、一度受信したコンテンツデータを記憶するキャッシュ(キャッシュメモリとも言う)と、どのフェイスから興味パケットを受信したかを記憶するPITと、各名前空間に対応するデータへの興味パケットをどのフェイスに送信すればよいかを記憶するFIBとを備えている。
受信端末909および受信端末910はそれぞれ、CCNルータ905を通じてCCN網904に接続されている。
次に、以上のように構成されたコンテンツ配信システム900において、受信端末910がコンテンツ902を受信する手順について述べる。
まず、受信端末910は、コンテンツ902に対応する名前を記載した興味パケットをCCNルータ905に対して送信する。
次に、CCNルータ905は、受信端末910から受け取った興味パケットに含まれる名前に対応するコンテンツデータをキャッシュ907内に記憶している場合には、そのコンテンツデータを受信端末910に送信する。一方、CCNルータ905は、そのコンテンツデータをキャッシュ907内に記憶していない場合には、FIB908の内容に従ってCCN網904に対して興味パケットの転送を行い、PIT906に興味パケットに含まれる名前と受信したフェイスとを記憶する。また、CCNルータ905は、興味パケットに記載された名前と同一の名前に対する興味パケットに関する情報がPIT906に既に存在した場合は、上記興味パケットは転送せず、上記興味パケットを受信したフェイスの情報のみを記憶する。
なお、興味パケットを受け取ったCCN網904内のルータも、CCNルータ905と同様の処理を行う。
ここで、CCN網904上のCCNルータ903およびCCNルータ905を含むCCNルータすべてがコンテンツ902をキャッシュ(記憶)していない場合、受信端末910が送信した興味パケットはパブリッシャー901に到達する。
この場合、興味パケットを受け取ったパブリッシャー901は、例えばCCNルータ903に対して上記興味パケットに記載されている名前に対応するコンテンツ902のデータを送り返す。
すると、CCNルータ903は、興味パケットをパブリッシャー901に転送した際にPIT911に記載した情報を元に、対応するフェイスに対して取得したコンテンツ902のデータを転送し、かつ、キャッシュ912に受信したコンテンツ902のデータを記憶する。以降、CCN網904内のCCNルータ905などのCCNルータがPITの内容にしたがってコンテンツ902のデータの転送を行うことにより、受信端末910にコンテンツ902のデータが配信される。
続いて、コンテンツ902を受信端末910が受信した後に、受信端末909が同一のコンテンツ902を取得する手順について述べる。
まず、受信端末909は、コンテンツ902に対する興味パケットを発行してCCNルータ905に対して送信する。
次に、CCNルータ905は、受信端末909が送信した興味パケットに対応するコンテンツ902のデータをキャッシュ907に記憶しているので、受信端末909が送信した興味パケットに対してコンテンツ902のデータを送り返す。
このように、CCN網904におけるCCNルータのキャッシュを利用することにより、受信端末909は、受信端末910の受信したものと同じコンテンツ902のデータを取得することができる。そのため、CCN網904のトラフィックをいたずらに増大させることがない。つまり、CCN網904上のCCNルータが記憶するコンテンツ902のデータを利用することにより、コンテンツデータの配信の際のネットワーク全体のトラフィックを減少させることができる。
以上のように、CCN網上でコンテンツの配信は、コンテンツを取得する際に名前を含めた興味パケットを利用することにより実現されている。コンテンツを場所でなく名前そのものによって指定することができるため、コンテンツを受信する受信端末はコンテンツの保管されている場所を意識することなく効率的にコンテンツを受け取ることができる。
また、CCN網を用いると、受信端末がコンテンツを要求して、取得するという受信側主体な配信システムを構成できるので、動画サイトなどのコンテンツを多数の人数が効率的かつ高品質に受信できるようになる。
[現状の輻輳制御技術の問題点]
しかしながら、CCN網を利用したコンテンツデータの配信においても、インターネット上での通信と同様に、輻輳等によりパケットロスが発生する可能性がある。より具体的には、CCN網上でのコンテンツデータの配信において、インターネット上でのTCP/IPを利用した通信と同様に、各リンクに可用帯域を上回るデータが流入することにより輻輳が発生する。輻輳が発生した場合、パケットロスが発生し、受信端末に対して、コンテンツデータの配信が滞る可能性がある。そして、受信端末に対してコンテンツデータの配信が滞ることにより、さまざまな問題が発生する。たとえば、受信端末が動画コンテンツのストリーミング再生行っている場合、動画プレイヤーの再生バッファの枯渇が頻発することにより、スムーズな再生が妨げられる。
このような、コンテンツデータの配信が滞る問題を解決するために、CCN網上での輻輳を防ぐ輻輳制御技術が必要になる。具体的には、1)CCN網上で輻輳を検知する検出技術、2)輻輳を検知時に受信端末に対して輻輳を通知する技術、3)輻輳を緩和し素早くコンテンツを取得する制御技術が必要となる。
1)CCN網上での輻輳検知を行う方法としては、各CCNルータが上位のCCNルータとの間のリンクの帯域を管理し、リンクの帯域を超えるようなデータが流れる場合には輻輳と判定する方法が提案されている(例えば非特許文献3)。2)また、受信端末に対して輻輳発生を通知する技術としては、輻輳を検知したCCNルータがコンテンツデータの取得不可を示すNACK(Negative Acknowledgement)パケットを受信端末に対して送り返すという手法が提案されている(例えば非特許文献3、4)。
しかし、3)CCN網上の輻輳を緩和する方法としては、不十分な制御方法しか提案されていない(例えば非特許文献5)。CCN網上で安定したデータ配信を実現するためには、これら輻輳を検知し受信端末に通知する技術に加えて、輻輳状態から抜け出すための制御技術が必要である。しかし、非特許文献5などでは、輻輳状態から抜け出すために輻輳発生時に受信端末側で行う輻輳制御が提案されているものの、送信する興味パケットの数を単純に減少させる等のきわめて簡易なものしか提案されていない。そのため、この輻輳制御技術を用いても、CCNの特徴であるCCNルータのキャッシュを活かすことができないため、CCN網を効率的に利用することができず通信品質の向上も限定的である。
ところで、現在のインターネットにおいて動画コンテンツデータの配信は有力なサービスの一つである。そのため、動画コンテンツデータの配信は、CCN網上でのサービスとしても有力である。動画コンテンツデータの配信を行う際にはその品質が重要である。一般に動画コンテンツの品質はコンテンツデータのビットレートが高いほど高品質となり、低いほど低品質となる。そのため、高品質な動画コンテンツデータの配信サービスを実現するためには、受信端末が動画コンテンツデータを一定のレート以上で受信する必要がある。一方、ネットワークの可用帯域は時間とともに変化するため、不用意に可用帯域以上の高いビットレートの動画コンテンツのデータの受信を試みた場合、パケットロスが発生し、安定した動画コンテンツデータの受信および再生を行うことができない。可用帯域の変化やネットワークトラフィックの増加によって発生する輻輳に対して、CCN網上において安定した動画コンテンツデータの配信を行うための輻輳制御機構は重要である。しかし、CCN網上における輻輳制御技術は現在のところ十分な議論がなされていない。
[動画配信における輻輳制御技術]
ここで、さらに、動画コンテンツデータの配信を行う際の輻輳制御技術について述べる。
一般に受信端末駆動で動画コンテンツデータの配信を行う場合、複数のビットレートでエンコードされたデータを、それぞれ数秒または数フレーム分に細かく分割したデータの単位(以降、チャンクと記載)に加工したものを配信元で用意し、受信端末側がチャンクをシーケンシャルに要求・取得する方法が広く用いられている。そのため、CCN網上での動画コンテンツデータの配信においても、パブリッシャーやCCNルータで生成された複数エンコードレートの動画コンテンツのチャンクに対して、受信端末が次々と興味パケットを送信することでデータの受信が行われる動画配信方式が利用されると考えられる(例えば非特許文献6)。
この動画配信方式すなわち受信端末が動画コンテンツデータのチャンクをシーケンシャルに要求し取得する方式では、以下に述べる2つの制御方法によりCCN網上のトラフィック量を制御することができる。
1点目の制御方法は、受信端末が各々のチャンクに対する興味パケットを送信する間隔(以降、興味パケットの送信レートと記述する)を制御する方法である。例えば、興味パケットの送信レートが高くなればなるほど(送信間隔を短くすればするほど)、一定時間に受信端末に送り返されるコンテンツデータが増加し素早くコンテンツデータの取得を行えるがCCN網上のトラフィックは増加する。逆に興味パケットの送信レートを低くすると(送信間隔を長くすると)、コンテンツデータの取得は遅くなるが、CCN網上のトラフィックは減少する。
2点目の制御方法は、受信端末が興味パケットを送信する対象の動画コンテンツデータのエンコードレートを制御する方法である。例えば受信端末がより低いビットレートでエンコードされた動画コンテンツデータのチャンクに対して興味パケットを送信する場合には、CCN網上のトラフィックは減少する。また、例えば受信端末がより高いビットレートでエンコードされた動画コンテンツデータのチャンクに対して興味パケットを送信する場合にはCCN網上のトラフィックは増加する。
このように、CCN網上のトラフィック量は興味パケットの送信間隔と動画コンテンツデータのエンコードレートとにより制御することができる。
しかし、CCN網上での輻輳制御技術として、1点目の制御方法については多く提案されているが、1点目の制御方法については考慮されていない。つまり、受信端末からの興味パケットの送信レートとトラフィックとの関係のみに着目し、受信端末が輻輳発生のメッセージを受け取った場合に興味パケットの送信レートを引き下げてトラフィックを減少させることで輻輳を回避するという単純な手法を用いた1点目の制御方法が提案されているに過ぎない(例えば非特許文献5)。そして、受信端末がより低いビットレートの動画コンテンツを選択しトラフィックを減少させるという2点目の制御方法については考慮されていない。
さらに、非特許文献5に開示される1点目の制御技術では、興味パケットの送信レートを減少させることにより単位時間当たりに受信端末が受信できるデータ量が単純に減少する。そのため、受信端末側で再生できる動画コンテンツデータが不足するバッファアンダフローが発生して再生が停止してしまう。すなわち、輻輳発生時に安定した再生を実現することができないという問題がある。
つまり、従来の再送方法では、CCN網上で安定した動画コンテンツデータの配信を行うための輻輳制御機構として不十分である。換言すると、従来の再送方法では、輻輳によるコンテンツデータの配信の停滞を抑制するには不十分であるという問題がある。
[本発明の一態様に係る着想]
以上を鑑みて、発明者(ら)は、輻輳発生時にも安定した再生を実現するためには、受信端末からの興味パケットの送信レートだけでなく興味パケットの送信先コンテンツを切り替える部分も含めた輻輳制御方式が必要であると着想した。つまり、CCN網の可用帯域が低い場合にはビットレートの低い映像コンテンツに対する興味パケットを送信し、CCN網の可用帯域に余裕がある場合にはビットレートの高い映像コンテンツに対する興味パケットを配信するような方式が必要であると着想する。そして、興味パケットの送信レートを切り替えたり興味パケットで送信対象となるコンテンツデータを切り替えたりすることにより輻輳発生時のコンテンツ再生の安定性を向上させることができると考える。
さらに、発明者(ら)は、CCN網に備わっている網内キャッシュを効率的に利用することができると、より効率的かつCCN網に適した輻輳制御を行うことができると考える。従来の輻輳制御技術では、網内キャッシュに存在する動画コンテンツデータを考慮していないので、輻輳が発生した場合には興味パケットを送信する対象のコンテンツデータをよりビットレートの低いものに切り替える方法に想到するに留まる。一方、CCN網上の網内キャッシュに存在する動画コンテンツデータを考慮すると、輻輳が発生したリンクよりもより受信端末に近いルータ上によりビットレートの高いコンテンツデータが記憶されている場合には、輻輳発生時に、興味パケットで送信対象とするコンテンツデータをよりビットレートの高いコンテンツデータに切り替えるとよいと考える。これにより、輻輳発生時にも効率的かつ高品質なコンテンツデータを取得できる可能性がある。
以下、図2を用いて上記の着想について簡単に説明する。
図2は、CCN網内にコンテンツデータが記憶されていることを示す図である。図1と同様の要素には同一の符号を付しており、詳細な説明は省略する。
パブリッシャー901は、高・中・低ビットレートでエンコードされたコンテンツデータである高ビットレートコンテンツ902Aと、中ビットレートコンテンツ902Bと、低ビットレートコンテンツ902Cとを保持している。CCNルータ905は、以前に高ビットレートコンテンツ902Aを転送したことがあり、キャッシュ907内に高ビットレートコンテンツ902Aを記憶しているとする。そして、この場合において、CCNルータ905に接続された受信端末910が中ビットレートコンテンツ902Bに対する興味パケットを送信するとする。
CCN網904で輻輳発生等がない場合、中ビットレートコンテンツ902BはCCNルータ905に記憶されていないため、この興味パケットはパブリッシャー901まで転送され、中ビットレートコンテンツ902BがCCN網904およびCCNルータ905を介して返送される。一方、CCN網904で輻輳が発生した場合、従来の輻輳制御技術では、受信端末910が興味パケットの送信対象をよりビットレートの低いコンテンツデータである低ビットレートコンテンツ902Cに切り替えるまでしかなかった。それに対して、上記の着想によれば、CCNルータ905のキャッシュ907には高ビットレートコンテンツ902Aが存在しているため、よりビットレートの高い高ビットレートコンテンツ902Aへ興味パケットの送信対象を切り替えたほうが、CCN網904のトラフィックを削減できるのでより効率的なコンテンツデータの取得が可能になる。加えてより高品質なコンテンツデータを取得できる。
このように、輻輳によるコンテンツデータの配信の停滞を抑制するためにCCN網上で輻輳制御を行う場合、単純に興味パケットの送信レートを低下させたり取得対象のコンテンツのビットレートを引き下げたりするのではなく、キャッシュ内に存在するコンテンツデータについて考慮した上で、より効率的にCCN網上でコンテンツデータの取得を行えるような方法がよいと考える。
本開示は、上述の事情を鑑みてなされたもので、輻輳によるコンテンツデータの配信の停滞を抑制することができるルータ、端末、およびそれらの輻輳制御方法を提供する。
本開示の一形態に係るルータの輻輳制御方法は、コンテンツ指向型のネットワークに接続されるルータによる輻輳制御方法であって、前記ネットワークを監視することで輻輳が発生しているか否かを判断し、興味パケットを受信し、前記興味パケットを受信し、かつ、前記輻輳が発生していると判断した場合、前記輻輳の発生を通知するための第1のNACKパケットを生成し、前記生成された第1のNACKパケットを前記ネットワークに送信し、前記第1のNACKパケットの生成では、前記受信した興味パケットに含まれる名前に対応するコンテンツデータを代替する第1の代替コンテンツデータが前記ルータのキャッシュに記憶されている場合には、前記第1のNACKパケットに、前記代替コンテンツデータに関する情報を含める。
これにより、輻輳によるコンテンツデータの配信の停滞を抑制することができるルータの輻輳制御方法を実現できる。
具体的には、ルータは、輻輳が発生していると判断すると自身のキャッシュ内に存在している第1の代替コンテンツデータに関する情報を第1のNACKパケットに含めて受信端末に送信し、受信端末が、対象のコンテンツデータを第1の代替コンテンツデータに切り替えることができる。それにより、ルータは、受信端末に、輻輳の発生時に輻輳の発生しているリンクにトラフィックを発生させることなく、途切れなくコンテンツデータ(第1の代替コンテンツデータ)を取得させることができる。
ここで、例えば、前記コンテンツデータに関する情報または前記コンテンツデータを代替する第2の代替コンテンツデータに関する情報をさらに含み、かつ輻輳の発生を通知するための第2のNACKパケットを更に受信し、前記第1のNACKパケットの生成では、前記第1の代替コンテンツデータが前記ルータのキャッシュに記憶されている場合には、前記受信した前記第2のNACKパケットに、前記第1の代替コンテンツデータに関する情報をさらに含めことで、前記第1のNACKパケットが生成されてもよい。
例えば、ルータは、コンテンツデータに関する情報を含む第2のNACKパケットまたは他のルータにおけるコンテンツデータを代替する第2の代替コンテンツデータに関する情報を含む第2のNACKパケットを受信した場合、当該第2のNACKパケットに、自身のキャッシュ内に存在している第1の代替コンテンツデータに関する情報をさらに含めた第1のNACKパケットを生成して受信端末に送信する。それにより、受信端末が、対象のコンテンツデータを複数の代替コンテンツデータの一に切り替えることができる。このようにして、ルータの制御方法は、輻輳の発生時に輻輳の発生しているリンクにトラフィックを発生させることなく、途切れなくコンテンツデータ(代替コンテンツデータ)を取得させることができる。
また、例えば、さらに、前記輻輳が発生していると判断した場合に、前記興味パケットに含まれる前記名前に対応するコンテンツデータを代替する第1の代替コンテンツデータが前記キャッシュに記憶されているかを探索してもよい。
また、例えば、前記ルータが受信した興味パケットを転送するとき、前記ネットワークを監視することで、前記ネットワークに輻輳が発生しているか否かを検知するとしてもよい。
また、例えば、前記第1の代替コンテンツデータに関する情報は、前記興味パケットに含まれる前記名前に対応するコンテンツデータと同一または類似のコンテンツデータに関する情報であるとしてもよい。
また、例えば、前記興味パケットに含まれる名前は、前記名前に対応するコンテンツデータ自身の名前と前記コンテンツデータのビットレートに関する情報を含み、前記第1の代替コンテンツデータに関する情報は、前記興味パケットに含まれる前記名前に対応するコンテンツデータ自身の名前と同一の名前で、前記興味パケットに含まれる名前に含まれるビットレートとは異なるビットレートであることを示す情報を含んでもよい。
また、例えば、前記第1の代替コンテンツデータに関する情報は、前記興味パケットに含まれる前記名前に対応するコンテンツデータ自身の名前と同一の名前で、前記興味パケットに含まれる名前に含まれるビットレートよりも高いビットレートであることを示す情報を含んでもよい。
また、例えば、前記コンテンツデータに関する情報、前記第1の代替コンテンツデータに関する情報および前記第2の代替コンテンツデータに関する情報は、それぞれ対応するコンテンツデータ自身の名前、および前記対応するコンテンツデータの属性に関する情報を含んでもよい。
ここで、例えば、前記興味パケットに含まれる名前および前記コンテンツデータに関する情報、前記第1の代替コンテンツデータに関する情報および前記第2の代替コンテンツデータに関する情報は、それぞれ、連続的な数字および文字列の少なくとも一方を含み、階層構造で記述されるとしてもよい。
また、例えば、前記第1の代替コンテンツデータおよび前記第2の代替コンテンツデータに関する情報は、それぞれ、前記興味パケットを送信した端末から前記ルータまでの距離に関する情報を含むとしてもよい。
ここで、例えば、前記距離に関する情報は、前記興味パケットを生成し、送信した端末から前記ルータに到達するまでに経由したルータの数を示すホップ数であり、前記NACKパケットの生成では、前記ルータの前記キャッシュに存在する前記第1の代替コンテンツデータに関する情報には、さらに前記距離を示す情報として1を入力し、前記ルータと異なるルータのキャッシュに存在する前記第2の代替コンテンツデータに関する情報に含まれる前記距離を示す情報に、1を加えるとしてもよい。
これにより、前記興味パケットを生成し、送信した端末が前記NACKパケットを受信したとき、前記NACKパケットに含まれる第1の代替コンテンツデータに対応する距離を示す情報には、前記興味パケットを送信した端末から前記ルータに到達するまでに経由したルータの数が示される。
また前記NACKパケットに含まれる第2の代替コンテンツデータに対応する距離を示す情報には、前記興味パケットを送信した端末から前記異なるルータに到達するまでに経由したルータの数が示される。
また、コンテンツ指向型のネットワークは、CCN(Content Centric Network)を含む、としてもよい。
また、本開示の一形態に係る端末の輻輳制御方法は、コンテンツ指向型のネットワークに接続される端末による輻輳制御方法であって、送信を要求するコンテンツデータの名前を含む興味パケットを前記ネットワークに送信し、前記興味パケットに対する応答パケットとして、前記ネットワークの輻輳の発生を通知するための第1のNACKパケットを受信し、前記第1のNACKパケットを受信した場合に、輻輳制御を実行し、前記輻輳制御の実行では、前記受信した前記第1のNACKパケットに、前記興味パケットに含まれる前記名前に対応するコンテンツデータを代替する代替コンテンツデータに関する情報が含まれている場合、前記名前に替えて前記代替コンテンツデータの名前を含む興味パケットを生成し、生成した前記代替コンテンツデータの名前を含む興味パケットを前記送信において送信させる。
また、本開示の一形態に係る端末は、コンテンツ指向型のネットワークに接続される端末であって、送信を要求するコンテンツデータの名前を含む興味パケットを前記ネットワークに送信する送信部と、前記興味パケットに対する応答パケットとして、前記ネットワークの輻輳の発生を通知するための第1のNACKパケットを受信する受信部と、前記受信部が前記第1のNACKパケットを受信した場合に、輻輳制御を行う輻輳制御部と、を備え、前記輻輳制御部は、前記受信部で受信した前記第1のNACKパケットに、前記興味パケットに含まれる前記名前に対応するコンテンツデータを代替する代替コンテンツデータに関する情報が含まれている場合、前記名前に替えて前記代替コンテンツデータの名前を含む興味パケットを生成して、生成した前記代替コンテンツデータの名前を含む興味パケットを前記送信部に送信させる。
また、本開示の一形態に係るルータは、コンテンツ指向型のネットワークに接続されるルータであって、コンテンツデータを記憶するキャッシュと、送信を要求するコンテンツデータの名前を含む興味パケットを受信する受信部と、前記ネットワークを監視することにより、輻輳が発生しているか否かを判断するネットワーク監視部と、前記興味パケットを受信し、かつ、前記輻輳が発生していると判断した場合、前記輻輳の発生を通知するための第1のNACKパケットを生成するNACKパケット生成部と、前記生成された第1のNACKパケットを送信する送信部と、を備え、前記NACKパケット生成部は、前記興味パケットに含まれる前記名前に対応するコンテンツデータを代替する代替コンテンツデータが前記キャッシュに記憶されている場合には、前記第1のNACKパケットに、前記代替コンテンツデータに関する情報を含める。
なお、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なCD−ROM等の記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
以下、本開示の一態様に係るルータ、端末、およびそれらの輻輳制御方法等について、図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも本開示の一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態1)
以下、本開示の一実施の形態について、図面を参照して詳細に説明する。
[コンテンツ配信システムの構成]
図3は、実施の形態1におけるコンテンツ配信システム100の構成の一例を示す図である。コンテンツ配信システム100は、複数の受信端末と、それぞれキャッシュを有する複数のルータと、複数のパブリッシャーとを備える。本実施の形態では、コンテンツ配信システム100は、説明を簡単にするため、例えば図3に示すように、受信端末10と、受信端末11と、キャッシュ201を有するルータ20と、パブリッシャー30とで構成されているとして以下説明する。
受信端末10と受信端末11は、コンテンツ指向型のネットワークに接続され、コンテンツデータの名前を記載した興味パケットを送信し、コンテンツデータを含むデータパケットを受信する。本実施の形態では、受信端末10および受信端末11は、例えばルータ20を介して、パブリッシャー30と接続されている。受信端末10と受信端末11は、コンテンツデータの名前を記載した興味パケットをルータ20に送信することで、コンテンツデータを含むデータパケットをルータ20から受信する。
ルータ20は、コンテンツ指向型のネットワークに接続され、興味パケットおよびデータパケットを転送する。本実施の形態では、ルータ20は、受信端末10および受信端末11と接続され、かつ、パブリッシャー30と接続されている。
パブリッシャー30は、コンテンツ指向型のネットワークに接続され、コンテンツの一次配信を行い、コンテンツデータを保持している。本実施の形態では、パブリッシャー30は、自身の名前が「video/a/」というコンテンツデータを256kbps,512kbpsおよび1Mbpsのビットレートでパブリッシャー30が有する記録媒体(図示せず)に保持している(または、保存しているともいう)。
記録媒体とは、例えば、メモリ、ハードディスクといった書き込み可能な記録媒体である。
このとき、記録媒体(図示せず)に保持しているコンテンツデータの名前が、それぞれ「video/a/256kbps」、「video/a/512kbps」および「video/a/1Mbps」であるとする。
名前がそれぞれ「video/a/256kbps」、「video/a/512kbps」および「video/a/1Mbps」のコンテンツデータは、コンテンツデータ自身の名前「video/a/」が同じであるので、内容が互いに同じである。一方で、これらのコンテンツデータはビットレートが互いに異なる。
パブリッシャー30が、保持するコンテンツデータを送信(または、配信ともいう)する場合、または、受信端末10がコンテンツデータの送信を要求する場合には、コンテンツデータの名前として「video/a/256kbps」、「video/a/512kbps」および「video/a/1Mbps」の名前(名前空間)を用いて配信または配信の要求がなされる。
コンテンツデータの名前は、例えば、連続的な数字および文字列の少なくとも一方を含み、階層構造で記述される。
このように、コンテンツデータを配信する場合、およびコンテンツデータの送信を要求する場合に用いるコンテンツデータの名前には、コンテンツデータ自身の名前と、コンテンツデータの属性に関する情報を含む。属性の情報については、ビットレートを例に説明をするが、これに限定をされない。
例えば、コンテンツデータの解像度を、コンテンツデータの属性に関する情報としてもよい。また、コンテンツデータが動画データである場合には、例えば、コンテンツデータの、解像度、フレームレート、時間区間、色空間などをコンテンツデータの属性に関する情報としてもよい。
[受信端末の構成]
次に、受信端末10または11の構成について説明する。
図4は、実施の形態1における受信端末10の構成の一例を示す図である。
受信端末10は、コンテンツ指向型のネットワークに接続される端末の一例であり、コンテンツデータの名前を記載した興味パケットを送信し、コンテンツデータを含むデータパケットを受信する。本実施の形態では、受信端末10は、コンテンツ指向型のネットワークの一例であるCCN網40に接続されている。
図4に示す受信端末10は、送信部101と、受信部102と、輻輳制御部103と、デコーダ104と、受信データ管理部105とを備える。
送信部101は、CCNの興味パケットを送信する。より具体的には、送信部101は、コンテンツデータの名前を含む興味パケットをCCN網40に送信する。
受信部102は、CCNのデータパケットとNACKパケットとを受信する。より具体的には、受信部102は、興味パケットを受信する。なお、受信部102は、当該興味パケットに対する応答パケットとして、CCN網40の輻輳の発生を通知するためのNACKパケットを受信する場合もある。
輻輳制御部103は、興味パケットの送信を制御する。より具体的には、受信部102がNACKパケットを受信した場合に、輻輳制御を行う。輻輳制御部103は、受信部102で受信したNACKパケットに、興味パケットに含まれる名前に対応するコンテンツデータを代替する代替コンテンツデータに関する情報が含まれている場合、当該コンテンツデータの名前に替えて代替コンテンツデータの名前を含む興味パケットを生成して、生成した代替コンテンツデータの名前を含む興味パケットを送信部101に送信させる。
受信データ管理部105は、輻輳制御部103が輻輳制御を行うための情報を管理し、必要に応じてその情報を輻輳制御部103に提供する。
デコーダ104は、受信したコンテンツデータの復号(デコード)を行う。
[ルータの構成]
次に、ルータ20の構成について説明する。
図5は、実施の形態1におけるルータ20の構成の一例を示す図である。
ルータ20は、コンテンツ指向型のネットワークに接続され、興味パケットおよびデータパケットを転送する。本実施の形態では、ルータ20は、コンテンツ指向型のネットワークの一例であるCCN網40に接続されている。
図5に示すルータ20は、キャッシュ201と、受信部202と、代替コンテンツ探索部203と、ネットワーク監視部204と、NACKパケット生成部205と、送信部206とを備える。
受信部202は、興味パケット、コンテンツパケットおよびNACKパケットを受信する。より具体的には、受信部202は、輻輳の発生を通知するためのNACKパケットを受信する。
送信部206は興味パケット、コンテンツパケットおよびNACKパケットを送信する。より具体的には、送信部206は、NACKパケット生成部205により生成されたNACKパケットを送信する。
代替コンテンツ探索部203は、キャッシュ201内の代替コンテンツデータを検索する。より具体的には、受信部202が興味パケットを受信し、かつ、ネットワーク監視部204が輻輳の発生を検知した場合に、興味パケットに含まれる名前に対応するコンテンツデータを代替する代替コンテンツデータがキャッシュ201に記憶されているかを探索する。ここで、代替コンテンツデータに関する情報は、興味パケットに含まれる送信を要求するコンテンツデータの名前に対応するコンテンツデータと同一または類似のコンテンツデータに関する情報である。
2つのコンテンツデータが同一であるというのは、少なくとも、互いの名前に含まれるコンテンツデータ自身の名前が同じであり、互いの名前に含まれるコンテンツデータの属性に関する情報が示す値(または内容)が一定の基準を満足することである。
同一であることを満足するための一定の基準とは、例えば、互いの名前に含まれるコンテンツデータの属性に関する情報が示す値(または内容)が、同じであることである。
2つのコンテンツデータが類似であるというのは、少なくとも互いの名前に含まれるコンテンツデータ自身の名前が同じであり、互いの名前に含まれるコンテンツデータの属性に関する情報が示す値(または内容)が一定の基準を満足することである。
類似であることを満足するための一定の基準とは、例えば、互いの名前に含まれるコンテンツデータの属性に関する情報が示す値(または内容)が、異なることである。
上述の一定の基準というのは、一例であり、上述の内容に限定されるものではない。例えば、コンテンツ配信システム100の管理者が適宜決めればよい。
代替コンテンツデータに関する情報は、例えば、興味パケットに含まれる名前に対応するコンテンツデータと同一内容で、興味パケットに含まれる名前が含んでいるコンテンツデータのビットレートよりも高い、または低いビットレートのコンテンツデータに関する情報であってもよい。また、代替コンテンツデータに関する情報は、代替コンテンツデータに対応するコンテンツデータを配信するとき、および配信を要求するときの名前であってもよい。また、代替コンテンツデータの名前は、連続的な数字および文字列の少なくとも一方を含み、階層構造で記述されるとしてもよい。
ネットワーク監視部204は、ネットワークの輻輳を監視する。より具体的には、ネットワーク監視部204は、CCN網40を監視し、輻輳の発生を検知する。ネットワーク監視部204は、ルータ20が興味パケットを転送する際のCCN網40を監視することで、CCN網に輻輳が発生しているか否かを判断し、輻輳が発生していると判断した場合、これを検知する。ここでの輻輳は、ルータ20が興味パケットをCCN網40に、興味パケットを転送しても、当該興味パケットに対する応答パケット等が返ってこないことも意味する。また、興味パケットを転送しても興味パケットに含まれる名前に対応するコンテンツデータを取得できないことも含む。
NACKパケット生成部205は、輻輳の発生時にNACKパケット(第1のNACKパケット)を生成する。より具体的には、NACKパケット生成部205は、受信部202が興味パケットを受信し、かつ、ネットワーク監視部204が輻輳の発生を検知した場合、輻輳の発生を通知するためのNACKパケットを生成する。NACKパケット生成部205は、興味パケットに含まれるコンテンツデータの名前に対応するコンテンツデータを代替する代替コンテンツデータがキャッシュ201に記憶されている場合には、上記NACKパケットに、代替コンテンツデータに関する情報を含める。
[コンテンツ配信システムの動作]
次に、上記のように構成されたコンテンツ配信システム100の動作について説明する。
図6は、実施の形態1におけるコンテンツ配信システム100の処理フローを示すシーケンスである。以下では、輻輳が発生していない状況下で、名前が「video/a/1Mbps」のコンテンツデータを受信端末11が受信し、その後に名前が「video/a/512kbps/」のコンテンツデータ取得を受信端末11が試みた際にルータ20とパブリッシャー30の間のリンクで輻輳を検知した場合の動作について説明する。
まず、S100において、パブリッシャー30は、名前がそれぞれ「video/a/256kbps」、「video/a/512kbps」および「video/a/1Mbps」のコンテンツデータを予め保持しているとする。
次に、受信端末11は、名前が「video/a/1Mbps」のコンテンツデータに対する興味パケットを発行して送信する(S101)。
次に、ルータ20は、受信端末11が発行した興味パケットを受信し、自身のキャッシュ201内に興味パケットに含まれる名前と同じ名前「video/a/1Mbps」のコンテンツデータが存在しないことを確認すると、その興味パケットをパブリッシャー30側に転送する(S102)。なお、ルータ20は、興味パケットに記載された名前と同一の名前に対する興味パケットに関する情報がPIT(不図示)に既に存在した場合は、この興味パケットは転送せず、この興味パケットを受信したフェイスの情報のみを記憶し、処理を終了する。
次に、パブリッシャー30は、受信端末11が発行した興味パケットを受信すると、名前が「video/a/1Mbps」のコンテンツデータのデータパケットをルータ20側に送信(返信)する(S103)。
次に、ルータ20は、名前が「video/a/1Mbps」のコンテンツデータのデータパケットを受信すると、名前が「video/a/1Mbps」のコンテンツデータのデータパケットをキャッシュ201内に記憶する(S104)と共に、受信端末11側に転送する(S105)。
S104により、受信したコンテンツデータは、パブリッシャー30が送信するときに用いたコンテンツデータの名前「video/a/1Mbps」で、ルータ20のキャッシュ201内に記憶される。
そして、受信端末11は、名前が「video/a/1Mbps」のコンテンツデータのデータパケットを受信する(S106)。
その後に、受信端末10が、名前が「video/a/512kbps」のコンテンツデータに対する興味パケットを発行して送信するとする(S107)。
次に、ルータ20は、受信端末11が発行した興味パケットを受信すると、自身のキャッシュ201内に興味パケットに含まれる名前が「video/a/512kbps」のコンテンツデータが存在しないことを確認し、その興味パケットをパブリッシャー30側に転送する前に、輻輳が発生しているか否かの判断を行う。このとき、ルータ20が、輻輳が発生していると判断し、この結果、輻輳を検知したとする(S108)。
すると、ルータ20は、当該興味パケットに含まれる名前である「video/a/512Mbps」に対応するコンテンツデータを代替する代替コンテンツデータがキャッシュ201に存在するかどうかを探索する。この例では、S104において、名前「video/a/1Mbps」のコンテンツデータが記憶されているので、代替コンテンツデータ(第1の代替コンテンツデータ)がキャッシュ201内に存在することを確認する。この場合、ルータ20は、代替コンテンツデータ「video/a/1Mbps」に関する情報を含めた、輻輳の発生を通知するためのNACKパケットを生成し、受信端末10側に送信する(S109)。なお、キャッシュ201に記憶されている名前「video/a/1Mbps」に対応するコンテンツデータは、名前「video/a/512kbps」に対応するコンテンツデータと内容が同じ(つまり、コンテンツデータ自身の名前「video/a/」が同じ)でビットレートのみが異なるコンテンツデータであるので、代替コンテンツデータとして探索される。
次に、受信端末10は、代替コンテンツデータの名前「video/a/1Mbps」に関する情報を含むNACKパケットを受信すると、代替コンテンツデータへの興味パケットを切り替えるかどうかを判断し、切り替えを判断した場合に(S110)、名前が「video/a/1Mbps」の代替コンテンツデータに対する興味パケットを発行して送信する(S111)。
次に、名前が「video/a/1Mbps」の代替コンテンツデータに対する興味パケットを受信したルータ20は、自身のキャッシュ201内に名前「video/a/1Mbps」の代替コンテンツデータが存在するので、名前が「video/a/1Mbps」の代替コンテンツデータのデータパケットを受信端末10に送信する(S112)。
最後に、受信端末10は、名前が「video/a/1Mbps」の代替コンテンツデータのデータパケットを受信する(S113)。
このようにルータ20は、輻輳の発生を検知すると自身のキャッシュ201内に存在している代替コンテンツデータに関する情報をNACKパケットに含めて受信端末10に送信する。そして、受信端末10が、対象のコンテンツデータを代替コンテンツデータに切り替えることにより、輻輳の発生時に輻輳の発生しているリンクにトラフィックを発生させることなく、途切れなくコンテンツデータ(代替コンテンツデータ)を取得することができる。
ここで、比較例として、一般的なコンテンツ配信システムの動作について説明する。つまり、比較例として、ルータ20が輻輳を検知しても代替コンテンツデータを探索せず、代替コンテンツデータに関する情報を含まないNACKパケットを送信する場合における動作について説明する。
図7は、比較例におけるコンテンツ配信システムの処理フローを示すシーケンス図である。
まず、受信端末10は、コンテンツデータに対する興味パケットを発行して送信するとする(S201)。
次に、ルータ20は、受信端末10が発行した興味パケットを受信すると、自身のキャッシュ201内に要求されたコンテンツデータが存在するかを確認する(S202)。
S202においてYesの場合、ルータ20は、受信端末10に対してキャッシュ201内のコンテンツデータのデータパケットを送信し(S203)、処理を終了する。
S202においてNoの場合、ルータ20は、受信端末10が発行した興味パケットをパブリッシャー30側に転送する(S204)。すると、パブリッシャー30は、受信端末10が発行した興味パケットを受信すると、要求されたコンテンツデータをルータ20側に送信する(S205)。なお、ルータ20は、受信端末10が発行した興味パケットに記載された名前と同一の名前に対する興味パケットに関する情報がPIT(不図示)に既に存在した場合は、この興味パケットは転送せず、この興味パケットを受信したフェイスの情報のみを記憶し、処理を終了する。
また、ルータ20は、当該興味パケットの転送を行う際に輻輳の発生有無を検知する(S206)。
S206において、ルータ20が輻輳を検知した場合(S206でYes)、輻輳の発生を通知するためのNACKパケットを生成する処理(発行処理)を行い(S207)、生成したNACKパケットを受信端末10に送信する(S208)。
一方、S206において、ルータ20が輻輳を検知しない場合(S206でNo)、ルータ20は、パブリッシャー30から送信されたコンテンツデータを受信し、受信端末10に対してコンテンツデータを送信し(S209)、処理を終了する。
続いて、本実施の形態におけるコンテンツ配信システムの動作について説明する。ここでは、ルータ20が輻輳を検知した場合に代替コンテンツデータを探索し、代替コンテンツデータに関する情報を含むNACKパケットを送信する特徴的な動作を中心に説明する。
図8は、実施の形態1におけるルータのNACKパケット発行処理を示すフローチャートである。
図8に示すNACKパケットの発行処理(S307)は、図7に示すNACKパケットの発行処理(S207)に対応するものであるが、本実施の形態の特徴的な動作が付加されている点で異なる。
まず、ルータ20のネットワーク監視部204が輻輳を検知し、S307に示すNACKパケット発行処理に進んだとする。
S307において、ルータ20の代替コンテンツ探索部203は、自身のキャッシュ201の内部に代替コンテンツデータがあるかどうかを探索する(S3071)。
次に、キャッシュ201の内部に代替コンテンツデータがあったかを確認し(S3072)、なかった場合(S3072でNo)には、NACKパケット生成部205は、代替コンテンツデータに関する情報を含まないNACKパケットを生成する(S3073)。
一方、S3072において、キャッシュ201の内部に代替コンテンツデータがあった場合(S3072でYes)、NACKパケット生成部205は、代替コンテンツデータに関する情報を含めたNACKパケットの生成を行う(S3074)。
そして、ルータ20の送信部206は、S3073もしくはS3074で生成したNACKパケットを受信端末10に対して送信する(S308)。
このようにして、輻輳発生時には、ルータ20から送信された輻輳の発生を通知するためのNACKパケットもしくは、さらに代替コンテンツデータに関する情報を含めたNACKパケットを受け取ることができる。
[NACKパケットの構成例]
次に、ルータ20が生成するNACKパケットの構成例について、図を用いて説明する。
以下、代替コンテンツデータに関する情報を含めたNACKパケットの構成例と代替コンテンツデータに関する情報を含まないNACKパケットについて例示する。
図9A〜図9Eは、代替コンテンツデータに関する情報を含まないNACKパケットの構成の一例を示す図である。
図9Aに示すNACKパケット51は、パケットタイプを示すためのフィールド511と、NACKパケット対象コンテンツを示すためのフィールド512と、selector部を示すフィールド513とからなる。図9Bに示すNACKパケット52は、パケットタイプを示すためのフィールド521と、パケット長を示すためのフィールド522と、NACKパケット対象コンテンツを示すためのフィールド523と、selector部を示すフィールド524とからなる。また、図9Cに示すNACKパケット53は、NACK対象コンテンツおよびパケットタイプを示すためのフィールド531と、selector部を示すフィールド532とからなる。図9Dに示すNACKパケット54は、NACK対象コンテンツおよびパケットタイプを示すためのフィールド541からなる。図9Eに示すNACKパケット55は、パケットタイプを示すためのフィールド551と、NACK対象コンテンツを示すためのフィールド552とからなる。
図10A〜図10Eは、代替コンテンツデータに関する情報を含むNACKパケットの構成の一例を示す図である。図9A〜図9Eと同様の要素には同一の符号を付しており、詳細な説明は省略する。
図10A〜図10Eに示すNACKパケットは、図9A〜図9EのNACKパケットに代替コンテンツデータに関する情報を示すためのフィールドが加えられている。より具体的には、図10Aに示すNACKパケット61には、さらに、代替コンテンツデータに関する情報を示すためのフィールド614が含まれている。図10Bに示すNACKパケット62には、さらに、代替コンテンツデータに関する情報を示すためのフィールド625が含まれている。図10Cに示すNACKパケット63には、さらに、代替コンテンツデータに関する情報を示すためのフィールド633が含まれており、図10Dに示すNACKパケット64には、さらに、代替コンテンツデータに関する情報を示すためのフィールド642が含まれている。図10Eに示すNACKパケット65には、さらに、代替コンテンツデータに関する情報を示すためのフィールド653が含まれている。
図10A〜図10Eに示すNACKパケットに含まれる代替コンテンツデータに関する情報を示すためのフィールドそれぞれにはルータ20のキャッシュ201内に存在していた代替コンテンツデータの名前などが書き込まれる。
図11A〜図11Eは、代替コンテンツデータに関する情報を含むNACKパケットの構成の別の一例を示す図である。図9A〜図9Eおよび図10A〜図10Eと同様の要素には同一の符号を付しており、詳細な説明は省略する。
図11A〜図11Eに示すNACKパケット71〜75はそれぞれ、パケットタイプを示すためのフィールド711〜751に、代替コンテンツデータに関する情報を含むNACKパケットであることを示すために、Type:ALT_NACKと記載されている場合が示されている。
[代替コンテンツデータ]
ルータ20の代替コンテンツ探索部203は、代替コンテンツデータとして、興味パケットで要求されるコンテンツデータと同一または類似のコンテンツデータがキャッシュ201内に存在するかを一定の基準に基づいて探索する。
以下、興味パケットで要求されるコンテンツデータが動画コンテンツであるとした場合において、同一または類似のコンテンツデータを探索する際の基準の一例を示す。
例えば、配信および配信の要求に用いる動画コンテンツデータの名前として、動画コンテンツデータ自身の名前、および動画コンテンツデータの属性に関する情報を含むとする。
また、動画コンテンツデータの属性に関する情報は、動画コンテンツデータの時間区間の情報を含む。更に、動画コンテンツデータの属性に関する情報は、動画コンテンツデータの解像度、エンコード時のビットレート、動画コンテンツデータのフレームレート、動画コンテンツデータの色空間のうちの少なくとも1つ含むものとする。
この場合、例えば、興味パケットで要求される名前に対応する動画コンテンツデータ自身の名前と同一かつ興味パケットで要求される名前に含まれる時間区間と同一の時間区間のコンテンツであって、1)解像度が異なるもの、2)エンコード時のビットレートが異なるもの、3)動画コンテンツデータのフレームレートが異なるもの、もしくは、4)動画コンテンツデータの色空間が異なるものを同一のコンテンツデータとして探索されてもよい。
また、動画コンテンツデータの属性に関する情報は、動画コンテンツデータの中の撮影対象をしたときの角度、撮影対象の被写体、撮影時の画角を含むものとする。
この場合、例えば、興味パケットで要求される名前に対応する動画コンテンツデータ自身の名前と同一あって、1)コンテンツの時間区間が近いもの、2)撮影された角度が異なるもの、3)撮影対象の被写体が異なるもの、4)撮影時の画角が異なっているもの、もしくは、5)撮影場所の位置情報が異なるものを、類似のコンテンツデータとして探索されてもよい。
次に、以上の基準により代替コンテンツ探索部203が代替コンテンツデータの探索する際の手順の一例について説明する。
ここで、例えば自身の名前が「/video/a/」のコンテンツデータが1Mbpsでエンコードされており、そのコンテンツデータの1秒から10秒までのコンテンツデータに対する興味パケットに含まれるコンテンツデータの名前が「/video/a/1Mbps/1s-10s」のように表されて発行されているとする。この場合、代替コンテンツ探索部203は、まず、キャッシュ201内に「/video/a/」に一致するコンテンツデータがないかどうかを探索する。そして、一致するものがあった場合、ビットレートが異なるが、データ区間が同一であるようなコンテンツデータ(例えば「/video/a/2Mbps/1s-10s」のようなコンテンツデータ)があるとすれば、このコンテンツデータは興味パケットで要求されたコンテンツデータの名前に対応するコンテンツデータと同一のコンテンツデータであり、代替コンテンツデータであるとして探索を終了する。このようにして、NACKパケット生成部205は、代替コンテンツデータに関する情報をNACKパケットに含めことができる。
なお、上記では、代替コンテンツデータが動画コンテンツであるとして説明したがそれに限らない。代替コンテンツの対象となるのは動画だけにとどまるものではない。たとえば、次に説明するように一般的なセンサデータにおける代替コンテンツデータでもよい。すなわち、例えばセンサデータ全体を示す名前が同一のコンテンツであって、1)データのサンプリング周期が異なるもの、2)データの集計方法が異なるもの、もしくは、3)データの計測精度が異なるもの、を興味パケットで要求されるコンテンツデータと同一のコンテンツデータとして探索されるとしてもよい。
この場合、興味パケットに含まれる名前、代替コンテンツデータの名前には、それぞれ、センサデータ全体を示す名前、およびセンサデータの属性の情報として、データのサンプリング周期、データの集計方法、データの計測精度のうちの少なくとも1つが含まれていることが必要である。
また、例えば、センサデータ全体を示す名前が同一のコンテンツであって、1)データの集計場所を示す位置情報が近接しているもの、2)データの要素数が異なるもの、もしくは、3)データ計測の時間区間が近接しているものを、興味パケットで要求されるコンテンツデータと類似のコンテンツデータとして探索されるとしてもよい。
この場合、興味パケットに含まれる名前、代替コンテンツデータの名前には、それぞれ、センサデータ全体を示す名前、およびセンサデータの属性の情報として、データの集計場所を示す位置情報、データの要素数、データ計測の時間区間のうちの少なくとも1つが含まれていることが必要である。
なお、データの集計場所を示す位置情報が近接しているかどうかの判断、およびデータ計測の時間区間が近接しているかどうかの判断、に関してはそれぞれ、ルータ21内に判断するための条件または値などを記憶しておき、記憶した条件または値に従って判断すればよい。
[受信端末の動作]
次に、本実施の形態における受信端末10の動作について説明する。
図12は、実施の形態1における受信端末10がNACKパケットを受信した際の動作を示すフローチャートである。
まず、CCN網40において輻輳が発生し、データパケットの受信が困難であった場合、受信端末10はNACKパケットを受信する。
次に、受信端末10は、受信したNACKパケットに、代替コンテンツにデータ関する情報が含まれているかを確認する(S401)。
NACKパケットに代替コンテンツデータに関する情報が含まれていなかった場合(S401でNo)、受信端末10は、NACKパケットを受け取ったコンテンツデータについて再度興味パケットを生成し、CCN網40に対し興味パケットの再送信を行う(S406)。
一方、S401において、受信したNACKパケットに代替コンテンツデータに関する情報が含まれていた場合(S401でYes)、受信端末10の輻輳制御部103は、受信データ管理部105に問い合わせを行い、興味パケットに含まれる送信を要求するコンテンツデータの名前を代替コンテンツデータの名前に切り替えてよいかどうかを判断する(S404)。
興味パケットの送信対象を切り替え不可だった場合(S404でNo)には、受信端末10は、NACKパケットを受け取ったコンテンツデータについて再度興味パケットを作成し(S402)、CCN網40に対し興味パケットの再送信を行う(S406)。
一方、S404において、興味パケットの送出先名前空間を変更することが可能であったことなどにより、興味パケットに含まれるコンテンツデータの名前を代替コンテンツデータの名前に切り替える場合(S404でYes)、受信端末10は、代替コンテンツデータの名前を含む興味パケットを作成する(S405)。そして、作成した興味パケットをCCN網40に送信する(S406)。
このように、NACKパケットに代替コンテンツデータに関する情報が含まれている場合、受信端末10は輻輳の発生時に代替コンテンツデータを例えば、ルータ20から素早く取得することができる。また、CCN網40に対する輻輳制御も行えるのでCCN網40も輻輳状態から素早く抜け出すことができる。
[実施の形態1の効果等]
以上のように、本実施の形態によれば、輻輳によるコンテンツデータの配信の停滞を抑制することができるータ、端末、およびそれらの輻輳制御方法を実現することができる。
より具体的には、ルータ20は、輻輳の発生を検知すると自身のキャッシュ201内に存在している代替コンテンツデータに関する情報をNACKパケットに含めて受信端末10に送信し、受信端末10が、対象のコンテンツデータを代替コンテンツデータに切り替えることができる。それにより、ルータ20は、受信端末10に、輻輳の発生時に輻輳の発生しているリンクにトラフィックを発生させることなく、途切れなくコンテンツデータ(代替コンテンツデータ)を取得させることができる。
言い換えると、受信端末10は、代替コンテンツデータに関する情報を含むNACKパケットを受信することで、受信端末10はその代替コンテンツデータに関する情報に基づき、送信する興味パケットに含める送信対象のコンテンツデータの名前を代替コンテンツデータの名前に切り替えることができる。それにより、受信端末10は、輻輳が発生したネットワークのリンクに対してコンテンツデータを要求せずに、別のリンクから代替コンテンツデータを取得することができる。このようにして、受信端末10は、輻輳状態のネットワークのリンクを回避し、リアルタイム性あるコンテンツデータの配信の停滞を抑制できるだけでなく、その輻輳を早期に収束できる輻輳制御技術を実現することができる。
このように、本実施の形態では、CCN網40を利用したコンテンツデータの配信において、輻輳が発生してもルータ20をCCN網40に接続し、受信端末10とパブリッシャー30との間を中継するルータ20のキャッシュを有効に利用することで輻輳の回避を行える効率的なネットワーク利用と、輻輳の収束を行うことが可能な輻輳制御技術を実現することができる。
(実施の形態2)
実施の形態1では、輻輳が発生したリンクと受信端末10との間に単一のルータ20のみが存在する場合を例に挙げて説明した。しかし、実際のCCN網40では受信端末10とパブリッシャー30との間には多数のルータが存在する。また各ルータのキャッシュには異なる名前のコンテンツデータが記憶されていることも考えられる。
以下、この場合の例を、本実施の形態として説明する。
[コンテンツ配信システムの構成]
図13は、実施の形態2におけるコンテンツ配信システム200の構成の一例を示す図である。コンテンツ配信システム200は、複数の受信端末と、それぞれキャッシュを有する複数のルータと、複数のパブリッシャーとを備える。本実施の形態でも、説明を簡単にするため、コンテンツ配信システム200は、受信端末10と、ルータ20と、ルータ21と、パブリッシャー30と、パブリッシャー31とで構成されているとして以下説明する。なお、図3と同様の要素には同一の符号を付しており、詳細な説明は省略する。
本実施の形態では、図13に示すように、受信端末10は、ルータ20およびルータ21を介してパブリッシャー30およびパブリッシャー31と接続されている。ルータ20およびルータ21は、受信端末10以外のユーザによるコンテンツデータの取得処理によりそれぞれのキャッシュ内に名前「video/a/2Mbps」および「video/a/1Mbps」のコンテンツデータを記憶しているものとする。
パブリッシャー30およびパブリッシャー31の構成は、実施の形態1で説明したパブリッシャー30と同様のため、ここでの説明は省略する。また、パブリッシャー30は名前「video/a/512kbps」および「video/a/1Mbps」のコンテンツデータをそれぞれ、パブリッシャー30が有する記録媒体に保持しており、パブリッシャー31は名前「video/a/2Mbps」のコンテンツデータをパブリッシャー31が有する記録媒体(図示せず)に保持しているものとする。パブリッシャー31が有する記録媒体とは、例えば、メモリ、またはハードディスクといった書き込み可能な記録媒体である。
また、ルータ20およびルータ21の構成は、実施の形態1で説明したルータ20と同様であるが、受信部202およびNACKパケット生成部205のみ、動作が一部異なるので、説明する。
受信部202は、興味パケット、コンテンツパケットおよびNACKパケットを受信する。より具体的には、受信部202は、輻輳の発生を通知するためのNACKパケットを受信する。本実施の形態では、受信部202は、輻輳の発生を通知するためのNACKパケットだけでなく、輻輳の発生を通知するためのNACKパケットであって代替コンテンツデータに関する情報を含むNACKパケット(第2のNACKパケット)を受信する。
NACKパケット生成部205は、輻輳の発生時にNACKパケット(第1のNACKパケット)を生成する。より具体的には、NACKパケット生成部205は、受信部202が興味パケットを受信し、かつ、ネットワーク監視部204が輻輳の発生を検知した場合、輻輳の発生を通知するためのNACKパケットを生成する。NACKパケット生成部205は、興味パケットに含まれる名前に対応するコンテンツデータを代替する代替コンテンツデータがキャッシュ201に記憶されている場合には、上記NACKパケットに、代替コンテンツデータに関する情報を含めたNACKパケットを生成する。
本実施の形態では、NACKパケット生成部205は、受信部202で代替コンテンツデータ(第2の代替コンテンツデータ)に関する情報を含むNACKパケットを受信し、かつ、当該NACKパケットに含まれる名前に対応するコンテンツデータを代替する代替コンテンツデータがキャッシュ201に記憶されている場合には、受信部202で受信した当該NACKパケットに、代替コンテンツデータに関する情報をさらに含めたNACKパケットを新たに生成する。ここで、第2の代替コンテンツデータは、興味パケットに含まれる名前に対応するコンテンツデータを代替する、コンテンツデータである。
そして、送信部206は、NACKパケット生成部205により生成された新たなNACKパケットを送信する。
このように各ルータ(ルータ20およびルータ21)のキャッシュに同一内容のコンテンツであるがビットレートが異なるコンテンツデータが記憶されており、あるルータ21とパブリッシャー30の間で輻輳が発生した場合、実施の形態1で述べたような単一の代替コンテンツデータを提示するのではなく、各ルータが記憶する複数の異なるコンテンツデータを代替コンテンツデータとして提示する。これにより受信端末10に、より適した輻輳制御を行わせることができる。
以下、図14を用いて具体的にコンテンツ配信システム200の動作について説明する。
[コンテンツ配信システムの動作]
図14は、実施の形態2におけるコンテンツ配信システム200の処理フローを示すシーケンス図である。
まず、受信端末10は、名前「video/a/512kbps」のコンテンツデータに対する興味パケットを発行して送信する(S501)。
次に、興味パケットを受信したルータ20は、受信した興味パケットをルータ21に転送する(S502)。なお、ルータ20は、受信端末10が発行した興味パケットに記載された名前と同一の名前に対する興味パケットに関する情報がPIT(不図示)に既に存在した場合は、この興味パケットは転送せず、この興味パケットを受信したフェイスの情報のみを記憶し、処理を終了する。
次に、興味パケットを受信したルータ21は、パブリッシャー30に向けて興味パケットを転送しようとする。ここで、ルータ21がこの興味パケットの転送を行うとき、ルータ21とパブリッシャー30の間で輻輳が発生しているのか否かを判断し、輻輳が発生していると判断すると、ルータ21は輻輳を検知する(S503)。
次に、輻輳を検知したルータ21は、自身のキャッシュ内に要求されたコンテンツデータの代替となる代替コンテンツデータが存在しているかどうかを探索する。本実施の形態では、ルータ21は、キャッシュに記憶している名前「video/a/1Mbps」のコンテンツデータを代替コンテンツデータとして探索することができる。そのため、ルータ21は、代替コンテンツデータに関する情報として例えば名前「video/a/1Mbps」を含むNACKパケットを作成する。そして、ルータ21は、作成した代替コンテンツデータ「video/a/1Mbps」に関する情報を含むNACKパケットをルータ20に対して送信する(S504)。
次に、代替コンテンツデータ「video/a/1Mbps」に関する情報を含むNACKパケットを受信したルータ20は、さらに、自身のキャッシュ内に要求されたコンテンツデータの代替となる代替コンテンツデータが存在しているかどうかを探索する。本実施の形態では、ルータ20は、キャッシュに記憶している名前「video/a/2Mbps」のコンテンツデータを代替コンテンツデータとして探索することができる。そのため、ルータ20は、代替コンテンツデータに関する情報に、名前「video/a/2Mbps」を追記したNACKパケットを新たに作成する
(S505)。
次に、ルータ20は、代替コンテンツデータ「video/a/2Mbps」に関する情報を追記したNACKパケットを、受信端末10に対して送信(転送)する(S506)。
次に、受信端末10は、代替コンテンツデータに関する情報を含むNACKパケットから、輻輳が発生しており要求した名前「video/a/512kbps」のコンテンツデータ自体を取得することはできないが 名前「video/a/1Mbps」と名前「video/a/2Mbps」の代替コンテンツデータが存在し取得可能であると知ることができる。そして、受信端末10は、代替コンテンツへの興味パケットの切り替えを判断する(S507)。
次に、受信端末10は、NACKパケットに含まれる代替コンテンツデータに関する情報から自身に最適な代替コンテンツデータを選択し、選択した代替コンテンツデータを対象とする興味パケットを発行して再送信する。本実施の形態では、受信端末10は、名前「video/a/2Mbps」の代替コンテンツデータに対する興味パケットを発行して送信する(S508)。
次に、名前「video/a/2Mbps」の代替コンテンツデータに対する興味パケットを受信したルータ20は、自身のキャッシュ201内に名前「video/a/2Mbps」の代替コンテンツデータが存在するので、名前「video/a/2Mbps」の代替コンテンツデータのデータパケットを受信端末10に送信する(S509)。
最後に、受信端末10は、名前「video/a/2Mbps」の代替コンテンツデータのデータパケットを受信する(S510)。
このようにして、受信端末10は、輻輳の回避を行いながら代替コンテンツデータを受信することができる。つまり、代替コンテンツデータに関する情報に複数の代替コンテンツデータに関する情報を含めることにより、受信端末10は、輻輳の発生しているリンクにトラフィックを発生させることなく、状況に合わせた最適な代替コンテンツデータを取得できる。
[NACKパケット転送処理の詳細]
次に、図14におけるS505の詳細について説明する。以下は、ルータ20に限る処理ではないが、ルータ20を他のルータも代表するとして説明する。
図15は、実施の形態2におけるルータ20のNACKパケット発行処理を示すフローチャートである。
まず、ルータ20の受信部202がNACKパケットを受信し、S505に示すNACKパケット発行処理に進んだとする。
ここで、NACKパケットは、輻輳の発生を通知するためのものだけでなく、代替コンテンツデータに関する情報を含んでいるとする。
この場合、代替コンテンツ探索部203は、自身のキャッシュ201の内部にさらに代替コンテンツデータがあるかどうかを探索する(S5051)。
次に、キャッシュ201の内部に代替コンテンツデータがあったかを確認し(S5052)、キャッシュ201の内部に代替コンテンツデータがなかった場合(S5052でNo)には、当該NACKパケットをそのまま送信部206に渡す(S5053)。
一方、S5052において、キャッシュ201の内部に代替コンテンツデータがあった場合(S5052でYes)には、当該NACKパケットの代替コンテンツデータに関する情報に、探索した代替コンテンツデータの名前など、探索した代替コンテンツデータに関する情報を追記したNACKパケットを新たに生成する(S5054)。
そして、ルータ20の送信部206は、S5053のNACKパケットもしくはS5054生成したNACKパケットを受信端末10に送信する(S506)。
[全体処理シーケンス]
次に、図16を用いて、本実施の形態におけるコンテンツ配信システム200の全体処理シーケンスについて説明する。
図16は、実施の形態2におけるコンテンツ配信システム200の全体処理シーケンスを示す図である。なお、図7、図14および図15と同様の要素には同一の符号を付しており、詳細な説明は省略する。
以下、図7、14および図15と異なる処理(S601およびS602)について説明する。
S206において、ルータ20は、輻輳を検知しなかった(つまり、輻輳が発生していないと判断した)場合(S206でNo)、CCN網40からNACKパケットまたはコンテンツデータのデータパケットを受信する。
S601において、ルータ20は、受信したパケットの内容の判別を行い、コンテンツデータのデータパケットを受信したと判断した場合(S601のコンテンツデータのデータパケット)には、そのデータパケットをCCN網40に対して送信する(S601)。
一方、S601において、ルータ20は、NACKパケット受信したと判断した場合(S601のNACKパケット)には、S505に進み、NACKパケット転送処理を行う。
このようにして、受信端末10は、CCN網40から、興味パケットで要求したコンテンツデータもしくはNACKパケットを受信する。
[実施の形態2の効果等]
以上のように、本実施の形態によれば、輻輳によるコンテンツデータの配信の停滞を抑制することができるルータ、端末、およびそれらの輻輳制御方法を実現することができる。
より具体的には、ルータ20は、他のルータにおける代替コンテンツデータに関する情報を含むNACKパケットを受信した場合、当該NACKパケットに、自身のキャッシュ201内に存在している代替コンテンツデータに関する情報をさらに含めて受信端末10に送信する。それにより、受信端末10が、対象のコンテンツデータを複数の代替コンテンツデータの一に切り替えることができる。このようにして、ルータ20は、受信端末10に、輻輳の発生時に輻輳の発生しているリンクにトラフィックを発生させることなく、途切れなくコンテンツデータ(代替コンテンツデータ)を取得させることができる。
なお、実施の形態2では、他のルータにおける代替コンテンツデータに関する情報を含むNACKパケットを受信したときのルータ20の動作を説明した。しかしながら、ルータ20が受信するNACKパケットというのは、受信端末10から送信された興味パケットに対する応答パケットであるため、興味パケットに含まれる名前の情報をそもそも含んでいる(図9A〜図9E参照)。
したがって、他のルータで輻輳を検知し、かつ他のルータが代替コンテンツデータを自身のキャッシュに記憶していない場合、他のルータは、興味パケットに含まれる名前に対応するコンテンツデータの情報を含めたNACKパケットを送信する。この場合、ルータ20は、受信したNACKパケットに含まれるコンテンツデータの情報を用いて、キャッシュ201の中に代替コンテンツデータが存在するかどうかを探索することができる。
そして、ルータ20は、代替コンテンツデータがキャッシュ201の中に存在すれば、NACKパケットに代替コンテンツデータの情報を含めたNACKパケットを新たに生成すればよい。
つまり、本実施の形態の輻輳制御方法等によれば、輻輳状態のネットワークのリンクを回避し、リアルタイム性あるコンテンツデータの配信の停滞を抑制できるだけでなく、その輻輳を早期に収束することができる。
なお、当該NACKパケットにおいて、第1の代替コンテンツデータおよび前記第2の代替コンテンツデータに関する情報は、それぞれ、興味パケットを送信した受信端末10等からルータ20等に到達するまでの距離を示す情報を更に含むとしてもよい。さらに、この距離を示す情報は、興味パケットを送信した端末から前記ルータに到達するまでに経由したルータの数を示すホップ数であってもよい。この場合、例えば、ルータ20におけるNACKパケット生成部205では、ルータ20のキャッシュ201に存在する代替コンテンツデータに関する情報に、さらに当該距離を示す情報として1を入力してもよい。また、NACKパケット生成部205は、ルータ20と異なるルータのキャッシュに存在する代替コンテンツデータに関する情報に含まれる前記距離を示す情報には、1を加えるとしてもよい。
なお、この距離を示す情報は、図10A〜図11Eで説明したNACKパケットの構成において、例えば、代替コンテンツデータに関する情報を示すためのフィールドや、selector部を示すフィールドに含めたらよい。
それにより、受信端末10は、対象のコンテンツデータを複数の代替コンテンツデータの一に切り替える判断をする際に、コンテンツデータの取得を最も短時間で行うために、例えば受信端末10から最も近いルータのキャッシュに記憶されている代替コンテンツデータを選択することなどが可能になる。
以上、本開示によれば、輻輳によるコンテンツデータの配信の停滞を抑制することができるルータ、端末、およびそれらの輻輳制御方法を実現することができる。
以上、本開示の一つまたは複数の態様に係るデバイス、デバイス管理装置、中継装置および端末装置について、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本開示の一つまたは複数の態様の範囲内に含まれてもよい。
例えば、以下のような場合も本開示に含まれる。
(1)上記のサーバ、ルータおよび受信端末(以下では各装置と総称)は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(2)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
(3)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本開示は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本開示は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(5)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。