ようこそゲストさん

無能日記

メッセージ欄

2006年10月の日記

一覧で表示する

2006/10/01(日) ストリーミングしてみよう(その2)

はてブ 2007/04/09 13:28 R&D (streaming)poti
先週何も書いてなかったが、ストリーミングの作業は地道に進行中
とりあえず、今はまってる問題を解決するには
1、MPEG2エンコード可能なカードを買ってきて別のマシンにつける。
2、MPEG4エンコードできるものにする。
3、マルチキャストルーティングができる無線ルータを買う。
4、そもそもマルチキャストをあきらめる。
ぐらいだとおもう。

で、これだけ読むと前回とのつながりが全くないので
今までやってきたことを書いておこう。

まず、ストリーミングしようという話をM君にしてみたところ
マルチキャストして見たら面白いのではという話になりました。
そこで、マルチキャストの勉強もかねて、サーバーからローカルな
ネットワークにマルチキャスト配信するように設定をしてみました。
使ったのはmroutdでDVMRPをもちいたマルチキャストルーティングを行う
これそのものに結構はまったorz。
<- 他localnet                             自分localnet        ADSLインターネット ->
  ----|無線AP1|^^^^^|無線AP2|^^^^|無線PCルータ|-------|ルータA|-----------
               wds                (FreeBSD)      |             |
                                             |自分PC|          -----|配信PC|
                                                               DMZ
実際はこんな感じのネットワークでごにょごにょやっています。
無線PCルータとルータAに対してmroutedの設定をいれてみました。
すると自分がマルチキャストを受信しているとigmp reportが投げられたあとに
ルータAの下のノードに対してpruneメッセージがルータAから発行されて
自分がマルチキャストを受けられなくなった。何故?
自分localネットワーク自体は非ブロードキャストにするつもりはないので。。。
mroutedの設定で、pruneをしないようにする設定があったので(推奨されないようですが)
設定してみると、受信できるようになった。
しかしこの方法が正しいのかどうかは正直不明です。。。

つぎに、マルチキャスト配信ができるようになったので、WEBでの配信の段階に移った。
ここで、考えないといけない点は、自分はADSLなためUP帯域がとても貧弱1Mbps程度
しかし、他のローカルネットは光なのでアップ帯域は豊富にある。
そこで、他のローカルネット上でマルチキャスト配信のデータを受信してそれをWEB配信にする

プログラムをざっくり書いて、テストをしてみた。
#マルチキャスト名プログラムなんて書いたことなかったけど、
#setsockoptするだけだったのね

すると、みれない。。。
そもそもVLCでしかみれないんだが、自分の部屋からは見れるのに
WEBからはみれない。。。
なんでだとおもい、いろいろつついているうちに、
ローカルネットワークへの疎通がなくなったので原因を調査してみると

無線PCルータのassosiationが切れていた。
無線AP2(buffalo)とつながらなくなっていた、しかもこの状態になると
無線AP2の再起動が必須になるようです。。。

なんだそれとおもいつつ調べてみると、
どうやら、高ビットレートのデータを流すとこれが起こるらしい。。えーーー!
iperfではかったところ2Mbps程度なら問題ないようだったが、通常の通信もあるため
マルチキャストの配信のデータソースのビットレートを1Mbpsにした。
しょぼーん

でも、問題はこれだけではなかった、ビットレートを下げWEBからたたいてみると
見れるようにはなった?というか途切れ途切れ途切れ。。。。
みれたもんじゃない
なんでだー
ということで原因を調べてみる。
自分ローカルネットから見ると普通に見れる
無線回りのような気がして、無線PCルータから他のlocalnetに対してpingを打ってみる
send(): no buffer space avaliavble。。。。
これか。。。
ここでおちてるのか
検証のため、他のローカルネットで通常のマルチキャストを拾ってみるとWEBから見れる
それとほぼ同じ。。。。
まじか。。。
FreeBSD+athrosめ!

困った。
とりあえず、athrosのドライバ周りを除いてみてrxbuf,txbufをあげてやるも変わらず
というか送信が追いついてないんだからあたりまえですよ。。。
ちなみにカーネルコンフィグレーションの設定は以下
options ATH_DEBUG
options ATH_RXBUF=80
options ATH_TXBUF=200

といことで、この問題を解決させる方法として
はじめにあげた4つが考えられる。

正直、本来の目標としてはWEBで配信することなので、マルチキャストじゃないんだけど。。。
4番かなー。。。とか
でもってADSLを光にする。
これですべて解決?