Frank Li | e6b47f3 | 2022-10-25 18:57:10 +0000 | [diff] [blame] | 1 | /* |
| 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 | |
| 17 | syntax = "proto2"; |
| 18 | option java_multiple_files = true; |
| 19 | |
| 20 | package com.android.metrics; |
| 21 | |
| 22 | import "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 | */ |
| 30 | message 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 Hu | 600bd89 | 2023-08-09 17:05:29 +0800 | [diff] [blame] | 64 | |
| 65 | // Record sent query count before stopped discovery |
| 66 | optional int32 sent_query_count = 12; |
Paul Hu | 043bcd4 | 2023-07-14 16:38:25 +0800 | [diff] [blame] | 67 | |
| 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 Li | e6b47f3 | 2022-10-25 18:57:10 +0000 | [diff] [blame] | 79 | } |
| 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 | */ |
| 87 | message 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 | */ |
| 98 | message 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 | */ |
| 112 | message 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 | */ |
| 122 | message 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 | */ |
| 136 | message 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 | */ |
| 146 | message 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 | */ |
| 160 | message 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 | */ |
| 171 | message 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 | */ |
| 204 | message 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 | */ |
| 215 | message 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 | */ |
| 229 | message 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 | */ |
| 250 | message 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 | */ |
| 261 | message 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 | */ |
| 285 | message 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 Li | 0423658 | 2023-03-01 16:50:47 +0000 | [diff] [blame] | 302 | |
| 303 | message 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 | |
| 320 | message 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 | |
| 343 | message 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 Li | d5c936b | 2023-03-17 00:43:34 +0000 | [diff] [blame] | 365 | |
| 366 | /** |
| 367 | * Logs DailykeepaliveInfoReported |
| 368 | * |
| 369 | * Logs from: packages/modules/Connectivity/service/src/com/android/ |
| 370 | * server/connectivity/AutomaticOnOffKeepaliveTracker. |
| 371 | */ |
| 372 | message 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 | */ |
| 399 | message DurationPerNumOfKeepalive { |
| 400 | repeated DurationForNumOfKeepalive duration_for_num_of_keepalive = 1; |
| 401 | } |
| 402 | |
| 403 | message 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 | */ |
| 420 | message 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 | */ |
| 432 | message 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 | |