Làm việc với API Meet eCDN trên máy

Trang này giải thích cách sử dụng API trên máy của Mạng phân phối nội dung (eCDN) dành cho doanh nghiệp của Google Meet để phát trực tiếp trên Google Meet.

Giải pháp API được mô tả ở đây cho phép khách hàng sử dụng toàn bộ tính năng của eCDN Meet mà không tiết lộ thông tin IP riêng tư cho Google. Bạn có thể xác định một dịch vụ web mới tại chỗ trong mạng của riêng mình, dịch vụ này sẽ truyền một mã nhận dạng thay vì thông tin địa chỉ IP riêng tư.

Tổng quan về eCDN của Meet

eCDN được tích hợp sẵn trong Meet và tự động khởi động trong các sự kiện phát trực tiếp sau khi quản trị viên Google Workspace thiết lập. Khi bật eCDN của Meet, người xem sự kiện phát trực tiếp trong một mạng cục bộ có thể chia sẻ nội dung nghe nhìn được phát trực tiếp với những người dùng khác trong mạng thông qua tính năng chia sẻ ngang hàng (P2P). Hầu hết các thiết bị đều nhận nội dung đa phương tiện phát trực tiếp từ các thiết bị đồng cấp lân cận và không cần tìm nạp nội dung đó từ máy chủ của Google. Điều này làm giảm tổng băng thông mà người xem sử dụng. Để biết thêm thông tin về cách thiết lập và sử dụng eCDN của Meet, hãy xem bài viết Tổ chức các sự kiện phát trực tiếp quy mô lớn.

eCDN yêu cầu người xem sự kiện phát trực tiếp trên Meet phải được sắp xếp vào các nhóm ngang hàng. Nhóm ngang hàng là một tập hợp các nút được phép chia sẻ nội dung nghe nhìn với nhau. Các thiết bị trong một nhóm ngang hàng được phép ngang hàng hoặc bị chặn ngang hàng. Các thiết bị được phép chỉ có thể kết nối với các thiết bị khác trong cùng một nhóm ngang hàng. Để biết thêm thông tin về nhóm ngang hàng, hãy xem bài viết Trước khi bắt đầu tổ chức sự kiện phát trực tiếp quy mô lớn.

Trường hợp sử dụng API

eCDN có thể tạo nhóm ngang hàng bằng một số chính sách kết nối ngang hàng: random, subnet hoặc custom rules. Máy chủ này chia sẻ bảng các dải mạng riêng tư với máy chủ theo dõi eCDN của Google để liên kết địa chỉ IP riêng tư của mỗi nút ngang hàng với một nhóm ngang hàng. Chính sách custom rules là giải pháp ưu tiên và phù hợp với hầu hết môi trường sản xuất.

Tuy nhiên, chính sách custom rules yêu cầu bạn chia sẻ phần lớn cấu trúc mạng riêng tư với Google. Ngoài ra, người dùng cá nhân sẽ tiết lộ địa chỉ IP riêng tư được phát hiện cục bộ cho Google trong khi sử dụng eCDN. Đối với một số tổ chức, nguyên tắc bảo mật của họ có thể không cho phép chia sẻ thông tin IP riêng tư.

Phát triển bằng API Meet eCDN trên máy

API Meet eCDN tại chỗ cung cấp thông số kỹ thuật của máy chủ web mà bạn có thể triển khai và lưu trữ cục bộ trong mạng của tổ chức. Bạn có thể tạo một dịch vụ web tuỳ chỉnh tương thích với API để thực hiện tất cả các tác vụ phụ thuộc vào thông tin IP riêng tư, nhờ đó thông tin sẽ không được chia sẻ với Google.

API này bao gồm hai bước quan trọng để so khớp địa chỉ IP riêng tư thường do máy chủ theo dõi eCDN xử lý: ánh xạ địa chỉ IP riêng tư đến một nhóm ngang hàngtrao đổi dữ liệu câu trả lời ưu đãi theo Giao thức mô tả phiên (SDP) trong quá trình truyền tín hiệu WebRTC.

