使用 Meet eCDN 本地 API

本页面介绍了如何使用 Google Meet 企业内容分发网络 (eCDN) 本地 API 进行 Google Meet 直播。

此处介绍的 API 解决方案允许客户使用 Meet eCDN 的完整功能集,而无需向 Google 透露专用 IP 信息。您可以在自己的网络中定义新的本地网络服务,该服务传递 ID 而不是专用 IP 地址信息。

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 时会向 Google 透露其本地检测到的专用 IP 地址。对于某些组织,其安全准则可能不允许共享专用 IP 信息。

使用 Meet eCDN 本地 API 进行开发

Meet eCDN 本地 API 提供了一个网络服务器规范,您可以在组织的网络中本地实现和托管该规范。您可以构建与该 API 兼容的自定义网络服务,以执行所有依赖于专用 IP 信息的任务,这样就不会与 Google 共享该信息。

该 API 涵盖了匹配专用 IP 地址 的两个关键步骤,这些步骤通常由 eCDN 跟踪器服务器处理:将专用 IP 地址 映射到对等互连组,以及会话描述协议 (SDP) 提议-应答数据交换在 WebRTC 信令期间。

网络服务完成后,您必须配置 管理控制台以使用 On-premises service 对等互连政策,并添加自定义网络服务的网址。

要求

如果您需要为组织启用以下任何要求,请咨询您的 Google Workspace 管理员:

  • 任何使用 HTTPS 的网络服务器都可以实现此 API。

  • 使用 HTTPS 可防止混合内容失败。

  • 接受和返回 JSON 数据。使用浏览器支持的任何内容编码。

  • /vn 路由下提供端点,其中 n 是所选的 API 版本。例如,/v1/get-peering-group

  • Meet 直播观看者可以通过 Google 管理控制台了解您的网络服务的网址。该网址可以全局设置,也可以按组织部门或群组设置。确保观看者可以连接到其分配的服务实例。如需了解详情,请参阅 配置管理控制台

  • 您的服务应在两秒内返回响应。否则,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 通信时,系统会传递生成的对等互连组 ID,而不是专用 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 null true 非空字符串 客户端会归入指定的对等互连组,并继续连接到 eCDN 跟踪器服务器。
200 null false 非空字符串 客户端会被标记为被指定的对等互连组屏蔽,会在 Meet 会议质量工具 (MQT) 中显示,并结束 eCDN 会话。
200 null 空字符串 客户端结束 eCDN 会话。
200 非空字符串 客户端结束 eCDN 会话。
302(已找到) 客户端会按照重定向到响应正文的 Location 标头中指定的新网址。
任何其他状态代码 客户端结束 eCDN 会话。

旧版响应格式

allowed 字段不属于早期版本的响应格式。相反,result 的特殊保留值将决定是否会禁止观看者的 IP 地址进行对等互连:

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

下表显示了如果未在响应消息中设置 allowed 字段,预期的响应格式:

HTTP 状态 错误 结果 客户端反应
200 null 非空字符串 客户端应归入对等互连组,并继续连接到 eCDN 跟踪器服务器。
200 null NOT_FOUND 客户端结束 eCDN 会话。
200 null BLOCKED 客户端结束 eCDN 会话。
200 非空字符串 客户端结束 eCDN 会话。
302(已找到) 客户端会按照重定向到响应正文的 Location 标头中指定的新网址。
任何其他状态代码 客户端结束 eCDN 会话。

SDP 提议-应答数据交换

如需启动 WebRTC 连接,设备必须交换其 SDP 提议和应答,包括包含专用 IP 信息的 Interactive Connectivity Establishment (ICE) 候选地址。它们会作为 WebRTC 信令过程的一部分执行此操作。

客户端必须使用 encrypt-sdp() 方法,通过 Meet eCDN 本地 API 在其网络内加密 ICE 候选地址。该方法使用永远不会向 Google 透露的密钥。然后,使用 eCDN 跟踪器服务器将加密的 SDP 提议发送给对等方。然后,客户端对等方使用 decrypt-sdp() 方法在其网络内解密收到的信息。然后,Google 会在连接的对等方之间转发提议和应答。

使用 Meet eCDN 本地 API 建立连接后,eCDN 会正常运行。对等方通过常规对等互连网络路由媒体,媒体流量不会通过或使用 API。

SDP offer 和 answer 数据的加密和解密方式。
图 2.加密和解密 SDP 提议和应答数据。

以下代码示例展示了如何调用 encrypt-sdp() 方法,以及潜在的错误响应和预期响应正文:

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

Request body:
{
  "data": "SDP_DATA"
},

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

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

以下代码示例展示了如何调用 decrypt-sdp() 方法,以及潜在的错误响应和预期响应正文:

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

Request body:
{
  "data": "ENCRYPTED_DATA_STRING"
},

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

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

下表显示了预期的响应格式:

HTTP 状态 错误 对等互连组 ID 客户端反应
200 null 非空字符串 客户端希望使用正确编码或解码的 SDP 数据。
200 任何非空字符串 null 客户端结束 eCDN 会话。
302(已找到) 客户端会按照重定向到响应正文的 Location 标头中指定的新网址。
任何其他状态代码 任意值 任意值 客户端结束 eCDN 会话。

配置管理控制台

如需使用 Meet eCDN 本地 API,您必须在 管理控制台中配置 eCDN,以添加 自定义网络服务的网址。

如需设置 eCDN,请使用 On-premises service 创建对等互连政策,以手动将 IP 信息与对等互连组进行匹配。如果您未使用默认的 443,还可以添加端口号。网址应采用以下格式: WEB_SERVICE.example.com:8080,其中 WEB_SERVICE 是您的网络服务名称。

如需详细了解如何设置对等互连政策,请参阅配置网络 分组