In Android 4.0, le statistiche registrate dalle interfacce di rete Linux vengono registrate nel tempo e vengono utilizzate per applicare limiti di quota di rete, visualizzare grafici visibili agli utenti e altro ancora.
Ogni driver del dispositivo di rete (incluso il Wi-Fi) deve seguire il ciclo di vita del dispositivo del kernel standard e restituire statistiche corrette tramitedev_get_stats()
. In particolare, le statistiche restituite devono rimanere
sempre monotone mentre l'interfaccia è attiva. I conducenti possono reimpostare
le statistiche solo dopo aver completato correttamente un unregister_netdev()
o l'equivalente che genera un evento NETDEV_UNREGISTER
per
i richiami registrati con register_netdevice_notifier()
/
register_inetaddr_notifier()
/ register_inet6addr_notifier()
.
In genere, gli operatori mobili misurano l'utilizzo dei dati a livello di protocollo internet (IP). Per mantenere questo approccio in Android 4.0, ci basiamo sul fatto che per i dispositivi del kernel ci interessano i valori rx_bytes
e tx_bytes
restituiti da dev_get_stats()
, che restituiscono esattamente i byte trasferiti dal livello internet (IP
). Tuttavia, sappiamo che per altri dispositivi potrebbe non essere così. Per il momento, la funzionalità si basa su questa
peculiarità. Anche i nuovi driver devono avere questa proprietà e i valori dev_get_stats()
non devono includere alcun sovraccarico di incapsulamento dei livelli di rete inferiori (ad esempio gli intestazioni Ethernet) e, preferibilmente, non devono includere altro traffico (ad esempio ARP), a meno che non sia trascurabile.
Il framework Android raccoglie le statistiche solo dalle interfacce di rete associate a un NetworkStateTracker
in ConnectivityService
. In questo modo, il framework può identificare in modo concreto ogni interfaccia di rete, incluso il tipo (ad esempio TYPE_MOBILE
o TYPE_WIFI
) e l'identità dell'abbonato (ad esempio l'IMSI). Tutte le interfacce di rete utilizzate per indirizzare i dati devono essere rappresentate da un NetworkStateTracker
in modo che le statistiche possano essere registrate correttamente.