खास जानकारी

प्रति-एप्लिकेशन/प्रत्यायोजित डेटा उपयोग की निगरानी और ट्रैकिंग कार्यक्षमता एंड्रॉइड-3.0 लिनक्स कर्नेल ( kernel/net/netfilter/xt_qtaguid ) में xt_qtaguid मॉड्यूल पर निर्भर करती है। फ्रेमवर्क में सॉकेट टैगिंग कार्यक्षमता ( system/core/libcutils/qtaguid.c ) मुख्य रूप से xt_qtaguid कर्नेल मॉड्यूल द्वारा निर्यात किए गए /proc/net/xt_qtaguid/ctrl इंटरफ़ेस के अस्तित्व पर निर्भर करती है।

quota2 नेटफिल्टर मॉड्यूल (मूल रूप से xtables-addons का हिस्सा) नामित कोटा सीमाएं निर्धारित करने की कार्यक्षमता की अनुमति देता है और कुछ सीमाएं पहुंचने पर उपयोगकर्ता स्थान को सूचित करने में सहायता के लिए इसे बढ़ाया गया था। एक बार कोटा सीमा पूरी हो जाने पर, quota2 मॉड्यूल बाद के सभी नेटवर्क ट्रैफ़िक को हटा देता है। फ़्रेमवर्क किसी एप्लिकेशन के लिए पृष्ठभूमि डेटा ट्रैफ़िक को प्रतिबंधित करने के लिए अतिरिक्त नियम भी निर्दिष्ट कर सकता है ( com.android.server.NetworkManagementSocketTagger.setKernelCounterSet और android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND देखें)।

यह कैसे काम करता है?

qtaguid नेटफ़िल्टर मॉड्यूल स्वामित्व वाले एप्लिकेशन के अद्वितीय यूआईडी का उपयोग करके प्रत्येक एप्लिकेशन के लिए प्रति-सॉकेट आधार पर नेटवर्क ट्रैफ़िक को ट्रैक करता है। सिस्टम में किसी भी सॉकेट से दो टैग घटक जुड़े होते हैं। पहला यूआईडी है जो विशिष्ट रूप से उस एप्लिकेशन की पहचान करता है जो डेटा ट्रांसफर के लिए जिम्मेदार है (लिनक्स कॉलिंग एप्लिकेशन के यूआईडी को प्रत्येक नेटवर्क सॉकेट के स्वामित्व को निर्दिष्ट करने की क्षमता की अनुमति देता है)। दूसरे टैग घटक का उपयोग एप्लिकेशन डेवलपर निर्दिष्ट श्रेणियों में ट्रैफ़िक के अतिरिक्त लक्षण वर्णन का समर्थन करने के लिए किया जाता है। इन एप्लिकेशन स्तर टैग का उपयोग करके, एक एप्लिकेशन ट्रैफ़िक को कई उप-श्रेणियों में प्रोफ़ाइल कर सकता है।

उन अनुप्रयोगों के मामले में जो एक सेवा के रूप में नेटवर्क डेटा ट्रांसफर प्रदान करते हैं, जैसे कि डाउनलोड मैनेजर, मीडिया स्ट्रीमिंग सेवा, आदि, TrafficStats.setThreadStatsUid() का उपयोग करके अनुरोध करने वाले एप्लिकेशन के यूआईडी को नेटवर्क डेटा ट्रांसफर के स्वामित्व का श्रेय देना संभव है। TrafficStats.setThreadStatsUid() फ़ंक्शन कॉल। नेटवर्क ट्रैफ़िक के स्वामित्व को फिर से सौंपने के लिए कॉल करने वाले के पास " android.permission.MODIFY_NETWORK_ACCOUNTING " अनुमति होनी चाहिए।