diff options
Diffstat (limited to 'net/quic/quic_connection_logger.h')
-rw-r--r-- | net/quic/quic_connection_logger.h | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/net/quic/quic_connection_logger.h b/net/quic/quic_connection_logger.h index 20a487d..4816d77 100644 --- a/net/quic/quic_connection_logger.h +++ b/net/quic/quic_connection_logger.h @@ -65,27 +65,36 @@ class NET_EXPORT_PRIVATE QuicConnectionLogger void OnSuccessfulVersionNegotiation(const QuicVersion& version); private: - // Do a factory get for an "Ack_" or "Nack_" style histogram for recording - // packet loss stats. - base::HistogramBase* GetAckHistogram(const char* ack_or_nack) const; + // Do a factory get for a histogram for recording data, about individual + // packet sequence numbers, that was gathered in the vectors + // received_packets_ and received_acks_. |statistic_name| identifies which + // element of data is recorded, and is used to form the histogram name. + base::HistogramBase* GetPacketSequenceNumberHistogram( + const char* statistic_name) const; // Do a factory get for a histogram to record a 6-packet loss-sequence as a // sample. The histogram will record the 64 distinct possible combinations. // |which_6| is used to adjust the name of the histogram to distinguish the // first 6 packets in a connection, vs. some later 6 packets. - base::HistogramBase* Get6PacketHistogram(const char* which_6) const; + base::HistogramBase* Get6PacketHistogram(const char* which_6) const; // Do a factory get for a histogram to record cumulative stats across a 21 // packet sequence. |which_21| is used to adjust the name of the histogram // to distinguish the first 21 packets' loss data, vs. some later 21 packet // sequences' loss data. - base::HistogramBase* Get21CumulativeHistogram(const char* which_21) const; - // Add samples associated with a |bit_mask_21_packets| to the given histogram + base::HistogramBase* Get21CumulativeHistogram(const char* which_21) const; + // Add samples associated with a |bit_mask_of_packets| to the given histogram // that was provided by Get21CumulativeHistogram(). The LSB of that mask - // corresponds to the oldest packet packet sequence number in the series of 21 - // packets. A bit value of 0 indicates that a packet was never received, and - // a 1 indicates the packet was received. + // corresponds to the oldest packet sequence number in the series of packets, + // and the bit in the 2^20 position corresponds to the most recently received + // packet. Of the maximum of 21 bits that are valid (correspond to packets), + // only the most significant |valid_bits_in_mask| are processed. + // A bit value of 0 indicates that a packet was never received, and a 1 + // indicates the packet was received. static void AddTo21CumulativeHistogram(base::HistogramBase* histogram, - int bit_mask_21_packets); - + int bit_mask_of_packets, + int valid_bits_in_mask); + // For connections longer than 21 received packets, this call will calculate + // the overall packet loss rate, and record it into a histogram. + void RecordAggregatePacketLossRate() const; // At destruction time, this records results of |pacaket_received_| into // histograms for specific connection types. void RecordLossHistograms() const; @@ -93,15 +102,21 @@ class NET_EXPORT_PRIVATE QuicConnectionLogger BoundNetLog net_log_; // The last packet sequence number received. QuicPacketSequenceNumber last_received_packet_sequence_number_; - // The largest packet sequence number received. In case of that a packet is - // received late, this value will not be updated. + // The size of the most recently received packet. + size_t last_received_packet_size_; + // The largest packet sequence number received. In the case where a packet is + // received late (out of order), this value will not be updated. QuicPacketSequenceNumber largest_received_packet_sequence_number_; // The largest packet sequence number which the peer has failed to // receive, according to the missing packet set in their ack frames. QuicPacketSequenceNumber largest_received_missing_packet_sequence_number_; // Number of times that the current received packet sequence number is // smaller than the last received packet sequence number. - size_t out_of_order_recieved_packet_count_; + size_t num_out_of_order_received_packets_; + // The number of times that OnPacketHeader was called. + // If the network replicates packets, then this number may be slightly + // different from the real number of distinct packets received. + QuicPacketSequenceNumber num_packets_received_; // Number of times a truncated ACK frame was sent. size_t num_truncated_acks_sent_; // Number of times a truncated ACK frame was received. @@ -111,7 +126,11 @@ class NET_EXPORT_PRIVATE QuicConnectionLogger // Vector of inital packets status' indexed by packet sequence numbers, where // false means never received. Zero is not a valid packet sequence number, so // that offset is never used, and we'll track 150 packets. - std::bitset<151> packets_received_; + std::bitset<151> received_packets_; + // Vector to indicate which of the initial 150 received packets turned out to + // contain solo ACK frames. An element is true iff an ACK frame was in the + // corresponding packet, and there was very little else. + std::bitset<151> received_acks_; // The available type of connection (WiFi, 3G, etc.) when connection was first // used. const char* const connection_description_; |