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

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

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

Знакомьтесь с обзором eCDN

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

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

Когда использовать 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, что лишает его возможности экономить пропускную способность.

  • Ваша служба должна установить следующие заголовки Cross-Origin Resource Sharing (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, включая кандидаты интерактивного установления соединения (ICE), содержащие информацию о частном IP-адресе. Это происходит в рамках процесса сигнализации WebRTC.

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

После установки соединения с использованием API Meet eCDN On-Premises сеть 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 On-Premises, необходимо настроить eCDN в консоли администратора , включив URL-адрес вашей пользовательской веб-службы.

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

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