Uygulama başına ve temsilci veri kullanımı izleme ve takip işlevi, android-3.0 Linux çekirdeğindeki xt_qtaguid modülünü (kernel/net/netfilter/xt_qtaguid) kullanır. Çerçevedeki soket etiketleme işlevi (system/core/libcutils/qtaguid.c) ise temel olarak xt_qtaguid çekirdek modülü tarafından dışa aktarılan /proc/net/xt_qtaguid/ctrl arayüzünün varlığına bağlıdır.
quota2 netfilter modülü (başlangıçta xtables-addons'nin bir parçasıydı), adlandırılmış kota sınırlarının ayarlanmasına olanak tanır ve belirli sınırlara ulaşıldığında kullanıcı alanına bildirim göndermeyi destekleyecek şekilde genişletilmiştir. Kota sınırına ulaşıldığında quota2 modülü, sonraki tüm ağ trafiğini siler. Çerçeve, bir uygulamanın arka plan veri trafiğini kısıtlamak için ek kurallar da belirtebilir (com.android.server.NetworkManagementSocketTagger.setKernelCounterSet ve android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND bölümlerine bakın).
Android XR nasıl çalışıyor?
qtaguid Netfilter modülü, sahip olan uygulamanın benzersiz UID'sini kullanan her uygulama için ağ trafiğini soket bazında izler. Sistemdeki herhangi bir soketle ilişkili iki etiket bileşeni vardır. Birincisi, veri aktarımından sorumlu uygulamayı benzersiz şekilde tanımlayan UID'dir (Linux, her ağ soketinin sahipliğini çağıran uygulamanın UID'sine atama olanağı sağlar). İkinci etiket bileşeni, trafiğin uygulama geliştirici tarafından belirtilen kategorilerde ek karakterizasyonunu desteklemek için kullanılır. Uygulama düzeyindeki bu etiketler kullanılarak trafik, çeşitli alt kategorilere ayrılabilir.
İndirme yöneticisi, medya akışı hizmeti vb. gibi ağ veri aktarımını hizmet olarak sağlayan uygulamalarda, TrafficStats.setThreadStatsUid() işlev çağrısı kullanılarak ağ veri aktarımının sahipliğini istekte bulunan uygulamanın UID'sine atamak mümkündür. Arayanın, ağ trafiğinin sahipliğini yeniden atamak için "android.permission.MODIFY_NETWORK_ACCOUNTING" iznine sahip olması gerekir.