Home | History | Annotate | Download | only in quic
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef NET_QUIC_QUIC_CONNECTION_STATS_H_
      6 #define NET_QUIC_QUIC_CONNECTION_STATS_H_
      7 
      8 #include <ostream>
      9 
     10 #include "base/basictypes.h"
     11 #include "net/base/net_export.h"
     12 #include "net/quic/quic_time.h"
     13 
     14 namespace net {
     15 // Structure to hold stats for a QuicConnection.
     16 struct NET_EXPORT_PRIVATE QuicConnectionStats {
     17   QuicConnectionStats();
     18   ~QuicConnectionStats();
     19 
     20   NET_EXPORT_PRIVATE friend std::ostream& operator<<(
     21       std::ostream& os, const QuicConnectionStats& s);
     22 
     23   uint64 bytes_sent;  // Includes retransmissions, fec.
     24   uint32 packets_sent;
     25   uint64 stream_bytes_sent;  // non-retransmitted bytes sent in a stream frame.
     26   uint32 packets_discarded;  // Packets serialized and discarded before sending.
     27 
     28   // These include version negotiation and public reset packets, which do not
     29   // have sequence numbers or frame data.
     30   uint64 bytes_received;  // Includes duplicate data for a stream, fec.
     31   uint32 packets_received;  // Includes packets which were not processable.
     32   uint32 packets_processed;  // Excludes packets which were not processable.
     33   uint64 stream_bytes_received;  // Bytes received in a stream frame.
     34 
     35   uint64 bytes_retransmitted;
     36   uint32 packets_retransmitted;
     37 
     38   uint64 bytes_spuriously_retransmitted;
     39   uint32 packets_spuriously_retransmitted;
     40   // Number of packets abandoned as lost by the loss detection algorithm.
     41   uint32 packets_lost;
     42   uint32 slowstart_packets_lost;  // Number of packets lost exiting slow start.
     43 
     44   uint32 packets_revived;
     45   uint32 packets_dropped;  // Duplicate or less than least unacked.
     46   uint32 crypto_retransmit_count;
     47   // Count of times the loss detection alarm fired.  At least one packet should
     48   // be lost when the alarm fires.
     49   uint32 loss_timeout_count;
     50   uint32 tlp_count;
     51   uint32 rto_count;  // Count of times the rto timer fired.
     52 
     53   uint32 min_rtt_us;  // Minimum RTT in microseconds.
     54   uint32 srtt_us;  // Smoothed RTT in microseconds.
     55   uint32 max_packet_size;  // In bytes.
     56   uint64 estimated_bandwidth;  // In bytes per second.
     57   uint32 congestion_window;  // In bytes
     58 
     59   // Reordering stats for received packets.
     60   // Number of packets received out of sequence number order.
     61   uint32 packets_reordered;
     62   // Maximum reordering observed in sequence space.
     63   uint32 max_sequence_reordering;
     64   // Maximum reordering observed in microseconds
     65   uint32 max_time_reordering_us;
     66 
     67   // The following stats are used only in TcpCubicSender.
     68   // The number of loss events from TCP's perspective.  Each loss event includes
     69   // one or more lost packets.
     70   uint32 tcp_loss_events;
     71   // Total amount of cwnd increase by TCPCubic in congestion avoidance.
     72   uint32 cwnd_increase_congestion_avoidance;
     73   // Total amount of cwnd increase by TCPCubic in cubic mode.
     74   uint32 cwnd_increase_cubic_mode;
     75 
     76   // Creation time, as reported by the QuicClock.
     77   QuicTime connection_creation_time;
     78 };
     79 
     80 }  // namespace net
     81 
     82 #endif  // NET_QUIC_QUIC_CONNECTION_STATS_H_
     83