| Index: net/quic/crypto/source_address_token.h
|
| diff --git a/net/quic/crypto/source_address_token.h b/net/quic/crypto/source_address_token.h
|
| index fbb50b1028e5b809cd61abf0c46f7d12c4bf92f2..c719fef0412a3c4570a76f7ba163cf4153df2b45 100644
|
| --- a/net/quic/crypto/source_address_token.h
|
| +++ b/net/quic/crypto/source_address_token.h
|
| @@ -13,6 +13,69 @@
|
| namespace net {
|
|
|
| // TODO(rtenneti): sync with server more rationally.
|
| +// CachedNetworkParameters contains data that can be used to choose appropriate
|
| +// connection parameters (initial RTT, initial CWND, etc.) in new connections.
|
| +class CachedNetworkParameters {
|
| + public:
|
| + // Describes the state of the connection during which the supplied network
|
| + // parameters were calculated.
|
| + enum PreviousConnectionState {
|
| + SLOW_START = 0,
|
| + CONGESTION_AVOIDANCE = 1,
|
| + };
|
| +
|
| + CachedNetworkParameters();
|
| + ~CachedNetworkParameters();
|
| +
|
| + std::string serving_region() const {
|
| + return serving_region_;
|
| + }
|
| + void set_serving_region(base::StringPiece serving_region) {
|
| + serving_region_ = serving_region.as_string();
|
| + }
|
| +
|
| + int32 bandwidth_estimate_bytes_per_second() const {
|
| + return bandwidth_estimate_bytes_per_second_;
|
| + }
|
| + void set_bandwidth_estimate_bytes_per_second(
|
| + int32 bandwidth_estimate_bytes_per_second) {
|
| + bandwidth_estimate_bytes_per_second_ = bandwidth_estimate_bytes_per_second;
|
| + }
|
| +
|
| + int32 min_rtt_ms() const {
|
| + return min_rtt_ms_;
|
| + }
|
| + void set_min_rtt_ms(int32 min_rtt_ms) {
|
| + min_rtt_ms_ = min_rtt_ms;
|
| + }
|
| +
|
| + int32 previous_connection_state() const {
|
| + return previous_connection_state_;
|
| + }
|
| + void set_previous_connection_state(int32 previous_connection_state) {
|
| + previous_connection_state_ = previous_connection_state;
|
| + }
|
| +
|
| + private:
|
| + // serving_region_ is used to decide whether or not the bandwidth estimate and
|
| + // min RTT are reasonable and if they should be used.
|
| + // For example a group of geographically close servers may share the same
|
| + // serving_region_ string if they are expected to have similar network
|
| + // performance.
|
| + std::string serving_region_;
|
| + // The server can supply a bandwidth estimate (in bytes/s) which it may re-use
|
| + // on receipt of a source-address token with this field set.
|
| + int32 bandwidth_estimate_bytes_per_second_;
|
| + // The min RTT seen on a previous connection can be used by the server to
|
| + // inform initial connection parameters for new connections.
|
| + int32 min_rtt_ms_;
|
| + // Encodes the PreviousConnectionState enum.
|
| + int32 previous_connection_state_;
|
| +};
|
| +
|
| +// TODO(rtenneti): sync with server more rationally.
|
| +// A SourceAddressToken is serialised, encrypted and sent to clients so that
|
| +// they can prove ownership of an IP address.
|
| class SourceAddressToken {
|
| public:
|
| SourceAddressToken();
|
| @@ -25,23 +88,37 @@ class SourceAddressToken {
|
| std::string ip() const {
|
| return ip_;
|
| }
|
| -
|
| - int64 timestamp() const {
|
| - return timestamp_;
|
| - }
|
| -
|
| void set_ip(base::StringPiece ip) {
|
| ip_ = ip.as_string();
|
| }
|
|
|
| + int64 timestamp() const {
|
| + return timestamp_;
|
| + }
|
| void set_timestamp(int64 timestamp) {
|
| timestamp_ = timestamp;
|
| }
|
|
|
| + const CachedNetworkParameters& cached_network_parameters() const {
|
| + return cached_network_parameters_;
|
| + }
|
| + void set_cached_network_parameters(
|
| + const CachedNetworkParameters& cached_network_parameters) {
|
| + cached_network_parameters_ = cached_network_parameters;
|
| + }
|
| +
|
| private:
|
| + // ip_ contains either 4 (IPv4) or 16 (IPv6) bytes of IP address in network
|
| + // byte order.
|
| std::string ip_;
|
| + // timestamp_ contains a UNIX timestamp value of the time when the token was
|
| + // created.
|
| int64 timestamp_;
|
|
|
| + // The server can provide estimated network parameters to be used for
|
| + // initial parameter selection in future connections.
|
| + CachedNetworkParameters cached_network_parameters_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(SourceAddressToken);
|
| };
|
|
|
|
|