Flash Player 10.1 と RTMFP

RTMFP (Real Time Media Flow Protocol) は Flash Player 10 から追加された新しいプロトコルで、Flash Platform 上での P2P の通信を実現します。Flash Player 10.1 では、この RTMFP の機能が拡張されています。

P2P といっても何種類かの通信型がありますが、Flash Player 10 の (つまり最初に公開された時点での) RTMFP は 1 対 1 通信型のアプリケーション用です。通信する相手それぞれと専用のセッションを張る必要がありました。

これが Flash Player 10.1 では "動的なノードのグループ化によるオーバーレイネットワーク" のサポートにより、"誰" と通信しているかは意識する必要がなくなっています。(基本的にどのグループに属しているかだけ知っていればよい) これにより、多数のノードとの通信が簡単かつ効率的になり、アプリケーションレベルのライブマルチキャスト (データの一斉配信) やスウォーミング (ファイルを複数のノードから同時にダウンロード) それから分散ハッシュテーブル (DHT) 型の分散データ管理も実現できるようになりました。

開発チームによるとスケーラビリティは非常に高く、数百万ユーザ規模でも数秒程度の遅延で情報共有が可能とのことです。(どうやって確認したのか聞いてみたいところではありますが)

また、オーバーレイネットワークとトランスポート層のマルチキャストとの併用もサポートされていて、これにより同一 LAN 内 (IP マルチキャスト可能な範囲) であれば、Flash Player だけで (サーバー無しで) P2P ネットワーク網を構築することができます。

RTMP と RTMFP

RTMP は Flash Player 6 からサポートされているリアルタイム通信用のプロトコルです。RTMP と RTMFP は名前こそ似ていますが (用途も一部被りますが)、かなり正確の異なるプロトコルです。

主な違いは、

  1. RTMP はクライアント/サーバー型、RTMFP は P2P 型
  2. RTMP は TCP ベース、RTMFP は UDP ベース
  3. RTMP は通信中の IP アドレスが固定、RTMFP は IP アドレスが変わっても継続して通信可 (IP モビリティを持つ)

などです。

以下それぞれもう少し詳しく説明します。

RTMP はクライアント/サーバー型、RTMFP は P2P 型

RTMP ではクライアントはサーバー (FMS とか BlazeDS とか) とのみ通信します。いわゆるクライアント/サーバー型と言われる形態ですね。

他のクライアントに情報を送信する場合も、直接クライアント同士は通信せず、常にサーバーを経由してデータストリームが送られます。そのため、クライアントは接続すべきサーバーの情報を知っているだけでよく、他のクライアントのアドレスを気にする必要はありません。

配信相手が複数になっても必要な送信ストリームは 1 つだけです。後はサーバーが面倒看てくれるはずなので。

これに対して、RTMFP はいわゆる P2P 型です。直接クライアント同士が通信します。

そのため RTMFP では通信相手となるクライアントの情報が必要になります。RTMFP では、最初に Stratus 2 または (RTMFP をサポートするであろう次期バージョンの) FMS のような RTMFP 仲介サービスに接続して必要な情報を取得します。

サーバが要るので面倒ですが、クライアント同士で勝手につなげられない & サーバーで接続状況の監視が可能なので、セキュリティ面からはむしろ安心できるかと。(上で書いたように IP マルチキャスト可能な範囲であればサーバーに接続相手を問い合わせることなく P2P 通信を開始できます - その場合でも接続時に確認のダイアログが表示される等の配慮がされています)

RTMP は TCP ベース、RTMFP は UDP ベース

UDP は基本的にデータパケットを送りつけるだけのシンプルなプロトコルで、TCP のようにいろいろな機能を持っている (そのためいろいろな処理を行わなければならない) プロトコルよりも遅延の少ない通信が可能だと言われています。UDP ベースの RTMFP が TCP ベースの RTMP に対して持っている利点の一つです。

一方で、UDP は TCP のようにデータパケットの配信を保障してくれなかったりします。この問題に対応するため RTMFP には配信を保障するための仕組みが入っています。オプションで、保証無し、少し有り、完全保障を選べます。

その他にも、RTMFP にはデータパケットの到着順序の保障や、TCP と親和性のある輻輳制御の機能が実装されています。また、RTMFP は安全性にも配慮されていて、全てのパケットが 128 ビットの AES で暗号化されて送信されます。いわゆる "盗聴" にも強いプロトコルです。

ネットワークの品質が向上していること、H.264/AVC や Speex のようにパケットロス耐性を持つコーデックが Flash Player でサポートされるようになったことを考えると、あまり厳密なデータ保障の要らないケースもそこそこありそうです。UDP ベースのプロトコルを使うには悪くないタイミングなのかもしれません。

IP モビリティ

RTFMP はセッション途中で瞬断があった場合でも直ぐに通信を再開することができます。無線 LAN がちょっと切れたとかいう場合には役に立ちそうです。そもそも UDP は信頼性のない通信プロトコルなので、多少のパケットのロスは RTMFP から見ると想定された範囲の事象、ということのようです。(おそらく)

また、クライアントは各クライアントが持つ固有の ID で識別されます。そのためクライアント ID が変わらなければ IP アドレスが変わっても同じクライアントとして認識されます。これにより、例えばワイヤレス LAN から有線 LAN に繋ぎ直した場合でもそのまま通信を続けることが可能になります。

長くなったので続きは次回。

トラックバック(0)

トラックバックURL: http://cuaoar.jp/mt4/mt-tb.cgi/15

コメントする

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261