Netzwerkauswahl pro Anwendung (PANS)

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Fahrzeuge verlassen sich zunehmend auf Konnektivität, um die wachsende Liste von Anwendungsfällen zu bewältigen, die sowohl von OEMs als auch von Fahrzeugbesitzern gefordert werden, was zu einem erhöhten Datenbedarf und den damit verbundenen Kosten führt. Verwenden Sie die Per-Application Network Selection (PANS) -Funktion, um den Datenverkehr bestimmter Anwendungen auf vom OEM bezahlten Netzwerken weiterzuleiten.

Mit PANS können Sie das Volumen und die Kosten der Datennutzung verwalten und gleichzeitig ein robustes, sicheres und vernetztes Fahrzeugerlebnis bieten. PFANNEN:

  • Besteht aus einer neuen API, die dem ConnectivityManager hinzugefügt wurde und nur für Automobilgeräte verfügbar ist.
  • Stellt eine aktualisierte WLAN-Vorschlags-API bereit (siehe WLAN-Vorschlags-API für Internetkonnektivität ), um Unterstützung für sich dynamisch ändernde PANS-Netzwerkfunktionen einzuschließen.
  • Sammelt unterstützende Metriken.
  • Stellt eine Referenzanwendung bereit.

Warum PFANNEN?

PANS kann:

  • Dynamische Aktualisierung von Anwendung-zu-Netzwerk-Zuordnungen.
  • Verwalten Sie das Routing auf Anwendungsebene, ohne Änderungen an Apps vorzunehmen.
  • Nur OEM-zugelassene Anwendungen können auf die zugeordneten OEM-Netzwerke zugreifen.
  • Anwendungsentwickler müssen keine Änderungen vornehmen, um diese Funktion zu implementieren.
  • Benutzerbezogene Metriken verfolgen die Datennutzung von Anwendung zu Netzwerk für OEM-verwaltete Netzwerke.
  • Der Netzwerkzugriff ist sicher und kann nicht durch unbeabsichtigte Anwendungsfälle oder nicht autorisierte Anwendungen missbraucht werden.
  • Änderungen an PANS-Zuordnungen von Anwendung zu Netzwerk werden den Benutzern mitgeteilt.
  • Dieselbe Netzwerkkonfiguration wird auf alle Benutzer angewendet.

Kernvorteile

PANS bietet OEMs diese Kernvorteile:

  1. OEMs können für den Netzwerkverkehr statt für die Benutzer bezahlen:
    • Systemaktualisierungen können dem Benutzer kostenlos zur Verfügung gestellt werden.
    • Die Netzwerknutzung bestimmter Apps kann dem Benutzer kostenlos zur Verfügung gestellt werden.
    • Telemetrie und andere Analysen können für den Benutzer kostenlos verwaltet werden.
  2. OEMs können sicherstellen, dass kritische Anwendungen auch ohne einen vom Benutzer bezahlten Datenplan verbunden bleiben. Beispielsweise funktionieren sicherheitskritische Funktionen wie Karten, Assistent (freihändiges Fahren) und Systemaktualisierungen auch dann weiter, wenn ein Benutzer keinen Datentarif hat.
  3. PANS bietet eine zusätzliche Granularität der Steuerung speziell für das Routing des Netzwerkdatenverkehrs in Android. Beispielsweise können OEMs eine logische Netzwerktopologie für das Routing von Datenverkehr auf Anwendungsebene optimal definieren.

Abbildung 1 . PANS-Framework

PANS implementieren

Zur Implementierung von PANS wird eine neue ConnectivityManager -API, setOemNetworkPreference , bereitgestellt. Diese neue API ordnet Anwendungen einer OemNetworkPreference zu. Diese API ist nur für Automobilgeräte verfügbar und wird als @SystemApi mit einer neuen signature kommentiert.

Abbildung 2. PANS implementieren

OEMNetworkPreference

OemNetworkPreference ist eine Abstraktion über OEM_PAID und OEM_PRIVATE NetworkCapabilities , die Apps nach Paketnamen einer Netzwerkpräferenz zuordnet. Netzwerkeinstellungen ermöglichen Netzwerkhierarchien. Wenn Sie beispielsweise eine App der OEM_NETWORK_PREFERENCE_OEM_PAID , wird die folgende Priorität von Standardnetzwerken einer App zugewiesen: Verwenden Sie zuerst ein UNMETERED -Netzwerk, wenn UNMETERED nicht verfügbar ist, verwenden Sie ein OEM_PAID -Netzwerk, und wenn OEM_PAID nicht verfügbar ist, verwenden Sie das System Standardnetzwerk.

  • OEM_PAID Wird hauptsächlich für Apps verwendet, die sowohl in OEM- als auch in Nicht-OEM-Netzwerken weitergeleitet werden können.
  • OEM_PRIVATE Wird hauptsächlich für OEM-Apps verwendet, um Zugriff auf ein ihnen zugewiesenes Netzwerk zu erhalten.
