Praca z interfejsem eCDN w Meet na potrzeby wdrażania lokalnego

Z tej strony dowiesz się, jak używać interfejsu Google Meet Enterprise Content Delivery Network (eCDN) On-Premises API do transmisji na żywo w Google Meet.

Opisane tu rozwiązanie interfejsu API umożliwia klientom korzystanie z pełnego zestawu funkcji sieci eCDN w Meet bez udostępniania Google informacji o prywatnych adresach IP. Możesz zdefiniować nową lokalną usługę sieciową w swojej sieci, która przekazuje identyfikator zamiast informacji o prywatnym adresie IP.

Omówienie sieci eCDN w Meet

Sieć eCDN jest wbudowana w Meet i po skonfigurowaniu przez administratora Google Workspace uruchamia się automatycznie podczas transmisji na żywo. Gdy sieć eCDN w Meet jest włączona, widzowie transmisji na żywo z sieci lokalnej mogą udostępniać transmitowane na żywo multimedia innym osobom w tej sieci za pomocą udostępniania peer-to-peer (P2P). Większość urządzeń będzie otrzymywać transmitowane na żywo multimedia od osób w tej samej sieci, które znajdują się w pobliżu, i nie będzie musiało pobierać ich z serwerów Google. Powoduje to zmniejszenie całkowitej przepustowości wykorzystywanej przez widzów. Więcej informacji o konfigurowaniu i używaniu sieci eCDN w Meet znajdziesz w artykule Hostowanie dużych transmisji na żywo.

Sieć eCDN wymaga, aby widzowie transmisji na żywo w Meet byli podzieleni na grupy połączeń równorzędnych. Grupa połączeń równorzędnych to zbiór węzłów, które mogą udostępniać sobie multimedia. Urządzenia w grupie połączeń równorzędnych mogą nawiązywać połączenia równorzędne lub mają tę możliwość zablokowaną. Dozwolone urządzenia mogą łączyć się tylko z innymi urządzeniami w tej samej grupie połączeń równorzędnych. Więcej informacji o grupach połączeń równorzędnych znajdziesz w artykule Kroki do wykonania przed hostowaniem dużych transmisji na żywo.

Kiedy używać interfejsu API

Sieć eCDN może tworzyć grupy połączeń równorzędnych za pomocą kilku różnych zasad połączeń równorzędnych: random, subnet lub custom rules. Ta ostatnia udostępnia serwerowi śledzenia eCDN Google tabelę zakresów sieci prywatnych, aby mapować prywatne adresy IP każdego węzła równorzędnego na grupę połączeń równorzędnych. Zasada custom rules jest preferowanym rozwiązaniem i sprawdza się w większości środowisk produkcyjnych.

Zasada custom rules wymaga jednak udostępnienia Google dużych części struktury sieci prywatnej. Ponadto poszczególni użytkownicy udostępniają Google swoje lokalnie wykryte prywatne adresy IP podczas korzystania z sieci eCDN. W niektórych organizacjach zasady bezpieczeństwa mogą nie zezwalać na udostępnianie informacji o prywatnych adresach IP.

Tworzenie aplikacji za pomocą interfejsu Meet eCDN On-Premises API

Interfejs Meet eCDN On-Premises API udostępnia specyfikację serwera WWW, którą możesz zaimplementować i hostować lokalnie w sieci swojej organizacji. Możesz utworzyć niestandardową usługę internetową zgodną z interfejsem API, aby wykonywać wszystkie zadania zależne od informacji o prywatnym adresie IP, dzięki czemu informacje te nie będą udostępniane Google.

Interfejs API obejmuje 2 najważniejsze kroki dopasowywania prywatnych adresów IP , które są zwykle obsługiwane przez serwer śledzenia eCDN: mapowanie prywatnych adresów IP na grupę połączeń równorzędnych oraz wymiana danych oferty i odpowiedzi protokołu Session Description Protocol (SDP) podczas sygnalizacji WebRTC.

