Commit Graph

3295 Commits

Author SHA1 Message Date
The Android Automerger
8d1de31583 merge in ics-release history after reset to master 2011-07-18 06:43:19 -07:00
Jeff Sharkey
861849e10e Data usage notifs, newly installed apps, defaults.
Only show warning/limit notifications for active networks, since they
aren't actionable for inactive IMSI.  Include IMSI in debug output on
engineering builds.

Move default policy warning to be configured through overlay.  Watch
for newly installed packages to enforce global policy.

Bug: 5038729, 5038541, 4979026, 5023634
Change-Id: I8fc8ab4c23c440a3091504ea16133ed6ababf58e
2011-07-17 16:28:02 -07:00
Jeff Sharkey
2f60c2d402 Acquire wakelock during network stats collection.
Bug: 4517275
Change-Id: I01dfe3b13d7aca84605446e9e9927d0648623552
2011-07-17 13:03:29 -07:00
The Android Automerger
b0c5add0db merge in ics-release history after reset to master 2011-07-15 06:45:40 -07:00
Jeff Sharkey
1bb88919c7 Hide NetworkTemplate details, buffered stats I/O.
Move template matching to builder methods instead of exposing the
internal constants.  Also rule to match Ethernet usage.  Buffer
reading and writing of network stats, making operations 5x faster.

Change-Id: Iedb2d0ab3b26a976811c050f84a164e909eb74b6
2011-07-14 20:43:27 -07:00
The Android Automerger
de42d945e8 merge in ics-release history after reset to master 2011-07-14 07:08:00 -07:00
Mike Lockwood
9a3b109182 Remove some #ifdef HAVE_ANDROID_OS that were needed for the simulator build
Change-Id: I13d9f251f86c05ae5405f37adbf6b8e9660935ba
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-07-13 19:45:44 -04:00
David 'Digit' Turner
ca81f822c4 am bb394c62: am ad485c02: resolved conflicts for merge of a1a57250 to gingerbread-plus-aosp
* commit 'bb394c62a0d1d9e8ab5c1337b01abdf6c03f7d06':
  NativeDaemonConnector: Fix SDCard mounting bug in the emulator.
  Fix missing NL
2011-07-13 14:55:20 -07:00
The Android Automerger
cdb3f0c132 merge in ics-release history after reset to master 2011-07-13 07:47:24 -07:00
Jeff Sharkey
3a0b70f80c Include full network history around current time.
When requesting historical values with time ranges, always include
full values for buckets that span current time.  (It doesn't make
sense to interpolate partial data.)  Move getTotalData() to return
full Entry objects to prepare for packet counts.

Bug: 4691901
Change-Id: I717bd721be9f1d4a47c4121e46e07a56cb15bbf1
2011-07-12 20:20:56 -07:00
Jeff Sharkey
9293bbee48 Merge "Hide NetworkStatsHistory internals." 2011-07-12 15:19:31 -07:00
Jeff Sharkey
188480b216 Hide NetworkStatsHistory internals.
Instead of exposing internal storage details, offer getValues()
accessor which populates values into a recycled structure.

Change-Id: I5228d7099a8f61b2018a435a813435a67dae49b4
2011-07-12 13:57:06 -07:00
Wink Saville
d4c705316e resolved conflicts for merge of 99cd6671 to master
Change-Id: I81ac18b1b8291a96bdfa3386f2fe3633fd7eeb79
2011-07-12 13:56:05 -07:00
David 'Digit' Turner
bb394c62a0 am ad485c02: resolved conflicts for merge of a1a57250 to gingerbread-plus-aosp
* commit 'ad485c02bbab928bec1bfcbca16128d453c6defe':
  NativeDaemonConnector: Fix SDCard mounting bug in the emulator.
  Fix missing NL
2011-07-11 16:15:27 -07:00
David 'Digit' Turner
ad485c02bb resolved conflicts for merge of a1a57250 to gingerbread-plus-aosp
Change-Id: I1f7d1f488f6a86774962d427aca472a8a444e0aa
2011-07-12 00:57:09 +02:00
Jeff Sharkey
21b9c72ad7 Return stats from inactive ifaces, packet counts.
When an iface goes inactive, xt_qtaguid maintains historical counters
instead of discarding.  Now reading and returning those values in
NetworkManagementService summary calls.  Tests to verify stats are
returned.

Modify NetworkStats to include rxPackets and txPackets values, and
move to Entry to eventually hide internal storage details.

Bug: 4984539
Change-Id: I1ba0bb5580c62e946d9dff2cc2a6f64aff403efc
2011-07-11 14:39:56 -07:00
The Android Automerger
f905a7b777 merge in ics-release history after reset to master 2011-07-11 06:45:11 -07:00
Kazuhiro Ondo
8bfb6a160c Concurrent multi-PDP support in TrafficStats
Quick fix to enable concurrent multiple PDP support in TrafficStats.
Just updated the list of hard-coded mobile interfaces for now.

