blob: ecc03779a71d22c5cf24a4cb325703e14a6a57b7 [file] [log] [blame]
Frank Lie6b47f32022-10-25 18:57:10 +00001/*
2 * Copyright (C) 2022 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17syntax = "proto2";
18option java_multiple_files = true;
19
20package com.android.metrics;
21
22import "frameworks/proto_logging/stats/enums/stats/connectivity/connectivity_service.proto";
23
24/**
25 * Logs NSD(Network service discovery) client session
26 *
27 * Log from:
28 * packages/modules/Connectivity/service-t/src/com/android/server/NsdService
29 */
30message NetworkNsdReported {
31 // Indicate if the device is using the legacy or the new implementation
32 optional bool is_legacy = 1;
33
34 // It is a random number to represent different clients. Each client is an app on the device.
35 optional int32 client_id = 2;
36
37 // It is a increment_number to represent different transactions.
38 // Each transaction is a request from an app client.
39 optional int32 transaction_id = 3;
40
41 // Indicate the service in resolution is a known service in the discovered services cache
42 optional bool is_known_service = 4;
43
44 // Record each NSD session type
45 optional .android.stats.connectivity.NsdEventType type = 5;
46
47 // The process duration of the event in milli-second
48 optional int64 event_duration_millisec = 6;
49
50 // Record each mdns query result
51 optional .android.stats.connectivity.MdnsQueryResult query_result = 7;
52
53 // Count of services in cache at the end of discovery
54 optional int32 found_service_count = 8;
55
56 // Count of found callback when discovery is stopped
57 optional int32 found_callback_count = 9;
58
59 // Count of lost callback when discovery is stopped
60 optional int32 lost_callback_count = 10;
61
62 // Record query service count before unregistered service
63 optional int32 replied_requests_count = 11;
Paul Hu600bd892023-08-09 17:05:29 +080064
65 // Record sent query count before stopped discovery
66 optional int32 sent_query_count = 12;
Paul Hu043bcd42023-07-14 16:38:25 +080067
68 // Record sent packet count before unregistered service
69 optional int32 sent_packet_count = 13;
70
71 // Record number of conflict during probing
72 optional int32 conflict_during_probing_count = 14;
73
74 // Record number of conflict after probing
75 optional int32 conflict_after_probing_count = 15;
76
77 // The random number between 0 ~ 999 for sampling
78 optional int32 random_number = 16;
Frank Lie6b47f32022-10-25 18:57:10 +000079}
80
81/**
82 * Logs the number of network count on each list of transports
83 *
84 * Logs from:
85 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
86 */
87message NetworkCountPerTransports {
88 // the number of network count on each list of transports
89 repeated NetworkCountForTransports network_count_for_transports = 1;
90}
91
92/**
93 * Logs the number of network count and transport type
94 *
95 * Logs from:
96 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
97 */
98message NetworkCountForTransports {
99 // Transport types of the network
100 optional int32 transport_types = 1;
101
102 // Number of networks for one list of transport types
103 optional int32 network_count = 2;
104}
105
106/**
107 * Logs a list of networks
108 *
109 * Logs from:
110 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
111 */
112message NetworkList {
113 repeated NetworkDescription network_description = 1;
114}
115
116/**
117 * Logs connection duration in seconds and list of transports
118 *
119 * Logs from:
120 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
121 */
122message ConnectionDurationForTransports {
123 // Transport types of the network
124 optional int32 transport_types = 1;
125
126 // Time duration that the device stays connected to the network
127 optional int32 duration_sec = 2;
128}
129
130/**
131 * Logs connection duration on each list of transports, in seconds
132 *
133 * Logs from:
134 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
135 */
136message ConnectionDurationPerTransports {
137 repeated ConnectionDurationForTransports connection_duration_for_transports = 1;
138}
139
140/**
141 * Logs network request count & request type
142 *
143 * Logs from:
144 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
145 */
146message RequestCountForType {
147 // The type of network request
148 optional .android.stats.connectivity.RequestType request_type = 1;
149
150 // Number of network requests
151 optional int32 request_count = 2;
152}
153
154/**
155 * Logs network request count
156 *
157 * Logs from:
158 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
159 */
160message NetworkRequestCount {
161 // Network request count for request type
162 repeated RequestCountForType request_count_for_type = 1;
163}
164
165/**
166 * Logs information about a network
167 *
168 * Logs from:
169 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
170 */
171message NetworkDescription {
172 // The transport types of the network. A network may include multiple transport types.
173 // Each transfer type is represented by a different bit, defined in
174 // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
175 optional int32 transport_types = 1;
176
177 // Indicates the network is metered, non-metered or temporarily-unmetered
178 optional .android.stats.connectivity.MeteredState metered_state = 2;
179
180 // Indicates the network is validated, non-validated, partial or portal
181 optional .android.stats.connectivity.ValidatedState validated_state = 3;
182
183 // Record the bitmask of all the policies applied to this score of network.
184 // Each policy is represented by a different bit, defined in
185 // packages/modules/Connectivity/service/src/com/android/server/connectivity/FullScore.java
186 optional int64 score_policies = 4;
187
188 // The capabilities of the network. A network may include multiple network capabilities.
189 // Each capability is represented by a different bit, defined in
190 // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
191 optional int64 capabilities = 5;
192
193 // Bitfield representing the network's enterprise capability identifier, defined in
194 // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
195 optional int32 enterprise_id = 6;
196}
197
198/**
199 * Pulls a list of NumberOfRematchesPerReason.
200 *
201 * Pulled from:
202 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
203 */
204message NumberOfRematchesPerReason {
205 // Number of network rematches for each rematch reason
206 repeated NumberOfRematchesForReason number_of_rematches_per_reason= 1;
207}
208
209/**
210 * Logs number of network rematches for rematch reason
211 *
212 * Logs from:
213 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
214 */
215message NumberOfRematchesForReason {
216 // The reason of network rematch
217 optional .android.stats.connectivity.RematchReason rematch_reason = 1;
218
219 // Number of network rematches
220 optional int32 rematch_count = 2;
221};
222
223/**
224 * Pulls information for connectivity stats.
225 *
226 * Pulled from:
227 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
228 */
229message ConnectivityStateSample {
230 // Number of networks per list of transports
231 optional NetworkCountPerTransports network_count_per_transports = 1;
232
233 // This is a list of networks with their transports and the duration
234 optional ConnectionDurationPerTransports connection_duration_per_transports = 2;
235
236 // Number of requests per category
237 optional NetworkRequestCount network_request_count = 3;
238
239 // Full list of network details (slice by transport / meteredness / internet+validated)
240 optional NetworkList networks = 4;
241}
242
243
244/**
245 * Pulls information for network selection rematch info.
246 *
247 * Pulled from:
248 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
249 */
250message NetworkSelectionRematchReasonsInfo {
251 // Number of rematch per rematch reason
252 optional NumberOfRematchesPerReason number_of_rematches_per_reason = 1;
253}
254
255/**
256 * Logs rematch information for the default network
257 *
258 * Logs from:
259 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
260 */
261message DefaultNetworkRematchInfo {
262 // The session id comes from each reboot, this is used to correlate the statistics of the
263 // networkselect on the same boot
264 optional int64 session_id = 1;
265
266 // The information of old device default network
267 optional NetworkDescription old_network = 2;
268
269 // The information of new device default network
270 optional NetworkDescription new_network = 3;
271
272 // The reason of network rematch
273 optional .android.stats.connectivity.RematchReason rematch_reason = 4;
274
275 // The time duration the device kept the old network as the default in seconds
276 optional int32 time_duration_on_old_network_sec = 5;
277}
278
279/**
280 * Logs network selection performance
281 *
282 * Logs from:
283 * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
284 */
285message NetworkSelectionPerformance {
286 // Number of network requests
287 optional int32 number_of_network_requests = 1;
288
289 // List of networks right now
290 // (slice by transport / meteredness / internet+validated)
291 optional NetworkList networks = 2;
292
293 // The latency of selection computed in milli-second
294 optional int32 selection_computed_latency_milli = 3;
295
296 // The latency of selection applied in milli-second
297 optional int32 selection_applied_latency_milli = 4;
298
299 // The latency of selection issued in milli-second
300 optional int32 selection_issued_latency_milli = 5;
301}
Frank Li04236582023-03-01 16:50:47 +0000302
303message NetworkSliceRequestCountSample {
304 // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
305 // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
306 optional int64 slice_id = 1;
307
308 // Bitfield representing the network's enterprise capability identifier
309 // (e.g. NET_ENTERPRISE_ID_1), defined in
310 // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
311 optional int32 enterprise_id = 2;
312
313 // number of request for this slice
314 optional int32 request_count = 3;
315
316 // number of apps with outstanding request(s) for this slice
317 optional int32 distinct_app_count = 4;
318}
319
320message NetworkSliceSessionEnded {
321 // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
322 // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
323 optional int64 slice_id = 1;
324
325 // Bitfield representing the network's enterprise capability identifier
326 // (e.g. NET_ENTERPRISE_ID_1), defined in
327 // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
328 optional int32 enterprise_id = 2;
329
330 // Number of bytes received at the device on this slice id
331 optional int64 rx_bytes = 3;
332
333 // Number of bytes transmitted by the device on this slice id
334 optional int64 tx_bytes = 4;
335
336 // Number of apps that have used this slice
337 optional int32 number_of_apps = 5;
338
339 // How long(in seconds) this slice has been connected
340 optional int32 slice_connection_duration_sec = 6;
341}
342
343message NetworkSliceDailyDataUsageReported {
344 // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
345 // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
346 optional int64 slice_id = 1;
347
348 // Bitfield representing the network's enterprise capability identifier
349 // (e.g. NET_ENTERPRISE_ID_1), defined in
350 // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
351 optional int32 enterprise_id = 2;
352
353 // Number of bytes received at the device on this slice id
354 optional int64 rx_bytes = 3;
355
356 // Number of bytes transmitted by the device on this slice id
357 optional int64 tx_bytes = 4;
358
359 // Number of apps that have used this slice
360 optional int32 number_of_apps = 5;
361
362 // How long(in seconds) this slice has been connected
363 optional int32 slice_connection_duration_sec = 6;
364}
Frank Lid5c936b2023-03-17 00:43:34 +0000365
366/**
367 * Logs DailykeepaliveInfoReported
368 *
369 * Logs from: packages/modules/Connectivity/service/src/com/android/
370 * server/connectivity/AutomaticOnOffKeepaliveTracker.
371 */
372message DailykeepaliveInfoReported{
373 // Daily duration per number of concurrent keepalive
374 optional DurationPerNumOfKeepalive duration_per_num_of_keepalive = 1;
375
376 // Daily keepalive registered/active duration on each list of keepalive session, in
377 // milli-seconds
378 optional KeepaliveLifetimePerCarrier keepalive_lifetime_per_carrier = 2;
379
380 // Daily number of keepalive requests
381 optional int32 keepalive_requests = 3;
382
383 // Daily number of automatic keepalive requests
384 optional int32 automatic_keepalive_requests = 4;
385
386 // Daily number of distinct apps that requested keepalives
387 optional int32 distinct_user_count = 5;
388
389 // Daily distinct apps uid list that requested keepalives
390 repeated int32 uid = 6;
391}
392
393/**
394 * Daily duration per number of concurrent keepalive
395 *
396 * Logs from: packages/modules/Connectivity/service/src/com/android/
397 * server/connectivity/AutomaticOnOffKeepaliveTracker.
398 */
399message DurationPerNumOfKeepalive {
400 repeated DurationForNumOfKeepalive duration_for_num_of_keepalive = 1;
401}
402
403message DurationForNumOfKeepalive {
404 // The number of concurrent keepalives is in the device
405 optional int32 num_of_keepalive = 1;
406
407 // How many milliseconds the device has keepalive registration number is num_of_keepalive
408 optional int32 keepalive_registered_durations_msec = 2;
409
410 // How many milliseconds the device has keepalive active(not paused) number is num_of_keepalive
411 optional int32 keepalive_active_durations_msec = 3;
412}
413
414/**
415 * Daily keepalive registered/active duration on each list of Keepalive session, in milli-seconds
416 *
417 * Logs from: packages/modules/Connectivity/service/src/com/android/
418 * server/connectivity/AutomaticOnOffKeepaliveTracker.
419 */
420message KeepaliveLifetimePerCarrier {
421 // The number of network count on each list of carriers
422 repeated KeepaliveLifetimeForCarrier keepalive_lifetime_for_carrier = 1;
423}
424
425/**
426 * Logs the keepalive registered/active duration in milli-seconds and carrier
427 * info(carrier id, transport, keepalive interval).
428 *
429 * Logs from: packages/modules/Connectivity/service/src/com/android/
430 * server/connectivity/AutomaticOnOffKeepaliveTracker.
431 */
432message KeepaliveLifetimeForCarrier {
433 // The carrier ID for each keepalive, or TelephonyManager.UNKNOWN_CARRIER_ID(-1) if not cell
434 optional int32 carrier_id = 1;
435
436 // The transport types of the underlying network for each keepalive. A network may include
437 // multiple transport types. Each transfer type is represented by a different bit, defined in
438 // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
439 optional int32 transport_types = 2;
440
441 // The keepalive interval for each keepalive
442 optional int32 intervals_msec = 3;
443
444 // The lifetime of the keepalive registered today
445 optional int32 lifetime_msec = 4;
446
447 // The duration for which the keepalive was active (not suspended)
448 optional int32 active_lifetime_msec = 5;
449}
450