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

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

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

Представляем обзор eCDN.

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

  • Зрители прямых трансляций могут узнать 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:
{
  "allowed": boolean,
  "result": string,
  "error": null,
}

В таблице ниже представлены ожидаемые форматы ответов:

HTTP-статус Ошибка Допустимый Результат Реакция клиента
200 нулевой истинный Непустая строка Клиент попадает в указанную группу пиринга и подключается к серверу отслеживания eCDN.
200 нулевой ЛОЖЬ Непустая строка Клиент помечается как заблокированный указанной группой пиринга, становится видимым в инструменте Meet Quality Tool (MQT) и завершает сессию eCDN.
200 нулевой Пустая строка Клиент завершает сессию eCDN.
200 Непустая строка Клиент завершает сессию eCDN.
302 (Найдено) Клиент переходит по перенаправлению на новый URL-адрес, указанный в заголовке Location тела ответа.
Любой другой код состояния Клиент завершает сессию eCDN.

Устаревший формат ответа

Поле allowed отсутствовало в формате ответа более ранних версий. Вместо этого специальные зарезервированные значения для result определяли, будет ли IP-адрес пользователя заблокирован для установления пирингового соединения:

Legacy response body:
{
  "result": string,
  "error": null,
}

В таблице ниже показаны ожидаемые форматы ответа, если в ответном сообщении не указано allowed поле:

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 — это имя вашей веб-службы.

Для получения дополнительной информации о настройке политики пиринга см. раздел «Настройка группировки сети» .