Ab dem 27. März 2025 empfehlen wir, android-latest-release anstelle von aosp-main zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Die Überwachung und Nachverfolgung der App- und delegierten Datennutzung basiert auf dem Modul „xt_qtaguid“ im Android-3.0-Linux-Kernel (kernel/net/netfilter/xt_qtaguid). Die Socket-Tagging-Funktion im Framework (system/core/libcutils/qtaguid.c) basiert hauptsächlich auf der Existenz der /proc/net/xt_qtaguid/ctrl-Schnittstelle, die vom xt_qtaguid-Kernelmodul exportiert wird.
Das quota2-Netfilter-Modul (ursprünglich Teil von xtables-addons) ermöglicht es, benannte Kontingentlimits festzulegen. Es wurde erweitert, um den Userspace zu benachrichtigen, wenn bestimmte Limits erreicht werden. Sobald das Kontingentlimit erreicht ist, verwirft das quota2-Modul den gesamten nachfolgenden Netzwerkverkehr. Das Framework kann auch zusätzliche Regeln festlegen, um den Hintergrunddatenverkehr für eine App einzuschränken (siehe com.android.server.NetworkManagementSocketTagger.setKernelCounterSet und android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND).
Wie funktioniert das?
Das qtaguid-Netfilter-Modul überwacht den Netzwerkverkehr für jede App auf Socket-Basis mithilfe der eindeutigen UID der zugehörigen App. Jedem Socket im System sind zwei Tag-Komponenten zugeordnet. Die erste ist die UID, die die App eindeutig identifiziert, die für die Datenübertragung verantwortlich ist. Unter Linux kann die Inhaberschaft jedes Netzwerk-Sockets der UID der anrufenden App zugewiesen werden. Die zweite Tag-Komponente wird verwendet, um den Traffic in von App-Entwicklern angegebene Kategorien zu unterteilen. Mithilfe dieser Tags auf App-Ebene kann der Traffic in mehrere Unterkategorien unterteilt werden.
Bei Apps, die die Netzwerkdatenübertragung als Dienst bereitstellen, z. B. Downloadmanager oder Medienstreamingdienste, kann die Inhaberschaft der Netzwerkdatenübertragung mithilfe des TrafficStats.setThreadStatsUid()-Funktionsaufrufs der UID der anfragenden App zugeordnet werden. Der Aufrufer muss die Berechtigung „android.permission.MODIFY_NETWORK_ACCOUNTING“ haben, um die Inhaberschaft des Netzwerktraffics neu zuzuweisen.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-06-12 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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."]]