A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release anziché aosp-main per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
La funzionalità di monitoraggio e rilevamento dell'utilizzo dei dati per app e delegato si basa sul modulo xt_qtaguid nel kernel Linux Android-3.0 (kernel/net/netfilter/xt_qtaguid). La funzionalità di tagging delle socket nel framework (system/core/libcutils/qtaguid.c) si basa principalmente sull'esistenza dell'interfaccia /proc/net/xt_qtaguid/ctrl esportata dal modulo del kernel xt_qtaguid.
Il modulo netfilter quota2 (originariamente parte di xtables-addons) consente alla funzionalità di impostare limiti di quota denominati ed è stato esteso per supportare la notifica dello spazio utente quando vengono raggiunti determinati limiti. Una volta raggiunto il limite di quota, il modulo quota2 ignora tutto il traffico di rete successivo. Il framework può anche specificare regole aggiuntive per limitare il traffico di dati in background per un'app (consulta com.android.server.NetworkManagementSocketTagger.setKernelCounterSet e android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND).
Come funziona?
Il modulo netfilter di qtaguid monitora il traffico di rete su base socket per ogni app utilizzando l'UID univoco dell'app proprietaria. Esistono due componenti tag associati a qualsiasi socket del sistema. Il primo è l'UID che identifica in modo univoco
l'app responsabile del trasferimento dei dati (Linux consente di assegnare la proprietà di ogni socket di rete all'UID dell'app chiamante). Il secondo componente del tag viene utilizzato per supportare una caratterizzazione aggiuntiva del traffico nelle categorie specificate dagli sviluppatori di app. Utilizzando questi tag a livello di app, un'app può profilare il traffico in diverse sottocategorie.
Nel caso di app che forniscono il trasferimento di dati di rete come servizio, come il gestore dei download, il servizio di streaming multimediale e così via, è possibile attribuire la proprietà del trasferimento di dati di rete all'UID dell'app richiedente utilizzando la chiamata della funzione TrafficStats.setThreadStatsUid(). L'utente che effettua la chiamata deve disporre dell'autorizzazione "android.permission.MODIFY_NETWORK_ACCOUNTING" per riassegnare la proprietà del traffico di rete.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-06-12 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]