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

หน้านี้อธิบายวิธีใช้ Google Meet Enterprise Content Delivery Network (eCDN) On-Premises API สำหรับการไลฟ์สดของ Google Meet

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

ภาพรวมของ eCDN ของ Meet

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

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

กรณีที่ควรใช้ 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 ซึ่งจะทำให้ผู้ชมไม่ได้รับประโยชน์จากการประหยัดแบนด์วิดท์

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

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

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

ไคลเอ็นต์ต้องเข้ารหัสแคนดิเดต ICE ภายในเครือข่ายผ่าน Meet eCDN On-Premises API โดยใช้วิธี 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"
},

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 ข้อผิดพลาด รหัสกลุ่มการเพียร์ รีแอ็กชันของไคลเอ็นต์
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 คือชื่อบริการทางเว็บ

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