Po utworzeniu usługi internetowej musisz skonfigurować konsolę administracyjną, aby używać zasady połączeń równorzędnych On-premises service i dodać adres URL niestandardowej usługi internetowej.

Wymagania

Jeśli chcesz, aby któreś z tych wymagań zostało włączone w Twojej organizacji, poproś o to administratora Google Workspace:

  • Ten interfejs API może zaimplementować każdy serwer WWW korzystający z protokołu HTTPS.

  • Używaj protokołu HTTPS, aby zapobiegać błędom związanym z treścią mieszaną.

  • Akceptuj i zwracaj dane JSON. Używaj dowolnego kodowania treści obsługiwanego przez przeglądarkę.

  • Udostępniaj punkty końcowe w ramach trasy /vn, gdzie n to wybrana wersja interfejsu API. Na przykład /v1/get-peering-group.

  • Widzowie transmisji na żywo w Meet mogą dowiedzieć się o adresie URL Twojej usługi internetowej w konsoli administracyjnej Google. Adres URL można ustawić globalnie, dla jednostki organizacyjnej lub dla grupy. Upewnij się, że widzowie mogą łączyć się z przypisaną im instancją usługi. Więcej informacji znajdziesz w artykule Konfigurowanie konsoli administracyjnej.

  • Twoja usługa powinna zwracać odpowiedź w ciągu 2 sekund. W przeciwnym razie klient eCDN zostanie zamknięty, a widz będzie nadal oglądać wydarzenie na żywo jako zwykły użytkownik, który nie korzysta z sieci eCDN, co uniemożliwi mu oszczędzanie przepustowości.

  • Twoja usługa musi ustawić te nagłówki współdzielenia zasobów pomiędzy serwerami z różnych domen (CORS):

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

Mapowanie prywatnych adresów IP na grupę połączeń równorzędnych

Klient eCDN wykonuje wywołanie za każdym razem, gdy próbuje ponownie połączyć się z serwerem śledzenia eCDN. Gdy urządzenie wykryje prywatny adres IP, musi on zostać przypisany do odpowiedniej grupy połączeń równorzędnych. Musisz wysłać prywatny adres IP na serwer w swojej sieci i ręcznie przypisać go do grupy połączeń równorzędnych za pomocą metody get-peering-group(). W odpowiedzi zostanie zwrócony identyfikator grupy połączeń równorzędnych. Podczas komunikacji z Google zamiast prywatnych adresów IP przekazywany jest wynikowy identyfikator grupy połączeń równorzędnych.

Sposób mapowania prywatnych adresów IP na grupę komunikacji równorzędnej.
Rysunek 1. Mapowanie prywatnych adresów IP na grupę połączeń równorzędnych.

Ten przykładowy kod pokazuje, jak wywołać metodę get-peering-group() wraz z potencjalną odpowiedzią na błąd i oczekiwaną treścią odpowiedzi:

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
}

Ta tabela pokazuje oczekiwane formaty odpowiedzi:

Stan HTTP Błąd Dozwolone Wynik Reakcja klienta
200 null prawda Niepusty ciąg znaków Klient jest sortowany do określonej grupy połączeń równorzędnych i łączy się z serwerem śledzenia eCDN.
200 null fałsz Niepusty ciąg znaków Klient jest oznaczony jako zablokowany przez określoną grupę połączeń równorzędnych, będzie widoczny w narzędziu jakości w Meet (MQT) i zakończy sesję eCDN.
200 null Pusty ciąg znaków Klient kończy sesję eCDN.
200 Niepusty ciąg znaków Klient kończy sesję eCDN.
302 (Znaleziono) Klient podąża za przekierowaniem na nowy adres URL podany w nagłówku Location treści odpowiedzi.
Inny kod stanu Klient kończy sesję eCDN.

Starszy format odpowiedzi

Pole allowed nie było częścią formatu odpowiedzi w starszych wersjach. Zamiast tego specjalne zarezerwowane wartości result określały, czy adres IP widza zostanie zablokowany w przypadku połączeń równorzędnych:

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

