• Web会議

(初級) WebRTCの一般的な仕組み・サーバー構成(シグナリング/TURN/SFU)

(初級) WebRTCの一般的な仕組み・サーバー構成(シグナリング/TURN/SFU)

近年、ブラウザやアプリを介して、ダイレクトに動画や音声のやり取りができるようになりました。

ビジネスシーンでも、ビデオ会議を通じて、物理的に離れている相手とやり取りができるようになり、リモートワークの促進などが期待されています。

ビデオ会議を実現する技術の1つに「WebRTC」という仕組みがあります。今回はこのWebRTCの基礎知識をお伝えします。

WebRTCとは

WebRTCとは、「Web Real-Time Communication」の略称で、APIを経由して、ウェブブラウザやモバイルアプリでリアルタイム通信を実現しようと立ち上がったプロジェクトです。WebRTCのプロジェクトに参画しているのは、アップル、Google、マイクロソフトなど名だたるIT企業ばかりです。

対応ブラウザ

対応しているブラウザは、PCでは、Google Chrome、Microsoft Edge、Mozilla Firefox、Safari、Operaになります。多くの人が日常的に使っている主要なブラウザでは、ほぼ対応していると言ってよいでしょう。

またスマートフォンなどモバイル環境で使用するOSでは、AndroidはGoogle Chrome、Mozilla Firefox、Opera Mobile、iOSはSafariです。

利用シーン

WebRTCは様々なシーンで利用されています。例えば、Web会議、Web面接、オンライン営業などのビジネスシーンではもちろん、オンライン教育、ボイスチャット、オンラインクレーンゲームなどでも利用されています。

また、遠隔医療、オンラインフィットネス、IoT映像配信、VRライブ配信など今後その利用シーンはさらに広がることが予想されます。

シグナリングサーバーとは

WebRTCは、様々なサーバーなどを組み合わせ、利用できるようにしています。

その1つに「シグナリングサーバー」があります。シグナリングサーバーは「通信相手に関する情報を得る」のが役割で、WebRTCにおいて欠かせないサーバーです。

そもそも相手とやり取りをしようにも、相手が誰でどこにいるのか判別できなければ、やりようがありません。そこで、シグナリングサーバーは相手のユーザー名を伝えることで、その他通信に必要な情報を収拾できるようにしているのです。

P2Pとは

WebRTCを理解するうえで、とても重要な概念があります。それが「P2P」です。P2PはPeer to Peerの略になります。

P2Pの基本的な概念は「サーバーを介さず、端末同士が直接通信できるようにする」というものです。

STUNサーバーとは

"P2Pのような"やり取りを実現するために、必要となるのはシグナリングサーバーだけではありません。その他にも「STUNサーバー」や「TURNサーバー」などを利用します。

なぜ、これらのサーバーが必要となるのか。その理由は「NAT(=Network Address Translation)」の存在があります。

NATとは

NATは、ネットワークアドレスを変換する機能です。

例えば、自宅でWi-Fiをつないだ際、端末にグローバルIPアドレスが付与されていないケースがあります。これは、プロバイダーから割り振られるIPアドレスが一つのため、複数の端末がインターネットに接続できるよう、ルーターがIPをLANの端末へ振り分けているためです。

そのため、端末で表示されるIPアドレスがグローバルIPアドレスと異なることがあります。しかし、これでは情報を送りたい側は困ってしまいます。なぜなら、通信したい先の本当のIPアドレスが変換されているため、わからないからです。

そこで、NATによって変換されたアドレスをセキュアに関連づける「NAT超え」が必要となります。その際に必要となるのが、STUNサーバーとTURNサーバーです。

STUNサーバーの役割

STUNサーバーは外部ネットワークから見た際の自身のIPアドレスを教えてくれます。そのアドレスと自身のPCのアドレスを比較してNAT越えが必要かを判断します。

TURNサーバーとは

STUNサーバーを使えば、NAT超えが必要かどうかがわかります。実際に企業で導入しているネットワークにはNAT越えが必要な場合が多く、且つ、Firewallを超える必要もでてきます。

Firewallを超える

