Ağ arayüzü istatistiklerine genel bakış

Android 4.0'ta, Linux ağ arayüzleri tarafından raporlanan istatistikler zaman içinde kaydedilir ve ağ kotası sınırlarını uygulamak, kullanıcıların görebileceği grafikler oluşturmak ve daha fazlası için kullanılır.

Her ağ cihaz sürücüsü (kablosuz ağ dahil), standart çekirdek cihaz yaşam döngüsüne uymalı ve dev_get_stats() aracılığıyla doğru istatistikleri döndürmelidir. Özellikle, döndürülen istatistikler arayüz etkinken kesinlikle monoton kalmalıdır. Sürücüler, istatistikleri yalnızca unregister_netdev()'ü veya register_netdevice_notifier() / register_inetaddr_notifier() / register_inet6addr_notifier() ile kayıtlı geri çağırmalar için NETDEV_UNREGISTER etkinliği oluşturan eşdeğeri başarıyla tamamladıktan sonra sıfırlayabilir.

Mobil operatörler genellikle veri kullanımını internet katmanında (IP) ölçer. Android 4.0'taki bu yaklaşımı karşılamak için, önemsediğimiz çekirdek cihazlarda dev_get_stats() tarafından döndürülen rx_bytes ve tx_bytes değerlerinin tam olarak aktarılan internet katmanı (IP) baytlarını döndürdüğü gerçeğinden yararlanırız.  Ancak diğer cihazlarda bu durumun geçerli olmayabileceğinin farkındayız. Bu özellik şu anda bu özelliğe 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 üstbilgileri gibi) kapsülleme yükü içermemelidir ve tercihen önemsiz olmadığı sürece diğer trafiği (ARP gibi) içermemelidir.

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