WebRTCとは

WebRTCとは

WebRTC(Web Real Time Communication)は、Webブラウザ上で、音声・映像などのデータをリアルタイムにやり取りするためのHTML5の規格です。Webブラウザ同士がサーバを経由せずP2Pで通信します。

シグナリング

P2P通信をするために、お互いのIPアドレス・ポート番号などの接続先情報や、送受信できる音声・映像の形式を知る必要があります。この情報を交換するとことをシグナリングといい、シグナリングサーバを介して行います。

ICE

多くの場合、端末はLANの中にいるため、NATされたプライベートなIPアドレスしか持っていません。ですが、インターネットを経由する場合はプライベートなIPアドレスでは通信できないため、自分のグローバルIPアドレスや通信可能なポートを知る必要があります。このNATを越えるための仕組みをICE(Interactive Connectivity Establishment)といい、STUNサーバやTURNサーバを使って行います。

WebRTCでリアルタイム通信ができるまでの流れ

 

WebRTC SFUとは

WebRTC SFU(Selective Forwarding Unit)は、通常はP2Pで行うWebRTCをサーバを経由して通信させる技術です。

P2PのWebRTCとSFUを経由したWebRTC

ReDoisはWebRTC SFUの機能を具備しています。

 

WebRTC、WebRTC SFUのメリット

WebRTC、WebRTC SFUを使うメリットを説明します。

WebRTCのメリット

WebRTCを使うことの一番のメリットは、HTMLの標準規格であるため、独自アプリケーションのインストールが不要でWebブラウザのみでリアルタイム通信を実現できることです。

規格自体は2012年に発表されましたが、各ブラウザの実装が追い付いていませんでした。

2017年9月にiOS(Safari)が対応したことで、対応ブラウザのシェアが99%以上になりました。(IEは除く)

WebRTC SFUのメリット

Web会議などで多くの端末と接続した場合、 P2Pの場合は端末それぞれが他の全ての端末との接続を管理する必要があります。また、接続可能な台数も端末の性能に左右されます。

WebRTC SFUを使用した場合、端末はSFUと接続するだけなので、端末の管理が容易になります。

また、端末側で接続するセッションの本数が減るため、P2Pでは実現できなかった数の端末での同時接続が可能になります。

また、Webアプリケーション開発の観点では、SFUを使って接続をまとめた方がJavascript側の実装が簡単になります。

 

WebRTC、WebRTC SFUのデメリット

WebRTC、WebRTC SFUを使うデメリットもあります。

WebRTCのデメリット

  • 各ブラウザの実装が完全に一致しておらず、ブラウザによって微妙に違いあるため、シグナリングの記述やJavascriptの実装に違います。

⇒今後、統一に向かっているためこの違いは解消されていくと予想されます。

⇒ReDoisではシグナリング時のブラウザごとの差分を吸収し、できる限り接続ができるようにしています。

WebRTC SFUのデメリット

  • P2Pでは不要の、サーバが必要となります。
  • サーバを経由する分、P2Pに比べて遅延が発生します。サーバのロケーションや通信状況によりますが、100ms~200ms程度遅延します。