Ta tabela pokazuje oczekiwane formaty odpowiedzi, jeśli pole allowed nie jest ustawione w wiadomości odpowiedzi:

Stan HTTP Błąd Wynik Reakcja klienta
200 null Niepusty ciąg znaków Klient powinien zostać posortowany do grupy połączeń równorzędnych i połączyć się z serwerem śledzenia eCDN.
200 null NOT_FOUND Klient kończy sesję eCDN.
200 null BLOCKED Klient kończy sesję eCDN.
200 Niepusty ciąg znaków Klient kończy sesję eCDN.
302 (Znaleziono) Klient podąża za przekierowaniem na nowy adres URL podany w nagłówku Location treści odpowiedzi.
Inny kod stanu Klient kończy sesję eCDN.

Wymiana danych oferty i odpowiedzi protokołu SDP

Aby zainicjować połączenie WebRTC, urządzenia muszą wymieniać oferty i odpowiedzi SDP, w tym kandydatów ICE (Interactive Connectivity Establishment), które zawierają informacje o prywatnym adresie IP. Odbywa się to w ramach procesu sygnalizacji WebRTC.

Klienci muszą szyfrować swoich kandydatów ICE w swojej sieci za pomocą interfejsu Meet eCDN On-Premises API, używając metody encrypt-sdp(). Metoda używa klucza, który nigdy nie jest udostępniany Google. Zaszyfrowana oferta SDP jest następnie wysyłana do węzła równorzędnego za pomocą serwera śledzenia eCDN. Węzeł równorzędny klienta odszyfrowuje otrzymane informacje w swojej sieci za pomocą metody decrypt-sdp(). Następnie Google przekazuje oferty i odpowiedzi między połączonymi węzłami równorzędnymi.

Po nawiązaniu połączenia za pomocą interfejsu Meet eCDN On-Premises API sieć eCDN działa normalnie. Węzły równorzędne kierują multimedia przez zwykłą sieć połączeń równorzędnych, a ruch multimediów nie przechodzi przez interfejs API ani go nie używa.

Sposób szyfrowania i odszyfrowywania danych oferty i odpowiedzi SDP.
Rysunek 2. Szyfrowanie i odszyfrowywanie danych oferty i odpowiedzi SDP.

Ten przykładowy kod pokazuje, jak wywołać metodę encrypt-sdp() wraz z potencjalną odpowiedzią na błąd i oczekiwaną treścią odpowiedzi:

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
}

Ten przykładowy kod pokazuje, jak wywołać metodę decrypt-sdp() wraz z potencjalną odpowiedzią na błąd i oczekiwaną treścią odpowiedzi:

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
}

Ta tabela pokazuje oczekiwane formaty odpowiedzi:

Stan HTTP Błąd Identyfikator grupy połączeń równorzędnych Reakcja klienta
200 null Niepusty ciąg znaków Klient oczekuje użycia prawidłowo zakodowanych lub zdekodowanych danych SDP.
200 Dowolny niepusty ciąg znaków null Klient kończy sesję eCDN.
302 (Znaleziono) Klient podąża za przekierowaniem na nowy adres URL podany w nagłówku Location treści odpowiedzi.
Inny kod stanu Dowolna wartość Dowolna wartość Klient kończy sesję eCDN.

Konfigurowanie konsoli administracyjnej

Aby używać interfejsu Meet eCDN On-Premises API, musisz skonfigurować sieć eCDN w konsoli administracyjnej, aby uwzględniała adres URL niestandardowej usługi internetowej.

Aby ustawić sieć eCDN, utwórz zasadę połączeń równorzędnych, używając opcji On-premises service, aby ręcznie dopasowywać informacje o adresach IP do grup połączeń równorzędnych. Możesz też podać numer portu, jeśli nie używasz domyślnego portu 443. Adres URL powinien mieć format: WEB_SERVICE.example.com:8080, gdzie WEB_SERVICE to nazwa Twojej usługi internetowej.

Więcej informacji o ustawianiu zasady połączeń równorzędnych znajdziesz w artykule Konfigurowanie grupowania sieci.