Pila de red

Network Stack es un módulo de línea principal que se puede actualizar y garantiza que Android pueda adaptarse a los estándares de red cambiantes y permite la interoperabilidad con los nuevos de Google Cloud. Por ejemplo, las actualizaciones de la detección de portales cautivos y el código de acceso permiten que Android se mantenga al día con los cambios en los modelos de portales cautivos, y las actualizaciones de APF permiten que Android ahorre energía en Wi-Fi a medida que se vuelven comunes nuevos tipos de paquetes.

Componentes incluidos

El módulo de pila de red contiene los siguientes componentes. En los dispositivos que utilizan estos servicios se trasladaron a un proceso diferente, y se accede a ellos a través de una interfaz de AIDL estable.

  • Servicios de IP. IpClient (anteriormente IpManager) es un componente a cargo de Aprovisionamiento y mantenimiento de la capa de IP En Android 9, ya se usaba entre procesos por componentes como Bluetooth y dentro de procesos por componentes como Wi-Fi. DhcpClient obtiene las direcciones IP de los servidores DHCP para que puedan asignarse a las interfaces.

  • NetworkMonitor. El componente NetworkMonitor prueba la accesibilidad a Internet cuando se conecta a una red nueva o cuando se producen fallas en la red, cuando se detectan portales cautivos y cuando se validan las redes.

  • App de acceso a portal cautivo: Es una app preinstalada que se encarga de administrar el acceso. en portales cautivos. Esta es una app independiente desde Android 5.0, pero interactúa con NetworkMonitor para reenviar algunas opciones del usuario al sistema.

Rutas de acceso afectadas

A continuación, se enumeran las rutas de acceso que el refactor trasladó al módulo de pila de red.

  • Servicios de IP. En frameworks/base/services/net/java/android/net/:

    • apf
    • dhcp
    • ip
    • netlink
    • util (parcialmente)
  • Detección y acceso a portales cautivos: En frameworks/base/:

    • core/java/android/net/captiveportal/
    • services/core/java/com/android/server/connectivity/NetworkMonitor.java
    • packages/CaptivePortalLogin/*

La nueva ubicación del código que se movió es packages/modules/NetworkStack. packages/modules/CaptivePortalLogin y algunas otras ubicaciones compartidas. Las rutas de acceso anteriores hacen referencia a la ubicación de los archivos antes de que se muevan allí para Mainline. Archivos en packages/modules/NetworkStack y Las packages/modules/CaptivePortalLogin son parte del módulo de línea principal y no pueden modificarse.

Formato del paquete

El módulo de pila de red contiene los siguientes componentes en formato APK:

  • Servicios de IP
  • Acceso al portal cautivo (com.google.android.captiveportallogin)

Este módulo está acompañado del módulo de configuración de permisos de la pila de red, que es un archivo APK preinstalado que define los permisos necesarios para el Componentes de la pila de red.

Dependencias

El módulo de pila de red depende de lo siguiente:

  • Métodos @hide con privilegios en el servidor del sistema (p. ej., en IConnectivityManager.aidl). Estas APIs se convirtieron en @SystemApi y se protegieron de manera adecuada para que el módulo Mainline pueda acceder a ellas, pero no otras apps con privilegios (p. ej., con un nuevo permiso de firma).

  • IPC de Binder a netd definido en INetd.aidl. Esta interfaz se convirtió en AIDL estable y está sujeta al cumplimiento y pruebas.