A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release en lugar de aosp-main para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
La funcionalidad de supervisión y seguimiento del uso de datos por app y delegados depende del módulo xt_qtaguid en el kernel de Android-3.0 Linux (kernel/net/netfilter/xt_qtaguid). La funcionalidad de etiquetado de socket en el framework (system/core/libcutils/qtaguid.c) depende principalmente de la existencia de la interfaz /proc/net/xt_qtaguid/ctrl que exporta el módulo del kernel xt_qtaguid.
El módulo netfilter quota2 (que originalmente formaba parte de xtables-addons) permite que la funcionalidad establezca límites de cuota nombrados y se extendió para admitir la notificación del espacio de usuario cuando se alcanzan ciertos límites. Una vez que se alcanza el límite de cuota, el módulo quota2 descarta todo el tráfico de red posterior. El framework también puede especificar reglas adicionales para restringir el tráfico de datos en segundo plano de una app (consulta com.android.server.NetworkManagementSocketTagger.setKernelCounterSet y android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND).
¿Cómo funciona?
El módulo netfilter de qtaguid realiza un seguimiento del tráfico de red por socket para cada app con el UID único de la app propietaria. Hay dos componentes de etiqueta asociados con cualquier socket del sistema. El primero es el UID que identifica de forma única la app responsable de la transferencia de datos (Linux permite atribuir la propiedad de cada socket de red al UID de la app que realiza la llamada). El segundo componente de etiqueta se usa para admitir una caracterización adicional del tráfico en categorías especificadas por el desarrollador de la app. Con estas etiquetas a nivel de la app, una app puede perfilar el tráfico en varias subcategorías.
En el caso de las apps que proporcionan transferencia de datos de red como servicio, como el administrador de descargas, el servicio de transmisión de contenido multimedia, etcétera, es posible atribuir la propiedad de la transferencia de datos de red al UID de la app solicitante mediante la llamada a función TrafficStats.setThreadStatsUid(). El llamador debe tener el permiso "android.permission.MODIFY_NETWORK_ACCOUNTING" para reasignar la propiedad del tráfico de red.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-06-12 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-06-12 (UTC)"],[],[],null,["# Kernel overview\n\nThe per-app and delegated data usage monitoring and tracking\nfunctionality relies on the xt_qtaguid module in the android-3.0 Linux\nkernel (`kernel/net/netfilter/xt_qtaguid`). The socket tagging\nfunctionality in the framework (`system/core/libcutils/qtaguid.c`)\nrelies mainly on the existence of `/proc/net/xt_qtaguid/ctrl`\ninterface exported by the `xt_qtaguid` kernel module.\n| **Note:** Support for `xt_qtaguid` will be phased out starting in the Android 9 release. See [eBPF Traffic\n| Monitoring](/docs/core/data/ebpf-traffic-monitor) for more information.\n\nThe `quota2` netfilter module (originally part of `xtables-addons`)\nallows the functionality to set named quota limits and was extended to\nsupport notifying userspace when certain limits are reached. Once the\nquota limit is reached, the `quota2` module discards all subsequent\nnetwork traffic. The framework can also specify additional rules to\nrestrict background data traffic for an app (refer to\n`com.android.server.NetworkManagementSocketTagger.setKernelCounterSet`\nand\n`android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND`).\n\nHow does it work?\n-----------------\n\nThe `qtaguid` netfilter module tracks the network traffic on a\nper-socket basis for every app using the unique UID of the\nowning app. There are two tag components associated with any\nsocket in the system. The first is the UID which uniquely identifies\nthe app which is responsible for the data transfer (Linux\nallows the ability to ascribe the ownership of each network socket to\nthe UID of the calling app). The second tag component is used\nto support additional characterization of the traffic into app\ndeveloper specified categories. Using these app level tags, an\napp can profile the traffic into several sub-categories.\n\nIn the case of apps that provide network data transfer as a\nservice, such as the download manager, media streaming service, etc,\nit is possible to attribute the ownership of the network data transfer\nto the UID of the requesting app using the\n`TrafficStats.setThreadStatsUid()` function call. The caller must hold\nthe \"`android.permission.MODIFY_NETWORK_ACCOUNTING`\" permission to\nre-assign the ownership of the network traffic."]]