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 Mạng phân phối nội dung (eCDN) tại chỗ của Google Meet Enterprise cho tính năng Phát trực tiếp của Google Meet.

Giải pháp API được mô tả ở đây cho phép khách hàng sử dụng toàn bộ 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 tại chỗ mới trong mạng riêng của 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 vào Meet và tự động bắt đầu 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, những người xem sự kiện phát trực tiếp trong mạng cục bộ có thể chia sẻ nội dung 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 nghe nhìn phát trực tiếp từ các thiết bị ngang hàng ở gần và không cần tìm nạp nội dung đó từ các máy chủ của Google. Việc này giúp 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 thành 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 phần Trước khi bắt đầu lưu trữ 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 các nhóm ngang hàng bằng nhiều chính sách kết nối ngang hàng khác nhau: random, subnet hoặc custom rules. Sau này, máy chủ theo dõi eCDN của Google sẽ chia sẻ một bảng gồm các dải mạng riêng tư để liên kết địa chỉ IP riêng tư của từng 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 được ưu tiên và phù hợp với hầu hết các 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ư của mình 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ộ của họ cho Google khi sử dụng eCDN. Đối với một số tổ chức, cá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 Meet eCDN On-Premises API

Meet eCDN On-Premises API cung cấp một quy cách 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ư để thông tin đó không được chia sẻ với Google.

API này bao gồm 2 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ư với một nhóm ngang hàngtrao đổi dữ liệu đề nghị-phản hồi Giao thức mô tả phiên (SDP) trong quá trình báo hiệu WebRTC.

Sau khi hoàn tất dịch vụ web, bạn phải thiết lập Bảng điều khiển dành cho quản trị viên để sử dụng chính sách ngang hàng 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 mọi phương thức mã hoá nội dung mà trình duyệt của bạn hỗ trợ.

  • Phân phát các điểm cuối trong một 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ầu, theo từng đơn vị tổ chức hoặc theo từng nhóm. Đảm bảo 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 tiếp tục xem sự kiện phát trực tiếp như một người dùng thông thường không sử dụng eCDN, khiến họ không tiết kiệm được băng thông.

  • 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 đây:

    • 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 sẽ 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ủ theo dõi eCDN. Sau khi thiết bị phát hiện địa chỉ IP riêng tư, địa chỉ đó phải được liên kết với nhóm ngang hàng 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 của mình và giải quyết theo cách thủ công thành một nhóm ngang hàng bằng phương thức get-peering-group(). Mã nhóm ngang hàng sẽ được trả về trong phản hồi. Khi giao tiếp với Google, mã nhóm ngang hàng thu được 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 ngang hàng.
Hình 1. Liên kết địa chỉ IP riêng tư với một nhóm ngang hàng.

Mẫu mã 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 biết 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 rỗng NOT_FOUND Ứng dụng khách kết thúc phiên eCDN.
200 rỗng BLOCKED Ứ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) Máy khách 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 đề nghị-phản hồi SDP

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

Các ứng dụng phải mã hoá các đề xuất ICE bên trong mạng của mình thông qua Meet eCDN On-Premises API, 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 đó, đề nghị SDP đã mã hoá sẽ được gửi đến thiết bị ngang hàng bằng máy chủ theo dõi eCDN. Sau đó, máy ngang hàng của ứng dụng sẽ giải mã thông tin nhận được trong mạng của họ bằng phương thức decrypt-sdp(). Sau đó, Google sẽ chuyển tiếp các đề nghị và câu trả lời giữa các thiết bị ngang hàng được kết nối.

Sau khi kết nối được thiết lập bằng Meet eCDN On-Premises API, eCDN sẽ hoạt động như bình thường. Các thiết bị 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 đề nghị và câu trả lời SDP.
Hình 2. Mã hoá và giải mã dữ liệu đề nghị và câu trả lời SDP.

Đoạn mã mẫu sau đây cho thấy 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 thấy 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 biết 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 mong muốn sử dụng dữ liệu SDP được mã hoá hoặc giải mã đúng cách.
200 Mọi chuỗi không trống rỗng Ứng dụng khách kết thúc phiên eCDN.
302 (Đã tìm thấy) Máy khách 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 eCDN tại cơ sở của Meet, 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 một chính sách kết nối ngang hàng bằng On-premises service để tự động so khớp thông tin IP với các nhóm kết nối ngang hà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 có đị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 kết nối ngang hàng, hãy xem phần Định cấu hình tính năng nhóm mạng.