/**
* 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;

Aufrufen von PANS-APIs

So verwenden Sie PANS-APIs:

  1. Verwenden Sie OemNetworkPreferences , um eine App einer Netzwerkeinstellung zuzuordnen.
  2. Rufen Sie setOemNetworkPreference mit dem OemNetworkPreferences Objekt auf.
  3. Verwenden Sie die Runnable Schnittstelle, um auf die API-Vervollständigung zu lauschen.

Zum Beispiel:

// 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);

Überlegungen

Beachten Sie bei der Implementierung von PANS die folgenden Punkte:

  • Netzwerkeinstellungen werden nicht über Bootvorgänge hinweg beibehalten und müssen bei jedem Bootvorgang erneut angewendet werden.
  • Um eine Einstellung für eine Anwendung zu erstellen, muss diese nicht installiert werden. Daher können Netzwerkeinstellungen für deinstallierte Apps proaktiv festgelegt werden.
  • Eine App kann immer nur einer einzigen Netzwerkpräferenz zugeordnet werden.
  • Netzwerkeinstellungen werden verwendet, um das Standardnetzwerk einer Anwendung festzulegen. Dies ist das Netzwerk, das verwendet wird, wenn eine Anwendung nicht angegeben hat, welche Netzwerke sie über eine der spezialisierten APIs verwenden möchte. Dies deckt nicht nur die überwiegende Mehrheit der Konnektivitätsanforderungen ab, sondern ermöglicht auch die fortgesetzte Nutzung spezialisierter APIs wie der NetworkRequest -API, um bestehende Anwendungsfälle von Anwendungen nicht zu beeinträchtigen. Wenn eine App beispielsweise nur einen Vorgang über ein nicht getaktetes Netzwerk ausführen möchte, zwingt PANS sie nicht dazu, ein anderes Netzwerk zu verwenden.

Konfigurieren eines Netzwerks

Ein Netzwerk mit den OEM_PAID oder OEM_PRIVATE muss verfügbar sein, wenn eine entsprechende Netzwerkeinstellung verwendet wird. Android bietet Unterstützung für die Konfiguration von Funktionen für Ethernet- und Wi-Fi-Netzwerke. Für Ethernet-Netzwerke können Sie ein Ressourcen-Overlay verwenden, config_ethernet_interfaces . Dies wird zur Kompilierzeit festgelegt.

Für Wi-Fi kann die WifiNetworkSuggestion -API mit den neuen Android 12-APIs setOemPaid(Boolean) und setOemPrivate(Boolean) . Dies kann zur Laufzeit geändert werden.

Betrachten Sie diese Beispiele:

  1. Ein Ressourcen-Overlay namens config_ethernet_interfaces gibt Folgendes an:
    • Der Name der zu konfigurierenden Schnittstelle.
    • Die gewünschten NetworkCapabilities Werte.
      <!-- 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. Dieser WiFiNetworkSuggestion kann dynamisch geändert werden:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

Einschränken des Zugriffs auf PANS-Netzwerke

Das Markieren eines Netzwerks mit den OEM_PAID oder OEM_PRIVATE markiert dieses Netzwerk als eingeschränktes Netzwerk . Eingeschränkte Netzwerke können nur von Apps verwendet werden, die über die CONNECTIVITY_USE_RESTRICTED_NETWORKS verfügen, die von OEMs kontrolliert wird.

Apps mit dieser Berechtigung können eingeschränkte Netzwerke verwenden, sofern die Apps dies ausdrücklich anfordern . Diese Apps erhalten jedoch standardmäßig keine eingeschränkten Netzwerke. Über PANS zugeordnete Apps können eingeschränkte OEM-Netzwerke als Standard festlegen und benötigen keine eingeschränkte Netzwerkberechtigung, um sie zu verwenden. Wenn einer solchen App ein eingeschränktes OEM-Netzwerk von PANS als Standardnetzwerk zugewiesen wurde, hat sie auch die Möglichkeit, dieses OEM-Netzwerk explizit anzufordern, wenn die App dies wünscht.

Überprüfung der Referenz-App

Eine Referenz-App (einschließlich Code) mit dem Namen NetworkPreferenceApp wird in Automotive-Builds zur Benutzerdebug bereitgestellt und zeigt, wie Sie:

  • Verbrauchen Sie PANS-Metriken.
  • Legen Sie die PANS-Richtlinie fest.
  • Legen Sie eine Standardrichtlinie für das Gerät fest.
  • Löschen Sie eine Richtlinie.
  • Wenden Sie eine Richtlinie beim Booten an.
  • Verwenden Sie die Driver Distraction API (siehe Driver Distraction Guidelines ).
  • Aktualisieren Sie Wi-Fi dynamisch mit OEM_PAID und OEM_PRIVATE .

Abbildung 3. Referenz-App

Metriken

Um die Transparenz der Datennutzung zu erleichtern, werden Metriken in Bezug auf die Menge der über die OEM_PAID und OEM_PRIVATE -Netzwerkzuordnungen übertragenen Daten gesammelt und zur Verfügung gestellt.

Fehlerbehebung

Die meisten Probleme bei der Fehlerbehebung entstehen entweder durch eine Anwendung, die das falsche Netzwerk verwendet (keine Netzwerkverbindung) oder durch Datenüberschreitungen. So aktivieren Sie schnelle Auflösungen:

  • Konnektivität dumpsys enthält eine Liste aktiver Standardnetzwerke pro App und ihrer zugehörigen Anwendungen (von PANS zugeordnet).
  • Netd dumpsys enthält UID-IP- und Firewall-Regeln.
  • Netstats dumpsys enthält PANS-Metriken pro Anwendung. Beispielsweise, welche Anwendungen welches OEM-Netzwerk nutzten.

Alle dumpsys -Daten sind verfügbar, indem Sie einen Android-Fehlerbericht erstellen.