Ağ arayüzü istatistiklerine genel bakış

Android 4.0'da, Linux ağ arayüzleri tarafından rapor edilen istatistikler zaman içinde kaydedilir ve ağ kota sınırlarını zorlamak, kullanıcı tarafından görülebilen grafikler oluşturmak ve daha fazlası için kullanılır.

Her ağ aygıtı sürücüsü (Wi-Fi dahil), standart çekirdek aygıtı yaşam döngüsünü izlemeli ve dev_get_stats() aracılığıyla doğru istatistikleri döndürmelidir. Özellikle, arayüz aktifken döndürülen istatistikler kesinlikle monoton kalmalıdır. Sürücüler istatistikleri ancak bir unregister_netdev() veya register_netdevice_notifier() / register_inetaddr_notifier() / register_inet6addr_notifier() ) ile kayıtlı geri aramalar için bir NETDEV_UNREGISTER olayı oluşturan eşdeğerini başarıyla tamamladıktan sonra sıfırlayabilir.

Mobil operatörler genellikle veri kullanımını İnternet katmanında (IP) ölçer. Android 4.0'da bu yaklaşımı eşleştirmek için, çekirdek cihazları için dev_get_stats() tarafından döndürülen rx_bytes ve tx_bytes değerlerinin tam olarak aktarılan İnternet katmanı ( IP ) baytlarını döndürdüğü gerçeğine güveniyoruz. Ancak, diğer cihazlar için durumun böyle olmayabileceğini anlıyoruz. Şimdilik, özellik bu tuhaflığa dayanıyor. Yeni sürücüler de bu özelliğe sahip olmalıdır ve dev_get_stats() değerleri, alt ağ katmanlarının (Ethernet başlıkları gibi) herhangi bir kapsülleme ek yükünü içermemeli ve ihmal edilebilir olmadıkça tercihen diğer trafiği (ARP gibi) içermemelidir.

Android çerçevesi yalnızca ConnectivityService içindeki NetworkStateTracker ile ilişkili ağ arabirimlerinden istatistik toplar. Bu, çerçevenin türü ( TYPE_MOBILE veya TYPE_WIFI gibi) ve abone kimliği (IMSI gibi) dahil olmak üzere her ağ arabirimini somut olarak tanımlamasını sağlar. Verileri yönlendirmek için kullanılan tüm ağ arayüzleri, istatistiklerin doğru bir şekilde hesaplanabilmesi için bir NetworkStateTracker tarafından temsil edilmelidir.