Die Funktionen zum Überwachen und Erfassen der Datennutzung pro App und delegiert basieren auf dem Modul „xt_qtaguid“ im Linux-Kernel „android-3.0“ (kernel/net/netfilter/xt_qtaguid). Die Socket-Tagging-Funktion im Framework (system/core/libcutils/qtaguid.c) basiert hauptsächlich auf dem Vorhandensein der /proc/net/xt_qtaguid/ctrl-Schnittstelle, die vom Kernelmodul xt_qtaguid exportiert wird.
Das Netfilter-Modul quota2 (ursprünglich Teil von xtables-addons) ermöglicht das Festlegen benannter Kontingentlimits und wurde erweitert, um die Benachrichtigung des Nutzerbereichs zu unterstützen, wenn bestimmte Limits erreicht werden. Sobald das Kontingentlimit erreicht ist, verwirft das quota2-Modul den gesamten nachfolgenden Netzwerkverkehr. Im Framework können auch zusätzliche Regeln angegeben werden, um den Hintergrunddatentraffic für eine App einzuschränken (siehe com.android.server.NetworkManagementSocketTagger.setKernelCounterSet und android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND).
Wie funktioniert Android XR?
Das qtaguid-Netfiltermodul verfolgt den Netzwerk-Traffic für jede App anhand der eindeutigen UID der zugehörigen App auf Socket-Basis. Jedem Socket im System sind zwei Tag-Komponenten zugeordnet. Die erste ist die UID, die die für die Datenübertragung verantwortliche App eindeutig identifiziert. Unter Linux kann die Inhaberschaft jedes Netzwerk-Sockets der UID der aufrufenden App zugewiesen werden. Die zweite Tag-Komponente wird verwendet, um den Traffic in vom App-Entwickler angegebene Kategorien zu unterteilen. Mithilfe dieser Tags auf App-Ebene kann der Traffic einer App in mehrere Unterkategorien unterteilt werden.
Bei Apps, die die Netzwerkdatenübertragung als Dienst anbieten, z. B. Download-Manager oder Media-Streaming-Dienste, kann die Inhaberschaft der Netzwerkdatenübertragung mithilfe des Funktionsaufrufs TrafficStats.setThreadStatsUid() der UID der anfragenden App zugeordnet werden. Der Aufrufer muss die Berechtigung „android.permission.MODIFY_NETWORK_ACCOUNTING“ haben, um die Inhaberschaft des Netzwerk-Traffics neu zuzuweisen.