Ringkasan

Fungsi pemantauan dan pelacakan penggunaan data per aplikasi/delegasi bergantung pada modul xt_qtaguid di kernel Linux Android-3.0 ( kernel/net/netfilter/xt_qtaguid ). Fungsionalitas penandaan soket dalam kerangka kerja ( system/core/libcutils/qtaguid.c ) terutama bergantung pada keberadaan antarmuka /proc/net/xt_qtaguid/ctrl yang diekspor oleh modul kernel xt_qtaguid .

Modul netfilter quota2 (awalnya bagian dari xtables-addons ) memungkinkan fungsionalitas untuk menetapkan batas kuota bernama dan diperluas untuk mendukung pemberitahuan ruang pengguna ketika batas tertentu tercapai. Setelah batas kuota tercapai, modul quota2 membuang semua lalu lintas jaringan berikutnya. Framework ini juga dapat menentukan aturan tambahan untuk membatasi lalu lintas data latar belakang suatu aplikasi (lihat com.android.server.NetworkManagementSocketTagger.setKernelCounterSet dan android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND ).

Bagaimana cara kerjanya?

Modul qtaguid netfilter melacak lalu lintas jaringan per soket untuk setiap aplikasi menggunakan UID unik dari aplikasi pemilik. Ada dua komponen tag yang terkait dengan soket apa pun di sistem. Yang pertama adalah UID yang secara unik mengidentifikasi aplikasi yang bertanggung jawab atas transfer data (Linux memungkinkan kemampuan untuk menganggap kepemilikan setiap soket jaringan ke UID aplikasi pemanggil). Komponen tag kedua digunakan untuk mendukung karakterisasi tambahan lalu lintas ke dalam kategori yang ditentukan pengembang aplikasi. Dengan menggunakan tag tingkat aplikasi ini, aplikasi dapat memprofilkan lalu lintas ke dalam beberapa subkategori.

Dalam kasus aplikasi yang menyediakan transfer data jaringan sebagai layanan, seperti pengelola unduhan, layanan streaming media, dll, kepemilikan transfer data jaringan dapat dikaitkan ke UID aplikasi yang meminta menggunakan TrafficStats.setThreadStatsUid() pemanggilan fungsi. Penelepon harus memiliki izin “ android.permission.MODIFY_NETWORK_ACCOUNTING ” untuk menetapkan kembali kepemilikan lalu lintas jaringan.