نظرة عامة

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

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

كيف يعمل؟

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

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