Sélection du réseau (PANS) par application

Les véhicules dépendent de plus en plus de la connectivité pour gérer la liste croissante demandés par les OEM et les propriétaires de véhicules, ce qui a entraîné une augmentation de l'empreinte des données et des coûts associés. Utilisez la sélection de réseau par application (PANS) pour acheminer le trafic de certaines applications sur des réseaux payants par l'OEM.

Avec les PAN, vous pouvez gérer le volume et le coût de l'utilisation des données tout en offrant une expérience robuste, sécurisée et connectée de la voiture. PAN:

  • Comprend une nouvelle API ajoutée à ConnectivityManager disponible uniquement aux appareils automobiles.
  • Fournit une API de suggestion Wi-Fi mise à jour (voir API Wi-Fi Suggestion pour la connectivité Internet) pour inclure la prise en charge du changement dynamique des capacités du réseau PANS.
  • Collecte les métriques pertinentes.
  • Fournit une application de référence.

Pourquoi les PAN ?

Les PAN peuvent:

  • Mettez à jour de manière dynamique les mappages application/réseau.
  • Gérez le routage au niveau de l'application sans modifier les applications.
  • Seules les applications autorisées par les OEM peuvent accéder aux réseaux OEM mappés.
  • Les développeurs d'applications n'ont pas besoin d'apporter de modifications pour implémenter cette fonctionnalité.
  • Les métriques utilisateur suivent la consommation des données d'application à réseau pour les données gérées par l'OEM. réseaux sociaux.
  • L'accès au réseau est sécurisé et ne peut pas être utilisé de manière abusive par des cas d'utilisation involontaires applications non autorisées.
  • Les utilisateurs sont informés des modifications apportées aux mappages application/réseau des PANS.
  • La même configuration réseau est appliquée à tous les utilisateurs.

Principaux avantages

PANS offre aux OEM les principaux avantages suivants:

  1. Les OEM peuvent payer pour le trafic réseau à la place des utilisateurs: <ph type="x-smartling-placeholder">
      </ph>
    • Les mises à jour du système peuvent être fournies à l'utilisateur sans frais.
    • L'utilisation du réseau pour les applications spécifiées peut être fournie à l'utilisateur sans frais.
    • La télémétrie et d'autres analyses peuvent être gérées sans frais pour l'utilisateur.
  2. Les OEM peuvent s'assurer que leurs applications critiques restent connectées même sans forfait de données payé par l'utilisateur. Par exemple, des fonctionnalités essentielles pour la sécurité telles que Maps, l'Assistant (conduite mains libres) et les mises à jour du système continuent de fonctionner Lorsqu'un utilisateur n'a pas de forfait Internet.
  3. PANS offre une précision supplémentaire du contrôle spécifique au trafic réseau le routage dans Android. Par exemple, les OEM peuvent définir de façon optimale un réseau logique pour le routage du trafic au niveau de l'application.

Figure 1 : Framework PANS

Implémenter les PAN

Pour implémenter les PAN, une nouvelle API ConnectivityManager, setOemNetworkPreference est fourni. Cette nouvelle API mappe les applications avec un OemNetworkPreference. Cette API n'est disponible que pour les appareils automobiles et est annotée en tant que @SystemApi avec une nouvelle autorisation signature.

Figure 2. Implémenter les PAN

OemNetworkPreference

OemNetworkPreference est une abstraction sur OEM_PAID. OEM_PRIVATE NetworkCapabilities applications de mappage par nom de package à une préférence réseau. Les préférences réseau permettent d'avoir des hiérarchies de réseau. Par exemple, mapper une application sur la préférence OEM_NETWORK_PREFERENCE_OEM_PAID entraîne la priorité suivante pour les réseaux par défaut attribués à une application: utilisez un Réseau UNMETERED en premier. Si UNMETERED n'est pas disponible, utilisez un OEM_PAID, et si OEM_PAID n'est pas disponible, utiliser le système réseau par défaut.

  • OEM_PAID Utilisé principalement pour les applications pouvant être acheminées à la fois Réseaux OEM et non OEM.
  • OEM_PRIVATE : permet principalement aux applications OEM d'accéder à un qui leur est dédié.
