Meet eCDN On-Premises API を使用する

このページでは、Google Meet ライブ ストリーミングで Google Meet エンタープライズ コンテンツ配信ネットワーク(eCDN)オンプレミス API を使用する方法について説明します。

ここで説明する API ソリューションを使用すると、お客様は Google にプライベート IP 情報を公開することなく、Meet eCDN のすべての機能を使用できます。プライベート IP アドレス情報の代わりに ID を渡す、独自のネットワークで新しいオンプレミス ウェブサービスを定義できます。

Meet eCDN の概要

eCDN は Meet に組み込まれており、Google Workspace 管理者が設定すると、ライブ配信中に自動的に開始されます。Meet eCDN を有効にすると、ローカル ネットワーク内のライブ配信視聴者は、ピアツーピア(P2P)共有を通じて、ライブ配信されたメディアをネットワーク内の他のピアと共有できます。ほとんどのデバイスは、近くのピアからライブ配信されたメディアを受信するため、Google のサーバーから取得する必要はありません。これにより、視聴者が使用する合計帯域幅が削減されます。Meet eCDN の設定と使用について詳しくは、大規模なライブ配信を主催するをご覧ください。

eCDN では、Meet ライブ ストリーミングの視聴者をピアリング グループに分類する必要があります。ピアリング グループは、メディアを相互に共有できるノードの集合です。ピアリング グループ内のデバイスは、ピアリングが許可されるか、ピアリングがブロックされます。許可されたデバイスは、同じピアリング グループ内の他のデバイスにのみ接続できます。ピアリング グループの詳細については、大規模なライブ ストリームを主催する前にをご覧ください。

API を使用するケース

eCDN は、randomsubnetcustom rules など、複数の異なるピアリング ポリシーを使用してピアリング グループを形成できます。後者は、Google の eCDN トラッカー サーバーとプライベート ネットワーク範囲のテーブルを共有して、各ピアノードのプライベート IP アドレスをピアリング グループにマッピングします。custom rules ポリシーは推奨されるソリューションであり、ほとんどの本番環境に適しています。

ただし、custom rules ポリシーでは、プライベート ネットワーク構造の大部分を Google と共有する必要があります。また、個々のユーザーは eCDN の使用中に、ローカルで検出されたプライベート IP アドレスを Google に公開します。一部の組織では、セキュリティ ガイドラインでプライベート IP 情報の共有が許可されていない場合があります。

Meet eCDN On-Premises API を使用して開発する

Meet eCDN On-Premises API は、組織のネットワークでローカルに実装してホストできるウェブサーバー仕様を提供します。API と互換性のあるカスタム ウェブサービスを構築して、プライベート IP 情報に依存するすべてのタスクを実行できます。これにより、情報が Google と共有されることはありません。

この API には、通常 eCDN トラッカー サーバーによって処理されるプライベート IP アドレスのマッチングの 2 つの重要なステップ(プライベート IP アドレスをピアリング グループにマッピングする、WebRTC シグナリング中の Session Description Protocol(SDP)のオファーとアンサーのデータ交換)が含まれています。

ウェブサービスの完了後、On-premises service ピアリング ポリシーを使用し、カスタム ウェブサービスの URL を含めるように管理コンソールを構成する必要があります。

要件

組織でこれらの要件のいずれかを有効にする必要がある場合は、Google Workspace 管理者に依頼してください。

  • HTTPS を使用するウェブサーバーであれば、この API を実装できます。

  • HTTPS を使用して、混合コンテンツのエラーを防ぎます。

  • JSON データを受け取って返します。ブラウザでサポートされているコンテンツ エンコードを使用します。

  • /vn ルートでエンドポイントを処理します。ここで、n は選択した API バージョンです。例: /v1/get-peering-group

  • Meet ライブ配信の視聴者は、Google 管理コンソールでウェブサービスの URL を確認できます。URL は、グローバル、組織部門ごと、またはグループごとに設定できます。閲覧者が割り当てられたサービスのインスタンスに接続できることを確認します。詳細については、管理コンソールを構成するをご覧ください。

  • サービスは 2 秒以内にレスポンスを返す必要があります。そうでない場合、eCDN クライアントはシャットダウンし、視聴者は通常の eCDN 以外のユーザーとしてライブイベントを視聴し続けるため、帯域幅の節約はできません。

  • サービスは、次のクロスオリジン リソース シェアリング(CORS)ヘッダーを設定する必要があります。

    • Access-Control-Allow-Origin: meet.google.com
    • Access-Control-Allow-Headers: GET, POST, OPTIONS
    • Access-Control-Allow-Credentials: true

プライベート IP アドレスをピアリング グループにマッピングする

eCDN クライアントは、eCDN トラッカー サーバーに再接続を試みるたびに呼び出しを行います。デバイスがプライベート IP アドレスを検出したら、そのアドレスを適切なピアリング グループにマッピングする必要があります。プライベート IP アドレスをネットワーク上のサーバーに送信し、get-peering-group() メソッドを使用してピアリング グループに手動で解決する必要があります。レスポンスでピアリング グループ ID が返されます。Google との通信では、プライベート IP アドレスの代わりに、結果のピアリング グループ ID が渡されます。

