(58)【調査した分野】(Int.Cl.,DB名)
前記決定手段は、前記ウィンドウ・サイズを変数又は所定の定数で除することにより前記1つの要求メッセージで要求するオブジェクトの数を決定することを特徴とする請求項1に記載のクライアント装置。
前記所定の定数は、前記コンテンツ配信ネットワークに前記クライアント装置が同時に送信できる要求メッセージの数に基づき決定されていることを特徴とする請求項2に記載のクライアント装置。
前記送信手段は、前記減じた値が、前記決定手段が決定したオブジェクトの数より大きくなると、前記決定手段が決定した数のオブジェクトを要求する要求メッセージを前記コンテンツ配信ネットワークに送信することを特徴とする請求項1から4のいずれか1項に記載のクライアント装置。
前記送信手段は、前記減じた値が、前記決定手段が決定したオブジェクトの数より大きくなったかを所定の期間毎に判定することを特徴とする請求項1から4のいずれか1項に記載のクライアント装置。
前記送信手段は、オブジェクトを受信する度に、前記減じた値が、前記決定手段が決定したオブジェクトの数より大きくなったかを判定することを特徴とする請求項1から4のいずれか1項に記載のクライアント装置。
【背景技術】
【0002】
コンテンツを示す名前に基づきコンテンツの配信を行うネットワークが提案されている。特許文献1及び非特許文献1は、その様なネットワークの1つであるコンテンツ・セントリック・ネットワーク(CCN:Content Centric Networking)を開示している。
【0003】
CCNにおいて、コンテンツを公開するサーバ装置は当該コンテンツを1つ以上のチャンクと呼ばれるオブジェクトに分割し、クライアント装置は、この分割されたオブジェクトを指定するインタレスト・パケット(要求メッセージ)をCCNに送信し、オブジェクト単位でコンテンツを取得する。しかしながら、1つのオブジェクトのみを指定するインタレスト・パケットを送信することは非効率であるため、特許文献2は、複数のオブジェクトの範囲を指定するインタレスト・パケットをCCNに送信して、当該複数のオブジェクトを1つのインタレスト・パケットの応答として取得する構成を開示している。
【0004】
また、非特許文献2は、クライアント装置によるインタレスト・パケットの送信制御として、TCPと同様の送信制御を適用することを提案している。
【発明を実施するための形態】
【0012】
以下、本発明の例示的な実施形態について図面を参照して説明する。なお、以下の各図においては実施形態の説明に必要ではない構成要素については図から省略する。また、以下の実施形態は例示であり本発明を実施形態の内容に限定するものではない。
【0013】
図1は、本実施形態によるコンテンツ配信システムの構成図である。コンテンツ配信ネットワーク2には、コンテンツを公開するサーバ装置3と、コンテンツを取得するクライアント装置1が接続される。サーバ装置3は、コンテンツを複数のオブジェクトに分割し、クライアント装置1は、取得する1つ以上のオブジェクトを指定するインタレスト・パケット(要求メッセージ)をコンテンツ配信ネットワーク2に送信する。サーバ装置3は、インタレスト・パケットを受信すると、当該インタレスト・パケットで指定されたオブジェクトをクライアント装置1に向けて送信する。
【0014】
なお、コンテンツ配信ネットワーク2内の各通信装置は、配信したオブジェクトをキャッシュすることができ、キャッシュしているオブジェクトを要求するインタレスト・パケットを受信すると、当該インタレスト・パケットをサーバ装置3に転送することなくキャッシュしているオブジェクトをクライアント装置1に向けて送信することができる。つまり、クライアント装置1は、送信したインタレスト・パケットの応答として、サーバ装置3及び/又はコンテンツ配信ネットワーク2の通信装置からオブジェクトを受信する。なお、コンテンツ配信ネットワーク2内の各通信装置は、インタレスト・パケットで要求された複数のオブジェクトの一部のみをキャッシュしている場合、キャッシュしているオブジェクトをクライアント装置1に送信すると共に、クライアント装置1に送信したオブジェクトの指定を当該インタレスト・パケットから削除して、当該インタレスト・パケットを転送する。したがって、クライアント装置1は、複数のオブジェクトを指定するインタレスト・パケットを送信したとしても、当該複数のオブジェクトを同じタイミングで必ず受信するのではない。
【0015】
図2は、本実施形態によるクライアント装置1の構成図である。入出力部11は、クライアント装置1のユーザとのユーザ・インタフェースである。インタレスト・パケット生成部12は、後述する処理に基づきインタレスト・パケットの送信タイミングと、インタレスト・パケットで指定するオブジェクトの数を決定して、インタレスト・パケットを生成する。送受信部13は、インタレスト・パケット生成部12が生成したインタレスト・パケットをコンテンツ配信ネットワーク2に送信する。
【0016】
図3は、本実施形態によるクライアント装置1のインタレスト・パケット生成部12が実行する処理のフローチャートである。まず、以下の説明において使用する変数及び定数について説明する。W(t)は、時刻tにおけるウィンドウ・サイズである。ここで、ウィンドウ・サイズW(t)は、同時に受信待ちとできるオブジェクトの最大数である。N(t)は時刻tにおいて受信待ちのオブジェクト数である。kは、所定の待ち時間内に受信したオブジェクトの数である。Mは所定の定数である。Lmax(t)は、時刻tにおいて、インタレスト・パケットで指定することができるオブジェクトの最大数である。R(t)は時刻tにおいて、クライアント装置1が新たに要求したいオブジェクトの数である。L(t)は、時刻tにおいてインタレスト・パケットを送信する場合、当該インタレスト・パケットで指定するオブジェクトの数である。
【0017】
S10において、クライアント装置1は、待ち時間内にオブジェクトを受信したかを判定する。待ち時間内においてオブジェクトを受信していないと、クライアント装置1は、S12でウィンドウ・サイズW(t)を半分に変更する。なお、半分にした値が少数となる場合には、切り上げ、切り捨てを行って整数とする。なお、S12においては、ウィンドウ・サイズを減少させれば良く、半分にするのではなく、所定の定数を減じても、所定の定数で除しても良い。一方、待ち時間内において少なくとも1つのオブジェクトを受信していると、クライアント装置1は、S11でウィンドウ・サイズW(t)を1だけ増加させる。なお、S11におけるウィンドウ・サイズの増加は、1を加えることに限定されず、所定の定数を加えても、所定の定数で乗じても良い。クライアント装置1は、S13で、受信待ちのオブジェクト数から、所定の待ち時間内に受信したオブジェクト数kを減じることで、受信待ちのオブジェクト数N(t)を更新する。
【0018】
クライアント装置1は、S14でW(t)と所定の定数MからLmax(t)を求める。具体的には、W(t)/Mの小数点以下を、切り上げ、切り捨て、又は、四捨五入することで整数とし、これをLmax(t)とする。Mを例えば、同時に送信可能なインタレスト・パケットの数とすると、Lmax(t)は、1つのインタレスト・パケットで指定できるオブジェクト数となる。
【0019】
クライアント装置1は、S15で、R(t)がLmax(t)より大きいか否かを判定する。R(t)が、Lmax(t)より大きいと、クライアント装置1は、S16でL(t)をLmax(t)とし、Lmax(t)が、R(t)以下であると、クライアント装置1は、S17でL(t)をR(t)とする。S15からS17の処理は、クライアント装置1が新たに要求したいオブジェクトの数R(t)が、時刻tにおいてインタレスト・パケットで指定できるオブジェクトの最大数Lmax(t)より大きいと、時刻tにおいてインタレスト・パケットを送信する場合に、当該インタレスト・パケットで指定するオブジェクト数L(t)をLmax(t)に限定し、そうでないと、時刻tにおいてインタレスト・パケットを送信する場合に、当該インタレスト・パケットで指定するオブジェクト数をR(t)のままとするための処理である。
【0020】
クライアント装置1は、S18で、W(t)からN(t)を減じた値が、L(t)以上であるか否かを判定する。ウィンドウ・サイズW(t)は、時刻tにおいて、受信待ちとできるオブジェクトの最大数であり、N(t)は、時刻tにおいて、受信待ちのオブジェクト数、つまり、既に要求しているオブジェクト数である。したがって、この差が、オブジェクト数L(t)以上ではないのに、L(t)個のオブジェクトを指定するインタレスト・パケットを送信すると、受信待ちオブジェクト数N(t)はウィンドウ・サイズを超えてしまう。つまり、この差が、オブジェクト数L(t)以上ではないと、時刻tにおいてインタレスト・パケットは送信できないことになる。したがって、この差が、オブジェクト数L(t)以上ではないと、クライアント装置1は、インタレスト・パケットを送信することなくS10からの処理を再開する。一方、この差がオブジェクト数L(t)以上であると、クライアント装置1は、S19で、時刻tにおいてL(t)個のオブジェクトを指定するインタレスト・パケットを送信し、N(t)を更新する。その後、クライアント装置1は、S18での判定が"No"となるまで、S15〜S19の処理を繰り返す。
【0021】
図4は、
図3のフローチャートでの処理を説明するための具体例を示している。なお、以下の例において、クライアント装置1は、多数のオブジェクトを取得するため、Rは常にLmaxより大きく、よって、S15〜S16の処理においては常にL=Lmaxであるものとする。さらに、M=2であり、S14で、Lmaxは、W/Mの少数点以下を切り上げた値とし、S12ではウィンドウ・サイズを半分にした値が少数となる場合には切り上げて整数にするものとする。さらに、初期状態である時刻t=0において、W=1、N=1、L=1とする。
【0022】
時刻t=0から時刻t=1までの間に、クライアント装置1は、1つのオブジェクトを受信していたものとする。この場合、時刻t=1のS10は"Yes"となり、S11でW(1)=2となり、S13でN(1)=0となり、S14〜S17でL(1)=1となる。さらに、S18でW(1)−N(1)=2がL(1)=1以上であるため、クライアント装置1はS19で1つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(1)=1となる。その後の繰り返しのS18においても、W(1)−N(1)=1がL(1)=1以上であるため、クライアント装置1はS19で1つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(1)=2となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0023】
時刻t=1からt=2までの間に、クライアント装置1は、2つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(2)=3となり、S13でN(2)=0となり、S14〜S17でL(2)=2となる。さらに、S18でW(2)−N(2)=3がL(2)=2以上であるため、クライアント装置1はS19で2つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(2)=2となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0024】
時刻t=2からt=3までの間に、クライアント装置1は、2つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(3)=4となり、S13でN(3)=0となり、S14〜S17でL(3)=2となる。さらに、S18でW(3)−N(3)=4がL(3)=2以上であるため、クライアント装置1はS19で2つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(3)=2となる。その後の繰り返しのS18においても、W(3)−N(3)=2がL(3)=2以上であるため、クライアント装置1はS19で2つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(3)=4となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0025】
時刻t=3からt=4までの間に、クライアント装置1は、4つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(4)=5となり、S13でN(4)=0となり、S14〜S17でL(4)=3となる。さらに、S18でW(4)−N(4)=5がL(4)=3以上であるため、クライアント装置1はS19で3つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(4)=3となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0026】
時刻t=4からt=5までの間に、クライアント装置1は、3つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(5)=6となり、S13でN(5)=0となり、S14〜S17でL(4)=3となる。さらに、S18でW(5)−N(5)=6がL(5)=3以上であるため、クライアント装置1はS19で3つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(5)=3となる。その後の繰り返しのS18においても、W(5)−N(5)=3がL(3)=3以上であるため、クライアント装置1はS19で3つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(3)=6となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0027】
時刻t=5からt=6までの間に、クライアント装置1は、6つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(6)=7となり、S13でN(6)=0となり、S14〜S17でL(6)=4となる。さらに、S18でW(6)−N(6)=7がL(5)=4以上であるため、クライアント装置1はS19で4つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(6)=4となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0028】
時刻t=6からt=7までの間に、クライアント装置1は、4つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(7)=8となり、S13でN(7)=0となり、S14〜S17でL(7)=4となる。さらに、S18でW(7)−N(7)=8がL(7)=4以上であるため、クライアント装置1はS19で4つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(7)=4となる。その後の繰り返しのS18においても、W(7)−N(7)=4がL(7)=4以上であるため、クライアント装置1はS19で4つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(7)=8となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0029】
時刻t=7からt=8までの間に、クライアント装置1は、6つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(8)=9となり、S13でN(8)=2となり、S14〜S17でL(8)=5となる。さらに、S18でW(8)−N(8)=7がL(7)=5以上であるため、クライアント装置1はS19で5つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(8)=7となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0030】
時刻t=8からt=9までの間に、クライアント装置1は、6つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(9)=10となり、S13でN(9)=1となり、S14〜S17でL(9)=5となる。さらに、S18でW(9)−N(9)=9がL(9)=5以上であるため、クライアント装置1はS19で5つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(9)=6となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0031】
時刻t=9からt=10までの間に、クライアント装置1は、6つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(10)=11となり、S13でN(10)=0となり、S14〜S17でL(10)=6となる。さらに、S18でW(10)−N(10)=11がL(10)=6以上であるため、クライアント装置1はS19で6つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(10)=6となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0032】
時刻t=10からt=11までの間に、クライアント装置1は、6つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(11)=12となり、S13でN(11)=0となり、S14〜S17でL(11)=6となる。さらに、S18でW(11)−N(11)=12がL(10)=6以上であるため、クライアント装置1はS19で6つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(11)=6となる。その後の繰り返しのS18においても、W(11)−N(11)=6がL(11)=6以上であるため、クライアント装置1はS19で6つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(11)=12となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0033】
時刻t=11からt=12までの間に、クライアント装置1は、6つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(12)=13となり、S13でN(12)=6となり、S14〜S17でL(12)=7となる。さらに、S18でW(12)−N(12)=7がL(12)=7以上であるため、クライアント装置1はS19で7つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(12)=13となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0034】
時刻t=12からt=13までの間に、クライアント装置1は、6つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(13)=14となり、S13でN(13)=7となり、S14〜S17でL(13)=7となる。さらに、S18でW(13)−N(13)=7がL(13)=7以上であるため、クライアント装置1はS19で7つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(13)=14となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0035】
時刻t=13からt=14までの間に、クライアント装置1は、6つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(14)=15となり、S13でN(14)=8となり、S14〜S17でL(14)=8となる。この場合、S18でW(14)−N(14)=7がL(14)=8より小さいため、クライアント装置1は、インタレスト・パケットを送信することなく処理はS10に戻る。
【0036】
時刻t=14からt=15までの間に、クライアント装置1は、6つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(15)=16となり、S13でN(15)=2となり、S14〜S17でL(15)=8となる。さらに、S18でW(15)−N(15)=14がL(15)=8以上であるため、クライアント装置1はS19で8つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(15)=10となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0037】
時刻t=15からt=16までの間に、クライアント装置1は、オブジェクトを受信しなかったものとする。この場合、S10は"No"となり、S12でW(16)=8となり、S13でN(16)=10となり、S14〜S17でL(16)=4となる。この場合、S18は、"No"となるため処理はS10に戻る。
【0038】
時刻t=16からt=17までの間に、クライアント装置1は、2つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(17)=9となり、S13でN(17)=8となり、S14〜S17でL(17)=5となる。この場合、S18は、"No"となるため処理はS10に戻る。
【0039】
時刻t=17からt=18までの間に、クライアント装置1は、2つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(18)=10となり、S13でN(18)=6となり、S14〜S17でL(18)=5となる。この場合、S18は、"No"となるため処理はS10に戻る。
【0040】
時刻t=18からt=19までの間に、クライアント装置1は、2つのオブジェクトを受信していたものとする。この場合、S10は"Yes"となり、S11でW(19)=11となり、S13でN(19)=4となり、S14〜S17でL(18)=6となる。さらに、S18でW(19)−N(19)=7がL(15)=6以上であるため、クライアント装置1はS19で6つのオブジェクトを指定するインタレスト・パケットを送信し、よって、N(19)=10となる。その後の繰り返しのS18は、"No"となるため処理はS10に戻る。
【0041】
以上、時刻tにおいて、1つのインタレスト・パケットに含めるオブジェクトの数の最大値Lmaxを、時刻tにおいて、受信待ち状態とできるオブジェクトの最大数を示すウィンドウ・サイズW(t)と、所定の値Mから求めて決定する。Mは、例えば、同時に送信できるインタレスト・パケットの数に基づき求めた値とする。そして、時刻tにおいて、1つのインタレスト・パケットに含めるオブジェクトの数を、この最大値Lmaxから求め、時刻tにおいて受信待ち状態であるオブジェクトの数N(t)と、ウィンドウ・サイズW(t)を比較することでインタレスト・パケットの送信タイミングを決定する。この構成により、インタレスト・パケットの送信タイミングと、当該インタレスト・パケットで指定するオブジェクト数を適切な値とし、ネットワークの輻輳を抑えることができる。
【0042】
なお、上記実施形態において、値Mを所定値としていたが、値Mを変数とすることができる。例えば、時刻tにおけるウィンドウ・サイズW(t)を所定の定数Xで除することで時刻tにおける値M(t)を求める構成とすることができる。なお、定数Xは、時刻に拘らず、インタレスト・パケットで指定できるオブジェクトの最大限度数とすることができる。また、値Mの最小値Mminを決めて置き、ウィンドウ・サイズW(t)を所定の定数Xで除した値が、最小値Mminより小さくなる場合には、時刻tにおけるM(t)を、Mminとする構成であっても良い。
【0043】
さらに、
図3のフローチャートは、所定の期間毎にS10からの処理を行うものであったが、1つのオブジェクトを受信するか、1つのオブジェクトに対する待ち時間が経過する度にS10からの処理を行うものであっても良い。
【0044】
また、本発明によるクライアント装置1は、コンピュータを上記クライアント装置1として動作させるプログラムにより実現することができる。これらコンピュータプログラムは、コンピュータが読み取り可能な記憶媒体に記憶されて、又は、ネットワーク経由で配布が可能なものである。