DataUsageController
(un componente de la aplicación Ajustes) recoge datos de NetworkStatsService
(1) que forma parte del framework de Android, es decir system_server
y depende de (2) TrafficController
(un componente de netd
servicio nativo) que a su vez utiliza libqtaguid para etiquetar sockets de red por aplicación/UID. Anteriormente qtaguid
módulo del núcleo se utilizó para rastrear tomas de corriente etiquetadas (leyendo "/proc/net/xt_qtaguid/stats" ( 3 ) ) que se sustituye por eBPF framework. Ahora los datos de uso estarán disponibles en un sistema de archivos virtual ("/sys/fs/bpf/traffic_uid_stats_map" ( 4 ) ).
Restricciones de la política de red (Datos/Ahorro de batería y Datos de fondo (5) ) y Límite de Datos/Advertencia se implementan principalmente por NetworkPolicyManager
y NetworkManagementService
. En el extremo posterior netd
insertar/borrar iptables
reglas (6) para imponer restricciones en el espacio del núcleo.
Ambos qtaguid (7) y cuota2 Los módulos forman parte únicamente del núcleo de Android ( 8 ) mientras que owner
forma parte del núcleo principal de Linux.
RELACIONADO: ¿Cómo ver el tráfico de red solicitado por una aplicación específica?
REFERENCIAS:
1. El que podemos acceder con dumpsys netstats
2. A través de NetworkStatsManager / TrafficStats / SocketTagger JNI NetworkManagementSocketTagger , libcutils (qtaguid) , NetdClient , Netd's FwmarkServer y posiblemente otros
5. Puede ser leído / ajustado por dumpsys netpolicy
y cmd netpolicy
6. Utilización de módulos propietario y cuota2
7. Basado en propietario y depende de toma de corriente módulo
0 votos
¿Así que tu "configuración -> datos" no está rastreando bien?
0 votos
@rogerdpack Sí