プライベート IP アドレスがピアリング グループにマッピングされる方法。
図 1. プライベート IP アドレスをピアリング グループにマッピングします。

次のコードサンプルは、get-peering-group() メソッドを呼び出す方法と、考えられるエラー レスポンスと想定されるレスポンス本文を示しています。

POST /v1/get-peering-group
Content-Type: application/json

Request body:
{
  "availableIPs": []{
    "format": "ipv4"|"ipv6",
    "address": "DETECTED_ADDRESS"
  }
}

Error response:
{
  "result": null,
  "error": "ERROR_MESSAGE",
}

Response body:
{
  "result": "PEERING_GROUP_ID",
  "error": null,
}

次の表に、想定されるレスポンス形式を示します。

HTTP ステータス エラー ピアリング グループ ID クライアントの反応
200 null 空でない文字列 クライアントはピアリング グループに分類され、eCDN トラッカー サーバーへの接続に進みます。
200 null NOT_FOUND クライアントが eCDN セッションを終了します。
200 null BLOCKED クライアントが eCDN セッションを終了します。
200 その他の空でない文字列 null クライアントが eCDN セッションを終了します。
302(検出) クライアントは、レスポンス本文の Location ヘッダーで指定された新しい URL にリダイレクトします。
その他のステータス コード 任意の文字列 任意の文字列 クライアントが eCDN セッションを終了します。

SDP のオファーとアンサーのデータ交換

WebRTC 接続を開始するには、デバイスはプライベート IP 情報を含む Interactive Connectivity Establishment(ICE)候補を含む SDP オファーとアンサーを交換する必要があります。これは WebRTC シグナリング プロセスの一部として行われます。

クライアントは、encrypt-sdp() メソッドを使用して、Meet eCDN On-Premises API を介してネットワーク内の ICE 候補を暗号化する必要があります。このメソッドは、Google に公開されない鍵を使用します。暗号化された SDP オファーは、eCDN トラッカー サーバーを使用してピアに送信されます。クライアント ピアは、decrypt-sdp() メソッドを使用して、ネットワーク内で受信した情報を復号します。Google は、接続されたピア間でオファーと回答を転送します。

Meet eCDN On-Premises API を使用して接続が確立されると、eCDN は通常どおりに動作します。ピアは通常のピアリング ネットワークを介してメディアをルーティングし、メディア トラフィックは API を通過または使用しません。

SDP オファーとアンサーのデータの暗号化と復号の方法。
図 2. SDP のオファーとアンサーのデータの暗号化と復号。

次のコードサンプルは、encrypt-sdp() メソッドを呼び出す方法と、考えられるエラー レスポンスと想定されるレスポンス本文を示しています。

POST /v1/encrypt-sdp
Content-Type: application/json

Request body:
{
  "data": "SDP_DATA" // raw SDP data
},

Error response:
{
  "result": null,
  "error": "ERROR_MESSAGE", // error message
}

Response body:
{
  "result": "ENCRYPTED_DATA_STRING", // encrypted data as string
  "error": null,
}

次のコードサンプルは、decrypt-sdp() メソッドを呼び出す方法と、考えられるエラー レスポンスと想定されるレスポンス本文を示しています。

POST /v1/decrypt-sdp
Content-Type: application/json

Request body:
{
  "data": "ENCRYPTED_DATA_STRING", // encrypted data as string (size limit: 1 MB)
},

Error response:
{
  "result": null,
  "error": "ERROR_MESSAGE", // error message
}

Response body:
{
  "result": "SDP_DATA" // raw SDP data
  "error": null,
}

次の表に、想定されるレスポンス形式を示します。

HTTP ステータス エラー ピアリング グループ ID クライアントの反応
200 null 空でない文字列 クライアントは、適切にエンコードまたはデコードされた SDP データが使用されることを想定しています。
200 空でない任意の文字列 null クライアントが eCDN セッションを終了します。
302(検出) クライアントは、レスポンス本文の Location ヘッダーで指定された新しい URL にリダイレクトします。
その他のステータス コード 任意の値 任意の値 クライアントが eCDN セッションを終了します。

管理コンソールを設定する

Meet eCDN On-Premises API を使用するには、 管理コンソールで eCDN を構成して、カスタム ウェブサービスの URL を含める必要があります。

eCDN を設定するには、On-premises service を使用してピアリング ポリシーを作成し、IP 情報をピアリング グループに手動で照合します。デフォルトの 443 を使用していない場合は、ポート番号を含めることもできます。URL は WEB_SERVICE.example.com:8080 の形式である必要があります。ここで、WEB_SERVICE はウェブ サービス名です。

ピアリング ポリシーの設定の詳細については、ネットワーク グループを構成するをご覧ください。