ภาพรวมสถิติอินเทอร์เฟซเครือข่าย

ใน Android 4.0 สถิติที่รายงานโดยอินเทอร์เฟซเครือข่าย Linux จะถูกบันทึกเมื่อเวลาผ่านไป และใช้เพื่อบังคับใช้ขีดจำกัดโควตาเครือข่าย แสดงแผนภูมิที่ผู้ใช้มองเห็นได้ และอื่นๆ

ไดรเวอร์อุปกรณ์เครือข่ายแต่ละตัว (รวม Wi-Fi) ต้องเป็นไปตามวงจรชีวิตอุปกรณ์เคอร์เนลมาตรฐาน และส่งคืนสถิติที่ถูกต้องผ่าน dev_get_stats() โดยเฉพาะอย่างยิ่ง สถิติที่ส่งคืนจะต้องเป็นแบบโมโนโทนิกอย่างเคร่งครัดในขณะที่อินเทอร์เฟซทำงานอยู่ ไดรเวอร์สามารถรีเซ็ตสถิติได้หลังจากเสร็จสิ้น unregister_netdev() หรือเทียบเท่าที่สร้างเหตุการณ์ NETDEV_UNREGISTER สำหรับการเรียกกลับที่ลงทะเบียนด้วย register_netdevice_notifier() / register_inetaddr_notifier() / register_inet6addr_notifier()

ผู้ให้บริการมือถือมักจะวัดการใช้ข้อมูลที่ชั้นอินเทอร์เน็ต (IP) เพื่อให้ตรงกับแนวทางนี้ใน Android 4.0 เราอาศัยข้อเท็จจริงที่ว่าสำหรับอุปกรณ์เคอร์เนลที่เราสนใจเกี่ยวกับค่า rx_bytes และ tx_bytes ที่ส่งคืนโดย dev_get_stats() จะคืนค่าอินเทอร์เน็ตเลเยอร์ ( IP ) ไบต์ที่ถ่ายโอนอย่างแน่นอน แต่เราเข้าใจดีว่าอุปกรณ์อื่นๆ อาจไม่เป็นเช่นนั้น สำหรับตอนนี้ คุณลักษณะนี้อาศัยลักษณะเฉพาะนี้ ไดรเวอร์ใหม่ควรมีคุณสมบัตินั้นด้วย และค่า dev_get_stats() จะต้องไม่รวมโอเวอร์เฮดของการห่อหุ้มของเลเยอร์เครือข่ายที่ต่ำกว่า (เช่น ส่วนหัวของอีเทอร์เน็ต) และไม่ควรรวมทราฟฟิกอื่น ๆ (เช่น ARP) เว้นแต่จะเล็กน้อย

กรอบงาน Android จะรวบรวมเฉพาะสถิติจากอินเทอร์เฟซเครือข่ายที่เชื่อมโยงกับ NetworkStateTracker ใน ConnectivityService ซึ่งช่วยให้กรอบงานสามารถระบุแต่ละอินเทอร์เฟซเครือข่ายได้อย่างชัดเจน ซึ่งรวมถึงประเภท (เช่น TYPE_MOBILE หรือ TYPE_WIFI ) และเอกลักษณ์ของสมาชิก (เช่น IMSI) อินเทอร์เฟซเครือข่ายทั้งหมดที่ใช้ในการกำหนดเส้นทางข้อมูลควรแสดงโดย NetworkStateTracker เพื่อให้สามารถบันทึกสถิติได้อย่างถูกต้อง