تعتمد وظائف رصد ومتابعة استخدام البيانات لكل تطبيق واستخدام البيانات المفوَّضة
على وحدة xt_qtaguid في ملف kernel/net/netfilter/xt_qtaguid
لنظام التشغيل Android 3.0 Linux
. تعتمد وظائف وضع العلامات على مآخذ التوصيل
في إطار العمل (system/core/libcutils/qtaguid.c
)
بشكل أساسي على توفُّر واجهة /proc/net/xt_qtaguid/ctrl
التي تصدّرها وحدة نواة xt_qtaguid
.
تسمح وحدة netfilter quota2
(أصلًا جزء من xtables-addons
)
للوظيفة بضبط حدود الحصة المحدَّدة، وتم توسيعها لإتاحة إشعار مساحة المستخدم عند بلوغ حدود معيّنة. بعد بلوغ الحد الأقصى
للحصة، تتخلّص وحدة quota2
من كل ملف لاحق
لحركة الشبكة. يمكن لإطار العمل أيضًا تحديد قواعد إضافية لحظر
عدد زيارات بيانات الخلفية لأحد التطبيقات (راجِع com.android.server.NetworkManagementSocketTagger.setKernelCounterSet
و
android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND
).
كيف تعمل هذه الميزة؟
تتتبّع وحدة netfilter في qtaguid
عدد زيارات الشبكة على أساس كل مقبس لكل تطبيق باستخدام المعرّف الفريد للمستخدم (UID) للتطبيق مالك المقبس. هناك مكوّنان للعلامة مرتبطان بأي مقبس في النظام. الأول هو المعرّف المطلق الذي يحدِّد بشكلٍ فريد
التطبيق المسؤول عن نقل البيانات (يتيح نظام التشغيل Linux
إمكانية إسناد ملكية كل مقبس شبكة إلى
المعرّف المطلق للتطبيق المُرسِل). يُستخدم مكوّن العلامة الثاني لإتاحة تصنيف إضافي للزيارات إلى الفئات
المحدّدة من مطوّري التطبيقات. باستخدام هذه العلامات على مستوى التطبيق، يمكن لتطبيقٍ ما تحليل الزيارات إلى عدة فئات فرعية.
في حال التطبيقات التي توفّر نقل البيانات عبر الشبكة كأحد خدماتها، مثل مدير التنزيل وخدمة بث الوسائط وما إلى ذلك،
يمكن إسناد ملكية نقل البيانات عبر الشبكة
إلى المعرّف الفريد للتطبيق الذي يطلب نقل البيانات باستخدام دعوة الدالة
TrafficStats.setThreadStatsUid()
. يجب أن يحصل المتّصل على
الإذن "android.permission.MODIFY_NETWORK_ACCOUNTING
"
لإعادة تحديد ملكية حركة بيانات الشبكة.