第 7 章 NDN 方式を活用した先回りコンテンツ配信アプリケーション
7.2. 動作フロー
7.2.1. Interest の送信方法
NDN上でのInterestとContent Objectメッセージの交換によるデータ転送の方式としては
TCPのスロースタートフェーズと似ており、送信するInterestを1から指数関数的に増やして いき、タイムアウト発生時にはその値を 1 へと戻すといったメカニズムであることが多い。こ れではデータ転送におけるスループットは上がらず、フロー制御に改善が必要となっている。
さらにスループットが上がらない原因としてはInterestの送信の仕方に影響がある。NDNでのデ ータ転送においてConsumer(Interestを送信する側)は一つのデータにいくつのChunkが含まれて いるのかという情報を知らない。そのため複数のデータを連続的にダウンロードする際、Chunk のヘッダを見てFinalBlockID=1であるもの、つまりデータの最後のChunkが来るまでInterestを フロー制御に従って送信し続けてしまう。16 進数をデータのプレフィックスに付着することで
Interestを作成することができるため、存在しないChunkに対しても送ってしまい、無駄なInterest
を送信するケースが多い。
7.2.1.1. 提案手法1
NDN上でスループットが上がらないこの2つの要因を考慮し、フロー制御方式でInterestを送 信するのではなく、一斉に(バースト的に)Interest を送信するようにした。また、Interest のタイ ムアウトの処理は考慮していなく、レイヤー4 の TCP にパケットロス時の再送などの処理をお 任せし確実にデータが届くような実装とした。さらに、図7.5に示すように一つずつのデータに
対して1つのInterestを送り、そのデータに含まれるChunkの名前を全て取得してからその情報
を元に Interest を送信することによって、無駄な Interest を送信する数を減らすことが可能とな
る。
図 7.5 提案手法1
7.2.1.2. 提案手法2
Consumerがコンテンツのデータサイズを知っていると仮定をし、取得するデータの名前とデ
ータサイズを自身のデータベースに格納した。データサイズを知ることで、そのサイズを
4096byte(1chunkのサイズ)で割ることによって一つのデータにいくつのChunkが存在するのかを
知ることができる。Chunkの名前にはシーケンシャルな16進数がデータの名前に加えつけられ ているので、Chunk数を知ることで一つのデータに対するInterestを発生させることが可能とな る。この実装方法を図3に示す。
図 7.6 提案手法2
なお、データベースにはコンテンツの名前、データサイズと、セグメント番号が表7.1のように
表7.1 コンテンツ情報のデータベース テープル名: Videos_1000kbit
Name Size Number
video_1_1000kbit/video1.m4s 7755 1 video_1_1000kbit/video2.m4s 269851 2 video_1_1000kbit/video3.m4s 221502 3 video_1_1000kbit/video4.m4s 283202 4
… … …
7.2.1.3. 比較
これらのInterestを送信する手法において比較を行った。既存の方式としてはNDNxのデー タ転送コマンド(ndnsendchunks/ndncatchunks2)を用い、それぞれの方式において動画ファイ ルを25 コンテンツ、セグメント1~35を転送するのに要した時間を図7.7に示す。なお、1セ グメントは2sの動画としており、取得した総データサイズは約260MBとする。
図 7.7 ダウンロード時間の比較
既存の方式においてはフロー制御や無駄な Interest の送信などがあり、ダウンロード時間が 非常に長くなってしまっている。提案手法1 についてはChunk 数を知るための Interest/Content
Object交換がオーバーヘッドとなってしまい、ダウンロード速度に影響があることが分かった。
例えば 25人分のコンテンツを 1~35 セグメント要求した場合、実際のコンテンツのデータ転送 を行う前に875個のInterestを送らなければならなくなる。提案手法2では無駄なInterestの送 信がなく、かつバースト的に送信しているため、オーバーヘッドが少なくダウンロード時間が 一番速い結果となった。
78.24
23.40
17.56
0.00 10.00 20.00 30.00 40.00 50.00 60.00 70.00 80.00 90.00
既存の方式 提案手法1 提案手法2
Time(s)
ダウンロード時間