Sélection de réseau par application (PANS), sélection de réseau par application (PANS)

Les véhicules s'appuient de plus en plus sur la connectivité pour gérer la liste croissante de cas d'utilisation demandés à la fois par les équipementiers et les propriétaires de véhicules, ce qui entraîne une empreinte de données accrue et les coûts associés. Utilisez la fonctionnalité de sélection de réseau par application (PANS) pour acheminer le trafic des applications spécifiées sur des réseaux payés par l'OEM.

Avec PANS, vous pouvez gérer le volume et le coût de l'utilisation des données tout en offrant simultanément une expérience automobile robuste, sécurisée et connectée. DES CASSEROLES:

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

Pourquoi PANS ?

Recadrage:

  • Mettez à jour dynamiquement les mappages application-réseau.
  • Gérez le routage au niveau des applications sans apporter de modifications aux 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 besoin d'apporter aucune modification pour implémenter cette fonctionnalité.
  • Les métriques destinées aux utilisateurs suivent l'utilisation des données de l'application au réseau pour les réseaux gérés par les OEM.
  • L'accès au réseau est sécurisé et ne peut pas être abusé par des cas d'utilisation involontaire ou des applications non autorisées.
  • Les modifications apportées aux mappages application-réseau PANS sont communiquées aux utilisateurs.
  • La même configuration réseau est appliquée à tous les utilisateurs.

Avantages essentiels

PANS offre aux OEM les avantages fondamentaux suivants :

  1. Les OEM peuvent payer pour le trafic réseau à la place des utilisateurs :
    • Les mises à jour du système peuvent être fournies gratuitement à l'utilisateur.
    • L'utilisation du réseau des applications spécifiées peut être fournie sans frais pour l'utilisateur.
    • La télémétrie et autres analyses peuvent être gérées sans frais pour l'utilisateur.
  2. Les OEM peuvent garantir que les applications critiques restent connectées même sans forfait de données payé par l'utilisateur. Par exemple, les fonctionnalités critiques pour la sécurité telles que les cartes, l'assistant (conduite mains libres) et les mises à jour du système continuent de fonctionner même lorsqu'un utilisateur ne dispose pas de forfait de données.
  3. PANS offre une granularité supplémentaire de contrôle spécifique au routage du trafic réseau dans Android. Par exemple, les OEM peuvent définir de manière optimale une topologie de réseau logique pour le routage du trafic au niveau des applications.

Figure 1 . Cadre PANS

Mettre en œuvre les PANS

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

Figure 2. Mettre en œuvre les PANS

Préférence RéseauOem

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

  • OEM_PAID Utilisé principalement pour les applications qui peuvent être acheminées sur des réseaux OEM et non OEM.
  • OEM_PRIVATE Utilisé principalement pour les applications OEM afin d'accéder à un réseau 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. Appelez setOemNetworkPreference avec l’objet OemNetworkPreferences .
  3. Utilisez l'interface Runnable pour écouter l'achèvement de l'API.

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

Considérations

Lorsque vous mettez en œuvre les PANS, gardez les points suivants à l’esprit :

  • Les préférences réseau ne sont pas conservées d’un démarrage à l’autre et doivent être réappliquées à 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, les préférences réseau pour les applications désinstallées peuvent être définies de manière proactive.
  • À tout moment, une application ne peut être mappée qu’à une seule préférence réseau.
  • Les préférences réseau sont utilisées pour définir le réseau par défaut d'une application. Il s'agit du réseau utilisé lorsqu'une application n'a pas spécifié le(s) réseau(s) qu'elle souhaite utiliser via l'une des API spécialisées. Non seulement cela couvre la grande majorité des besoins de connectivité, mais cela permet également une utilisation continue d'API spécialisées telles que l'API NetworkRequest afin de ne pas interrompre les cas d'utilisation d'applications existantes. Par exemple, lorsqu'une application souhaite uniquement effectuer une opération sur un réseau non mesuré, PANS ne l'obligera pas à utiliser un autre réseau.

Configurer un réseau

Un réseau doté des fonctionnalités OEM_PAID ou OEM_PRIVATE doit être disponible lors de l'utilisation d'une préférence réseau correspondante. Android prend en charge la configuration des capacités des réseaux Ethernet et Wi-Fi. Pour les réseaux Ethernet, vous pouvez utiliser une superposition de ressources, config_ethernet_interfaces . Ceci est défini au moment de la compilation.

Pour le Wi-Fi, l'API WifiNetworkSuggestion peut être utilisée avec les nouvelles API Android 12, setOemPaid(Boolean) et setOemPrivate(Boolean) . Cela peut être modifié au moment de l'exécution.

Considérez ces exemples :

  1. Une superposition de ressources nommée config_ethernet_interfaces spécifie :
    • Le 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. Cette WiFiNetworkSuggestion peut être modifiée dynamiquement :
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

Restreindre l'accès aux réseaux PANS

Le marquage d'un réseau avec les fonctionnalités OEM_PAID ou OEM_PRIVATE marque ce réseau comme un réseau restreint . Les réseaux restreints ne peuvent être utilisés que par les applications disposant de l'autorisation CONNECTIVITY_USE_RESTRICTED_NETWORKS , qui est contrôlée par les OEM.

Les applications disposant de cette autorisation peuvent utiliser des réseaux restreints à condition qu'elles le demandent explicitement . Cependant, ces applications ne bénéficieront pas de réseaux restreints par défaut. Les applications mappées via PANS peuvent avoir des réseaux OEM restreints définis par défaut et n'auront pas besoin de l'autorisation réseau restreinte pour les utiliser. Lorsqu'une telle application dispose d'un réseau OEM restreint attribué comme réseau par défaut par PANS, elle a également la possibilité de demander explicitement ledit réseau OEM si l'application choisit de le faire.

Consultez l'application de référence

Une application de référence (incluant le code) nommée NetworkPreferenceApp est fournie dans les versions automobiles de débogage utilisateur et montre comment :

  • Consommez les métriques PANS.
  • Définir la politique PANS.
  • Définissez une stratégie par défaut pour l'appareil.
  • Effacer une politique.
  • Appliquez une politique au démarrage.
  • Utilisez l'API de distraction du conducteur (voir Directives sur la distraction du conducteur ).
  • Mettez à jour dynamiquement le Wi-Fi avec OEM_PAID et OEM_PRIVATE .

Figure 3. Application de référence

Métrique

Pour faciliter la transparence autour de l'utilisation des données, des métriques sont collectées et mises à disposition concernant la quantité de données transmises via les mappages réseau OEM_PAID et OEM_PRIVATE .

Dépannage

La plupart des problèmes de dépannage proviennent soit d'une application utilisant le mauvais réseau (pas de connectivité réseau), soit d'un excédent de données. Pour activer des résolutions rapides :

  • dumpsys de connectivité incluent une liste de réseaux par défaut actifs par application et leurs applications associées (mappées à partir de PANS).
  • Netd dumpsys inclut des règles UID IP et de pare-feu.
  • dumpsys Netstats incluent des 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.