Firewallは、ほとんどのパソコンに組み込まれた基本的なセキュリティ対策の1つです。特に、企業においては、サイバー攻撃などのリスクを防ぐため、ポート制御やウイルス感染を防ぐ役割を担います。

しかし、Firewallをセキュアに超えられる仕組みがなければ、ビジネスシーンでP2Pのような通信ができません。そこで、考えられたのが「TURNサーバー」です。

TURNサーバーの仕組み

TURNサーバーは、もともとVoIPやオンラインゲームで使用されていた仕組みです。TURNサーバーでは、通信の際に発生するストリームデータの受け渡しをするブリッジの役割を担います。

SFUサーバーとは

SFU(Selective Forwarding Unit)サーバーは、音声や映像をP2Pではなく、サーバー経由で行う技術です。配信者が直接相手に通信するのではなく、サーバーを間に挟むことで、動画の視聴者増加などによる、端末への負荷軽減を可能にします。これにより、リアルタイムで多くの視聴者に音声や動画を配信できます。

多拠点で接続する

現代では、多拠点に同時に動画を届ける必要があります。YouTubeなどの動画サイトでもライブ配信が行われ、大量のユーザーが同時に視聴するケースが多々あります。

このような処理を行うには、一般ユーザーが使用する端末では不可能です。よりハイスペックで、大量の同時接続にも耐えうるような強力なサーバーが求められ、その傾向は今後もさらに続くでしょう。

MCUとの違い

多拠点同時配信を行う技術として、MCU(Multipoint Control Unit)があります。MCUは、SFUで用いるサーバーよりさらにハイスペックなマシンを用いて、音声や映像を合成したり、回線が細いユーザーに対してはビットレートを落として映像を送るなどができます。

しかしその分、処理の負荷がかかり、特にCPUのコア数が必要です。

仮想広域ネットワーク

SFUやMCUよりもさらに多くの拠点と接続できる仕組みとして、「仮想広域ネットワーク」を使ったサービスも存在します。

例えば、(株)ブイキューブが提供するライブ配信・ビデオ通話・音声通話SDKのAgoraは、HLSやFlashを使用せず、独自のプロトコルで超低遅延を実現。世界中のデータセンターにノードを構築し、自動で最適な経路を選択するアルゴリズムを備えています。

またWebRTCとも互換性を持ち、SFU型よりさらに規模が大きい通話などにも対応。P2Pより安定した通信を実現しています。

SDKを用いて開発する

上記の通り、WebRTCを利用したシステムを自社開発するには、様々なサーバーの構築・管理が必要です。しかし、最近ではSDKを使って自社開発を極力少なくすることができます。

とはいえ、SDKにも様々な種類があり、選ぶのに迷うケースもあるでしょう。その際は、WebRTCの商用サービスについてまとめた記事がありますので、こちらをご覧ください。

WebRTCの商用サービスまとめ|Twilio, SkyWay,Agora など

まとめ

ここまで、WebRTCの基本的な仕組みからサーバーの構成までお伝えしました。

今後、動画などよりリッチな情報をやり取りするケースが増えるでしょう。その際、WebRTCが必要になりましたら参考にしていただければ幸いです。

大規模・安定・かんたんに実装 ライブ配信・ビデオ通話・音声通話SDK

mail_agora


Agoraは、自社サービスのiOS・AndroidアプリやWebサイトにビデオ通話やライブ配信をかんたんに実装できるSDKです。

動画や音声のまったく新しいユーザー体験を実現し、自社のiOS・AndroidアプリやWebサービスに組み込める、APIと開発ツール群を提供しています。

Agoraの特長

  • 「平均遅延0.3秒」で、従来のCDNの課題を解決
  • 1,000,000同時接続まで拡張可能で、従来のWebRTCの課題を解決
  • WebRTCやCDNよりも手軽に・すぐに・安価に始められる
  • WebRTCと互換性があり、P2P通信よりも安定

agora.ioについてはこちら

ブイキューブ
著者情報ブイキューブ

ブイキューブは映像コミュニケーションの総合ソリューションプロバイダとして、世界中どこにいても働ける働き方・環境の実現を目指しています。創業時よりテレワークを活用し、2016年には総務省「テレワーク先駆者百選 総務大臣賞」に選出されました。