Работа с локальным API Meet eCDN

На этой странице объясняется, как использовать локальный API Google Meet Enterprise Content Delivery Network (eCDN) для прямой трансляции Google Meet.

Описанное здесь API-решение позволяет клиентам использовать полный набор функций Meet eCDN, не раскрывая Google информацию о частном IP-адресе. Вы можете определить новую локальную веб-службу в своей сети, которая передает идентификатор вместо информации о частном IP-адресе.

Обзор знакомства с eCDN

eCDN встроен в Meet и запускается автоматически во время прямых трансляций после того, как администратор Google Workspace настроит его. Если Meet eCDN включен, зрители прямых трансляций в локальной сети могут обмениваться потоковыми медиафайлами с другими узлами в сети посредством однорангового (P2P) обмена. Большинство устройств получают потоковое мультимедиа от ближайших узлов, и им не нужно получать его с серверов Google. Это снижает общую пропускную способность, используемую зрителями. Дополнительную информацию о настройке и использовании Meet eCDN см. в разделе Хостинг крупных прямых трансляций .

eCDN требует, чтобы зрители Meet Live Streaming были распределены по пиринговым группам. Пиринговая группа — это совокупность узлов, которым разрешено обмениваться мультимедиа друг с другом. Устройствам в пиринговой группе либо разрешено пиринговое взаимодействие, либо оно заблокировано. Разрешенные устройства могут подключаться только к другим устройствам в той же пиринговой группе. Дополнительные сведения о пиринговых группах см. в разделе Прежде чем приступить к организации крупных прямых трансляций .

Когда использовать API

eCDN может формировать пиринговые группы, используя несколько различных политик пиринга: random , subnet или custom rules . Последний разделяет таблицу диапазонов частных сетей с сервером отслеживания eCDN Google для сопоставления частных IP-адресов каждого однорангового узла с пиринговой группой. Политика custom rules является предпочтительным решением и подходит для большинства производственных сред.

Однако политика custom rules требует, чтобы вы предоставляли Google большую часть структуры вашей частной сети. Кроме того, отдельные пользователи предоставляют Google свои локально обнаруженные частные IP-адреса при использовании eCDN. В некоторых организациях правила безопасности могут не разрешать обмен частной информацией об IP-адресах.

Разрабатывайте с помощью локального API Meet eCDN.

Локальный API Meet eCDN предоставляет спецификацию веб-сервера, которую вы можете реализовать и разместить локально в сети вашей организации. Вы можете создать собственный веб-сервис, совместимый с API, для выполнения всех задач, зависящих от информации о частном IP-адресе, чтобы эта информация не передавалась Google.

API включает в себя два важных шага для сопоставления частных IP-адресов, которые обычно обрабатываются сервером отслеживания eCDN: сопоставление частных IP-адресов с пиринговой группой и обмен данными предложения-ответа протокола описания сеанса (SDP) во время сигнализации WebRTC.

После завершения создания веб-службы необходимо настроить консоль администратора на использование политики пиринга On-premises service и включить URL-адрес вашей пользовательской веб-службы.

Требования

Если вам нужно включить какое-либо из этих требований для вашей организации, обратитесь к администратору Google Workspace:

  • Любой веб-сервер, использующий HTTPS, может реализовать этот API.

  • Используйте HTTPS, чтобы предотвратить сбои смешанного контента.

  • Примите и верните данные JSON. Используйте любую кодировку контента, поддерживаемую вашим браузером.

  • Обслуживать конечные точки по маршруту /v n , где n — выбранная версия API. Например, /v1/get-peering-group .

  • Зрители Meet Live Streaming могут узнать URL-адрес вашего веб-сервиса через консоль администратора Google. URL-адрес можно задать глобально, для каждого организационного подразделения или для каждой группы. Убедитесь, что зрители могут подключиться к назначенному им экземпляру службы. Дополнительную информацию см. в разделе Настройка консоли администратора .

  • Ваша служба должна вернуть ответ в течение двух секунд. В противном случае клиент 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() . В ответе возвращается идентификатор пиринговой группы. При общении с Google вместо частных IP-адресов передается полученный идентификатор пиринговой группы.

Как частные 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 Ошибка Идентификатор пиринговой группы Реакция клиента
200 нулевой Непустая строка Клиент должен быть отсортирован в пиринговую группу и приступить к подключению к серверу отслеживания eCDN.
200 NOT_FOUND нулевой Клиент завершает сеанс eCDN.
200 BLOCKED нулевой Клиент завершает сеанс eCDN.
200 Другая непустая строка нулевой Клиент завершает сеанс eCDN.
302 (Найдено) Клиент следует перенаправлению на новый URL-адрес, указанный в заголовке Location тела ответа.
Любой другой код состояния Любая строка Любая строка Клиент завершает сеанс eCDN.

Обмен данными предложения-ответа SDP

Чтобы инициировать соединение WebRTC, устройства должны обменяться своими предложениями и ответами SDP, включая кандидатов Interactive Connectivity Making (ICE), которые содержат информацию о частном IP-адресе. Они делают это как часть процесса сигнализации WebRTC.

Клиенты должны шифровать своих кандидатов ICE внутри своей сети с помощью локального API Meet eCDN, используя метод encrypt-sdp() . В этом методе используется ключ, который никогда не предоставляется Google. Зашифрованное предложение SDP затем отправляется партнеру с помощью сервера отслеживания eCDN. Затем клиентский узел расшифровывает полученную информацию внутри своей сети с помощью метода decrypt-sdp() . Затем Google пересылает предложения и ответы между подключенными узлами.

После установки соединения с помощью локального API Meet eCDN 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 Ошибка Идентификатор пиринговой группы Реакция клиента
200 нулевой Непустая строка Клиент ожидает, что будут использоваться правильно закодированные или декодированные данные SDP.
200 Любая непустая строка нулевой Клиент завершает сеанс eCDN.
302 (Найдено) Клиент следует перенаправлению на новый URL-адрес, указанный в заголовке Location тела ответа.
Любой другой код состояния Любое значение Любое значение Клиент завершает сеанс eCDN.

Настройте консоль администратора

Чтобы использовать локальный API Meet eCDN, необходимо настроить eCDN в консоли администратора , включив в него URL-адрес вашей пользовательской веб-службы.

Чтобы настроить eCDN, создайте политику пиринга с помощью On-premises service , чтобы вручную сопоставить информацию IP с группами пиринга. Вы также можете указать номер порта, если не используете порт 443 по умолчанию. URL-адрес должен соответствовать следующему формату: WEB_SERVICE.example.com:8080 , где WEB_SERVICE — это имя вашей веб-службы.

Дополнительные сведения о настройке политики пиринга см. в разделе Настройка группировки сетей .