/* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ syntax = "proto2"; option java_multiple_files = true; package com.android.metrics; import "frameworks/proto_logging/stats/enums/stats/connectivity/connectivity_service.proto"; /** * Logs NSD(Network service discovery) client session * * Log from: * packages/modules/Connectivity/service-t/src/com/android/server/NsdService */ message NetworkNsdReported { // Indicate if the device is using the legacy or the new implementation optional bool is_legacy = 1; // It is a random number to represent different clients. Each client is an app on the device. optional int32 client_id = 2; // It is a increment_number to represent different transactions. // Each transaction is a request from an app client. optional int32 transaction_id = 3; // Indicate the service in resolution is a known service in the discovered services cache optional bool is_known_service = 4; // Record each NSD session type optional .android.stats.connectivity.NsdEventType type = 5; // The process duration of the event in milli-second optional int64 event_duration_millisec = 6; // Record each mdns query result optional .android.stats.connectivity.MdnsQueryResult query_result = 7; // Count of services in cache at the end of discovery optional int32 found_service_count = 8; // Count of found callback when discovery is stopped optional int32 found_callback_count = 9; // Count of lost callback when discovery is stopped optional int32 lost_callback_count = 10; // Record query service count before unregistered service optional int32 replied_requests_count = 11; // Record sent query count before stopped discovery optional int32 sent_query_count = 12; // Record sent packet count before unregistered service optional int32 sent_packet_count = 13; // Record number of conflict during probing optional int32 conflict_during_probing_count = 14; // Record number of conflict after probing optional int32 conflict_after_probing_count = 15; // The random number between 0 ~ 999 for sampling optional int32 random_number = 16; } /** * Logs the number of network count on each list of transports * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message NetworkCountPerTransports { // the number of network count on each list of transports repeated NetworkCountForTransports network_count_for_transports = 1; } /** * Logs the number of network count and transport type * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message NetworkCountForTransports { // Transport types of the network optional int32 transport_types = 1; // Number of networks for one list of transport types optional int32 network_count = 2; } /** * Logs a list of networks * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message NetworkList { repeated NetworkDescription network_description = 1; } /** * Logs connection duration in seconds and list of transports * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message ConnectionDurationForTransports { // Transport types of the network optional int32 transport_types = 1; // Time duration that the device stays connected to the network optional int32 duration_sec = 2; } /** * Logs connection duration on each list of transports, in seconds * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message ConnectionDurationPerTransports { repeated ConnectionDurationForTransports connection_duration_for_transports = 1; } /** * Logs network request count & request type * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message RequestCountForType { // The type of network request optional .android.stats.connectivity.RequestType request_type = 1; // Number of network requests optional int32 request_count = 2; } /** * Logs network request count * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message NetworkRequestCount { // Network request count for request type repeated RequestCountForType request_count_for_type = 1; } /** * Logs information about a network * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message NetworkDescription { // The transport types of the network. A network may include multiple transport types. // Each transfer type is represented by a different bit, defined in // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int32 transport_types = 1; // Indicates the network is metered, non-metered or temporarily-unmetered optional .android.stats.connectivity.MeteredState metered_state = 2; // Indicates the network is validated, non-validated, partial or portal optional .android.stats.connectivity.ValidatedState validated_state = 3; // Record the bitmask of all the policies applied to this score of network. // Each policy is represented by a different bit, defined in // packages/modules/Connectivity/service/src/com/android/server/connectivity/FullScore.java optional int64 score_policies = 4; // The capabilities of the network. A network may include multiple network capabilities. // Each capability is represented by a different bit, defined in // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int64 capabilities = 5; // Bitfield representing the network's enterprise capability identifier, defined in // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int32 enterprise_id = 6; } /** * Pulls a list of NumberOfRematchesPerReason. * * Pulled from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message NumberOfRematchesPerReason { // Number of network rematches for each rematch reason repeated NumberOfRematchesForReason number_of_rematches_per_reason= 1; } /** * Logs number of network rematches for rematch reason * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message NumberOfRematchesForReason { // The reason of network rematch optional .android.stats.connectivity.RematchReason rematch_reason = 1; // Number of network rematches optional int32 rematch_count = 2; }; /** * Pulls information for connectivity stats. * * Pulled from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message ConnectivityStateSample { // Number of networks per list of transports optional NetworkCountPerTransports network_count_per_transports = 1; // This is a list of networks with their transports and the duration optional ConnectionDurationPerTransports connection_duration_per_transports = 2; // Number of requests per category optional NetworkRequestCount network_request_count = 3; // Full list of network details (slice by transport / meteredness / internet+validated) optional NetworkList networks = 4; } /** * Pulls information for network selection rematch info. * * Pulled from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message NetworkSelectionRematchReasonsInfo { // Number of rematch per rematch reason optional NumberOfRematchesPerReason number_of_rematches_per_reason = 1; } /** * Logs rematch information for the default network * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message DefaultNetworkRematchInfo { // The session id comes from each reboot, this is used to correlate the statistics of the // networkselect on the same boot optional int64 session_id = 1; // The information of old device default network optional NetworkDescription old_network = 2; // The information of new device default network optional NetworkDescription new_network = 3; // The reason of network rematch optional .android.stats.connectivity.RematchReason rematch_reason = 4; // The time duration the device kept the old network as the default in seconds optional int32 time_duration_on_old_network_sec = 5; } /** * Logs network selection performance * * Logs from: * packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java */ message NetworkSelectionPerformance { // Number of network requests optional int32 number_of_network_requests = 1; // List of networks right now // (slice by transport / meteredness / internet+validated) optional NetworkList networks = 2; // The latency of selection computed in milli-second optional int32 selection_computed_latency_milli = 3; // The latency of selection applied in milli-second optional int32 selection_applied_latency_milli = 4; // The latency of selection issued in milli-second optional int32 selection_issued_latency_milli = 5; } message NetworkSliceRequestCountSample { // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY), // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int64 slice_id = 1; // Bitfield representing the network's enterprise capability identifier // (e.g. NET_ENTERPRISE_ID_1), defined in // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int32 enterprise_id = 2; // number of request for this slice optional int32 request_count = 3; // number of apps with outstanding request(s) for this slice optional int32 distinct_app_count = 4; } message NetworkSliceSessionEnded { // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY), // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int64 slice_id = 1; // Bitfield representing the network's enterprise capability identifier // (e.g. NET_ENTERPRISE_ID_1), defined in // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int32 enterprise_id = 2; // Number of bytes received at the device on this slice id optional int64 rx_bytes = 3; // Number of bytes transmitted by the device on this slice id optional int64 tx_bytes = 4; // Number of apps that have used this slice optional int32 number_of_apps = 5; // How long(in seconds) this slice has been connected optional int32 slice_connection_duration_sec = 6; } message NetworkSliceDailyDataUsageReported { // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY), // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int64 slice_id = 1; // Bitfield representing the network's enterprise capability identifier // (e.g. NET_ENTERPRISE_ID_1), defined in // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int32 enterprise_id = 2; // Number of bytes received at the device on this slice id optional int64 rx_bytes = 3; // Number of bytes transmitted by the device on this slice id optional int64 tx_bytes = 4; // Number of apps that have used this slice optional int32 number_of_apps = 5; // How long(in seconds) this slice has been connected optional int32 slice_connection_duration_sec = 6; } /** * Logs DailykeepaliveInfoReported * * Logs from: packages/modules/Connectivity/service/src/com/android/ * server/connectivity/AutomaticOnOffKeepaliveTracker. */ message DailykeepaliveInfoReported{ // Daily duration per number of concurrent keepalive optional DurationPerNumOfKeepalive duration_per_num_of_keepalive = 1; // Daily keepalive registered/active duration on each list of keepalive session, in // milli-seconds optional KeepaliveLifetimePerCarrier keepalive_lifetime_per_carrier = 2; // Daily number of keepalive requests optional int32 keepalive_requests = 3; // Daily number of automatic keepalive requests optional int32 automatic_keepalive_requests = 4; // Daily number of distinct apps that requested keepalives optional int32 distinct_user_count = 5; // Daily distinct apps uid list that requested keepalives repeated int32 uid = 6; } /** * Daily duration per number of concurrent keepalive * * Logs from: packages/modules/Connectivity/service/src/com/android/ * server/connectivity/AutomaticOnOffKeepaliveTracker. */ message DurationPerNumOfKeepalive { repeated DurationForNumOfKeepalive duration_for_num_of_keepalive = 1; } message DurationForNumOfKeepalive { // The number of concurrent keepalives is in the device optional int32 num_of_keepalive = 1; // How many milliseconds the device has keepalive registration number is num_of_keepalive optional int32 keepalive_registered_durations_msec = 2; // How many milliseconds the device has keepalive active(not paused) number is num_of_keepalive optional int32 keepalive_active_durations_msec = 3; } /** * Daily keepalive registered/active duration on each list of Keepalive session, in milli-seconds * * Logs from: packages/modules/Connectivity/service/src/com/android/ * server/connectivity/AutomaticOnOffKeepaliveTracker. */ message KeepaliveLifetimePerCarrier { // The number of network count on each list of carriers repeated KeepaliveLifetimeForCarrier keepalive_lifetime_for_carrier = 1; } /** * Logs the keepalive registered/active duration in milli-seconds and carrier * info(carrier id, transport, keepalive interval). * * Logs from: packages/modules/Connectivity/service/src/com/android/ * server/connectivity/AutomaticOnOffKeepaliveTracker. */ message KeepaliveLifetimeForCarrier { // The carrier ID for each keepalive, or TelephonyManager.UNKNOWN_CARRIER_ID(-1) if not cell optional int32 carrier_id = 1; // The transport types of the underlying network for each keepalive. A network may include // multiple transport types. Each transfer type is represented by a different bit, defined in // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java optional int32 transport_types = 2; // The keepalive interval for each keepalive optional int32 intervals_msec = 3; // The lifetime of the keepalive registered today optional int32 lifetime_msec = 4; // The duration for which the keepalive was active (not suspended) optional int32 active_lifetime_msec = 5; }