Wybór sieci według aplikacji (PAN)

Pojazdy w coraz większym stopniu polegają na łączności, aby zarządzać rosnącą listą przypadków użycia, o które proszą zarówno producenci OEM, jak i właściciele pojazdów, co skutkuje zwiększonym śladem danych i związanymi z tym kosztami. Użyj funkcji wyboru sieci według aplikacji (PANS) , aby skierować ruch określonych aplikacji w sieciach opłacanych przez producenta OEM.

Dzięki PANS możesz zarządzać objętością i kosztem wykorzystania danych, zapewniając jednocześnie solidne, bezpieczne i połączone wrażenia z samochodu. PANELE:

  • Składa się z nowego API dodanego do ConnectivityManager dostępnego tylko dla urządzeń motoryzacyjnych.
  • Zapewnia zaktualizowany interfejs API sugestii Wi-Fi (patrz interfejs API sugestii Wi-Fi dotyczący łączności z Internetem ), aby uwzględnić obsługę dynamicznie zmieniających się możliwości sieci PANS.
  • Zbiera pomocnicze metryki.
  • Zapewnia aplikację referencyjną.

Dlaczego PANS?

PANS może:

  • Dynamicznie aktualizuj mapowania aplikacji do sieci.
  • Zarządzaj routingiem na poziomie aplikacji bez wprowadzania zmian w aplikacjach.
  • Tylko aplikacje dopuszczone przez producentów OEM mogą uzyskiwać dostęp do zmapowanych sieci OEM.
  • Twórcy aplikacji nie muszą wprowadzać żadnych zmian, aby zaimplementować tę funkcję.
  • Wskaźniki dostępne dla użytkowników śledzą wykorzystanie danych między aplikacjami i siecią w sieciach zarządzanych przez producentów OEM.
  • Dostęp do sieci jest bezpieczny i nie można go nadużywać przez niezamierzone przypadki użycia lub nieautoryzowane aplikacje.
  • Zmiany w mapowaniu aplikacji PANS do sieci są przekazywane użytkownikom.
  • Ta sama konfiguracja sieci jest stosowana dla wszystkich użytkowników.

Podstawowe zalety

PANS zapewnia producentom OEM następujące podstawowe zalety:

  1. Producenci OEM mogą płacić za ruch sieciowy zamiast za użytkowników:
    • Aktualizacje systemu mogą być dostarczane bezpłatnie dla użytkownika.
    • Korzystanie z sieci przez określone aplikacje może być udostępniane użytkownikowi bezpłatnie.
    • Telemetrią i innymi analizami można zarządzać bez żadnych kosztów dla użytkownika.
  2. Producenci OEM mogą zapewnić, że krytyczne aplikacje pozostaną połączone, nawet bez planu taryfowego opłacanego przez użytkownika. Na przykład funkcje krytyczne dla bezpieczeństwa, takie jak mapy, asystent (jazda bez użycia rąk) i aktualizacje systemu nadal działają, nawet jeśli użytkownik nie ma planu danych.
  3. PANS zapewnia dodatkową szczegółowość kontroli specyficzną dla routingu ruchu sieciowego w systemie Android. Na przykład producenci OEM mogą optymalnie zdefiniować logiczną topologię sieci dla routingu ruchu na poziomie aplikacji.

Rysunek 1 . Ramy PANS

Wdrażanie PANS

Aby zaimplementować PANS, udostępniono nowy interfejs API ConnectivityManager , setOemNetworkPreference . Ten nowy interfejs API mapuje aplikacje do OemNetworkPreference . Ten interfejs API jest dostępny tylko dla urządzeń motoryzacyjnych i jest oznaczony jako @SystemApi z nowym uprawnieniem do signature .

Rysunek 2. Wdrażanie PANS

Preferencje sieci Oem

OemNetworkPreference to abstrakcja w stosunku do OEM_PAID i OEM_PRIVATE NetworkCapabilities mapujące aplikacje według nazwy pakietu do preferencji sieci . Preferencje sieciowe pozwalają na hierarchie sieciowe. Na przykład mapowanie aplikacji na preferencję OEM_NETWORK_PREFERENCE_OEM_PAID spowoduje uzyskanie następującego priorytetu sieci domyślnych przypisanych do aplikacji: najpierw użyj sieci UNMETERED , jeśli UNMETERED nie jest dostępna, użyj sieci OEM_PAID , a jeśli OEM_PAID nie jest dostępna, użyj systemu domyślna sieć.

  • OEM_PAID Używany głównie w przypadku aplikacji, które mogą być routowane zarówno w sieciach OEM, jak i innych producentów.
  • OEM_PRIVATE Używany głównie dla aplikacji OEM w celu uzyskania dostępu do dedykowanej im sieci.
