New issue
Advanced search Search tips

Issue 790547 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 28
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug



Sign in to add a comment

Use alternate network interface with QUIC on handshake failure

Project Member Reported by jri@chromium.org, Nov 30 2017

Issue description

When QUIC and TCP handshakes fail on the default interface, we may want to try establishing the connection with an alternate interface, specifically when QUIC connection migration is enabled on path degradation. This allows new connections to be established when the default is basically broken (wifi in parking lot), and where the connection, if it had been established earlier, would have migrated to an alternate.
 
Technically, it's plausible but we will need to be more careful as this involves makring QUIC as broken.

In the current world, QuicStreamFactory is the NCN, and will know the different types of network, and in particular creates socket on a designated network and hands off when creating the connection. Something easy to do is to have the QuicStreamFactory creates a new socket on alternative network and kicks off a new connection if the default one fails before handshake. However, we need to plumb the bit that the succeeding QUIC job is using a non-default network to JobController, so that JobController could wait until the TCP job finishes. 

If the TCP job succeeds, QUIC job is discarded, we mark QUIC as broken. (However, we might think about makr QUIC as broken for the particular network)
If the TCP job fails, QUIC job is then used to serve the request. 

As you mention in the last paragraph, we don't mark QUIC as broken if both the QUIC and TCP handshake fail, correct?  

Is the concern about marking QUIC as broken that this code will be very closely intertwined with the mark QUIC as broken code, so you'll have to be very careful not to break it?

A related Q: If both TCP and QUIC fail on the default interface, should we try both on the non-default interface, or only QUIC?

Comment 3 Deleted

> As you mention in the last paragraph, we don't mark QUIC as broken if both the QUIC and TCP handshake fail, correct?

Yeah, we don't mark QUIC as broken if both QUIC and TCP handshake fail, and we should continue to do that. 

> Is the concern about marking QUIC as broken that this code will be very closely intertwined with the mark QUIC as broken code, so you'll have to be very careful not to break it?

*nod* I was concerned about the other case and wanted to make sure it's not dropped: if QUIC fails on the default network, (and we kick off a new connection on alternative network, which succeeds), TCP succeeds on the default network, we should prefer TCP job, mark QUIC broken, discards the QUIC job(with new connection). Although ideally we want to mark QUIC as broken for the original network, but we don't have the semantics for "QUIC is broken on a particular network" for the time being, nor do we clear the QUIC brokenness if we switch network.

> A related Q: If both TCP and QUIC fail on the default interface, should we try both on the non-default interface, or only QUIC?

Currently we could not do the retry for TCP on new interface as TCP doesn't have and NCN registered. It is certainly plausible if we register HttpStreamFactoryImpl::JobController as network change observer, and have the JobController to kick off new Jobs on a particular network. However, TCP doesn't have the logic to migrate back to default network unless we have special configuration to prevent the TCP to use large amount of data on non-deault, and it will make chrome's race TCP and QUIC logic more complicated. 

That being said, I think we probably want to do this only for QUIC as QUIC has the mechanism to fall back to default network later. Whether we want to retry for TCP is a different question: we can start a different thread to discuss about that?
That makes sense, let's do it only for QUIC then.
Labels: -Pri-3 OS-Android Pri-1
Status: Started (was: Assigned)
Project Member

Comment 8 by bugdroid1@chromium.org, May 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/996e31d66f4c87058d8af9a33236b98b9df55b7e

commit 996e31d66f4c87058d8af9a33236b98b9df55b7e
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Tue May 08 07:06:45 2018

Add a histogram to collect metrics for connection migration.

Add a histogram to collect metrics on how often handshake has been confirmed
when connection migration is triggered.

