Commit Graph

172 Commits

Author SHA1 Message Date
Jeff Sharkey
9d12bd2873 Interface-level network policy, persist policies.
Define NetworkPolicy as cycle-reset day and warning/limit values, and
set/get through NetworkPolicyManager.  Watch ConnectivityManager for
network connection events, and apply quota rules based on matching
interfaces.  Policy service matches based on strong identity to support
IMSI-specific policy values.

Calculates remaining quota based on current stats recorded since the
last reset cycle day.  Tests to verify edge cases around February.

Persist network and UID policies in XML, and restore on boot.

Change-Id: Id40ba7d6eed6094fbd5e18e6331286c606880d80
2011-06-10 19:35:20 -07:00
Jeff Sharkey
98693eb89a Persist network stats using AtomicFile.
Implements read/write of network stats using AtomicFile, along with
magic number and versioning.  Stores in "/data/system/netstats.bin"
for now.  Tests to verify that stats are persisted across a simulated
reboot, and to verify that TEMPLATE_WIFI is working.

Fixed bug where kernel counters rolling backwards would cause negative
stats to be recorded; now we clamp deltas at 0.

Change-Id: I53bce26fc8fd3f4ab1e34ce135d302edfa34db34
2011-06-09 10:14:13 -07:00
Jeff Sharkey
0b1cfc0d55 Compute range-based usage in NetworkStatsHistory.
When given a start/end range, interpolate between buckets to return
the total network usage.  Used to summarize detailed UID stats.  Method
to combine NetworkStatsHistory regardless of bucket size.  Used to
combine all histories matching a template.

Added tests for both methods.

Change-Id: Ia463910c0ecf7cf08dcf97c658ad99742bd6b882
2011-06-07 23:54:28 -07:00
Jeff Sharkey
b06fe7ad72 UID network stats, secure settings, and random.
Collect UID-granularity network stats during regular poll event.  Add
dumpsys argument to generate fake historical data for debugging, and
move stats parameters to Settings.Secure.

Change-Id: I09b36a2955dc10c697d4b9c3ff23dcb3ac37bd70
2011-06-07 23:43:46 -07:00
Jeff Sharkey
1a3eb889f0 Map network identity using ConnectivityService.
Instead of deriving network identity based on raw subsystem broadcasts,
listen for updates from ConnectivityService.  Added atomic view of all
active NetworkState, and build map from "iface" to NetworkIdentity set
for stats tracking.

To avoid exposing internal complexity, INetworkStatsService calls use
general templates.  Added TelephonyManager mapping to classify network
types using broad labels like "3G" or "4G", used to drive templates.

Cleaned up Objects and Preconditions.

Change-Id: I1d4c1403f0503bc3635a59bb378841ba42239a91
2011-06-07 23:09:25 -07:00
Jeff Sharkey
9ab8c6a64d Collect historical network stats.
Periodically records delta network traffic into historical buckets to
support other services, such NetworkPolicyManager and Settings UI.

Introduces NetworkStatsHistory structure which contains sparse, uniform
buckets of data usage defined by timestamps.  Service periodically
polls NetworkStats and records changes into buckets.  It only persists
to disk when substantial changes have occured.  Current parameters
create 4 buckets each day, and persist for 90 days, resulting in about
8kB of data per network.

Only records stats for "well known" network interfaces that have been
claimed by Telephony or Wi-Fi subsystems.  Historical stats are also
keyed off identity (such as IMSI) to support SIM swapping.

Change-Id: Ia27d1289556a2bf9545fbc4f3b789425a01be53a
2011-06-01 17:44:52 -07:00
Jeff Sharkey
33936acd3e APIs to profile network usage for current UID.
Added startDataProfiling() and stopDataProfiling() to TrafficStats,
which can be used by apps to measure network usage delta between two
points in time.  Currently takes two NetworkStats snapshots and returns
delta, which will eventually include tag-level granularity.  Added
tests for NetworkStats delta subtraction.

Added NMS.getNetworkStatsUidDetail() that returns stats for specific
UID.  Always gives stats access for the calling UID, otherwise enforces
that caller has permission.  Fix readSingleLongFromFile(), since
/proc/ files don't have well-defined lengths.

