Genel Bakış

Uygulama başına/temsil edilen veri kullanımı izleme ve izleme işlevi, android-3.0 Linux çekirdeğindeki ( 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 arabiriminin varlığına dayanır.

quota2 netfilter modülü (başlangıçta xtables-addons bir parçası), işlevselliğin adlandırılmış kota sınırlarını belirlemesine olanak tanır ve belirli sınırlara ulaşıldığında kullanıcı alanını bilgilendirmeyi desteklemek için genişletildi. Kota sınırına ulaşıldığında, quota2 modülü sonraki tüm ağ trafiğini atar. Çerçeve, bir uygulama için arka plan veri trafiğini kısıtlamak için ek kurallar da belirleyebilir (bkz. com.android.server.NetworkManagementSocketTagger.setKernelCounterSet ve android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND ).

O nasıl çalışır?

qtaguid netfilter modülü, sahip olunan 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 olan uygulamayı benzersiz bir şekilde tanımlayan UID'dir (Linux, her ağ soketinin sahipliğini, çağıran uygulamanın UID'sine atama yeteneğine izin verir). İkinci etiket bileşeni, trafiğin uygulama geliştirici tarafından belirlenen kategorilere ek olarak karakterizasyonunu desteklemek için kullanılır. Bu uygulama düzeyi etiketlerini kullanarak, bir uygulama trafiği birkaç alt kategoriye ayırabilir.

İndirme yöneticisi, medya akış hizmeti vb. gibi bir hizmet olarak ağ veri aktarımı sağlayan uygulamalar söz konusu olduğunda, ağ veri aktarımının sahipliğini, TrafficStats.setThreadStatsUid() kullanarak istekte bulunan uygulamanın UID'sine atfetmek mümkündür. TrafficStats.setThreadStatsUid() işlev çağrısı. Arayan, ağ trafiğinin sahipliğini yeniden atamak için " android.permission.MODIFY_NETWORK_ACCOUNTING " iznine sahip olmalıdır.