OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/quic/quic_connection_logger.h" | 5 #include "net/quic/quic_connection_logger.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 } | 319 } |
320 | 320 |
321 } // namespace | 321 } // namespace |
322 | 322 |
323 QuicConnectionLogger::QuicConnectionLogger(QuicSession* session, | 323 QuicConnectionLogger::QuicConnectionLogger(QuicSession* session, |
324 const BoundNetLog& net_log) | 324 const BoundNetLog& net_log) |
325 : net_log_(net_log), | 325 : net_log_(net_log), |
326 session_(session), | 326 session_(session), |
327 last_received_packet_sequence_number_(0), | 327 last_received_packet_sequence_number_(0), |
328 last_received_packet_size_(0), | 328 last_received_packet_size_(0), |
| 329 previous_received_packet_size_(0), |
329 largest_received_packet_sequence_number_(0), | 330 largest_received_packet_sequence_number_(0), |
330 largest_received_missing_packet_sequence_number_(0), | 331 largest_received_missing_packet_sequence_number_(0), |
331 num_out_of_order_received_packets_(0), | 332 num_out_of_order_received_packets_(0), |
| 333 num_out_of_order_large_received_packets_(0), |
332 num_packets_received_(0), | 334 num_packets_received_(0), |
333 num_truncated_acks_sent_(0), | 335 num_truncated_acks_sent_(0), |
334 num_truncated_acks_received_(0), | 336 num_truncated_acks_received_(0), |
335 num_frames_received_(0), | 337 num_frames_received_(0), |
336 num_duplicate_frames_received_(0), | 338 num_duplicate_frames_received_(0), |
337 num_incorrect_connection_ids_(0), | 339 num_incorrect_connection_ids_(0), |
338 num_undecryptable_packets_(0), | 340 num_undecryptable_packets_(0), |
339 num_duplicate_packets_(0), | 341 num_duplicate_packets_(0), |
340 num_blocked_frames_received_(0), | 342 num_blocked_frames_received_(0), |
341 num_blocked_frames_sent_(0), | 343 num_blocked_frames_sent_(0), |
342 connection_description_(GetConnectionDescriptionString()) { | 344 connection_description_(GetConnectionDescriptionString()) { |
343 } | 345 } |
344 | 346 |
345 QuicConnectionLogger::~QuicConnectionLogger() { | 347 QuicConnectionLogger::~QuicConnectionLogger() { |
346 UMA_HISTOGRAM_COUNTS("Net.QuicSession.OutOfOrderPacketsReceived", | 348 UMA_HISTOGRAM_COUNTS("Net.QuicSession.OutOfOrderPacketsReceived", |
347 num_out_of_order_received_packets_); | 349 num_out_of_order_received_packets_); |
| 350 UMA_HISTOGRAM_COUNTS("Net.QuicSession.OutOfOrderLargePacketsReceived", |
| 351 num_out_of_order_large_received_packets_); |
348 UMA_HISTOGRAM_COUNTS("Net.QuicSession.TruncatedAcksSent", | 352 UMA_HISTOGRAM_COUNTS("Net.QuicSession.TruncatedAcksSent", |
349 num_truncated_acks_sent_); | 353 num_truncated_acks_sent_); |
350 UMA_HISTOGRAM_COUNTS("Net.QuicSession.TruncatedAcksReceived", | 354 UMA_HISTOGRAM_COUNTS("Net.QuicSession.TruncatedAcksReceived", |
351 num_truncated_acks_received_); | 355 num_truncated_acks_received_); |
352 UMA_HISTOGRAM_COUNTS("Net.QuicSession.IncorrectConnectionIDsReceived", | 356 UMA_HISTOGRAM_COUNTS("Net.QuicSession.IncorrectConnectionIDsReceived", |
353 num_incorrect_connection_ids_); | 357 num_incorrect_connection_ids_); |
354 UMA_HISTOGRAM_COUNTS("Net.QuicSession.UndecryptablePacketsReceived", | 358 UMA_HISTOGRAM_COUNTS("Net.QuicSession.UndecryptablePacketsReceived", |
355 num_undecryptable_packets_); | 359 num_undecryptable_packets_); |
356 UMA_HISTOGRAM_COUNTS("Net.QuicSession.DuplicatePacketsReceived", | 360 UMA_HISTOGRAM_COUNTS("Net.QuicSession.DuplicatePacketsReceived", |
357 num_duplicate_packets_); | 361 num_duplicate_packets_); |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 void QuicConnectionLogger::OnPacketReceived(const IPEndPoint& self_address, | 493 void QuicConnectionLogger::OnPacketReceived(const IPEndPoint& self_address, |
490 const IPEndPoint& peer_address, | 494 const IPEndPoint& peer_address, |
491 const QuicEncryptedPacket& packet) { | 495 const QuicEncryptedPacket& packet) { |
492 if (local_address_from_self_.GetFamily() == ADDRESS_FAMILY_UNSPECIFIED) { | 496 if (local_address_from_self_.GetFamily() == ADDRESS_FAMILY_UNSPECIFIED) { |
493 local_address_from_self_ = self_address; | 497 local_address_from_self_ = self_address; |
494 UMA_HISTOGRAM_ENUMERATION("Net.QuicSession.ConnectionTypeFromSelf", | 498 UMA_HISTOGRAM_ENUMERATION("Net.QuicSession.ConnectionTypeFromSelf", |
495 GetRealAddressFamily(self_address.address()), | 499 GetRealAddressFamily(self_address.address()), |
496 ADDRESS_FAMILY_LAST); | 500 ADDRESS_FAMILY_LAST); |
497 } | 501 } |
498 | 502 |
| 503 previous_received_packet_size_ = last_received_packet_size_; |
499 last_received_packet_size_ = packet.length(); | 504 last_received_packet_size_ = packet.length(); |
500 net_log_.AddEvent( | 505 net_log_.AddEvent( |
501 NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED, | 506 NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED, |
502 base::Bind(&NetLogQuicPacketCallback, &self_address, &peer_address, | 507 base::Bind(&NetLogQuicPacketCallback, &self_address, &peer_address, |
503 packet.length())); | 508 packet.length())); |
504 } | 509 } |
505 | 510 |
506 void QuicConnectionLogger::OnIncorrectConnectionId( | 511 void QuicConnectionLogger::OnIncorrectConnectionId( |
507 QuicConnectionId connection_id) { | 512 QuicConnectionId connection_id) { |
508 ++num_incorrect_connection_ids_; | 513 ++num_incorrect_connection_ids_; |
(...skipping 30 matching lines...) Expand all Loading... |
539 static_cast<base::HistogramBase::Sample>(delta - 1)); | 544 static_cast<base::HistogramBase::Sample>(delta - 1)); |
540 } | 545 } |
541 largest_received_packet_sequence_number_ = header.packet_sequence_number; | 546 largest_received_packet_sequence_number_ = header.packet_sequence_number; |
542 } | 547 } |
543 if (header.packet_sequence_number < received_packets_.size()) { | 548 if (header.packet_sequence_number < received_packets_.size()) { |
544 received_packets_[static_cast<size_t>(header.packet_sequence_number)] = | 549 received_packets_[static_cast<size_t>(header.packet_sequence_number)] = |
545 true; | 550 true; |
546 } | 551 } |
547 if (header.packet_sequence_number < last_received_packet_sequence_number_) { | 552 if (header.packet_sequence_number < last_received_packet_sequence_number_) { |
548 ++num_out_of_order_received_packets_; | 553 ++num_out_of_order_received_packets_; |
| 554 if (previous_received_packet_size_ < last_received_packet_size_) |
| 555 ++num_out_of_order_large_received_packets_; |
549 UMA_HISTOGRAM_COUNTS( | 556 UMA_HISTOGRAM_COUNTS( |
550 "Net.QuicSession.OutOfOrderGapReceived", | 557 "Net.QuicSession.OutOfOrderGapReceived", |
551 static_cast<base::HistogramBase::Sample>( | 558 static_cast<base::HistogramBase::Sample>( |
552 last_received_packet_sequence_number_ - | 559 last_received_packet_sequence_number_ - |
553 header.packet_sequence_number)); | 560 header.packet_sequence_number)); |
554 } | 561 } |
555 last_received_packet_sequence_number_ = header.packet_sequence_number; | 562 last_received_packet_sequence_number_ = header.packet_sequence_number; |
556 } | 563 } |
557 | 564 |
558 void QuicConnectionLogger::OnStreamFrame(const QuicStreamFrame& frame) { | 565 void QuicConnectionLogger::OnStreamFrame(const QuicStreamFrame& frame) { |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
891 continue; | 898 continue; |
892 } | 899 } |
893 // Record some overlapping patterns, to get a better picture, since this is | 900 // Record some overlapping patterns, to get a better picture, since this is |
894 // not very expensive. | 901 // not very expensive. |
895 if (i % 3 == 0) | 902 if (i % 3 == 0) |
896 six_packet_histogram->Add(recent_6_mask); | 903 six_packet_histogram->Add(recent_6_mask); |
897 } | 904 } |
898 } | 905 } |
899 | 906 |
900 } // namespace net | 907 } // namespace net |
OLD | NEW |