| 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 |