Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release вместо aosp-main для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Функциональность мониторинга и отслеживания использования данных для каждого приложения и делегирования основана на модуле xt_qtaguid в ядре Linux android-3.0 ( kernel/net/netfilter/xt_qtaguid ). Функциональность тегирования сокетов в фреймворке ( system/core/libcutils/qtaguid.c ) основана в основном на существовании интерфейса /proc/net/xt_qtaguid/ctrl экспортируемого модулем ядра xt_qtaguid .
Модуль quota2 netfilter (первоначально часть xtables-addons ) позволяет устанавливать именованные квотные лимиты и был расширен для поддержки уведомления пользовательского пространства при достижении определенных лимитов. После достижения квотного лимита модуль quota2 отменяет весь последующий сетевой трафик. Фреймворк также может указывать дополнительные правила для ограничения фонового трафика данных для приложения (см. com.android.server.NetworkManagementSocketTagger.setKernelCounterSet и android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND ).
Как это работает?
Модуль qtaguid netfilter отслеживает сетевой трафик на основе сокета для каждого приложения, используя уникальный UID владеющего приложения. С любым сокетом в системе связаны два компонента тега. Первый — это UID, который уникально идентифицирует приложение, отвечающее за передачу данных (Linux позволяет приписывать владение каждым сетевым сокетом UID вызывающего приложения). Второй компонент тега используется для поддержки дополнительной характеристики трафика в категориях, указанных разработчиком приложения. Используя эти теги уровня приложения, приложение может профилировать трафик в несколько подкатегорий.
В случае приложений, которые предоставляют сетевую передачу данных как услугу, например, менеджер загрузок, служба потоковой передачи мультимедиа и т. д., можно приписать право собственности на сетевую передачу данных UID запрашивающего приложения с помощью вызова функции TrafficStats.setThreadStatsUid() . Вызывающий должен иметь разрешение « android.permission.MODIFY_NETWORK_ACCOUNTING » для повторного назначения права собственности на сетевой трафик.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-06-12 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 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."]]