/**
* 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;

Appeler les API PANS

Pour utiliser les API PANS:

  1. Utilisez OemNetworkPreferences pour mapper une application à une préférence réseau.
  2. Appeler setOemNetworkPreference avec le OemNetworkPreferences .
  3. Utilisez l'interface Runnable pour écouter l'achèvement de l'API.

Exemple :

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

Points à prendre en compte

Lorsque vous implémentez les PAN, gardez à l'esprit les points suivants:

  • Les préférences réseau ne sont pas persistées entre les bottes et doivent être réappliquée à chaque démarrage.
  • Pour créer une préférence pour une application, il n'est pas nécessaire de l'installer. Par conséquent, le réseau les préférences pour les applications désinstallées peuvent être définies de manière proactive.
  • Une application ne peut être associée qu'à une seule préférence réseau.
  • Les préférences réseau permettent de définir le réseau par défaut d'une application. C'est le réseau utilisé lorsqu'une application n'a pas spécifié le ou les réseaux qu'elle souhaite utiliser via l'une des API spécialisées. Non seulement cela couvre la grande majorité des besoins de connectivité, il permet également de continuer à utiliser des API spécialisées telles que l'API NetworkRequest. afin de ne pas affecter les cas d'utilisation existants de l'application. Par exemple, lorsqu'une application ne veut effectuer un fonctionnement sur un réseau illimité, les PAN ne le forceront pas à utiliser un autre réseau.

Configurer un réseau

Un réseau avec le OEM_PAID ou le OEM_PRIVATE doivent être disponibles lors de l'utilisation d'une préférence réseau correspondante. Android permet de configurer des fonctionnalités pour les réseaux Ethernet et Wi-Fi. Pour Sur les réseaux Ethernet, vous pouvez utiliser une superposition de ressources, config_ethernet_interfaces. Cette valeur est définie au moment de la compilation.

Pour le Wi-Fi, vous pouvez utiliser l'API WifiNetworkSuggestion avec le nouveau API Android 12, setOemPaid(Boolean) et setOemPrivate(Boolean) Ce paramètre peut être modifié au moment de l'exécution.

Voici quelques exemples:

  1. Une superposition de ressources nommée config_ethernet_interfaces spécifie: <ph type="x-smartling-placeholder">
      </ph>
    • Nom de l'interface à configurer.
    • Les valeurs NetworkCapabilities souhaitées.
      <!-- 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. Ce WiFiNetworkSuggestion peut être modifié de manière dynamique:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);

Limiter l'accès aux réseaux PANS

Ajouter des tags à un réseau avec OEM_PAID ou OEM_PRIVATE marque ce réseau comme réseau restreint. Réseaux restreints ne peuvent être utilisées que par les applications Autorisation CONNECTIVITY_USE_RESTRICTED_NETWORKS, contrôlée par les OEM.

Les applications disposant de cette autorisation peuvent utiliser des réseaux restreints à condition que les applications en fassent explicitement la demande les utiliser. Toutefois, ces applications ne seront pas associées à des réseaux restreints par défaut. Applications cartographiés via des PANS peuvent avoir des réseaux OEM restreints définis par défaut et n'auront pas besoin l'autorisation réseau limitée pour les utiliser. Lorsqu'une telle application dispose d'un accès réseau OEM désigné comme réseau par défaut par les PANS, il a également la capacité de explicitement demandé ledit réseau OEM si l'application choisit de le faire.

Consulter l'application de référence

Une application de référence (y compris du code) nommée NetworkPreferenceApp est fournie dans les builds automobile de débogage utilisateur et montre comment:

  • Utiliser les métriques PANS
  • Définissez la règle PANS.
  • Définissez une règle par défaut pour l'appareil.
  • Supprimez une règle.
  • Appliquez une règle au démarrage.
  • Utiliser l'API Driver Distraction (consultez les consignes concernant la distraction du conducteur).
  • Mise à jour dynamique du Wi-Fi avec OEM_PAID et OEM_PRIVATE.

Figure 3. Application de référence

Métriques

Pour plus de transparence concernant l'utilisation des données, des métriques sont collectées concernant la quantité de données transmises Mappages réseau OEM_PAID et OEM_PRIVATE.

Dépannage

La plupart des problèmes de dépannage découlent d'une application utilisant le mauvais réseau (aucune connectivité réseau) ni de données excessives. Pour activer les résolutions rapides:

  • La connectivité dumpsys inclut une liste des réseaux par défaut par application et leurs applications associées (mappés à partir des PANS).
  • Le dumpsys de Netd inclut l'adresse IP d'UID et les règles de pare-feu.
  • Le dumpsys Netstats inclut les métriques PANS par application. Par exemple, quelles applications ont utilisé quel réseau OEM.

Toutes les données dumpsys sont disponibles en créant un rapport de bug Android.