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

Los vehículos dependen cada vez más de la conectividad para gestionar la creciente lista de casos de uso solicitados tanto por los fabricantes de equipos originales como por los propietarios de vehículos, lo que genera una mayor huella de datos y costos asociados. Utilice la función de 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 y, al mismo tiempo, brindar una experiencia de automóvil sólida, segura y conectada. PAN:

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

¿Por qué PANS?

Los PANS pueden:

  • 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 permitidas por OEM pueden acceder a las redes OEM asignadas.
  • Los desarrolladores de aplicaciones no necesitan realizar ningún cambio para implementar esta función.
  • Las métricas de cara al usuario rastrean el uso de datos de la aplicación a la red para redes administradas por OEM.
  • El acceso a la red es seguro y no se puede abusar de él mediante casos de uso no deseados o aplicaciones no autorizadas.
  • Los cambios en las asignaciones de la aplicación a la red de PANS se comunican a los usuarios.
  • Se aplica la misma configuración de red a todos los usuarios.

Ventajas principales

PANS ofrece a los OEM estas ventajas principales:

  1. Los OEM pueden pagar por el tráfico de red en lugar de por 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 gestionar sin coste alguno 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 un 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

Implementar PANS

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

Figura 2. Implementar PANS

Preferencia de red OEM

OemNetworkPreference es una abstracción de OEM_PAID y OEM_PRIVATE NetworkCapabilities que asigna 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 da como resultado la siguiente prioridad de redes predeterminadas asignadas a una aplicación: use primero una red UNMETERED , si UNMETERED no está disponible use una red OEM_PAID , y si OEM_PAID no está disponible, use la red predeterminada del sistema red.

  • OEM_PAID Se utiliza principalmente para aplicaciones que se pueden enrutar en redes OEM y 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 utilizar las API de PANS:

  1. Utilice OemNetworkPreferences para asignar una aplicación a una preferencia de red.
  2. Llame setOemNetworkPreference con el objeto OemNetworkPreferences .
  3. Utilice 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 persisten entre los arranques y deben volver a aplicarse en cada arranque.
  • Para crear una preferencia para una aplicación, no es necesario instalarla. Por lo tanto, las preferencias de red para aplicaciones desinstaladas se pueden configurar de forma 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 configurar la red predeterminada de una aplicación. Esta es la red que se usa cuando una aplicación no ha especificado qué redes 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 a través de una red no medida, PANS no la obligará a usar otra red.

Configurar una red

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

Para Wi-Fi, la API WifiNetworkSuggestion se puede utilizar 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);
    

Restringir el 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 soliciten explícitamente . Sin embargo, estas aplicaciones no tendrán redes restringidas de forma predeterminada. Las aplicaciones asignadas a través de PANS pueden tener redes OEM restringidas configuradas como predeterminadas y no necesitarán el permiso de red restringido para usarlas. Cuando una aplicación de este tipo tiene una red OEM restringida asignada como red predeterminada por PANS, también tiene la capacidad de solicitar explícitamente dicha red OEM si la aplicación decide hacerlo.

Revisa 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 PANS.
  • Establecer política PANS.
  • Establezca una política predeterminada para el dispositivo.
  • Borrar una póliza.
  • Aplicar una política al arrancar.
  • Utilice la API de distracción del conductor (consulte 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, se recopilan y ponen a disposición métricas sobre 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 utiliza la red incorrecta (sin conectividad de red) o de exceso de datos. Para habilitar resoluciones rápidas:

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

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