RFC: NetworkManager Device Statistics



We have a new requirement to add a data activity indicator to Ubuntu Touch for certification in certain markets.

We've had some internal debate about whether or not we should extend NetworkManager to provide this information to the rest of the system vs. adding logic directly to our touch-specific network indicator.

The current prototype is based on a similar facility in Connman, and involves RTM_GETLINK polling to retrieve device-specific Rx and Tx statistics.

Connman's API can be seen here:

https://git.kernel.org/cgit/network/connman/connman.git/tree/doc/counter-api.txt
https://git.kernel.org/cgit/network/connman/connman.git/tree/doc/manager-api.txt#n90

Our proposed implementation involves extending NMPlatform/NMLinuxPlatform and adding some new properties to the NetworkManager.Device interface:

* TxBytes, TxPackets, [calculated TxRate (byte/s)] and Rx equivalents
* EnableStatProps : boolean property to enable/disable device statistics
* StatPropsRefreshRateMs : refresh rate for Tx/Rx properties in milliseconds

An alternative to extending the Device interface would be adding a dedicated Device.Statistics interface; and perhaps a Device interface method ( vs. the EnableStatProps property ) to control enabling/disabling collection of statistics on a per-device basis.

The idea behind EnableStatProps is to avoid overloading the system with PropertiesChanged signals. The Tx/Rx properties will not refresh if EnableStatProps is false, and will refresh, sending PropertiesChanged signals with the rate specified in StatPropsRefreshRateMs, when true. In our case, we'd explicitly disable statistics when the screen on a device is turned off.

Thoughts?

Regards,
/tony



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]