シングルピア接続

すべての加入者ストリームを単一の WebRTC ピア接続に通すことで、よりスリムで高速、スケーラブルなビデオセッションを実現します。

セッション数が増えるにつれて、各クライアントが維持しなければならないWebRTCのピア接続数も 増加します(サブスクライブされたストリームごとに1つ)。各接続には、 独自のICEネゴシエーション、DTLSハンドシェイク、および輻輳制御 状態が伴います。このオーバーヘッドは、特にモバイルデバイスにおいて、急速に累積する可能性があります。

シングルピア接続(SPC) 接続確立のオーバーヘッドを軽減します。 この機能を有効にすると、セッション内にいくつのパブリッシャーが存在するかに関わらず、 クライアントのすべてのサブスクライバーストリームが、 Vonage Video Media Router への 1 つの共有ピア接続上で多重化されます。その結果、 使用するポート数が減り、ネットワークへの負荷が軽減されるほか、 より効率的な帯域幅管理が可能となり、 すべてのデバイスにわたって優れたスケーラビリティが実現されます。

「シングルピア接続」機能は、ルーティングされたセッション (Vonage Video Media Router を使用するセッション)でのみ利用可能です。以下のセッションでは アダプティブ・メディア・ルーティング, 2人の参加者の間でメディアがピアツーピアでやり取りされている間はSPCは適用されませんが、 セッションがメディアルーターの使用に切り替わると適用されます。詳しくは Vonage ビデオ・メディア・ルーターとメディア・モード.

メリット

「シングルピア接続」を有効にすることは、多者間ビデオ通話において 実施できる最適化策の中でも、最も大きな効果をもたらすもののひとつです。これにより、次のようなメリットが得られます:

  • 資源消費を大幅に削減: 各ピア接続には、 それぞれ固有のポート、ソケット、ICE候補、DTLSハンドシェイク、 およびSRTPコンテキストが割り当てられます。加入者が数十人いる場合、これによりCPU、 メモリ、およびファイルディスクリプタの使用量が増加します。SPCはこれらすべてを 単一の接続に統合することで、Applicationsのリソースを解放します。

  • よりスマートで統一されたレートコントロール: 個別のピア間接続では、各ピアが 独自の輻輳制御アルゴリズムを実行し、 同じリンク容量をめぐって互いに競合することになります。SPCは、帯域幅推定器に対して、 すべてのメディアストリームにわたるネットワークの単一かつ統一されたビューを提供し、これにより より安定したビットレート適応と、品質の変動の低減が実現されます。

  • モバイルでの大規模セッションをサポート: モバイルデバイスには、 CPU、メモリ、ネットワークリソースに限りがあり、特にiOSでは、 同時接続可能なピア接続数が制限されています。SPCは、すべての 加入者ストリームを1つのピア接続に統合することで、モバイルクライアントが 1回のセッションでより多くのストリームを快適に処理できるようにします。

  • より迅速なサブスクリプション設定: 新しい参加者を追加する際、 ICE/DTLSネゴシエーションを最初からすべて行う必要はなくなりました。既存の 接続が再利用されるため、新しいストリームがより早く確立されます。これは特に、 参加者が頻繁に参加したり離脱したりするセッションで顕著です。

  • バッテリーの消耗を抑える: アクティブなネットワークパスが少なくなれば、 キープアライブパケットの数が減り、モバイル端末の無線起動回数も減少するため、 結果としてエンドユーザーのバッテリー駆動時間が長くなります。

  • ネットワークの複雑さを軽減: 1つの接続とは、1組の NATバインディング、1つのTURN割り当て(必要な場合)、および 企業のファイアウォールを通る1つの経路を意味します。これにより、制約の厳しいネットワーク 環境での導入が簡素化され、接続障害が減少します。

  • 規模に応じて、より予測可能な品質: すべてのメディアが 単一のトランスポートを共有するため、帯域幅が各 ストリーム間でより公平に配分されます。「競合する接続」が互いの帯域幅を奪い合うことが ないため、すべての 参加者にとって、よりスムーズで安定した体験が実現されます。

