Selección de red por aplicación (PANS)

Los vehículos confían cada vez más en la conectividad para administrar la creciente lista de casos de uso solicitados tanto por los OEM como por los propietarios de vehículos, lo que da como resultado una mayor huella de datos y costos asociados. Utilice la función Selección de red por aplicación (PANS) para enrutar el tráfico de aplicaciones específicas en redes pagadas por el OEM.

Con PANS, puede administrar el volumen y el costo del uso de datos al mismo tiempo que brinda una experiencia de automóvil robusta, segura y conectada. SARTENES:

  • Consiste en una nueva API agregada a ConnectivityManager disponible solo para dispositivos automotrices.
  • Proporciona una API de sugerencia de Wi-Fi actualizada (consulte API de sugerencia de Wi-Fi para conectividad a Internet) para incluir soporte para cambiar dinámicamente las capacidades de la red PANS.
  • Recopila métricas de apoyo.
  • Proporciona una aplicación de referencia.

¿Por qué PANS?

PANS puede:

  • Actualice dinámicamente las asignaciones de aplicación a red.
  • Administre el enrutamiento a nivel de aplicación sin realizar cambios en las aplicaciones.
  • Solo las aplicaciones autorizadas por OEM pueden acceder a las redes OEM asignadas.
  • Los desarrolladores de aplicaciones no necesitan hacer ningún cambio para implementar esta característica.
  • Las métricas orientadas al usuario rastrean el uso de datos de aplicación a red para redes administradas por OEM.
  • El acceso a la red es seguro y no se puede abusar a través de casos de uso no deseado o aplicaciones no autorizadas.
  • Los cambios en las asignaciones de aplicación a red de PANS se comunican a los usuarios.
  • La misma configuración de red se aplica a todos los usuarios.

Ventajas principales

PANS brinda a los OEM estas ventajas principales:

  1. Los OEM pueden pagar por el tráfico de red en lugar de los usuarios:
    • Las actualizaciones del sistema se pueden proporcionar sin costo alguno para el usuario.
    • El uso de la red de aplicaciones específicas se puede proporcionar sin costo alguno para el usuario.
    • La telemetría y otros análisis se pueden administrar sin costo para el usuario.
  2. Los OEM pueden garantizar que las aplicaciones críticas permanezcan conectadas incluso sin un plan de datos pagado por el usuario. Por ejemplo, las funciones críticas para la seguridad, como mapas, asistente (conducción con manos libres) y actualizaciones del sistema, continúan funcionando incluso cuando el usuario no tiene un plan de datos.
  3. PANS proporciona granularidad adicional de control específico para el enrutamiento del tráfico de red en Android. Por ejemplo, los OEM pueden definir de manera óptima una topología de red lógica para el enrutamiento del tráfico a nivel de aplicación.

Figura 1 . Marco PANS

Implementando PANS

Para implementar PANS, se proporciona una nueva API de ConnectivityManager , setOemNetworkPreference . Esta nueva API asigna aplicaciones a una OemNetworkPreference . Esta API está disponible solo para dispositivos automotrices y se anota como @SystemApi con un nuevo permiso de signature .

Figura 2. Implementar PANS

Preferencia de red OEM

OemNetworkPreference es una abstracción sobre OEM_PAID y OEM_PRIVATE NetworkCapabilities asignando aplicaciones por nombre de paquete a una preferencia de red . Las preferencias de red permiten jerarquías de red. Por ejemplo, asignar una aplicación a la preferencia OEM_NETWORK_PREFERENCE_OEM_PAID dará como resultado la siguiente prioridad de las redes predeterminadas asignadas a una aplicación: use primero una red SIN OEM_PAID OEM_PAID UNMETERED UNMETERED disponible, use el sistema red predeterminada.

  • OEM_PAID Se utiliza principalmente para aplicaciones que se pueden enrutar tanto en redes OEM como no OEM.
  • OEM_PRIVATE Se utiliza principalmente para que las aplicaciones OEM obtengan acceso a una red dedicada a ellas.
