DVTSによる動画配信実験とその検証
琉球大学理工学研究科 緒方健一
1.DVTSについて
DVTS (Digital Video Transport System)とは DV ( Digital Video ) over IP を実現するためのソフトウェアで,これまでFreeBSD への実装が行われてきた.2001年8月1日にはLinuxへの対応も行われ,DV over IP の実現方法として大変興味ある手段となっている.現在はWIDEプロジェクトにおいて,FreeBSDやLinux,MacOS X対応版が公開されている.また,DVTSはIPv6への対応も行われているほか,高速かつ大容量のデータの送受信を行うメルチメディアアプリ−ケーションとしての側面も備えている.
2.実験の目的
本実験では,Linuxに対応したDVTSを実ネットワーク上で動作・検証することで,Linuxにおける DV over IP 実現に必要な機器構成やネットワーク帯域についての検証を行う.また,IPv4及びIPv6それぞれの環境においての動作確認を行うことも目的の一つである.
3.システム構成
本実験では,琉球大学総合情報処理センター及び琉球大学情報工学科のネットワークを使用した.
また,DVデータの送受信(DVTS)のため,表1の構成のLinux Boxを用意した.
表1 Linux Box のシステム構成

* いずれのLinux Box も,IEEE1394を使用するための機能(kernel再構成/ライブラリの追加)を行ってある.なお,kernel-2.4.6ac5を用いるのは,IEEE1394関連コードの改良でPC自体の起動に不具合が発生するためである.ただし,カーネルソース内の”video1394.c”と”video1394.h”の2つのドライバファイルについては,kernel-2.4.9などの比較的新しいカーネルソースのものを流用して利用した.( 参考URL:http://www.sfc.wide.ad.jp/DVTS/software/Linux/ )
* 改良版のkernel-2.4.12等では,システム起動時にドライバモジュールの組み込みの段階で問題が発生することが確認できているため,今回のシステム構成でDVTSによる送信を行う場合は,kernel-2.4.6ac5 が適当かと考えられる.(kernel-2.4.12等でのpcilynx.oモジュールの組み込みの不具合)
* なお,システム構成に必要なソフトウェア類は以下のURLを参考に取得した
・ http://www.sfc.wide.ad.jp/DVTS/
・ http://linux1394.sourceforge.net/
4.実験環境
本実験では,DVTSを実装したLinux Box間を帯域の異なるネットワーク構成で接続する形で検証を行った.図1としてそのシステムの基本構成を示す.いずれのLinux Box もIPv4/IPv6での通信が可能であり,IPv4及びIPv6それぞれの環境での実験が可能である.

図1 システム構成(点線の枠内の環境を実験に応じて変更,但し,最大100Mbpsでの接続)
5.実験
1.IPv4環境における動画配信実験

図2 IPv4実験時のネットワーク構成
図2の構成で動画配信実験を行った.中継に利用した機器は Planex FX-16N (10/100M対応スイッチング・ハブ)である.なお,この実験ではコマンドの組み合わせによっては正常に動作しない組み合わせがあった.そのため,Linux Box A が受信(dvsend),Linux Box B が送信(xdvshow)という組み合わせで実験を行った.なお,映像のキャプチャに用いたのはSONY製のDVカメラ(DCR-PC1)である.
機器の接続としては,DVカメラとLinux Box BがFireWire,Linux Box BとLinux Box A間はFX-16Nで中継する形で100Mでのネットワーク接続とした.Linux Box Aでは xdvshow を利用して受信したデータをディスプレイ上に表示し,転送レートなどはDVTSのデフォルト値を用いた.このときのトラヒック流量の変化をMRTGを用いて記録した.その結果が図3及び図4である.

図3 受信側でのトラヒック変化

図4 送信側でのトラヒック変化
この結果から,デフォルトでは約30Mbpsで送受信が行われていることが分かる.また,受信側でのパケットロスについて dvrecv の –L オプションを用いて調査したところ,図5のような結果が表れた.

図5 受信側でのパケットロス
100Mのスイッチング・ハブには実験時に11台のホスト(うち2台で動画配信実験)が接続した状態であったので,それによりパケットロスが発生した可能性がある.ただし,実際にはキャプチャ対象の動きが激しくなる状態を除いて正常に動作することが確認できた.なお,このときの映像は図6のようであった.

図6 IPv4実験時の受信映像(受信側:xdvshow)
この動作検証ではDVTSがLinux間(IPv4環境)において正常に動作することが確認できた.
この実験では,音声の送信までは確認できなかったが,映像については,大きな乱れも無く十分に実用可能であることが確認できた.
2.IPv4環境において2台のスイッチング・ハブを経由する場合

図7 2台のスイッチング・ハブを経由するネットワーク構成
この構成では,送信側はCatalyst1900の 10Mbps のポートに接続され,受信側へは100Mbps のポートから出力という形を取った.そのため,スループットが 10Mbps しか出ず,そこがボトルネックとなり,使用する帯域も10Mbpsと10/100Mbpsのスイッチング・ハブを用いた場合の1/3にまで低下した.これは図8のMRTGの結果からも分かる.
また,Catalyst1900 と Planex FX-16Nを入れ替えた構成でも,10Mbpsの帯域しか使用できない.

図8 ボトルネック機器がある場合のトラヒック変化
あらかじめ予想できたことではあるが,ボトルネックとなるネットワーク機器が存在する場合,使用可能な帯域は,その接続されたネットワーク機器の最大スループットまでにしかならないことが分かる.ただし,DVTSでの映像データの送受信に限って言えば,実際にはデータの一部が大きく欠けるなどの不具合が生じることは無く,正常に動作することが確認できた.図9としてその時の受信映像を示す.

図9 ボトルネック機器がある場合の受信映像(受信側:xdvshow)
3.Pv6環境での動画配信実験
DVTSはIPv6での運用についても考慮されて設計されていることから,実際に,IPv6環境においてパフォーマンスの測定を行った.この実験は図10に示すネットワーク構成を利用した.IPv6アドレスを引数としてDVTSのコマンドを実行した場合,xdvshowによる受信が不可能(映像が全く表示されない)などの不具合があったので,Linux Box A については,kernel を linux-2.4.12ac1 に変更してDVTSのデータ受信コマンドである dvrecv を利用してデータの受信を行い,DVMC-DA2というメディアコンバータを介して,Windows Box に入力し,表示をするように接続方法を変更した.
Windows Box のシステム構成は表2のとおりである.

図10 IPv6環境でのネットワーク構成
表2 Windows Box のシステム構成

* このWindows Boxは dvrecv での映像受信用として用いた.
* All In Wonder へはSony製メディアコンバータ“DVMC-DA2”を経由して コンポジット入力した.
IPv6を利用して実験した場合の帯域使用量についても,IPv4での実験時同様にMRTGで出力したものが図11である.MRTGの結果が示すように,どちらの場合も,約30Mbps程度の帯域を利用していた.(図中の赤丸部分)

図11 IPv6環境での受信側のトラヒック変化
IPv6での実験では,xdvshowが利用できない不具合があったため,先ほどのIPv4での実験との直接の比較は出来ないが,図12に示すような受信データを得ることが出来た.




図12 IPv6環境での受信状況(送信側:dvsend 受信側:dvrecv)
図12はIPv6での実験時に受信した映像である.IPv4での実験時に xdvshow により表示した画面と比べた場合,明らかにデータの損失が発生している.元々パケットロスが起こっているのも理由の一つであると考えられるが,これについては,IPv4を利用してデータの送受信を行った場合にも同様の状態となる(つまり,xdvshow では表示可能だが,dvrecvを使用すると表示はできるもののデータの損失が著しく多くなるため,受信映像に大きな乱れが生じる)ことから,Linux Box Aから Windows Box へのデータの中継のいずれかの段階でデータの損失が起こっていると考えられる.考えられるデータ損失の原因としては,ネットワーク経由で受信したデータを Linux Box Aで再度FireWireに対して送信する部分でのデータ損失などの理由が考えられる.実際に,DVTSのLinuxへの実装は始まったばかりであり,チューニングが必要な部分がいくつか存在すると考えられる.
6.まとめ
IPv4やIPv6といったそれぞれの環境においてDVTSの実験運用を行った結果,コマンドの組み合わせによっては,かなり良好な映像を得ることが出来た.ただし,dvsendと dvrecvの組み合わせでは,IPv4とIPv6のどちらの場合にも,データの一部に損失が発生することが確認できた.これについては,実験に用いたネットワークが専用に設計されたものではなく,実際に運用状況下にあるネットワークを利用したことが一つの理由であると考えられる.また,DVTSのLinuxへの実装が初期段階にあることも理由の一つといえるだろう.また,Gigabit Ethernetなどの高速ネットワークでの環境下で実験すれば,さらに興味深いデータが得られたのではないかと考えられる.100Mbpsのネットワークでもパケットロスが発生することからも,高速ネットワークでの実験事例が必要になってくる.
今回の実験環境では,Gigabit Ethernetなどの高速なネットワーク環境での確認ができなかったので,これについては機会があればぜひ実験及び検証を行っていきたい.