Network Stack es un módulo de línea principal que se puede actualizar y que garantiza que Android pueda adaptarse a los estándares de red en constante 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 portal cautivos cambiantes, 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 usan el módulo, 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
(antesIpManager
) es un componente a cargo del aprovisionamiento y el mantenimiento de la capa IP. En Android 9, ya se usaba en procesos cruzados con componentes como Bluetooth, y en proceso con componentes como Wi-Fi.DhcpClient
obtiene direcciones IP de 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 al portal cautivo: Es una app preinstalada a cargo de administrar el acceso en 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 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ó 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 muevan allí para Mainline.
Los archivos de packages/modules/NetworkStack
y packages/modules/CaptivePortalLogin
forman parte del módulo Mainline y no se pueden modificar.
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 se acompaña 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 los 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 configuraron como@SystemApi
y se protegeron de forma adecuada para que se pueda acceder a ellas desde el módulo principal, pero no a otras apps con privilegios (p.ej., con un nuevo permiso de firma).IPC de Binder para
netd
definidas enINetd.aidl
Esta interfaz se convirtió en AIDL estable y está sujeta a pruebas de conformidad.