Bug:  790547 , 804048
Change-Id: I593b80c1557aba30fbea52297497d9f04b51d61e
Reviewed-on: https://chromium-review.googlesource.com/1036452
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556712}
[modify] https://crrev.com/996e31d66f4c87058d8af9a33236b98b9df55b7e/net/quic/chromium/quic_chromium_client_session.cc
[modify] https://crrev.com/996e31d66f4c87058d8af9a33236b98b9df55b7e/net/quic/chromium/quic_chromium_client_session.h
[modify] https://crrev.com/996e31d66f4c87058d8af9a33236b98b9df55b7e/tools/metrics/histograms/enums.xml
[modify] https://crrev.com/996e31d66f4c87058d8af9a33236b98b9df55b7e/tools/metrics/histograms/histograms.xml

Project Member

Comment 9 by bugdroid1@chromium.org, May 19 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6db1346c8721644870bc970f295107ea9b0d63b8

commit 6db1346c8721644870bc970f295107ea9b0d63b8
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Sat May 19 01:36:26 2018

Add a member variable in QuicStreamFactory to track the current default network.

Also add a histogram to collect data on how often initial sockets are created on a different network than the one QuicStreamFactory marks.

Bug:  790547 
Change-Id: I630f31fd3f934aa6617935cdc3b13623337dd08a
Reviewed-on: https://chromium-review.googlesource.com/1063114
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Reviewed-by: Steven Holte <holte@chromium.org>
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#560136}
[modify] https://crrev.com/6db1346c8721644870bc970f295107ea9b0d63b8/net/quic/chromium/quic_stream_factory.cc
[modify] https://crrev.com/6db1346c8721644870bc970f295107ea9b0d63b8/net/quic/chromium/quic_stream_factory.h
[modify] https://crrev.com/6db1346c8721644870bc970f295107ea9b0d63b8/tools/metrics/histograms/histograms.xml

Project Member

Comment 10 by bugdroid1@chromium.org, Jun 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d672f754130b68d05b99f0593428d2c476c91d4f

commit d672f754130b68d05b99f0593428d2c476c91d4f
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Fri Jun 08 01:03:26 2018

Initialize default_network_ to the default network value tracked by QuicStreamFactory.

Statistics collected in Net.QuicStreamFactory.DefaultNetworkMatche indicates that 99.66% sockets were bound to a network matched the default tracked by QuicStreamFactory.

Bug:  790547 
Change-Id: If5b19a484e000c17f07082a96b5f1e3df20f6558
Reviewed-on: https://chromium-review.googlesource.com/1089911
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Bence Béky <bnc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#565495}
[modify] https://crrev.com/d672f754130b68d05b99f0593428d2c476c91d4f/net/quic/chromium/bidirectional_stream_quic_impl_unittest.cc
[modify] https://crrev.com/d672f754130b68d05b99f0593428d2c476c91d4f/net/quic/chromium/quic_chromium_client_session.cc
[modify] https://crrev.com/d672f754130b68d05b99f0593428d2c476c91d4f/net/quic/chromium/quic_chromium_client_session.h
[modify] https://crrev.com/d672f754130b68d05b99f0593428d2c476c91d4f/net/quic/chromium/quic_chromium_client_session_test.cc
[modify] https://crrev.com/d672f754130b68d05b99f0593428d2c476c91d4f/net/quic/chromium/quic_http_stream_test.cc
[modify] https://crrev.com/d672f754130b68d05b99f0593428d2c476c91d4f/net/quic/chromium/quic_proxy_client_socket_unittest.cc
[modify] https://crrev.com/d672f754130b68d05b99f0593428d2c476c91d4f/net/quic/chromium/quic_stream_factory.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Jul 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d84b6b6543b87616d971c53a2b65c8cb16774b46

commit d84b6b6543b87616d971c53a2b65c8cb16774b46
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Wed Jul 18 21:07:31 2018

Add histograms to collect handshake status when connection migration is triggered based on migration cause.

Bug:  790547 
Change-Id: I08efdc45b558d711b310aac55f412381efc3eaa6
Reviewed-on: https://chromium-review.googlesource.com/1140532
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576205}
[modify] https://crrev.com/d84b6b6543b87616d971c53a2b65c8cb16774b46/net/quic/chromium/quic_chromium_client_session.cc
[modify] https://crrev.com/d84b6b6543b87616d971c53a2b65c8cb16774b46/tools/metrics/histograms/histograms.xml

