নেটওয়ার্ক ইন্টারফেস পরিসংখ্যান ওভারভিউ

অ্যান্ড্রয়েড 4.0-এ, লিনাক্স নেটওয়ার্ক ইন্টারফেস দ্বারা রিপোর্ট করা পরিসংখ্যানগুলি সময়ের সাথে রেকর্ড করা হয় এবং নেটওয়ার্ক কোটা সীমা কার্যকর করতে, ব্যবহারকারী-দৃশ্যমান চার্ট রেন্ডার এবং আরও অনেক কিছুতে ব্যবহৃত হয়।

প্রতিটি নেটওয়ার্ক ডিভাইস ড্রাইভার (ওয়াই-ফাই অন্তর্ভুক্ত) অবশ্যই স্ট্যান্ডার্ড কার্নেল ডিভাইস লাইফসাইকেল অনুসরণ করবে এবং dev_get_stats() মাধ্যমে সঠিক পরিসংখ্যান প্রদান করবে। বিশেষ করে, ইন্টারফেস সক্রিয় থাকাকালীন প্রত্যাবর্তিত পরিসংখ্যানগুলি কঠোরভাবে একঘেয়ে থাকতে হবে। একটি unregister_netdev() বা সমতুল্য যা register_netdevice_notifier() / register_inetaddr_notifier() / register_inet6addr_notifier() () এর সাথে নিবন্ধিত কলব্যাকের জন্য একটি NETDEV_UNREGISTER ইভেন্ট তৈরি করে তা সফলভাবে সম্পন্ন করার পরেই ড্রাইভাররা পরিসংখ্যান পুনরায় সেট করতে পারে।

মোবাইল অপারেটররা সাধারণত ইন্টারনেট স্তরে (আইপি) ডেটা ব্যবহার পরিমাপ করে। অ্যান্ড্রয়েড 4.0-এ এই পদ্ধতির সাথে মেলানোর জন্য, আমরা এই সত্যটির উপর নির্ভর করি যে কার্নেল ডিভাইসগুলির জন্য আমরা dev_get_stats() দ্বারা প্রত্যাবর্তিত rx_bytes এবং tx_bytes মানগুলিকে স্থানান্তরিত ইন্টারনেট স্তর ( IP ) বাইটগুলিকে সঠিকভাবে ফেরত দেয়৷ কিন্তু আমরা বুঝতে পারি যে অন্যান্য ডিভাইসের ক্ষেত্রে এটি নাও হতে পারে। আপাতত, বৈশিষ্ট্যটি এই বিশেষত্বের উপর নির্ভর করে। নতুন ড্রাইভারেরও সেই প্রপার্টি থাকা উচিত, এবং dev_get_stats() মানগুলিতে নিম্ন নেটওয়ার্ক স্তরগুলির (যেমন ইথারনেট শিরোলেখের মতো) কোনও এনক্যাপসুলেশন ওভারহেড অন্তর্ভুক্ত করা উচিত নয় এবং এটি নগণ্য না হলে অন্যান্য ট্র্যাফিক (যেমন ARP) অন্তর্ভুক্ত করা উচিত নয়।

Android ফ্রেমওয়ার্ক শুধুমাত্র ConnectivityServiceNetworkStateTracker এর সাথে যুক্ত নেটওয়ার্ক ইন্টারফেস থেকে পরিসংখ্যান সংগ্রহ করে। এটি ফ্রেমওয়ার্ককে প্রতিটি নেটওয়ার্ক ইন্টারফেসের ধরন (যেমন TYPE_MOBILE বা TYPE_WIFI ) এবং গ্রাহকের পরিচয় (যেমন IMSI) সহ সুনির্দিষ্টভাবে সনাক্ত করতে সক্ষম করে। ডেটা রুট করতে ব্যবহৃত সমস্ত নেটওয়ার্ক ইন্টারফেস একটি NetworkStateTracker দ্বারা উপস্থাপন করা উচিত যাতে পরিসংখ্যান সঠিকভাবে হিসাব করা যায়।