Change-Id: Ic5b6414d8effbd66846e275b00d4b8a82c74589d
2011-05-21 15:02:58 -07:00
Jeff Sharkey
b82cd3db7d Add Socket tagging for granular data accounting.
Introduces public API to apply "tags" to track data traffic originating
from the current thread.  (Under the hood, the tags are maintained and
applied in BlockGuard.)  Also adds tag/untag methods for developers who
maintain their own Socket pools.

Change-Id: Ic2dd3155559a93a7b613c7853748d4c44fb3a39e
2011-05-13 18:19:00 -07:00
Jeff Sharkey
ffd48a2cf8 Return NetworkStats bundle from NM service.
Introduce NetworkStats which is a collection of network statistics,
which should match the structure communicated by kernel module through
netd.  Will introduce tags and fg/bg stats later.  Kept entirely in a
flat data structure to optimize parcel speed.

Initial pass at returning NetworkStats from NetworkManagementService,
both summary and details.  Will eventually pull data from kernel module
over netd connection.

Change-Id: I92d9f61678ec8c22e2ce26775fb035a0cf32413f
2011-05-04 16:07:21 -07:00
Elliott Hughes
df7efc2c9f More native code cleanup.
Use ScopedUtfChars (fixes a leak in TrafficStats, and fixes a crash in Wifi in
a case where GetStringChars could have been called with a pending exception).

Change-Id: I3465ff392b4038dfdafa6af80ec1314cc6d6a11c
2011-04-13 10:34:23 -07:00
Irfan Sheriff
042f4e10f0 data activity reporting on wifi
Initial checkin, need icons to complete the feature

Bug: 3412258

Change-Id: I9a3ecc8159cc314d84707065dafe23d402409a84
2011-02-17 13:57:55 -08:00
Ashish Sharma
2e11488c90 Fix a minor documentation bug in TrafficStats.
Change-Id: I3cf2199797d875ccb6ab432c298afaace44c7527
Signed-off-by: Ashish Sharma <ashishsharma@google.com>
2011-01-31 14:30:16 -08:00
Ashish Sharma
df852d8860 TrafficStats: Include UDP stats and packet count to API
Change-Id: I70063e6033d3c181bcc5b9e401f9474900e25281
Signed-off-by: Ashish Sharma <ashishsharma@google.com>
2011-01-27 15:52:38 -08:00
Dan Egnor
71d780a711 Fix sim build (sim doesn't have strl*() reliably...)
Just stub out the TrafficStats code for the sim.
Bug: 2578938

Change-Id: Ie555f67f581d05ee446ea29cb2223feb350c52f9
2010-04-08 23:47:06 -07:00
Dan Egnor
eaeb70241c Change TrafficStats to a new JNI implementation.
Also change phone's ConnectionStateTrackers to use it directly,
rather than through the INetStat binder interface.

Bug: 2578938
Change-Id: I8858e2609cbec3be845a0ce5178cb03f67e01b41
2010-04-07 19:06:29 -07:00
Ken Shirriff
c9b5476b73 API review: TrafficStats: rename Pkts to Packets
Rename getMobileTxPackets(), getMobileRxPackets(), getTotalTxPackets(),
getMobileRxPackets()

bug 2420318
2010-02-04 14:37:21 -08:00
Ken Shirriff
c640964e95 Migration to TrafficStats.
TrafficStats is the SDK version of NetStat.
2009-12-08 11:14:03 -08:00
Ken Shirriff
ae521152dd Add TrafficStats class to SDK.
This class (a rename of NetStat) provides network byte and packet statistics.
NetStat will be removed separately, to avoid breaking other packages when submitting.
2009-12-08 10:50:25 -08:00
The Android Open Source Project
ac96dda631 auto import from //depot/cupcake/@135843 2009-03-03 19:31:44 -08:00
The Android Open Source Project
6145627639 auto import from //depot/cupcake/@135843 2009-03-03 18:28:45 -08:00
The Android Open Source Project
4bc9554dcc auto import from //branches/cupcake/...@130745 2009-02-10 15:44:00 -08:00
The Android Open Source Project
cf7558648b Initial Contribution 2008-10-21 07:00:00 -07:00