Sau khi hoàn tất dịch vụ web, bạn phải định cấu hình Bảng điều khiển dành cho quản trị viên để sử dụng chính sách liên kết ngang On-premises service và thêm URL của dịch vụ web tuỳ chỉnh.

Yêu cầu

Nếu bạn cần bật bất kỳ yêu cầu nào trong số này cho tổ chức của mình, hãy yêu cầu quản trị viên Google Workspace:

  • Mọi máy chủ web sử dụng HTTPS đều có thể triển khai API này.

  • Sử dụng HTTPS để ngăn chặn lỗi nội dung hỗn hợp.

  • Chấp nhận và trả về dữ liệu JSON. Sử dụng bất kỳ phương thức mã hoá nội dung nào mà trình duyệt của bạn hỗ trợ.

  • Phân phát các điểm cuối trong tuyến /vn, trong đó n là phiên bản API đã chọn. Ví dụ: /v1/get-peering-group

  • Người xem sự kiện phát trực tiếp trên Meet có thể tìm hiểu về URL của dịch vụ web của bạn thông qua Bảng điều khiển dành cho quản trị viên của Google. Bạn có thể đặt URL trên toàn cục, cho mỗi đơn vị tổ chức hoặc cho mỗi nhóm. Đảm bảo rằng người xem có thể kết nối với phiên bản dịch vụ được chỉ định. Để biết thêm thông tin, hãy xem bài viết Định cấu hình Bảng điều khiển dành cho quản trị viên.

  • Dịch vụ của bạn phải trả về phản hồi trong vòng 2 giây. Nếu không, ứng dụng eCDN sẽ tắt và người xem sẽ tiếp tục xem sự kiện phát trực tiếp dưới dạng người dùng thông thường, không phải eCDN, từ chối tiết kiệm băng thông cho họ.

  • Dịch vụ của bạn phải đặt các tiêu đề Chia sẻ tài nguyên trên nhiều nguồn gốc (CORS) sau:

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

Ánh xạ địa chỉ IP riêng tư đến một nhóm ngang hàng

Ứng dụng eCDN thực hiện một lệnh gọi mỗi khi cố gắng kết nối lại với máy chủ trình theo dõi eCDN. Sau khi phát hiện địa chỉ IP riêng tư, thiết bị phải ánh xạ địa chỉ đó đến nhóm liên kết thích hợp. Bạn phải gửi địa chỉ IP riêng tư đến một máy chủ trên mạng và phân giải địa chỉ đó thành một nhóm ngang hàng theo cách thủ công bằng phương thức get-peering-group(). Mã nhận dạng nhóm ngang hàng được trả về trong phản hồi. Khi giao tiếp với Google, mã nhận dạng nhóm ngang hàng sẽ được truyền thay vì địa chỉ IP riêng tư.

Cách ánh xạ địa chỉ IP riêng tư đến một nhóm liên kết.
Hình 1. Liên kết địa chỉ IP riêng tư với một nhóm ngang hàng.

Mã mẫu sau đây cho thấy cách gọi phương thức get-peering-group() cùng với phản hồi lỗi tiềm ẩn và nội dung phản hồi dự kiến:

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,
}

Bảng sau đây cho thấy các định dạng phản hồi dự kiến:

Trạng thái HTTP Lỗi Mã nhóm ngang hàng Phản ứng của ứng dụng
200 rỗng Chuỗi không trống Ứng dụng phải được sắp xếp vào một nhóm ngang hàng và tiếp tục kết nối với máy chủ theo dõi eCDN.
200 NOT_FOUND rỗng Ứng dụng khách kết thúc phiên eCDN.
200 BLOCKED rỗng Ứng dụng khách kết thúc phiên eCDN.
200 Chuỗi không trống khác rỗng Ứng dụng khách kết thúc phiên eCDN.
302 (Đã tìm thấy) Ứng dụng sẽ chuyển hướng đến URL mới được chỉ định trong tiêu đề Location của nội dung phản hồi.
Mã trạng thái khác Chuỗi bất kỳ Chuỗi bất kỳ Ứng dụng khách kết thúc phiên eCDN.

