Pila de red

Network Stack es un módulo de Mainline actualizable que garantiza que Android pueda adaptarse a los estándares de red en evolución y permite la interoperabilidad con implementaciones nuevas. Por ejemplo, las actualizaciones de la detección de portales cautivos y el código de acceso permiten que Android se mantenga actualizado con los modelos de portales cautivos cambiantes, y las actualizaciones de APF permiten que Android ahorre energía en Wi-Fi a medida que se vuelven comunes los nuevos tipos de paquetes.

Componentes incluidos

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

  • Servicios de IP. IpClient (antes IpManager) es un componente encargado del aprovisionamiento y el mantenimiento de la capa de IP. En Android 9, ya se usaba en procesos cruzados por componentes como Bluetooth y en procesos internos por componentes como Wi-Fi. DhcpClient obtiene direcciones IP de servidores DHCP para que se puedan asignar 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 redes.

  • App de acceso al portal cautivo. Es una app preinstalada encargada de administrar el acceso a los 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 se movieron al módulo Network Stack mediante la refactorización.

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

    • apf
    • dhcp
    • ip
    • netlink
    • util (en parte)
  • Detección de portales cautivos y acceso. 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 de acceso anteriores hacen referencia a la ubicación de los archivos antes de que se movieran allí para Mainline. Los archivos en packages/modules/NetworkStack y packages/modules/CaptivePortalLogin forman parte del módulo de Mainline y no se pueden modificar.

Formato del paquete

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

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

Este módulo se acompaña 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 con privilegios en el servidor del sistema (p.ej., en IConnectivityManager.aidl). Estas APIs se convirtieron en @SystemApi y se protegieron de forma adecuada para que sean accesibles al módulo de Mainline, pero no a otras apps con privilegios (p.ej., con un nuevo permiso de firma).

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