マルチストリームキャスト
動的にリレーツリーを改善できるようにした Peercast のようなものを製作中です。
マルチストリームキャストの特徴
- リレーツリーを動的に組みかえることで、ツリーの偏りを減らす
- 複数の接続を維持することによって、上流切断の際に生じるバッファを防ぐ
マルチストリームキャストのしくみ
各ノードはメインストリーム(実線)からデータを受信しつつ、より遅延の少ないノードを模索するために新たにサブストリーム(点線)の受信を開始します。もしもサブストリームの遅延がメインストリームより小さくなった場合はメインストリームを切断し、サブストリームをメインストリームへ切り替えます。メインストリームが突然切断された時はサブストリームから受信を再開することで、ストリームを途切れさせることなく移行することができます。
現状の問題点
- サブストリームの選択はランダムなので、自分の下流に接続することがある。
- 外部サイトにアクセスしなければ自分のグローバルIPを確定できない。→uPnP対応ルータならできるかもしれない。
- 遅延の確認方法が定期受信である。→ストリームのヘッダパケットのみ受信する方法に変更?