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 modelos cambiantes 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 a cargo del aprovisionamiento y mantenimiento de la capa IP. En Android 9, ya se usaba en procesos cruzados por componentes como Bluetooth y en proceso por componentes como Wi-Fi. DhcpClient obtiene direcciones IP de los servidores DHCP para que puedan asignarse a las interfaces.

  • Monitor de red. El componente NetworkMonitor prueba la accesibilidad a Internet cuando se conecta a una nueva red o cuando falla 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 administrar 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 de usuario al sistema.

Caminos afectados

Las rutas movidas al módulo Network Stack por el refactor 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 de portal cautivo e inicio de sesión. 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 PI
  • Inicio de sesión del portal cautivo ( com.google.android.captiveportallogin )

Este módulo va acompañado del módulo de configuración de permisos de Network Stack, 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 (p. ej., 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 (p. ej., usando un nuevo permiso de firma).

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