/**
* 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;

Llamar a las API de PANS

Para usar las API de PANS:

  1. Utilice OemNetworkPreferences para asignar una aplicación a una preferencia de red.
  2. Llame a setOemNetworkPreference con el objeto OemNetworkPreferences .
  3. Use la interfaz Runnable para escuchar la finalización de la API.

Por ejemplo:

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

Consideraciones

Al implementar PANS, tenga en cuenta los siguientes puntos:

  • Las preferencias de red no se conservan entre los arranques y deberán volver a aplicarse en cada arranque.
  • Para crear una preferencia para una aplicación, no es necesario que esté instalada. Por lo tanto, las preferencias de red para las aplicaciones desinstaladas se pueden configurar de manera proactiva.
  • En un momento dado, una aplicación solo se puede asignar a una única preferencia de red.
  • Las preferencias de red se utilizan para establecer la red predeterminada de una aplicación. Esta es la red que se usa cuando una aplicación no ha especificado qué red(es) quiere usar a través de una de las API especializadas. Esto no solo cubre la gran mayoría de las necesidades de conectividad, sino que también permite el uso continuo de API especializadas, como la API NetworkRequest , para no interrumpir los casos de uso de aplicaciones existentes. Por ejemplo, cuando una aplicación solo quiere realizar una operación en una red sin medidor, PANS no la obligará a usar otra red.

Configuración de una red

Una red con las capacidades OEM_PAID u OEM_PRIVATE debe estar disponible cuando se utiliza una preferencia de red correspondiente. Android brinda soporte para la configuración de capacidades para redes Ethernet y Wi-Fi. Para redes Ethernet, puede usar una superposición de recursos, config_ethernet_interfaces . Esto se establece en tiempo de compilación.

Para Wi-Fi, la API WifiNetworkSuggestion se puede usar con las nuevas API de Android 12, setOemPaid(Boolean) y setOemPrivate(Boolean) . Esto se puede cambiar en tiempo de ejecución.

Considere estos ejemplos:

  1. Una superposición de recursos denominada config_ethernet_interfaces especifica:
    • El nombre de la interfaz a configurar.
    • Los valores deseados 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. Esta WiFiNetworkSuggestion se puede cambiar dinámicamente:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

Restricción del acceso a las redes PANS

Etiquetar una red con las capacidades OEM_PAID u OEM_PRIVATE marca esa red como una red restringida . Las redes restringidas solo pueden ser utilizadas por aplicaciones que tengan el permiso CONNECTIVITY_USE_RESTRICTED_NETWORKS , que está controlado por los OEM.

Las aplicaciones con este permiso pueden usar redes restringidas siempre que las aplicaciones las soliciten explícitamente . Sin embargo, estas aplicaciones no obtendrán redes restringidas como predeterminadas. Las aplicaciones mapeadas a través de PANS pueden tener redes OEM restringidas configuradas como predeterminadas y no necesitarán el permiso de red restringida para usarlas. Cuando dicha aplicación tiene una red OEM restringida asignada como su red predeterminada por PANS, también tiene la capacidad de solicitar explícitamente dicha red OEM si la aplicación decide hacerlo.

Revisar la aplicación de referencia

Se proporciona una aplicación de referencia (incluido el código) denominada NetworkPreferenceApp en las compilaciones automotrices de depuración del usuario y demuestra cómo:

  • Consumir métricas de PANS.
  • Establecer la política de PANS.
  • Establezca una política predeterminada para el dispositivo.
  • Borrar una política.
  • Aplicar una política en el arranque.
  • Use la API de distracción del conductor (consulte las Pautas de distracción del conductor).
  • Actualice dinámicamente Wi-Fi con OEM_PAID y OEM_PRIVATE .

Figura 3. Aplicación de referencia

Métrica

Para facilitar la transparencia en torno al uso de datos, las métricas se recopilan y ponen a disposición con respecto a la cantidad de datos transmitidos a través de las asignaciones de red OEM_PAID y OEM_PRIVATE .

Solución de problemas

La mayoría de las condiciones de solución de problemas surgen de una aplicación que usa la red incorrecta (sin conectividad de red) o de excesos de datos. Para habilitar resoluciones rápidas:

  • Connectivity dumpsys incluye una lista de redes activas predeterminadas por aplicación y sus aplicaciones asociadas (asignadas desde PANS).
  • Netd dumpsys incluye IP UID y reglas de firewall.
  • Netstats dumpsys incluye métricas por aplicación de PANS. Por ejemplo, qué aplicaciones usaron qué red OEM.

Todos los datos de dumpsys están disponibles al crear un informe de errores de Android.