Trao đổi dữ liệu câu trả lời ưu đãi SDP

Để bắt đầu kết nối WebRTC, các thiết bị phải trao đổi các ưu đãi và câu trả lời SDP, bao gồm cả các đề xuất Thiết lập kết nối tương tác (ICE) chứa thông tin IP riêng tư. Các ứng dụng này thực hiện việc này trong quy trình báo hiệu WebRTC.

Ứng dụng phải mã hoá các đề xuất ICE bên trong mạng của ứng dụng thông qua API Meet eCDN On-Premises bằng phương thức encrypt-sdp(). Phương thức này sử dụng một khoá không bao giờ được tiết lộ cho Google. Sau đó, ưu đãi SDP đã mã hoá sẽ được gửi đến máy chủ theo dõi eCDN. Sau đó, máy khách đồng cấp sẽ giải mã thông tin nhận được bên trong mạng của họ bằng phương thức decrypt-sdp(). Sau đó, Google sẽ chuyển tiếp các ưu đãi và câu trả lời giữa các máy chủ đồng cấp đã kết nối.

Sau khi kết nối được thiết lập bằng API Meet eCDN trên máy, eCDN sẽ hoạt động như bình thường. Các máy ngang hàng định tuyến nội dung nghe nhìn thông qua mạng ngang hàng thông thường và lưu lượng truy cập nội dung nghe nhìn không đi qua hoặc sử dụng API.

Cách mã hoá và giải mã dữ liệu câu trả lời và ưu đãi SDP.
Hình 2. Mã hoá và giải mã dữ liệu câu trả lời và ưu đãi SDP.

Đoạn mã mẫu sau đây cho biết cách gọi phương thức encrypt-sdp() cùng với phản hồi lỗi tiềm ẩn và nội dung phản hồi dự kiến:

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,
}

Đoạn mã mẫu sau đây cho biết cách gọi phương thức decrypt-sdp() cùng với phản hồi lỗi tiềm ẩn và nội dung phản hồi dự kiến:

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,
}

Bảng sau đây cho thấy các định dạng phản hồi dự kiến:

Trạng thái HTTP Lỗi Mã nhóm ngang hàng Phản ứng của ứng dụng
200 rỗng Chuỗi không trống Ứng dụng dự kiến sẽ sử dụng dữ liệu SDP được mã hoá hoặc giải mã đúng cách.
200 Bất kỳ chuỗi nào không trống rỗng Ứng dụng khách kết thúc phiên eCDN.
302 (Đã tìm thấy) Ứng dụng sẽ chuyển hướng đến URL mới được chỉ định trong tiêu đề Location của nội dung phản hồi.
Mã trạng thái khác Giá trị bất kỳ Giá trị bất kỳ Ứng dụng khách kết thúc phiên eCDN.

Định cấu hình Bảng điều khiển dành cho quản trị viên

Để sử dụng API Meet eCDN tại chỗ, bạn phải định cấu hình eCDN trong Bảng điều khiển dành cho quản trị viên để thêm URL của dịch vụ web tuỳ chỉnh.

Để thiết lập eCDN, hãy tạo chính sách kết nối ngang hàng bằng On-premises service để so khớp thông tin IP với các nhóm kết nối ngang hàng theo cách thủ công. Bạn cũng có thể thêm số cổng nếu không sử dụng cổng mặc định 443. URL phải khớp với định dạng sau: WEB_SERVICE.example.com:8080, trong đó WEB_SERVICE là tên dịch vụ web của bạn.

Để biết thêm thông tin về cách thiết lập chính sách liên kết ngang, hãy xem phần Định cấu hình tính năng nhóm mạng.