使用例

サブスクライブされたストリームの数が 増加し始めると、Applicationsはシングル・ピア接続の恩恵を受けます。以下に、その効果が最も 顕著に現れるシナリオを挙げます:

  • 大規模なインタラクティブ・セッション: バーチャル教室、グループ コラボレーション、および多者間ビデオ通話では、多くの参加者が 同時に配信を行うことがあります。配信者の数が増えるにつれて、各 受信クライアントはより多くのピア接続を開きます。SPCは、クライアントが いくつのストリームを受信していても、リソース 使用量を一定に保ちます。 ただし、すべての参加者を一度に画面に表示することは現実的ではないため、 Applications側で、どのビデオ ウィジェットを表示するか、どのストリームを購読するかを適切に管理し、優先順位をつける必要があることに留意してください。

  • モバイルファーストのアプリケーション: ユーザーがスマートフォンや タブレットを利用している場合は、SPCの利用を強くお勧めします。接続数が減れば、CPUへの 負荷が軽減され、メモリへの負担も減り、バッテリーの消耗も抑えられます。

  • 帯域幅に制約のある、または可変ネットワーク: 輻輳状態にある Wi-Fi、携帯電話回線、または衛星回線では、単一の輻輳制御ループが、 多数の競合する接続よりもはるかに効率的に帯域幅を割り当てます。 これにより、ユーザーはバッファリングが少なく、よりスムーズな動画視聴が可能になります。

  • 企業および制限されたネットワーク: ファイアウォール、プロキシ、および NATは、多数の同時 UDPフローを追跡しなければならない場合、動作不良を起こしたり、遅延を生じさせたりすることがあります。すべてを1つの接続に集約することで、厳格なネットワークポリシーの下での 接続障害が発生する可能性を低減できます。

  • 迅速な合流/離脱シナリオ: ブレイクアウトルームや、参加者が頻繁にグループ間を移動する あらゆる場面において、SPCは ストリームごとの調整にかかる手間を排除し、グループ間の移行をほぼ瞬時に行えるようにします。

  • 画面共有によるハイブリッド・イベント: プレゼンターが カメラ映像と並行して画面を共有する場合、加入者1人あたりのストリーム総数は 2倍になります。 SPCは、クライアントが受信する混合 ストリームの数にかかわらず、オーバーヘッドを一定に保ちます。統合されたレート制御は、 同じ接続上のすべてのストリームを把握しているため、 画面共有ストリームをインテリジェントに優先し、鮮明さや可読性が最も重要な箇所に より多くの帯域幅を割り当てます。

要件と制限事項

  • SPCは以下の場合にのみサポートされます。 ルーティングセッション ( Vonage Video Media Router を使用するセッション)。中継セッションでは利用できません。 これは、中継セッションでは各クライアントが他のすべての クライアントとピアツーピアで直接接続するためです。ストリームを多重化する 中央のメディアルーターが存在しないため、統合すべき対象がないのです。

  • SPCは以下から利用できる。 バージョン2.28.0 ネイティブSDKのうち および バージョン2.29.0 ウェブSDKの

  • SPCは デフォルトでは無効. クライアント側でセッションを初期化する際に、 これを明示的に有効にする必要があります。詳しくは シングルピア接続の有効化.

  • SPCは以下に適用される。 加入者接続のみ. パブリッシャーは、依然として 独自のピア接続を使用して、メディアをメディアルーターに送信しています。

シングルピア接続の有効化

シングル・ピア・接続(SPC)を有効にするには、セッションの作成または初期化時に Client SDK で設定を行ってください。セッション作成における SPC の概要については、 以下のドキュメントを参照してください。 シングルピア接続セクション 「セッションの作成」ガイドの一部です。以下のセクションでは、 サポートされている各SDKでこれを有効にする方法について説明します。

ウェブSDK

を設定する。 singlePeerConnection プロパティ true オプションオブジェクト内で、 以下を OT.initSession():

var session = OT.initSession(apiKey, sessionId, {
  singlePeerConnection: true
});

