WebRTCのP2P通信に興味はあるけれど、「仕組みが難しそう」「実装を実現する方法がわからない」といった悩みを抱えていませんか?
本記事では、WebRTCプラットフォームを運営するSkyWayが、P2P通信の基本から、必要な情報や通信を成立させるために必要なSTUN/TURNサーバーの役割、P2P通信を実現する手順、SFUとの違いまでを徹底解説します。
代表的なビデオ通話プラットフォームとして、NTTコミュニケーションズが開発、運営する「SkyWay」があります。 「SkyWay」とは、ビデオ・音声通話をアプリケーションに簡単に実装できる国産SDKです。⇒概要資料をダウンロードする(無料)
P2Pについての説明の前に、WebRTCについて理解する必要があります。
WebRTC(Web Real-Time Communication)は、プラグインを必要とせず、Webブラウザ間で、リアルタイムに音声、映像、データ通信を可能にする技術です。
通信の基盤はP2P(Peer to Peer)方式で、低遅延かつ安全な通信を実現します。
以下の記事にてWebRTCを詳しく解説しているので、ご参考ください。
WebRTCのP2P(Peer to Peer)通信は、端末同士が直接データを送受信する方式で、サーバーを介さないため低遅延かつ効率的なリアルタイム通信を実現します。これにより、データ転送が速く、サーバー負荷の集中による通信不安定が起こりにくい利点があります。
P2P通信を行うには、相手のIPアドレスや接続経路情報を交換する必要があります。後述で詳しく解説します。
WebRTCでP2P通信を実現するためには、以下の情報をブラウザ間で共有する必要があります。
SDPは、通信に必要なブラウザの情報を記述した文字列です。具体的には、使用するコーデック、ビットレート、メディア形式、IPアドレス、ポート番号、通信帯域などの情報です。
通信はOffer/Answerモデルで行われ、一方のPCがSDPを送信(Offer)し、相手PCがその回答(Answer)を返す形式を取ります。これを、Negotiation(交渉)と言います。
ICEは、複数の通信経路候補(ICE Candidate)を収集し、最適な接続経路を確立します。
ただし、現実のネットワーク環境では、NATやFirewallといった障壁が存在するため、そのままではP2P通信が難しい場合があります。その際、STUNサーバーやTURNサーバーを使用してNATやファイアウォール越えを支援します。
STUNサーバーは、NAT配下にある端末が、自身のグローバルIPアドレスとポート番号を取得するために使用されるサーバーです。P2P通信では、相手に伝えるための正確なIPアドレスが必要ですが、NAT環境ではこれが難しいため、STUNサーバーを経由して外部から見たIPアドレスを取得します。
一方、TURNサーバーは、NATのセキュリティが高い場合やFirewall、プロキシサーバーが通信をブロックして直接通信が困難な場合にデータの中継を行います。このサーバーは、すべての通信パケットを代理で転送することでNAT越えを可能にし、端末間の通信をサポートします。
これらの仕組みにより、NATの背後にある端末同士でもWebRTC通信が実現可能となります。
WebRTCでP2P通信を確立するまでの流れを解説します。
まず、2つのブラウザ(通信相手)が通信を始めるための情報を交換します。この情報のやり取りを助けるのがシグナリングサーバーです。
次に、ブラウザ同士がどの経路でデータを送受信するかを決めるための情報を集めて交換します。このプロセスにはICE(Interactive Connectivity Establishment)という仕組みを使います。
ブラウザ同士が交換したSDPやICE候補を使い、実際にP2P通信を試みます。
接続が確立したら、ブラウザ同士で直接通信が始まります。
この流れにより、効率的かつ低遅延でのP2P通信が実現します。
WebRTCは、P2Pによる1対1通信だけでなく、複数人とのリアルタイム通信も可能です。ただし、多拠点接続を実現するには、P2Pではなく、SFUを採用することが一般的です。
SFU(Selective Forwarding Unit)とは、音声や映像データを効率的に中継するサーバーベースの仕組みで、リアルタイム通信を最適化します。この方式では、配信元の負荷を軽減しつつ、データを加工せずそのまま複数の視聴者へ転送するため、低遅延を維持できます。
以下の記事にてSFUについて詳しく解説しているので、ご参考ください。
WebRTCにおけるP2PとSFUは通信方法が異なり、それぞれの用途や特徴に応じて使い分けられます。
P2P通信 | SFU通信 | |
---|---|---|
接続方法 | 直接接続 | 中継サーバーを経由 |
遅延 | 低遅延 | わずかに遅延が発生 |
負荷分散 | 各クライアントが負担 | サーバーが負担 |
用途 | 少人数の通信向け | 多人数の会議や配信向け |
P2Pは効率的な直接通信に適し、SFUは多人数接続の安定性を確保するのに適しています。用途に応じて選択するのがベストです。
WebRTCの実装には専門的な知識と多くの開発工数が必要ですが、SDK(Software Development Kit)を活用する方法があります。SDKを利用すれば、サーバーの構築や管理の手間を大幅に削減し、効率的な開発が可能になります。
WebRTCの代表的なSDKとして、NTTコミュニケーションズが開発、運営する「SkyWay」があります。
「SkyWay」とは、ビデオ・音声通話をアプリケーションに簡単に実装できる国産SDKです。
大きな特徴としては、以下が挙げられます。
WebRTCのSDKとして提供されているものは、海外製が多いため、開発ドキュメントも英語か和訳のもので開発しにくい傾向にあります。「SkyWay」であれば、NTTグループが開発、運営する安心の国産SDKかつ、国内エンジニアがサポートしてくれるため、開発運用工数も大幅に削減でき、開発のしやすさからもおすすめです。
テスト検証用は無料のため、ぜひアカウント登録をしてみください。
WebRTCの通信の基盤は、ブラウザ間でリアルタイム通信を可能にするP2P通信です。P2P通信ではサーバーを介さずに端末同士が直接データをやり取りし、低遅延かつ効率的な通信を実現します。NATやファイアウォール越えにはSTUN/TURNサーバーが用いられます。P2Pは少人数向け、SFUは多人数向けといった特性があり、用途に応じた使い分けが重要です。また、WebRTCを実装するには専門知識と膨大な開発工数が必要ですが、「SkyWay」を利用すれば、開発の簡略化が可能です。 セキュリティも安全で、多様なシーンでの利用が拡大しているので、検討してみてはいかがでしょうか。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。