Project Member

Comment 12 by bugdroid1@chromium.org, Jul 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2d850b9cf6d4c0a301dcc458852d47493607bf35

commit 2d850b9cf6d4c0a301dcc458852d47493607bf35
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Wed Jul 18 23:18:39 2018

Add a new QUIC error code for connection migration, which will be used to close the connection when migration is triggered before handshake is confirmed.

Manually merge internal change: 205108882

Bug:  790547 
Change-Id: Id337b125c38b9d06d892a9f3a235f61d10f3eaf4
Reviewed-on: https://chromium-review.googlesource.com/1142379
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576246}
[modify] https://crrev.com/2d850b9cf6d4c0a301dcc458852d47493607bf35/components/domain_reliability/quic_error_mapping.cc
[modify] https://crrev.com/2d850b9cf6d4c0a301dcc458852d47493607bf35/net/third_party/quic/core/quic_error_codes.cc
[modify] https://crrev.com/2d850b9cf6d4c0a301dcc458852d47493607bf35/net/third_party/quic/core/quic_error_codes.h

Project Member

Comment 13 by bugdroid1@chromium.org, Jul 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5c961f43b20f0ad65694711468c17e22924dbc6e

commit 5c961f43b20f0ad65694711468c17e22924dbc6e
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Wed Jul 18 23:58:41 2018

QUIC Connection Migration: clean up the code before disabling connection migration before handshake.

This change also changes to use session's netlog instead of separate netlog to log connection migration event if connection migration will be aborted early.

Bug:  790547 
Change-Id: I7a53bc315953fd57bfad3d0d249f90b200844051
Reviewed-on: https://chromium-review.googlesource.com/1141177
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576265}
[modify] https://crrev.com/5c961f43b20f0ad65694711468c17e22924dbc6e/net/quic/chromium/quic_chromium_client_session.cc

Project Member

Comment 14 by bugdroid1@chromium.org, Jul 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/55ec9530409a7c1460b0973fb871e6037bfbd62f

commit 55ec9530409a7c1460b0973fb871e6037bfbd62f
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Tue Jul 24 03:57:39 2018

Label QuicStreamFactory::Job with the network it's bound to.

Bug:  790547 
Change-Id: Icb1fd8643db0b344b41fc5a31340d44be0d0be2a
Reviewed-on: https://chromium-review.googlesource.com/1145786
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Commit-Queue: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577421}
[modify] https://crrev.com/55ec9530409a7c1460b0973fb871e6037bfbd62f/net/quic/chromium/quic_stream_factory.cc
[modify] https://crrev.com/55ec9530409a7c1460b0973fb871e6037bfbd62f/net/quic/chromium/quic_stream_factory.h

Project Member

Comment 15 by bugdroid1@chromium.org, Jul 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/247d632e02ec488c3c356b8833ec49e02e7c0f6c

commit 247d632e02ec488c3c356b8833ec49e02e7c0f6c
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Tue Jul 24 07:03:35 2018

Do not apply connection migration on packet write error if handshake is not confirmed.

Bug:  790547 
Change-Id: I68d3afb4a8bce843eee9e3b5456ed3103c7d2914
Reviewed-on: https://chromium-review.googlesource.com/1147545
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577442}
[modify] https://crrev.com/247d632e02ec488c3c356b8833ec49e02e7c0f6c/net/quic/chromium/quic_chromium_client_session.cc
[modify] https://crrev.com/247d632e02ec488c3c356b8833ec49e02e7c0f6c/net/quic/chromium/quic_stream_factory_test.cc

Project Member

Comment 16 by bugdroid1@chromium.org, Jul 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6abe33815ad6e155747cb1cca01ac8166dd07807

commit 6abe33815ad6e155747cb1cca01ac8166dd07807
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Tue Jul 24 19:43:11 2018

Do not apply connection migration on network disconnected if handshake is not confirmed.

