ทำงานกับ Meet eCDN On-Premises API

หน้านี้จะอธิบายวิธีใช้ API เครือข่ายนำส่งข้อมูล (CDN) บนระบบของ Google Meet Enterprise สำหรับสตรีมมิงแบบสดของ Google Meet

โซลูชัน API ที่อธิบายไว้ที่นี่ช่วยให้ลูกค้าใช้ชุดฟีเจอร์ทั้งหมดของ Meet eCDN ได้โดยไม่ต้องเปิดเผยข้อมูล IP ส่วนตัวให้ Google คุณสามารถกําหนดเว็บเซอร์วิสใหม่ในสถานที่ในเครือข่ายของคุณเองซึ่งส่งรหัสแทนข้อมูลที่อยู่ IP ส่วนตัว

ภาพรวมของ Meet eCDN

eCDN สร้างขึ้นใน Meet และจะเริ่มต้นระบบโดยอัตโนมัติในระหว่างสตรีมแบบสดหลังจากที่ผู้ดูแลระบบ Google Workspace ตั้งค่าแล้ว เมื่อเปิดใช้ eCDN ของ Meet ผู้ชมไลฟ์สดภายในเครือข่ายในพื้นที่จะแชร์สื่อที่ไลฟ์สดกับคนอื่นๆ ในเครือข่ายได้ผ่านการแชร์แบบ peer-to-peer (P2P) อุปกรณ์ส่วนใหญ่จะได้รับสื่อที่ไลฟ์สดจากผู้ที่อยู่ใกล้เคียงและไม่จำเป็นต้องดึงข้อมูลจากเซิร์ฟเวอร์ของ Google วิธีนี้ช่วยลดแบนด์วิดท์ทั้งหมดที่ผู้ชมใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าและใช้ eCDN ของ Meet ได้ที่การจัดไลฟ์สดขนาดใหญ่

eCDN กําหนดให้ผู้ชมสตรีมมิงแบบสดของ Meet ต้องจัดเรียงเป็นกลุ่มการเพียร์ กลุ่มการเพียร์คือกลุ่มโหนดที่ได้รับอนุญาตให้แชร์สื่อกัน อุปกรณ์ในกลุ่มการเพียร์จะได้รับอนุญาตให้เพียร์หรือถูกบล็อกจากการเพียร์ก็ได้ อุปกรณ์ที่อนุญาตจะเชื่อมต่อกับอุปกรณ์อื่นๆ ในกลุ่มการเพียร์เดียวกันเท่านั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับกลุ่มการเพียร์ได้ที่หัวข้อก่อนเริ่มจัดไลฟ์สดขนาดใหญ่

กรณีที่ควรใช้ API

eCDN สามารถจัดตั้งกลุ่มการเพียร์โดยใช้นโยบายการเพียร์หลายรายการ ได้แก่ random, subnet หรือ custom rules โดยระบบจะแชร์ตารางช่วงเครือข่ายส่วนตัวกับเซิร์ฟเวอร์เครื่องมือติดตาม eCDN ของ Google เพื่อแมปที่อยู่ IP ส่วนตัวของโหนดเพียร์แต่ละโหนดกับกลุ่มการเพียร์ นโยบาย custom rules เป็นโซลูชันที่แนะนำและเหมาะสําหรับสภาพแวดล้อมเวอร์ชันที่ใช้งานจริงส่วนใหญ่

อย่างไรก็ตาม นโยบาย custom rules กําหนดให้คุณแชร์โครงสร้างเครือข่ายส่วนตัวส่วนใหญ่กับ Google นอกจากนี้ ผู้ใช้แต่ละรายจะเปิดเผยที่อยู่ IP ส่วนตัวที่ตรวจพบในเครื่องให้ Google ทราบขณะใช้ eCDN องค์กรบางแห่งอาจไม่อนุญาตให้แชร์ข้อมูล IP ส่วนตัวตามหลักเกณฑ์ด้านความปลอดภัย

พัฒนาด้วย Meet eCDN On-Premises API

Meet eCDN On-Premises API มีข้อมูลจำเพาะของเว็บเซิร์ฟเวอร์ที่คุณติดตั้งใช้งานและโฮสต์ในเครือข่ายขององค์กรได้ คุณสามารถสร้างบริการบนเว็บที่กําหนดเองซึ่งเข้ากันได้กับ API เพื่อดําเนินการทั้งหมดที่ขึ้นอยู่กับข้อมูล IP ส่วนตัวเพื่อไม่ให้แชร์ข้อมูลกับ Google

API นี้ประกอบด้วย 2 ขั้นตอนสําคัญในการจับคู่ที่อยู่ IP ส่วนตัว ซึ่งโดยปกติแล้วเซิร์ฟเวอร์เครื่องมือติดตาม eCDN จะจัดการแมปที่อยู่ IP ส่วนตัวกับกลุ่มการเพียร์และการแลกเปลี่ยนข้อมูลข้อเสนอและคําตอบของ Session Description Protocol (SDP) ระหว่างการส่งสัญญาณ WebRTC

เมื่อสร้างบริการเว็บเสร็จแล้ว คุณต้องกําหนดค่าคอนโซลผู้ดูแลระบบให้ใช้นโยบายการเพียร์ On-premises service และใส่ URL ของบริการเว็บที่กําหนดเอง

ข้อกำหนด

