| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef NET_QUIC_QUIC_PROTOCOL_H_ | 5 #ifndef NET_QUIC_QUIC_PROTOCOL_H_ |
| 6 #define NET_QUIC_QUIC_PROTOCOL_H_ | 6 #define NET_QUIC_QUIC_PROTOCOL_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <list> | 10 #include <list> |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 // Default and initial maximum size in bytes of a QUIC packet. | 52 // Default and initial maximum size in bytes of a QUIC packet. |
| 53 const QuicByteCount kDefaultMaxPacketSize = 1350; | 53 const QuicByteCount kDefaultMaxPacketSize = 1350; |
| 54 // The maximum packet size of any QUIC packet, based on ethernet's max size, | 54 // The maximum packet size of any QUIC packet, based on ethernet's max size, |
| 55 // minus the IP and UDP headers. IPv6 has a 40 byte header, UPD adds an | 55 // minus the IP and UDP headers. IPv6 has a 40 byte header, UPD adds an |
| 56 // additional 8 bytes. This is a total overhead of 48 bytes. Ethernet's | 56 // additional 8 bytes. This is a total overhead of 48 bytes. Ethernet's |
| 57 // max packet size is 1500 bytes, 1500 - 48 = 1452. | 57 // max packet size is 1500 bytes, 1500 - 48 = 1452. |
| 58 const QuicByteCount kMaxPacketSize = 1452; | 58 const QuicByteCount kMaxPacketSize = 1452; |
| 59 // Default maximum packet size used in Linux TCP implementations. | 59 // Default maximum packet size used in Linux TCP implementations. |
| 60 const QuicByteCount kDefaultTCPMSS = 1460; | 60 const QuicByteCount kDefaultTCPMSS = 1460; |
| 61 | 61 |
| 62 // Maximum size of the initial congestion window in packets. | |
| 63 const QuicPacketCount kMaxInitialWindow = 100; | |
| 64 // We match SPDY's use of 32 when secure (since we'd compete with SPDY). | 62 // We match SPDY's use of 32 when secure (since we'd compete with SPDY). |
| 65 const QuicPacketCount kInitialCongestionWindowSecure = 32; | 63 const QuicPacketCount kInitialCongestionWindowSecure = 32; |
| 66 // Be conservative, and just use double a typical TCP ICWND for HTTP. | 64 // Be conservative, and just use double a typical TCP ICWND for HTTP. |
| 67 const QuicPacketCount kInitialCongestionWindowInsecure = 20; | 65 const QuicPacketCount kInitialCongestionWindowInsecure = 20; |
| 68 | 66 |
| 69 // Default size of initial flow control window, for both stream and session. | 67 // Default size of initial flow control window, for both stream and session. |
| 70 const uint32 kDefaultFlowControlSendWindow = 16 * 1024; // 16 KB | 68 const uint32 kDefaultFlowControlSendWindow = 16 * 1024; // 16 KB |
| 71 | 69 |
| 72 // Maximum size of the congestion window, in packets, for TCP congestion control | 70 // Minimum size of the CWND, in packets, when doing bandwidth resumption. |
| 73 // algorithms. | 71 const QuicPacketCount kMinCongestionWindowForBandwidthResumption = 10; |
| 74 const size_t kMaxTcpCongestionWindow = 200; | 72 |
| 73 // Maximum size of the CWND, in packets, for TCP congestion control algorithms. |
| 74 const QuicPacketCount kMaxTcpCongestionWindow = 200; |
| 75 | 75 |
| 76 // Default size of the socket receive buffer in bytes. | 76 // Default size of the socket receive buffer in bytes. |
| 77 const QuicByteCount kDefaultSocketReceiveBuffer = 256 * 1024; | 77 const QuicByteCount kDefaultSocketReceiveBuffer = 256 * 1024; |
| 78 // Minimum size of the socket receive buffer in bytes. | 78 // Minimum size of the socket receive buffer in bytes. |
| 79 // Smaller values are ignored. | 79 // Smaller values are ignored. |
| 80 const QuicByteCount kMinSocketReceiveBuffer = 16 * 1024; | 80 const QuicByteCount kMinSocketReceiveBuffer = 16 * 1024; |
| 81 | 81 |
| 82 // Don't allow a client to suggest an RTT shorter than 10ms. | 82 // Don't allow a client to suggest an RTT shorter than 10ms. |
| 83 const uint32 kMinInitialRoundTripTimeUs = 10 * kNumMicrosPerMilli; | 83 const uint32 kMinInitialRoundTripTimeUs = 10 * kNumMicrosPerMilli; |
| 84 | 84 |
| (...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1082 QuicSequenceNumberLength sequence_number_length, | 1082 QuicSequenceNumberLength sequence_number_length, |
| 1083 TransmissionType transmission_type, | 1083 TransmissionType transmission_type, |
| 1084 QuicTime sent_time); | 1084 QuicTime sent_time); |
| 1085 | 1085 |
| 1086 RetransmittableFrames* retransmittable_frames; | 1086 RetransmittableFrames* retransmittable_frames; |
| 1087 QuicSequenceNumberLength sequence_number_length; | 1087 QuicSequenceNumberLength sequence_number_length; |
| 1088 // Zero when the packet is serialized, non-zero once it's sent. | 1088 // Zero when the packet is serialized, non-zero once it's sent. |
| 1089 QuicTime sent_time; | 1089 QuicTime sent_time; |
| 1090 // Zero when the packet is serialized, non-zero once it's sent. | 1090 // Zero when the packet is serialized, non-zero once it's sent. |
| 1091 QuicByteCount bytes_sent; | 1091 QuicByteCount bytes_sent; |
| 1092 size_t nack_count; | 1092 QuicPacketCount nack_count; |
| 1093 // Reason why this packet was transmitted. | 1093 // Reason why this packet was transmitted. |
| 1094 TransmissionType transmission_type; | 1094 TransmissionType transmission_type; |
| 1095 // Stores the sequence numbers of all transmissions of this packet. | 1095 // Stores the sequence numbers of all transmissions of this packet. |
| 1096 // Must always be nullptr or have multiple elements. | 1096 // Must always be nullptr or have multiple elements. |
| 1097 SequenceNumberList* all_transmissions; | 1097 SequenceNumberList* all_transmissions; |
| 1098 // In flight packets have not been abandoned or lost. | 1098 // In flight packets have not been abandoned or lost. |
| 1099 bool in_flight; | 1099 bool in_flight; |
| 1100 // True if the packet can never be acked, so it can be removed. | 1100 // True if the packet can never be acked, so it can be removed. |
| 1101 bool is_unackable; | 1101 bool is_unackable; |
| 1102 // True if the packet is an FEC packet. | 1102 // True if the packet is an FEC packet. |
| 1103 bool is_fec_packet; | 1103 bool is_fec_packet; |
| 1104 }; | 1104 }; |
| 1105 | 1105 |
| 1106 } // namespace net | 1106 } // namespace net |
| 1107 | 1107 |
| 1108 #endif // NET_QUIC_QUIC_PROTOCOL_H_ | 1108 #endif // NET_QUIC_QUIC_PROTOCOL_H_ |
| OLD | NEW |