Bug:  790547 
Change-Id: I7aa158e639094bc4234b7c41243685084b2ea24f
Reviewed-on: https://chromium-review.googlesource.com/1147679
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577640}
[modify] https://crrev.com/6abe33815ad6e155747cb1cca01ac8166dd07807/net/quic/chromium/quic_chromium_client_session.cc
[modify] https://crrev.com/6abe33815ad6e155747cb1cca01ac8166dd07807/net/quic/chromium/quic_stream_factory_test.cc

Project Member

Comment 17 by bugdroid1@chromium.org, Jul 25

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4293b1466c0ea51d3936959336cc47ad2bed99b4

commit 4293b1466c0ea51d3936959336cc47ad2bed99b4
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Wed Jul 25 00:33:57 2018

Fix a TODO in QuicStreamFactoryTest to correctly mock hanging socket data

Bug:  790547 
Change-Id: Iee8b9a2dd00ed3b80dda8e34d3bfe15d3581bec1
Reviewed-on: https://chromium-review.googlesource.com/1149182
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Commit-Queue: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577746}
[modify] https://crrev.com/4293b1466c0ea51d3936959336cc47ad2bed99b4/net/quic/chromium/quic_stream_factory_test.cc

Project Member

Comment 18 by bugdroid1@chromium.org, Jul 25

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8230b98487ef96c043b49f57fe857c2ad506b21b

commit 8230b98487ef96c043b49f57fe857c2ad506b21b
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Wed Jul 25 21:13:43 2018

Add a histogram to collect how often path degrading is detected when QUIC handshake timed out

Bug:  790547 
Change-Id: I0d672ab1c16ef569ba29e6a9840668feddb0722c
Reviewed-on: https://chromium-review.googlesource.com/1149272
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578065}
[modify] https://crrev.com/8230b98487ef96c043b49f57fe857c2ad506b21b/net/quic/chromium/quic_chromium_client_session.cc
[modify] https://crrev.com/8230b98487ef96c043b49f57fe857c2ad506b21b/tools/metrics/histograms/enums.xml
[modify] https://crrev.com/8230b98487ef96c043b49f57fe857c2ad506b21b/tools/metrics/histograms/histograms.xml

Project Member

Comment 19 by bugdroid1@chromium.org, Aug 2

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8796594260c242600062672cace9314ebe1cb41d

commit 8796594260c242600062672cace9314ebe1cb41d
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Thu Aug 02 17:58:25 2018

Add a new mode to MockCryptoClientStream to send CHLO packet on wire on cold start.

This mode can be used in QuicStreamFactoryTest to simulate cases where connection
migraiton is triggered while crypto handshake is not completed.

Bug:  790547 
Change-Id: I3c32f156d503318b9a9b203c772d3ec4ed41d9f8
Reviewed-on: https://chromium-review.googlesource.com/1157439
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580243}
[modify] https://crrev.com/8796594260c242600062672cace9314ebe1cb41d/net/quic/mock_crypto_client_stream.cc
[modify] https://crrev.com/8796594260c242600062672cace9314ebe1cb41d/net/quic/mock_crypto_client_stream.h
[modify] https://crrev.com/8796594260c242600062672cace9314ebe1cb41d/net/quic/mock_crypto_client_stream_factory.cc
[modify] https://crrev.com/8796594260c242600062672cace9314ebe1cb41d/net/quic/quic_stream_factory_test.cc
[modify] https://crrev.com/8796594260c242600062672cace9314ebe1cb41d/net/quic/quic_test_packet_maker.cc
[modify] https://crrev.com/8796594260c242600062672cace9314ebe1cb41d/net/quic/quic_test_packet_maker.h

Project Member

Comment 22 by bugdroid1@chromium.org, Aug 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8de438314c523c2488dd7839eb3ce58a12b5a696

commit 8de438314c523c2488dd7839eb3ce58a12b5a696
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Wed Aug 15 23:40:00 2018

Change QuicStreamFactory::Job to retry a new connection on alternate network.

Change QSF::Job to create a new connection on the alternate network if the original connection fails on the default network before handshake is confirmed.