/**
* If an unmetered network is available, use it.
* Otherwise, if a network with the OEM_PAID capability is available, use it.
* Otherwise, use the general default network.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID = 1;

/**
* If an unmetered network is available, use it.
* Otherwise, if a network with the OEM_PAID capability is available, use it.
* Otherwise, the app doesn't get a default network.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2;

/**
* Use only NET_CAPABILITY_OEM_PAID networks.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3;

/**
* Use only NET_CAPABILITY_OEM_PRIVATE networks.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4;

Wywoływanie interfejsów API PANS

Aby korzystać z interfejsów API PANS:

  1. Użyj OemNetworkPreferences , aby zmapować aplikację do preferencji sieci.
  2. Wywołaj setOemNetworkPreference za pomocą obiektu OemNetworkPreferences .
  3. Użyj interfejsu Runnable , aby nasłuchiwać zakończenia interfejsu API.

Na przykład:

// Mapping three packages to two network preferences
// Packages have a 1:1 mapping to network preferences
OemNetworkPreferences pref = new OemNetworkPreferences.Builder()
   .addNetworkPreference("first.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID)
   .addNetworkPreference("second.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID)
   .addNetworkPreference("third.package.name", OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY)
   .build();

myConnectivityManager.setOemNetworkPreference(pref, myExecutor, myListener);

Rozważania

Podczas wdrażania PANS pamiętaj o następujących kwestiach:

  • Preferencje sieciowe nie są zachowywane przy każdym uruchomieniu i trzeba je ponownie zastosować przy każdym uruchomieniu.
  • Aby utworzyć preferencję dla aplikacji, nie trzeba jej instalować. Dlatego preferencje sieciowe dla odinstalowanych aplikacji można ustawić proaktywnie.
  • W dowolnym momencie aplikację można mapować tylko do jednej preferencji sieci.
  • Preferencje sieciowe służą do ustawiania domyślnej sieci aplikacji. Jest to sieć używana, gdy aplikacja nie określiła, z jakich sieci chce korzystać za pośrednictwem jednego ze specjalistycznych interfejsów API. Nie tylko pokrywa to większość potrzeb związanych z łącznością, ale także umożliwia dalsze korzystanie ze specjalistycznych interfejsów API, takich jak API NetworkRequest , aby nie zakłócać istniejących przypadków użycia aplikacji. Na przykład, gdy aplikacja chce wykonać operację tylko w sieci bez pomiaru, PANS nie zmusi jej do korzystania z innej sieci.

Konfiguracja sieci

W przypadku korzystania z odpowiednich preferencji sieciowych musi być dostępna sieć z OEM_PAID lub OEM_PRIVATE . Android zapewnia obsługę konfiguracji możliwości sieci Ethernet i Wi-Fi. W przypadku sieci Ethernet można użyć nakładki zasobów config_ethernet_interfaces . Jest to ustawiane w czasie kompilacji.

W przypadku Wi-Fi interfejsu API WifiNetworkSuggestion można używać z nowymi interfejsami API systemu Android 12, setOemPaid(Boolean) i setOemPrivate(Boolean) . Można to zmienić w czasie wykonywania.

Rozważ te przykłady:

  1. Nakładka zasobów o nazwie config_ethernet_interfaces określa:
    • Nazwa interfejsu do skonfigurowania.
    • Żądane wartości NetworkCapabilities .
      <!-- 11 NET_CAPABILITY_NOT_METERED
           12 NET_CAPABILITY_INTERNET
           14 NET_CAPABILITY_TRUSTED
           15 NET_CAPABILITY_NOT_VPN
           22 NET_CAPABILITY_OEM_PAID || 26 NET_CAPABILITY_OEM_PRIVATE -->
      <string-array translatable="false" name="config_ethernet_interfaces">
         <item>eth0;11,12,14,15,22;;</item></string-array>
      
  2. Ta WiFiNetworkSuggestion może być zmieniana dynamicznie:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

Ograniczanie dostępu do sieci PANS

Oznaczenie sieci funkcjami OEM_PAID lub OEM_PRIVATE oznacza tę sieć jako sieć z ograniczeniami . Sieci z ograniczeniami mogą być używane tylko przez aplikacje, które mają uprawnienie CONNECTIVITY_USE_RESTRICTED_NETWORKS , które jest kontrolowane przez producentów OEM.

Aplikacje z tym uprawnieniem mogą korzystać z sieci z ograniczeniami, o ile aplikacje wyraźnie o to poproszą . Jednak te aplikacje nie będą domyślnie otrzymywać sieci z ograniczeniami. Aplikacje mapowane przez PANS mogą mieć ustawione domyślnie sieci OEM z ograniczeniami i nie potrzebują dostępu do sieci z ograniczeniami, aby z nich korzystać. Gdy taka aplikacja ma ograniczoną sieć OEM przypisaną jako domyślną sieć przez PANS, ma również możliwość wyraźnego zażądania tej sieci OEM, jeśli aplikacja zdecyduje się to zrobić.

Przeglądanie aplikacji referencyjnej

Aplikacja referencyjna (w tym kod) o nazwie NetworkPreferenceApp jest dostarczana w kompilacjach samochodowych do debugowania przez użytkownika i pokazuje, jak:

  • Zużywaj metryki PANS.
  • Ustaw zasady PANS.
  • Ustaw domyślne zasady dla urządzenia.
  • Wyczyść politykę.
  • Zastosuj zasady podczas rozruchu.
  • Użyj interfejsu Driver Distraction API (zobacz Wskazówki dotyczące rozpraszania kierowcy ).
  • Dynamicznie aktualizuj Wi-Fi za pomocą OEM_PAID i OEM_PRIVATE .

Rysunek 3. Aplikacja referencyjna

Metryka

Aby zapewnić przejrzystość wykorzystania danych, zbierane są i udostępniane metryki dotyczące ilości danych przesyłanych przez mapowania sieciowe OEM_PAID i OEM_PRIVATE .

Rozwiązywanie problemów

Większość problemów związanych z rozwiązywaniem problemów wynika z korzystania przez aplikację z niewłaściwej sieci (brak połączenia sieciowego) lub z nadmiaru danych. Aby włączyć szybkie rozwiązania:

  • Łączność dumpsys zawiera listę aktywnych sieci domyślnych dla poszczególnych aplikacji i powiązanych z nimi aplikacji (zmapowanych z PANS).
  • Netd dumpsys zawiera UID IP i reguły zapory.
  • Netstats dumpsys zawiera metryki PANS dla poszczególnych aplikacji. Na przykład, które aplikacje korzystały z której sieci OEM.

Wszystkie dane dumpsys są dostępne po utworzeniu raportu o błędach Androida.