Uygulama başına ve yetki verilmiş veri kullanımı izleme ve izleme işlevi, android-3.0 Linux çekirdeğinde (kernel/net/netfilter/xt_qtaguid
) xt_qtaguid modülüne dayanır. Çerçevedeki (system/core/libcutils/qtaguid.c
) soket etiketleme işlevi, temel olarak xt_qtaguid
çekirdek modülü tarafından dışa aktarılan /proc/net/xt_qtaguid/ctrl
arayüzünün varlığına dayanır.
quota2
netfilter modülü (orijinal olarak xtables-addons
'un bir parçasıdır), adlandırılmış kota sınırlarını ayarlama işlevine olanak tanır ve belirli sınırlara ulaşıldığında kullanıcı alanını bilgilendirmeyi desteklemek için 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 (bkz. com.android.server.NetworkManagementSocketTagger.setKernelCounterSet
ve android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND
).
İşleyiş şekli
qtaguid
netfilter modülü, sahip uygulamanın benzersiz UID'sini kullanarak her uygulama için soket başına ağ trafiğini izler. Sistemdeki herhangi bir soketle ilişkili iki etiket bileşeni vardır. Bunlardan ilki, veri aktarımından sorumlu uygulamayı benzersiz bir şekilde tanımlayan UID'dir (Linux, her ağ soketinin sahipliğini çağıran uygulamanın UID'sine atamaya olanak tanır). İkinci etiket bileşeni, uygulama geliştirici tarafından belirtilen kategorilere giden trafiğin ek karakterlendirmesini desteklemek için kullanılır. Uygulamalar, bu uygulama düzeyindeki etiketleri kullanarak trafiği çeşitli alt kategorilere ayırabilir.
İndirme yöneticisi ve medya akış hizmeti gibi ağ veri aktarımını bir hizmet olarak sağlayan uygulamalarda, TrafficStats.setThreadStatsUid()
işlev çağrısını kullanarak ağ veri aktarımının sahipliğini, istekte bulunan uygulamanın UID'siyle ilişkilendirmek mümkündür. Arayıcı, ağ trafiğinin sahipliğini yeniden atamak için "android.permission.MODIFY_NETWORK_ACCOUNTING
" iznine sahip olmalıdır.