Bug:  790547 
Change-Id: I161c09bf97f98540dd8eb6e83c811ca34d31f883
Reviewed-on: https://chromium-review.googlesource.com/1175191
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Commit-Queue: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583443}
[modify] https://crrev.com/8de438314c523c2488dd7839eb3ce58a12b5a696/net/http/http_network_session.cc
[modify] https://crrev.com/8de438314c523c2488dd7839eb3ce58a12b5a696/net/http/http_network_session.h
[modify] https://crrev.com/8de438314c523c2488dd7839eb3ce58a12b5a696/net/http/http_proxy_client_socket_wrapper_unittest.cc
[modify] https://crrev.com/8de438314c523c2488dd7839eb3ce58a12b5a696/net/quic/quic_chromium_client_session.cc
[modify] https://crrev.com/8de438314c523c2488dd7839eb3ce58a12b5a696/net/quic/quic_stream_factory.cc
[modify] https://crrev.com/8de438314c523c2488dd7839eb3ce58a12b5a696/net/quic/quic_stream_factory.h
[modify] https://crrev.com/8de438314c523c2488dd7839eb3ce58a12b5a696/net/quic/quic_stream_factory_fuzzer.cc
[modify] https://crrev.com/8de438314c523c2488dd7839eb3ce58a12b5a696/net/quic/quic_stream_factory_test.cc

Project Member

Comment 23 by bugdroid1@chromium.org, Aug 16

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/634c188e00f8a9121dbe74c5f808647bf5a2425e

commit 634c188e00f8a9121dbe74c5f808647bf5a2425e
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Thu Aug 16 04:05:59 2018

Add two more unittests to verify that no connection will be created if there is no alternate network by the time a connection fails before handshake is confirmed.

Bug:  790547 
Change-Id: I8e3143215195a87f1faeb900edf9e1bb5cc48abc
Reviewed-on: https://chromium-review.googlesource.com/1176380
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Commit-Queue: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583533}
[modify] https://crrev.com/634c188e00f8a9121dbe74c5f808647bf5a2425e/net/quic/quic_stream_factory_test.cc

Project Member

Comment 24 by bugdroid1@chromium.org, Aug 16

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f3fcbbe600d28617d790eaff139bda5065887323

commit f3fcbbe600d28617d790eaff139bda5065887323
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Thu Aug 16 22:52:08 2018

Migrate back to the default network after handshake has been confirmed and the connection is originally created on the non-default network.

Bug:  790547 
Change-Id: Ia991d49e5c8197fca0a98224239e1bc412ca9005
Reviewed-on: https://chromium-review.googlesource.com/1176656
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583868}
[modify] https://crrev.com/f3fcbbe600d28617d790eaff139bda5065887323/net/quic/quic_chromium_client_session.cc
[modify] https://crrev.com/f3fcbbe600d28617d790eaff139bda5065887323/net/quic/quic_stream_factory_test.cc

Project Member

Comment 25 by bugdroid1@chromium.org, Aug 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/83e2a166763dba9393150ebd5913bbd56b8da344

commit 83e2a166763dba9393150ebd5913bbd56b8da344
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Tue Aug 28 00:07:14 2018

Track alternative services which are broken on the default network in BrokenAlternativeServices.

An alternative service can be marked as broken until default network changes, and the brokenness will expire on default network changes or based on the timer with exponential backoff. When the default network changes, alternative services that are broken or recently broken until default network changes will immediately be moved to working state.

Bug:  790547 
Change-Id: Icf6078f771e96565eded0a0b4d1f1af44b9c423d
Reviewed-on: https://chromium-review.googlesource.com/1184205
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#586509}
[modify] https://crrev.com/83e2a166763dba9393150ebd5913bbd56b8da344/net/http/broken_alternative_services.cc
[modify] https://crrev.com/83e2a166763dba9393150ebd5913bbd56b8da344/net/http/broken_alternative_services.h
[modify] https://crrev.com/83e2a166763dba9393150ebd5913bbd56b8da344/net/http/broken_alternative_services_unittest.cc

Project Member

Comment 27 by bugdroid1@chromium.org, Aug 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/826b1d241c32f90f91b804d2cb1dd07f6aeeca82