Bug: 4553527
Change-Id: I44ce73f3000542d6457f353bb561a2275684af6b
2011-07-10 14:40:43 -07:00
Jeff Sharkey
1c69b98734 Cached NTP time for system services.
Uses NTP server and timeout from secure settings, or fallback to
defaults in resources.  Update various system services to use cached
NTP time when fresh enough, or force updates as needed.

Bug: 4517273
Change-Id: Ie1c4c4883836013d02ca0bbd850cf8949f93b34b
2011-07-10 14:25:18 -07:00
David 'Digit' Turner
a1a5725080 merge intel x86 patches into gingerbread branch 2011-07-08 18:19:01 +02:00
David 'Digit' Turner
3d49d486c0 NativeDaemonConnector: Fix SDCard mounting bug in the emulator.
This patch fixes a really annoying bug that prevented the emulator
from properly mounting the SD Card.

The issue was that mOutputStream was not initialized when the onDaemonConnected
callbacks are called, just after the daemon's socket connection is established.

In one specific case (MountService a.k.a. VoldConnector), the corresponding
callback function immediately tried to perform a doCommandList() call on the
connector object. The request failed because mOutputStream was still defined
as null when it happened.

By moving the initialization of the variable just before the callback is
invoked, we ensure that things work properly.

Change-Id: I46726a50ef69eaafe70081ff4eda1244b744beba
2011-07-07 03:46:00 +02:00
The Android Automerger
d92268a054 merge in ics-release history after reset to master 2011-07-04 06:47:59 -07:00
Jeff Sharkey
830d546f6b Migrate bandwidth control to NMS, omit history.
Both stats and policy make NMS calls that depend on bandwidth control
being enabled, so move enable/disable into NMS and drop calls when
disabled.  This avoids throwing heavy ISE exceptions when disabled.

Only include recent data when writing NetworkStatsHistory as part of
dumpsys call.  Introduce manual poll event for Settings UI.

Bug: 4982115, 4770435, 4515856
Change-Id: I257820b057af2f0f99c736fb4f61e55b9fdc3e66
2011-06-30 15:47:51 -07:00
The Android Automerger
341ea4a320 merge in ics-release history after reset to master 2011-06-29 06:46:29 -07:00
Jesse Wilson
b05f41c97f Move socket tagging from libcore.
Change-Id: I7515896936c5bbd212c88e2801b831914219a925
2011-06-28 23:43:51 -07:00
Jeff Sharkey
9279006a00 Better network stats parsing, integer tags, async.
Change NMS parsing to handle extended /proc/ stats formats by pairing
values with header keys.  Move TrafficStats to integer tags to match
kernel internals, and offer well-known tags for system services.

Async policy event dispatch from NPMS, and update tests to block for
event dispatch.  Narrow app policy to exclude apps signed with system
key, which are usually critical.

Bug: 4948913, 4903489, 4585280

Change-Id: Idb357227ccaa617906411f309371cea18d7bc519
2011-06-28 17:59:00 -07:00
The Android Automerger
c355ea0331 merge in ics-release history after reset to master 2011-06-28 06:44:37 -07:00
JP Abgrall
2778a1ea73 NetworkStatsService: disabled by default
For now, there is still too much breakage around the kernel's new
qtaguid netfilter.
So no netstats up front.

But enable on the device until wiped:

  ./vendor/google/tools/override-gservices secure:netstats_enabled=1
  adb reboot


Bug: 4903513

Change-Id: I230bd2d4efab85cac5c9abaa7d638c94f5e0c7d6
Signed-off-by: JP Abgrall <jpa@google.com>
2011-06-27 22:16:04 -07:00
The Android Automerger
5735bd5b82 merge in ics-release history after reset to master 2011-06-24 14:22:56 -07:00
The Android Automerger
d8e24705bf merge in ics-release history after reset to master 2011-06-24 13:30:43 -07:00
JP Abgrall
f6cc17c9d1 NetworkStatsService: check kernel bandwidth support before enabling
And catch the actual errors reported by the other side of NetworkManager.

Change-Id: I9a9393b659d6f896ee1bf40a8deaca7853ef8f94
Signed-off-by: JP Abgrall <jpa@google.com>
2011-06-23 15:37:58 -07:00
JP Abgrall
27cb1fa96b NetworkStatsService: check kernel bandwidth support before enabling
And catch the actual errors reported by the other side of NetworkManager.


Change-Id: I9a9393b659d6f896ee1bf40a8deaca7853ef8f94
Signed-off-by: JP Abgrall <jpa@google.com>
2011-06-23 14:13:28 -07:00
Jeff Sharkey
2e546ddbde Enable bandwidth module from stats service.
During systemReady(), tell netd to enable bandwidth tracking module,
which is used to provide detailed stats and controls.

