نظرة عامة

تعتمد وظيفة مراقبة وتتبع استخدام البيانات المفوضة لكل تطبيق/على وحدة xt_qtaguid في Android-3.0 Linux kernel ( kernel/net/netfilter/xt_qtaguid ). تعتمد وظيفة وضع علامات المقبس في الإطار ( system/core/libcutils/qtaguid.c ) بشكل أساسي على وجود واجهة /proc/net/xt_qtaguid/ctrl المصدرة بواسطة وحدة kernel xt_qtaguid .

تسمح وحدة quota2 netfilter (التي كانت في الأصل جزءًا من xtables-addons ) للوظيفة بتعيين حدود الحصص المحددة وتم توسيعها لدعم إعلام مساحة المستخدم عند الوصول إلى حدود معينة. بمجرد الوصول إلى حد الحصة النسبية، تتجاهل وحدة quota2 كل حركة مرور الشبكة اللاحقة. يمكن لإطار العمل أيضًا تحديد قواعد إضافية لتقييد حركة بيانات الخلفية لأحد التطبيقات (راجع com.android.server.NetworkManagementSocketTagger.setKernelCounterSet و android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND ).

كيف يعمل؟

تقوم وحدة qtaguid netfilter بتتبع حركة مرور الشبكة على أساس كل مقبس لكل تطبيق باستخدام UID الفريد للتطبيق المالك. هناك مكونان للعلامة مرتبطان بأي مقبس في النظام. الأول هو UID الذي يحدد بشكل فريد التطبيق المسؤول عن نقل البيانات (يسمح Linux بالقدرة على إسناد ملكية كل مقبس شبكة إلى UID الخاص بتطبيق الاتصال). يتم استخدام مكون العلامة الثاني لدعم التوصيف الإضافي لحركة المرور إلى الفئات المحددة لمطور التطبيق. باستخدام علامات مستوى التطبيق هذه، يمكن للتطبيق تصنيف حركة المرور إلى عدة فئات فرعية.

في حالة التطبيقات التي توفر نقل بيانات الشبكة كخدمة، مثل مدير التنزيلات وخدمة تدفق الوسائط وما إلى ذلك، فمن الممكن إسناد ملكية نقل بيانات الشبكة إلى المعرف الفريد (UID) الخاص بالتطبيق الطالب باستخدام TrafficStats.setThreadStatsUid() استدعاء الدالة. يجب أن يحمل المتصل إذن " android.permission.MODIFY_NETWORK_ACCOUNTING " لإعادة تعيين ملكية حركة مرور الشبكة.