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 nuevas implementaciones. 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 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 de la pila de red contiene los siguientes componentes. En los dispositivos que usan 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 IP
IpClient
(antesIpManager
) es un componente encargado del aprovisionamiento y el mantenimiento de la capa de IP. En Android 9, ya se usaba en varios procesos por componentes como Bluetooth y en el mismo proceso por componentes como Wi-Fi.DhcpClient
obtiene direcciones IP de servidores DHCP para que se puedan asignar a las interfaces.NetworkMonitor. El componente
NetworkMonitor
realiza pruebas de accesibilidad a Internet cuando se conecta a una red nueva o cuando hay fallas en la red, cuando detecta portales cautivos y cuando valida redes.App de inicio de sesión en portales cautivos. Es una app preinstalada encargada de administrar el inicio de sesión en portales cautivos. Esta es una app independiente desde Android 5.0, pero interactúa con
NetworkMonitor
para reenviar algunas elecciones del usuario al sistema.
Rutas afectadas
A continuación, se enumeran las rutas de acceso que se movieron al módulo de Network Stack durante la refactorización.
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 movido se encuentra en packages/modules/NetworkStack
, packages/modules/CaptivePortalLogin
y otras ubicaciones compartidas. Las rutas de acceso anteriores hacen referencia a la ubicación de los archivos antes de que se trasladaran 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 de Network Stack contiene los siguientes componentes en formato APK:
- Servicios de IP
- Acceso a portal cautivo (
com.google.android.captiveportallogin
)
Este módulo se complementa con el 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 de la pila de redes depende de lo siguiente:
Métodos @hide privilegiados en el servidor del sistema (p.ej., en
IConnectivityManager.aidl
). Estas APIs se hicieron@SystemApi
y se protegieron de forma adecuada para que sean accesibles al módulo de Mainline, pero no a otras apps privilegiadas (p.ej., con un nuevo permiso de firma).IPCs de Binder a
netd
definidos enINetd.aidl
Esta interfaz se convirtió en AIDL estable y está sujeta a pruebas de conformidad.