หากต้องการเปิดใช้ข้อกำหนดเหล่านี้สำหรับองค์กร โปรดสอบถามผู้ดูแลระบบ Google Workspace

  • เว็บเซิร์ฟเวอร์ที่ใช้ HTTPS สามารถใช้ API นี้ได้

  • ใช้ HTTPS เพื่อป้องกันไม่ให้มีการแสดงเนื้อหาผสม

  • รับและแสดงผลข้อมูล JSON ใช้การเข้ารหัสเนื้อหาที่เบราว์เซอร์ของคุณรองรับ

  • แสดงปลายทางภายใต้เส้นทาง /vn โดยที่ n คือเวอร์ชัน API ที่เลือก เช่น /v1/get-peering-group

  • ผู้ชมสตรีมมิงแบบสดของ Meet สามารถดูข้อมูลเกี่ยวกับ URL ของบริการเว็บผ่านคอนโซลผู้ดูแลระบบของ Google คุณตั้งค่า URL ได้ทั่วโลก ต่อหน่วยขององค์กร หรือต่อกลุ่ม ตรวจสอบว่าผู้ชมสามารถเชื่อมต่อกับอินสแตนซ์ของบริการที่กำหนด ดูข้อมูลเพิ่มเติมได้ที่หัวข้อกำหนดค่าคอนโซลผู้ดูแลระบบ

  • บริการของคุณควรแสดงการตอบกลับภายใน 2 วินาที มิเช่นนั้น ไคลเอ็นต์ 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() ระบบจะแสดงรหัสกลุ่มการเพียร์ในการตอบกลับ เมื่อสื่อสารกับ 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 Null สตริงที่ไม่ใช่ค่าว่าง ระบบควรจัดเรียงไคลเอ็นต์เป็นกลุ่มการเพียร์และเชื่อมต่อกับเซิร์ฟเวอร์เครื่องมือติดตาม eCDN
200 NOT_FOUND Null ไคลเอ็นต์สิ้นสุดเซสชัน eCDN
200 BLOCKED Null ไคลเอ็นต์สิ้นสุดเซสชัน eCDN
200 สตริงอื่นๆ ที่ไม่ใช่สตริงว่าง Null ไคลเอ็นต์สิ้นสุดเซสชัน eCDN
302 (พบ) ลูกค้าจะเปลี่ยนเส้นทางไปยัง URL ใหม่ที่ระบุในส่วนหัว Location ของเนื้อหาการตอบกลับ
รหัสสถานะอื่นๆ สตริงใดก็ได้ สตริงใดก็ได้ ไคลเอ็นต์สิ้นสุดเซสชัน eCDN

การแลกเปลี่ยนข้อมูลข้อเสนอและคำตอบ SDP

หากต้องการเริ่มต้นการเชื่อมต่อ WebRTC อุปกรณ์ต้องแลกเปลี่ยนข้อเสนอและคำตอบ SDP รวมถึงตัวเลือก Interactive Connectivity Establishment (ICE) ที่มีข้อมูล IP ส่วนตัว ซึ่งเป็นส่วนหนึ่งของกระบวนการส่งสัญญาณ WebRTC

ไคลเอ็นต์ต้องเข้ารหัสตัวเลือก ICE ภายในเครือข่ายผ่าน API ของ Meet eCDN ในองค์กร โดยใช้เมธอด encrypt-sdp() เมธอดนี้ใช้คีย์ที่ไม่เคยแสดงต่อ Google จากนั้นระบบจะส่งข้อเสนอ SDP ที่เข้ารหัสไปยังคู่สนทนาโดยใช้เซิร์ฟเวอร์เครื่องมือติดตาม eCDN จากนั้นพาร์ทเนอร์ฝั่งไคลเอ็นต์จะถอดรหัสข้อมูลที่รับภายในเครือข่ายโดยใช้วิธีการ decrypt-sdp() จากนั้น Google จะส่งต่อข้อเสนอและคำตอบระหว่างคู่สนทนาที่เชื่อมต่อ

เมื่อสร้างการเชื่อมต่อโดยใช้ Meet eCDN On-Premises API แล้ว 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 Null สตริงที่ไม่ใช่ค่าว่าง ไคลเอ็นต์คาดว่าจะใช้ข้อมูล SDP ที่เข้ารหัสหรือถอดรหัสอย่างถูกต้อง
200 สตริงใดก็ได้ที่ไม่ใช่สตริงว่าง Null ไคลเอ็นต์สิ้นสุดเซสชัน eCDN
302 (พบ) ลูกค้าจะเปลี่ยนเส้นทางไปยัง URL ใหม่ที่ระบุในส่วนหัว Location ของเนื้อหาการตอบกลับ
รหัสสถานะอื่นๆ ค่าใดก็ได้ ค่าใดก็ได้ ไคลเอ็นต์สิ้นสุดเซสชัน eCDN

กำหนดค่าคอนโซลผู้ดูแลระบบ

หากต้องการใช้ Meet eCDN On-Premises API คุณต้องกำหนดค่า eCDN ใน คอนโซลผู้ดูแลระบบเพื่อใส่ URL ของบริการทางเว็บที่กำหนดเอง

หากต้องการตั้งค่า eCDN ให้สร้างนโยบายการเพียร์โดยใช้ On-premises service เพื่อจับคู่ข้อมูล IP กับกลุ่มการเพียร์ด้วยตนเอง นอกจากนี้ คุณยังใส่หมายเลขพอร์ตได้ด้วยหากไม่ได้ใช้หมายเลขเริ่มต้น 443 โดย URL ควรตรงกับรูปแบบต่อไปนี้ WEB_SERVICE.example.com:8080 โดยที่ WEB_SERVICE คือชื่อเว็บเซอร์วิส

ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่านโยบายการเพียร์ได้ที่กำหนดค่าการจัดกลุ่มเครือข่าย