Merge "Adding NetworkStack Metrics/atoms" into rvc-dev

This commit is contained in:
Frank Li
2020-06-12 04:50:57 +00:00
committed by Android (Google) Code Review
3 changed files with 328 additions and 3 deletions

View File

@ -465,6 +465,11 @@ message Atom {
288 [(module) = "car"]; 288 [(module) = "car"];
CarUserHalSetUserAssociationResponseReported car_user_hal_set_user_association_response_reported = CarUserHalSetUserAssociationResponseReported car_user_hal_set_user_association_response_reported =
289 [(module) = "car"]; 289 [(module) = "car"];
NetworkIpProvisioningReported network_ip_provisioning_reported =
290 [(module) = "network_stack"];
NetworkDhcpRenewReported network_dhcp_renew_reported = 291 [(module) = "network_stack"];
NetworkValidationReported network_validation_reported = 292 [(module) = "network_stack"];
NetworkStackQuirkReported network_stack_quirk_reported = 293 [(module) = "network_stack"];
// StatsdStats tracks platform atoms with ids upto 500. // StatsdStats tracks platform atoms with ids upto 500.
// Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value. // Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value.
@ -6821,6 +6826,172 @@ message NetworkDnsEventReported {
optional int32 sampling_rate_denom = 9; optional int32 sampling_rate_denom = 9;
} }
/**
* logs the CapportApiData info
* Logged from:
* packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
*/
message CapportApiData {
// The TTL of the network connection provided by captive portal
optional int32 remaining_ttl_secs = 1;
// The limit traffic data of the network connection provided by captive portal
optional int32 remaining_bytes = 2;
// Is portal url option included in the DHCP packet (Yes, No)
optional bool has_portal_url = 3;
// Is venue info (e.g. store info, maps, flight status) included (Yes, No)
optional bool has_venue_info = 4;
}
/**
* logs a network Probe Event
* Logged from:
* packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
*/
message ProbeEvent {
// The probe type (http or https, or captive portal API...)
optional android.stats.connectivity.ProbeType probe_type = 1;
// The latency in microseconds of the probe event
optional int32 latency_micros = 2;
// The result of the probe event
optional android.stats.connectivity.ProbeResult probe_result = 3;
// The CaptivePortal API info
optional CapportApiData capport_api_data = 4;
}
/**
* log each ProbeEvent in ProbeEvents
* Logged from:
* packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
*/
message ProbeEvents {
// Record probe event during the validation
repeated ProbeEvent probe_event = 1;
}
/**
* The DHCP (Dynamic Host Configuration Protocol) session info
* Logged from:
* packages/modules/NetworkStack/src/android/net/dhcp/DhcpClient.java
*/
message DhcpSession {
// The DHCP Feature(s) enabled in this session
repeated android.stats.connectivity.DhcpFeature used_features = 1;
// The discover packet (re)transmit count
optional int32 discover_count = 2;
// The request packet (re)transmit count
optional int32 request_count = 3;
// The IPv4 address conflict count
// (only be meaningful when duplicate address detection is enabled)
optional int32 conflict_count = 4;
// The DHCP packet parsing error code in this session
// (defined in android.net.metrics.DhcpErrorEvent)
repeated android.stats.connectivity.DhcpErrorCode error_code = 5;
// The result of DHCP hostname transliteration
optional android.stats.connectivity.HostnameTransResult ht_result = 6;
}
/**
* Logs Network IP provisioning event
* Logged from:
* packages/modules/NetworkStack/src/com/android/networkstack/metrics/NetworkIpProvisioningMetrics.java
*/
message NetworkIpProvisioningReported {
// Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
optional android.stats.connectivity.TransportType transport_type = 1;
// The latency in microseconds of IP Provisioning over IPV4
optional int32 ipv4_latency_micros = 2;
// The latency in microseconds of IP Provisioning over IPV6
optional int32 ipv6_latency_micros = 3;
// The time duration between provisioning start and end (success or failure)
optional int64 provisioning_duration_micros = 4;
// The specific disconnect reason for this IP provisioning
optional android.stats.connectivity.DisconnectCode disconnect_code = 5;
// Log DHCP session info (Only valid for IPv4)
optional DhcpSession dhcp_session = 6 [(log_mode) = MODE_BYTES];
// The random number between 0 ~ 999 for sampling
optional int32 random_number = 7;
}
/**
* Logs Network DHCP Renew event
* Logged from:
* packages/modules/NetworkStack/src/android/net/dhcp/DhcpClient.java
*/
message NetworkDhcpRenewReported {
// Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
optional android.stats.connectivity.TransportType transport_type = 1;
// The request packet (re)transmit count
optional int32 request_count = 2;
// The latency in microseconds of DHCP Renew
optional int32 latency_micros = 3;
// The DHCP error code is defined in android.net.metrics.DhcpErrorEvent
optional android.stats.connectivity.DhcpErrorCode error_code = 4;
// The result of DHCP renew
optional android.stats.connectivity.DhcpRenewResult renew_result = 5;
// The random number between 0 ~ 999 for sampling
optional int32 random_number = 6;
}
/**
* Logs Network Validation event
* Logged from:
* packages/modules/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
*/
message NetworkValidationReported {
// Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
optional android.stats.connectivity.TransportType transport_type = 1;
// Record each probe event
optional ProbeEvents probe_events = 2 [(log_mode) = MODE_BYTES];
// The result of the network validation
optional android.stats.connectivity.ValidationResult validation_result = 3;
// The latency in microseconds of network validation
optional int32 latency_micros = 4;
// The validation index (the first validation attempt or second, third...)
optional int32 validation_index = 5;
// The random number between 0 ~ 999 for sampling
optional int32 random_number = 6;
}
/**
* Logs NetworkStack Quirk event
* Logged from:
* packages/modules/NetworkStack/src/com/android/networkstack/
*/
message NetworkStackQuirkReported {
// Transport type (WIFI, CELLULAR, BLUETOOTH, ..)
optional android.stats.connectivity.TransportType transport_type = 1;
// Record each Quirk event
optional android.stats.connectivity.NetworkQuirkEvent event = 2;
}
/** /**
* Logs when a data stall event occurs. * Logs when a data stall event occurs.
* *

View File

@ -13,12 +13,12 @@
// limitations under the License. // limitations under the License.
java_library_static { java_library_static {
name: "networkstackprotosnano", name: "networkstackprotos",
proto: { proto: {
type: "nano", type: "lite",
}, },
srcs: [ srcs: [
"network_stack.proto", "network_stack.proto",
], ],
sdk_version: "system_current", sdk_version: "system_29",
} }

View File

@ -20,6 +20,160 @@ package android.stats.connectivity;
option java_multiple_files = true; option java_multiple_files = true;
option java_outer_classname = "NetworkStackProto"; option java_outer_classname = "NetworkStackProto";
enum DhcpRenewResult {
RR_UNKNOWN = 0;
RR_SUCCESS = 1;
RR_ERROR_NAK = 2;
RR_ERROR_IP_MISMATCH = 3;
RR_ERROR_IP_EXPIRE = 4;
}
enum DisconnectCode {
DC_NONE = 0;
DC_NORMAL_TERMINATION = 1;
DC_PROVISIONING_FAIL = 2;
DC_ERROR_STARTING_IPV4 = 4;
DC_ERROR_STARTING_IPV6 = 5;
DC_ERROR_STARTING_IPREACHABILITYMONITOR = 6;
DC_INVALID_PROVISIONING = 7;
DC_INTERFACE_NOT_FOUND = 8;
DC_PROVISIONING_TIMEOUT = 9;
}
enum TransportType {
TT_UNKNOWN = 0;
// Indicates this network uses a Cellular transport
TT_CELLULAR = 1;
// Indicates this network uses a Wi-Fi transport
TT_WIFI = 2;
// Indicates this network uses a Bluetooth transport
TT_BLUETOOTH = 3;
// Indicates this network uses an Ethernet transport
TT_ETHERNET = 4;
// Indicates this network uses a Wi-Fi Aware transport
TT_WIFI_AWARE = 5;
// Indicates this network uses a LoWPAN transport
TT_LOWPAN = 6;
// Indicates this network uses a Cellular+VPN transport
TT_CELLULAR_VPN = 7;
// Indicates this network uses a Wi-Fi+VPN transport
TT_WIFI_VPN = 8;
// Indicates this network uses a Bluetooth+VPN transport
TT_BLUETOOTH_VPN = 9;
// Indicates this network uses an Ethernet+VPN transport
TT_ETHERNET_VPN = 10;
// Indicates this network uses a Wi-Fi+Cellular+VPN transport
TT_WIFI_CELLULAR_VPN = 11;
// Indicates this network uses for test only
TT_TEST = 12;
}
enum DhcpFeature {
DF_UNKNOWN = 0;
// DHCP INIT-REBOOT state
DF_INITREBOOT = 1;
// DHCP rapid commit option
DF_RAPIDCOMMIT = 2;
// Duplicate address detection
DF_DAD = 3;
// Fast initial Link setup
DF_FILS = 4;
}
enum HostnameTransResult {
HTR_UNKNOWN = 0;
HTR_SUCCESS = 1;
HTR_FAILURE = 2;
HTR_DISABLE = 3;
}
enum ProbeResult {
PR_UNKNOWN = 0;
PR_SUCCESS = 1;
PR_FAILURE = 2;
PR_PORTAL = 3;
// DNS query for the probe host returned a private IP address
PR_PRIVATE_IP_DNS = 4;
}
enum ValidationResult {
VR_UNKNOWN = 0;
VR_SUCCESS = 1;
VR_FAILURE = 2;
VR_PORTAL = 3;
VR_PARTIAL = 4;
}
enum ProbeType {
PT_UNKNOWN = 0;
PT_DNS = 1;
PT_HTTP = 2;
PT_HTTPS = 3;
PT_PAC = 4;
PT_FALLBACK = 5;
PT_PRIVDNS = 6;
PT_CAPPORT_API = 7;
}
// The Dhcp error code is defined in android.net.metrics.DhcpErrorEvent
enum DhcpErrorCode {
ET_UNKNOWN = 0;
ET_L2_ERROR = 1;
ET_L3_ERROR = 2;
ET_L4_ERROR = 3;
ET_DHCP_ERROR = 4;
ET_MISC_ERROR = 5;
/* Reserve for error type
// ET_L2_ERROR_TYPE = ET_L2_ERROR << 8;
ET_L2_ERROR_TYPE = 256;
// ET_L3_ERROR_TYPE = ET_L3_ERROR << 8;
ET_L3_ERROR_TYPE = 512;
// ET_L4_ERROR_TYPE = ET_L4_ERROR << 8;
ET_L4_ERROR_TYPE = 768;
// ET_DHCP_ERROR_TYPE = ET_DHCP_ERROR << 8;
ET_DHCP_ERROR_TYPE = 1024;
// ET_MISC_ERROR_TYPE = ET_MISC_ERROR << 8;
ET_MISC_ERROR_TYPE = 1280;
*/
// ET_L2_TOO_SHORT = (ET_L2_ERROR_TYPE | 0x1) << 16;
ET_L2_TOO_SHORT = 16842752;
// ET_L2_WRONG_ETH_TYPE = (ET_L2_ERROR_TYPE | 0x2) << 16;
ET_L2_WRONG_ETH_TYPE = 16908288;
// ET_L3_TOO_SHORT = (ET_L3_ERROR_TYPE | 0x1) << 16;
ET_L3_TOO_SHORT = 33619968;
// ET_L3_NOT_IPV4 = (ET_L3_ERROR_TYPE | 0x2) << 16;
ET_L3_NOT_IPV4 = 33685504;
// ET_L3_INVALID_IP = (ET_L3_ERROR_TYPE | 0x3) << 16;
ET_L3_INVALID_IP = 33751040;
// ET_L4_NOT_UDP = (ET_L4_ERROR_TYPE | 0x1) << 16;
ET_L4_NOT_UDP = 50397184;
// ET_L4_WRONG_PORT = (ET_L4_ERROR_TYPE | 0x2) << 16;
ET_L4_WRONG_PORT = 50462720;
// ET_BOOTP_TOO_SHORT = (ET_DHCP_ERROR_TYPE | 0x1) << 16;
ET_BOOTP_TOO_SHORT = 67174400;
// ET_DHCP_BAD_MAGIC_COOKIE = (ET_DHCP_ERROR_TYPE | 0x2) << 16;
ET_DHCP_BAD_MAGIC_COOKIE = 67239936;
// ET_DHCP_INVALID_OPTION_LENGTH = (ET_DHCP_ERROR_TYPE | 0x3) << 16;
ET_DHCP_INVALID_OPTION_LENGTH = 67305472;
// ET_DHCP_NO_MSG_TYPE = (ET_DHCP_ERROR_TYPE | 0x4) << 16;
ET_DHCP_NO_MSG_TYPE = 67371008;
// ET_DHCP_UNKNOWN_MSG_TYPE = (ET_DHCP_ERROR_TYPE | 0x5) << 16;
ET_DHCP_UNKNOWN_MSG_TYPE = 67436544;
// ET_DHCP_NO_COOKIE = (ET_DHCP_ERROR_TYPE | 0x6) << 16;
ET_DHCP_NO_COOKIE = 67502080;
// ET_BUFFER_UNDERFLOW = (ET_MISC_ERROR_TYPE | 0x1) << 16;
ET_BUFFER_UNDERFLOW = 83951616;
// ET_RECEIVE_ERROR = (ET_MISC_ERROR_TYPE | 0x2) << 16;
ET_RECEIVE_ERROR = 84017152;
// ET_PARSING_ERROR = (ET_MISC_ERROR_TYPE | 0x3) << 16;
ET_PARSING_ERROR = 84082688;
}
enum NetworkQuirkEvent {
QE_UNKNOWN = 0;
QE_IPV6_PROVISIONING_ROUTER_LOST = 1;
}
message NetworkStackEventData { message NetworkStackEventData {
} }