commit 826b1d241c32f90f91b804d2cb1dd07f6aeeca82
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Tue Aug 28 21:45:15 2018

Add API in HttpServerProperties to persist alternative service broken until the default network changes.

Bug:  790547 
Change-Id: I2d784037a0ab316232ad51f2f5cfceaaf6dd8c44
Reviewed-on: https://chromium-review.googlesource.com/1192109
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#586863}
[modify] https://crrev.com/826b1d241c32f90f91b804d2cb1dd07f6aeeca82/net/http/broken_alternative_services.cc
[modify] https://crrev.com/826b1d241c32f90f91b804d2cb1dd07f6aeeca82/net/http/broken_alternative_services.h
[modify] https://crrev.com/826b1d241c32f90f91b804d2cb1dd07f6aeeca82/net/http/http_server_properties.h
[modify] https://crrev.com/826b1d241c32f90f91b804d2cb1dd07f6aeeca82/net/http/http_server_properties_impl.cc
[modify] https://crrev.com/826b1d241c32f90f91b804d2cb1dd07f6aeeca82/net/http/http_server_properties_impl.h
[modify] https://crrev.com/826b1d241c32f90f91b804d2cb1dd07f6aeeca82/net/http/http_server_properties_impl_unittest.cc
[modify] https://crrev.com/826b1d241c32f90f91b804d2cb1dd07f6aeeca82/net/http/http_server_properties_manager.cc
[modify] https://crrev.com/826b1d241c32f90f91b804d2cb1dd07f6aeeca82/net/http/http_server_properties_manager.h
[modify] https://crrev.com/826b1d241c32f90f91b804d2cb1dd07f6aeeca82/net/http/http_server_properties_manager_unittest.cc

Project Member

Comment 28 by bugdroid1@chromium.org, Sep 5

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cd8911708451700dce29a1993825b59ab0754757

commit cd8911708451700dce29a1993825b59ab0754757
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Tue Sep 04 21:45:42 2018

Add net log support for new QUIC connection before handshake.

Add net log entry when QuicStreamFactory::Job attempts to retry a new
connection on the alternate network after the original one failed on the
default network.

Bug:  790547 
Change-Id: I76f65e1a25287a16c20242344de00ac13e1b4109
Reviewed-on: https://chromium-review.googlesource.com/1199812
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#588655}
[modify] https://crrev.com/cd8911708451700dce29a1993825b59ab0754757/net/log/net_log_event_type_list.h
[modify] https://crrev.com/cd8911708451700dce29a1993825b59ab0754757/net/quic/quic_stream_factory.cc

Project Member

Comment 29 by bugdroid1@chromium.org, Sep 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1

commit a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Mon Sep 24 07:49:03 2018

Change the HttpStreamFactory::JobController to mark alternative service broken until default network changes.

Change the HttpStreamFactory::JobController to mark alternative service broken until default network changes iff TCP succeeds, QUIC fails on the defaut network but succeeds on the alternate network. The HttpServerProperties will clear the brokenness until default network changes.

Bug:  790547 
Change-Id: Ib33def42b474898879bf9e39567632ed273c5ca2
Reviewed-on: https://chromium-review.googlesource.com/1212142
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593486}
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/http/http_proxy_client_socket_wrapper.cc
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/http/http_stream_factory_job.cc
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/http/http_stream_factory_job.h
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/http/http_stream_factory_job_controller.cc
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/http/http_stream_factory_job_controller.h
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/http/http_stream_factory_job_controller_unittest.cc
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/quic/quic_network_transaction_unittest.cc
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/quic/quic_stream_factory.cc
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/quic/quic_stream_factory.h
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/quic/quic_stream_factory_fuzzer.cc
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/quic/quic_stream_factory_test.cc
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/quic/test_task_runner.cc
[modify] https://crrev.com/a6b68d119dd80d2e209bf0ed9e6fcfa2d29248d1/net/quic/test_task_runner.h

Project Member

Comment 30 by bugdroid1@chromium.org, Sep 25

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a15736cafe8f12d7f691defaac7e2370d4eb5f8d

