ওভারভিউ

প্রতি-অ্যাপ্লিকেশন/অর্পিত ডেটা ব্যবহার পর্যবেক্ষণ এবং ট্র্যাকিং কার্যকারিতা android-3.0 লিনাক্স কার্নেলের xt_qtaguid মডিউলের উপর নির্ভর করে ( kernel/net/netfilter/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 মডিউল মালিকানাধীন অ্যাপ্লিকেশনের অনন্য UID ব্যবহার করে প্রতিটি অ্যাপ্লিকেশনের জন্য প্রতি-সকেট ভিত্তিতে নেটওয়ার্ক ট্র্যাফিক ট্র্যাক করে। সিস্টেমে যেকোনো সকেটের সাথে যুক্ত দুটি ট্যাগ উপাদান রয়েছে। প্রথমটি হল ইউআইডি যা অনন্যভাবে অ্যাপ্লিকেশনটিকে সনাক্ত করে যা ডেটা স্থানান্তরের জন্য দায়ী (লিনাক্স প্রতিটি নেটওয়ার্ক সকেটের মালিকানা কলিং অ্যাপ্লিকেশনের ইউআইডিতে উল্লেখ করার ক্ষমতা দেয়)। দ্বিতীয় ট্যাগ উপাদানটি অ্যাপ্লিকেশন বিকাশকারীর নির্দিষ্ট বিভাগে ট্রাফিকের অতিরিক্ত চরিত্রায়ন সমর্থন করতে ব্যবহৃত হয়। এই অ্যাপ্লিকেশন লেভেল ট্যাগগুলি ব্যবহার করে, একটি অ্যাপ্লিকেশন ট্র্যাফিককে বিভিন্ন উপ-বিভাগে প্রোফাইল করতে পারে।

যে অ্যাপ্লিকেশনগুলি পরিষেবা হিসাবে নেটওয়ার্ক ডেটা স্থানান্তর প্রদান করে, যেমন ডাউনলোড ম্যানেজার, মিডিয়া স্ট্রিমিং পরিষেবা, ইত্যাদির ক্ষেত্রে, TrafficStats.setThreadStatsUid() ব্যবহার করে অনুরোধকারী অ্যাপ্লিকেশনটির UID-তে নেটওয়ার্ক ডেটা স্থানান্তরের মালিকানা প্রদান করা সম্ভব। TrafficStats.setThreadStatsUid() ফাংশন কল। নেটওয়ার্ক ট্রাফিকের মালিকানা পুনরায় বরাদ্দ করতে কলকারীকে অবশ্যই “ android.permission.MODIFY_NETWORK_ACCOUNTING ” অনুমতি ধারণ করতে হবে।