Pila de red

Network Stack es un módulo Mainline actualizable que garantiza que Android pueda adaptarse a los estándares de red en evolución y permite la interoperabilidad con nuevas implementaciones. Por ejemplo, las actualizaciones de la detección de portales cautivos y el código de inicio de sesión permiten que Android se mantenga actualizado 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 nuevos tipos de paquetes se vuelven comunes.

Componentes incluidos

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

  • Servicios de propiedad intelectual. IpClient (anteriormente IpManager ) es un componente encargado del aprovisionamiento y mantenimiento de la capa IP. En Android 9, ya se utilizaba en proceso cruzado por componentes como Bluetooth y en proceso por componentes como Wi-Fi. DhcpClient obtiene direcciones IP de servidores DHCP para poder asignarlas a interfaces.

  • Monitor de red. El componente NetworkMonitor prueba la accesibilidad a Internet cuando se conecta a una nueva red o ante fallas en la red, cuando detecta portales cautivos y cuando valida redes.

  • Aplicación de inicio de sesión del portal cautivo. Una aplicación preinstalada encargada de gestionar el inicio de sesión en portales cautivos. Esta ha sido una aplicación separada desde Android 5.0, pero interactúa con NetworkMonitor para enviar algunas opciones del usuario al sistema.

Caminos afectados

Las rutas movidas al módulo Network Stack por la refactorización se enumeran a continuación.

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

    • apf
    • dhcp
    • ip
    • netlink
    • util (parcialmente)
  • Detección e inicio de sesión de portal cautivo. 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 movido está en packages/modules/NetworkStack , packages/modules/CaptivePortalLogin y algunas otras ubicaciones compartidas. Las rutas anteriores se refieren a la ubicación de los archivos antes de moverlos allí para Mainline. Los archivos en packages/modules/NetworkStack y packages/modules/CaptivePortalLogin son parte del módulo Mainline y no se pueden modificar.

Formato de paquete

El módulo Network Stack contiene los siguientes componentes en formato APK:

  • servicios de propiedad intelectual
  • Inicio de sesión del portal cautivo ( com.google.android.captiveportallogin )

Este módulo va acompañado del módulo Network Stack Permission Config, que es un archivo APK preinstalado que define los permisos necesarios para los componentes de Network Stack.

Dependencias

El módulo Network Stack depende de lo siguiente:

  • Métodos @hide privilegiados en el servidor del sistema (por ejemplo, en IConnectivityManager.aidl ). Estas API se crearon como @SystemApi y se protegieron adecuadamente para que sean accesibles para el módulo Mainline pero no para otras aplicaciones privilegiadas (por ejemplo, usando un nuevo permiso de firma).

  • Binder IPC a netd definido en INetd.aidl . Esta interfaz se ha convertido a AIDL estable y está sujeta a pruebas de conformidad.