commit a15736cafe8f12d7f691defaac7e2370d4eb5f8d
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Tue Sep 25 00:31:18 2018

Fix |time_of_first_packet_sent_after_receiving_| in QuicConnection.

Fix |time_of_first_packet_sent_after_receiving_| in QuicConnection to correctly log the time of the first packet sent after the most recently received packet.
Flag protected by quic_fix_time_of_first_packet_sent_after_receiving.
Merge internal change: 214290296

Add a new QuicConnectionTest to verify that the connection idle timeout is based on the first packet sent after receiving the last packet.
This change also renames |last_send_for_timeout_| to
|time_of_first_packet_sent_after_receiving_| in QuicConnection.
No behavior change, not flag protected as this is a rename and test only change.
Merge internal change: 214084095

Bug:  790547 
Change-Id: I99f9473df153bee7fb1cf6ed2d10f622ba8d5024
Reviewed-on: https://chromium-review.googlesource.com/1241758
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593771}
[modify] https://crrev.com/a15736cafe8f12d7f691defaac7e2370d4eb5f8d/net/quic/quic_flags_list.h
[modify] https://crrev.com/a15736cafe8f12d7f691defaac7e2370d4eb5f8d/net/quic/quic_network_transaction_unittest.cc
[modify] https://crrev.com/a15736cafe8f12d7f691defaac7e2370d4eb5f8d/net/third_party/quic/core/quic_connection.cc
[modify] https://crrev.com/a15736cafe8f12d7f691defaac7e2370d4eb5f8d/net/third_party/quic/core/quic_connection.h
[modify] https://crrev.com/a15736cafe8f12d7f691defaac7e2370d4eb5f8d/net/third_party/quic/core/quic_connection_test.cc

Project Member

Comment 31 by bugdroid1@chromium.org, Sep 26

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ff359581bcc785d26b4b1c4f3dcc905176860a8c

commit ff359581bcc785d26b4b1c4f3dcc905176860a8c
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Wed Sep 26 18:11:48 2018

Add finch config param for cronet and Chrome to retry QUIC connection on the alternate network before handshake.

The feature will be controlled by "retry_on_alternate_network_before_handshake".

Bug:  790547 
Cq-Include-Trybots: luci.chromium.try:ios-simulator-cronet;master.tryserver.chromium.android:android_cronet_tester
Change-Id: I5812083fe317f996313adce49f9bbd1d14b22f37
Reviewed-on: https://chromium-review.googlesource.com/1242038
Reviewed-by: Misha Efimov <mef@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Commit-Queue: Misha Efimov <mef@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594386}
[modify] https://crrev.com/ff359581bcc785d26b4b1c4f3dcc905176860a8c/components/cronet/url_request_context_config.cc
[modify] https://crrev.com/ff359581bcc785d26b4b1c4f3dcc905176860a8c/components/cronet/url_request_context_config_unittest.cc
[modify] https://crrev.com/ff359581bcc785d26b4b1c4f3dcc905176860a8c/components/network_session_configurator/browser/network_session_configurator.cc
[modify] https://crrev.com/ff359581bcc785d26b4b1c4f3dcc905176860a8c/components/network_session_configurator/browser/network_session_configurator_unittest.cc

Project Member

Comment 32 by bugdroid1@chromium.org, Nov 1

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ba45c995315f09eedd336011c647d06566f5ac87

commit ba45c995315f09eedd336011c647d06566f5ac87
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Thu Nov 01 20:07:19 2018

Add a histogram to collect metrics for new connection before handshake.

Add a histogram to collect how often the signal is detected by QUIC to
attempt migration before handshake and how often the new connection is
attmped, i.e., an alternate network is available to retry the connection.

Bug:  790547 
Change-Id: Ibe4630e1fa4d813330d0d7f48f2b4bf99663a3be
Reviewed-on: https://chromium-review.googlesource.com/c/1311493
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#604685}
[modify] https://crrev.com/ba45c995315f09eedd336011c647d06566f5ac87/net/quic/quic_stream_factory.cc
[modify] https://crrev.com/ba45c995315f09eedd336011c647d06566f5ac87/tools/metrics/histograms/histograms.xml

