কার্নেল ওভারভিউ

প্রতি-অ্যাপ এবং অর্পিত ডেটা ব্যবহার নিরীক্ষণ এবং ট্র্যাকিং কার্যকারিতা android-3.0 Linux কার্নেলের 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 ” অনুমতি থাকতে হবে।