アンドロイドSDK

を使用する。 Session.Builder.setSinglePeerConnection() メソッドを使用する:

Session session = new Session.Builder(context, apiKey, sessionId)
    .setSinglePeerConnection(true)
    .build();

iOS SDK

を設定する。 singlePeerConnection プロパティ OTSessionSettings:

OTSessionSettings *settings = [[OTSessionSettings alloc] init];
settings.singlePeerConnection = YES;

OTSession *session = [[OTSession alloc] initWithApiKey:apiKey
                                             sessionId:sessionId
                                              delegate:self
                                              settings:settings];

Windows SDK

を設定する。 SinglePeerConnection プロパティの Session.Builder クラスである:

var session = new Session.Builder(Context.Instance, apiKey, sessionId)
{
    SinglePeerConnection = true
}.Build();

macOS SDK

を使用する。 otc_session_settings_set_single_peer_connection() 関数である:

otc_session_settings *settings = otc_session_settings_new();
otc_session_settings_set_single_peer_connection(settings, OTC_TRUE);

otc_session *session = otc_session_new_with_settings(apiKey, sessionId, &callbacks, settings);

Linux SDK

を使用する。 otc_session_settings_set_single_peer_connection() 関数である:

otc_session_settings *settings = otc_session_settings_new();
otc_session_settings_set_single_peer_connection(settings, OTC_TRUE);

otc_session *session = otc_session_new_with_settings(apiKey, sessionId, &callbacks, settings);

リアクト・ネイティブSDK

を設定する。 enableSinglePeerConnection プロパティ true での options 小道具 の OTSession コンポーネントを使用している:

<OTSession
  apiKey={apiKey}
  sessionId={sessionId}
  token={token}
  options={{ enableSinglePeerConnection: true }}
/>

他の機能との相互作用

スケーラブルなビデオ

シングル・ピア接続は、以下と連携して動作します スケーラブルビデオ. 両方の機能が 有効になっている場合でも、メディアルーターは共有ピア接続を通じて、各 加入者に複数の品質レイヤーを配信し続けます。ネットワーク状況の変化に応じて、各加入者は 個別のピア接続の場合とまったく同じように、異なる解像度やフレームレートのレイヤーを受信することができます。

オーディオのフォールバック

オーディオのフォールバック SPCが有効な状態でも、 通常どおり動作し続けます。加入者のネットワーク状態が悪化した場合でも、 メディアルーターは、同じピア接続上で伝送されている他のストリームとは 独立して、影響を受けたストリームについて、ビデオコンポーネントを 除外し、オーディオのみを配信することができます。

クライアントの可観測性と送信側統計情報

SPCが有効な場合 送信側統計 帯域幅の推定値は、単一のピア 接続内のすべての加入者間で共有されます。最大ビットレートは、そのピア 接続が推定できる最高ビットレートを表し、現在のビットレートは各 音声・映像バンドルのビットレートを反映しています。利用可能な帯域幅を評価する際は、 個々のバンドルの推定値を合計して、総帯域幅の推定値を算出してください。

詳細は 顧客観察可能性ガイド.

エンド・ツー・エンドの暗号化

エンド・ツー・エンドの暗号化 は シングル・ピア接続に対応しています。メディアストリームは、 共有ピア接続を介して多重化される前に、個別に暗号化されます。

ベストプラクティス

  • 多数のパブリッシング・クライアントを持つセッションでSPCを有効にします: もし、 アプリケーションで定期的に多数の参加者が集まるセッションが行われる場合、 SPCを有効にすることで、リソース消費を大幅に削減し、安定性を向上させることができます。

  • ターゲットデバイスでテストする: SPCは一般的にリソース使用量を削減しますが、 ユーザーが実際に使用する具体的なデバイスやネットワーク環境において、 必ず検証を行ってください。

  • 送信側統計で帯域幅を監視: すべての加入者 ストリームは単一のトランスポートを共有するため、送信側統計情報を利用して 利用可能な総帯域幅を把握し、それに応じてアプリケーションを調整してください。

さらに読む