Change-Id: Iecfd8b17a3b90f5a817d731fbe1c71777681ed6e
2011-06-22 21:44:12 -07:00
Jeff Sharkey
3bc842e4c3 Teach NetworkIdentity about roaming.
And correctly upgrade NetworkIdentitySet written to disk, assuming
that old values aren't roaming.

Bug: 4724762
Change-Id: Ic25897ebbaf43be2390174d8e5fd08386bc8a345
2011-06-19 22:21:05 -07:00
Jeff Sharkey
b590477065 Persist "tagged" network stats along with UIDs.
Now stores tags other than TAG_NONE (0x0), which are useful for app
debugging.  Combine UID and tag together into single long key, and
expose tag data through AIDL when requested.  Change NMS to track
TAG_NONE as total UID traffic, matching the kernel definition.

Added TAG_MAX_HISTORY to control how long tag-granularity statistics
are stored; overall UID usage is still kept for UID_MAX_HISTORY.  Fix
bug to trim NetworkStatsHistory outside normal polling loops to catch
non-active networks and UIDs.

Test to verify UID and tag packing, and to verify that UID traffic on
two networks are combined to match MOBILE_ALL template.

Change-Id: If0e039416d9e7f63b1a39e04cddfb1133b5a78ee
2011-06-19 21:58:39 -07:00
Jeff Sharkey
c04cda602c Handle removed UIDs in network stats and policy.
When UID_REMOVED, clean up any existing UID network policy so it
doesn't linger for future apps.  Also move any NetworkStatsHistory
to special UID_REMOVED tracking bucket.

Tests for new removal code.  Also test detailed UID stats, including
network changes to verify template matching logic.

Bug: 4584212
Change-Id: I9faadf6b6f3830eb45d86c7f1980a27cdbcdb11e
2011-06-19 01:08:12 -07:00
Jeff Sharkey
0d5baa3f21 Read "qtaguid" network stats, refactor templates.
Teach NMS to read qtaguid stats from kernel, but fall back to older
stats when kernel doesn't support.  Add "tags" to NetworkStats entries
to support qtaguid.  To work around double-reporting bug, subtract
tagged stats from TAG_NONE entry.

Flesh out stronger NetworkTemplate.  All NetworkStatsService requests
now require a template, and moved matching logic into template.

Record UID stats keyed on complete NetworkIdentitySet definition,
similar to how interface stats are stored.  Since previous UID stats
didn't have iface breakdown, discard during file format upgrade.

Change-Id: I0447b5e7d205d73d28e71c889c568e536e91b8e4
2011-06-18 22:23:11 -07:00
Jeff Sharkey
dbffe5a999 Avoid clobbering UID stats when not yet loaded.
Bug: 4690822
Change-Id: Ia6c9e8f89e89739cf3380c4b98b9da6f52db48fa
2011-06-17 11:18:27 -07:00
Jeff Sharkey
3ce93600fd Data usage warning and limit notifications.
Watch for network statistics to cross NetworkPolicy warning or limit,
and show notifications to user as needed.  Currently checks during
any statistics update, but will eventually move to event registration
through netd when kernel supports.

Fixed accounting bug in getSummaryForNetwork().  Only apply UID policy
to applications; applying to system processes could break critical
services like RIL.

Change-Id: Iac0f20e910e205f3cbc54ec96395ff268b1aa379
2011-06-14 22:43:08 -07:00
Jeff Sharkey
709e40027d External mutation of full NetworkPolicy set.
Instead of embedding complex template coexistence rules into policy
service, rely on external editors to enforce, and offer atomic
get/set operations for full policy sets.

Generate default mobile policy when none exists, using default of 4GB
warning and cycle reset of current day.  Dispatch listener events
through Handler when holding internal lock, and catch CLASS_UNKNOWN
networks in 3G_LOWER template.

Change-Id: I063cf1eaf330e32b75d0697b89fc04488e6dfaea
2011-06-12 23:21:34 -07:00
Jeff Sharkey
755000588f Growable NetworkStats object instead of builder.
NetworkStats now grows in place with arraycopy() instead of callers
needing to know record count a priori.  Better growth calculation for
both NetworkStats and NetworkStatsHistory; 50% each time.  Better
estimates of buckets needed in calling services.

Change-Id: I3adbffa0b7407612cc6349d9135a8b4eb63cd440
2011-06-11 22:17:17 -07:00
Jeff Sharkey
6fc33809a7 Persist UID stats, lazy loading, resize buckets.
Persisting detailed UID stats in separate "netstats_detail.bin" file
to enable different schedules for summary and detail polling.  Only
load detailed UID history on demand, since it's not needed during
boot.  Add test to verify UID stats are persisted across simulated
reboot.

Move external settings into well-named interface, which is still
backed by Settings.Secure.  During periodic poll events, resize any
history to match current bucket duration setting.  Test to verify.

Change-Id: I6366f3583a591f8ba859b0e5987daf8cafa4e95a
2011-06-11 17:55:56 -07:00
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