Project Member

Comment 33 by bugdroid1@chromium.org, Nov 5

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b948117e63e6b6b6b3d7ed9a9e5e5b7e74deae9e

commit b948117e63e6b6b6b3d7ed9a9e5e5b7e74deae9e
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Mon Nov 05 20:49:46 2018

Add a new histogram for migration before handshake to track the status.

This histogram will track how often the migration before handshake ends
up with success, and how often is not.

Bug:  790547 
Change-Id: I8cb9c3dbcbb7262955c69284f1a12d2e11be61eb
Reviewed-on: https://chromium-review.googlesource.com/c/1315933
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605453}
[modify] https://crrev.com/b948117e63e6b6b6b3d7ed9a9e5e5b7e74deae9e/net/quic/quic_stream_factory.cc
[modify] https://crrev.com/b948117e63e6b6b6b3d7ed9a9e5e5b7e74deae9e/tools/metrics/histograms/histograms.xml

Status: Fixed (was: Started)
Closing this tracker since all the implementation has been finished at this point and experiments are running in Cronet embedders‘ side. Should open new trackers if there's new bugs or feature request. 
Project Member

Comment 35 by bugdroid1@chromium.org, Nov 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/afc1ca0fe8efbef8061947994df9ad2f0d07768f

commit afc1ca0fe8efbef8061947994df9ad2f0d07768f
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Wed Nov 28 21:56:36 2018

Fix histogram for new connection before handshake.

Change MigrationBeforeHandshake2 to track explicitly labeled retried
connection. ConnectionOnNonDefaultNetwork will track those connection
that started on the default network but network change is encountered
during connection setup.

Additionally, add two more histograms
- MigrationBeforeHandshakeFailedReason will track the net error code
returned when an error is encountered by the new connection on the
alternate network;
- NetworkChangeDuringMigrationBeforeHandshake will track how often the
default network is changed during migration before handshake.

Bug:  790547 
Change-Id: I3ebd0e6a05a1a56d45326917f341095594333564
Reviewed-on: https://chromium-review.googlesource.com/c/1352749
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611885}
[modify] https://crrev.com/afc1ca0fe8efbef8061947994df9ad2f0d07768f/net/quic/quic_stream_factory.cc
[modify] https://crrev.com/afc1ca0fe8efbef8061947994df9ad2f0d07768f/tools/metrics/histograms/histograms.xml

Project Member

Comment 36 by bugdroid1@chromium.org, Nov 29

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/59fd226372e6e9ccbd94de369648cda14e374ebf

commit 59fd226372e6e9ccbd94de369648cda14e374ebf
Author: Zhongyi Shi <zhongyi@chromium.org>
Date: Thu Nov 29 22:37:16 2018

Add two histograms for new connection on alternate network.

- Net.QuicStreamFactory.AttemptMigrationBeforeHandshake.FailedConnectionType
tracks the connection type of the default network when the original
connection fails with handshake not confirmed.
- Net.QuicStreamFactory.MigrationBeforeHandshake.NewConnectionType
tracks the connection type of the altenate network when the original
connection fails with handshake not confirmed and a new connection is
about to be retried on the alternate network.

These histograms may give us hints why the altenate network is not
availabe when the connection on the default network fails. Current
theory is that the default network is on Cellular, and there is no
alternate network.

Bug:  790547 
Change-Id: Ibfd63efed9a1b72b7d6de95453af55feacd9cef6
Reviewed-on: https://chromium-review.googlesource.com/c/1354320
Reviewed-by: Ryan Hamilton <rch@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Commit-Queue: Zhongyi Shi <zhongyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#612414}
[modify] https://crrev.com/59fd226372e6e9ccbd94de369648cda14e374ebf/net/quic/quic_stream_factory.cc
[modify] https://crrev.com/59fd226372e6e9ccbd94de369648cda14e374ebf/tools/metrics/histograms/histograms.xml

Sign in to add a comment