QUIC doesn't take request priority into account in doing DNS requests while setting up a stream |
||
Issue description
In HttpStreamFactoryImpl::DoInitConnection, if the function determines that QUIC should be used to make the connection, it calls:
int rv =
quic_request_.Request(destination, request_info_.privacy_mode,
ssl_config->GetCertVerifyFlags(), url,
request_info_.method, net_log_, io_callback_);
Noticeably absent from this call is any note of the request priority. AIUI, QUIC doesn't do any network requests for the connection proper; all network activity is delayed until the first packet is sent. However, it does do DNS resolution to setup its own internal state (in QuicStreamFactory::Job::DoResolveHost) and DNS resolution does indeed take a priority, which should probably be inherited from the request that prompted the connection (as it is for the other methods of making a connection initiated from DoInitConnection()).
However, while I'm clear this is a bug, I'm not sure of the priority of the fix. DNS resolution doesn't take up a lot of network resources, but it can take other resources (router slots, threads, etc.) and if it can take up resources it can compete for them, in which case we want the higher priority resolutions happening first. Julia, can you comment on the value of this fix?
,
May 10 2016
I'm not really sure how to figure out the value of the fix besides trying it and seeing the change. We do have some JobQueueTime histograms that might tell us how much changing the DNS request priority varies the latency; I'll take a look at those in a bit. I'd suggest we just go ahead and do it, if it's not too much work on the QUIC side.
,
May 8 2017
|
||
►
Sign in to add a comment |
||
Comment 1 by rch@chromium.org
, Apr 21 2016