Use alternate network interface with QUIC on handshake failure |
||||
Issue descriptionWhen 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.
,
Dec 1 2017
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?
,
Dec 1 2017
> 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?
,
Dec 1 2017
That makes sense, let's do it only for QUIC then.
,
Mar 8 2018
,
May 7 2018
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
Aug 3
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5068bb05b4f5847dd4f242ea56639e42252824c7 commit 5068bb05b4f5847dd4f242ea56639e42252824c7 Author: Zhongyi Shi <zhongyi@chromium.org> Date: Fri Aug 03 02:44:09 2018 Add a new test in QuicChromiumClientSessionTest to verify path degrading during crypto handshake will be detected. Bug: 790547 Change-Id: If39cf0fcf342372669f951fef758334e9520ccea Reviewed-on: https://chromium-review.googlesource.com/1161491 Reviewed-by: Ryan Hamilton <rch@chromium.org> Commit-Queue: Zhongyi Shi <zhongyi@chromium.org> Cr-Commit-Position: refs/heads/master@{#580419} [modify] https://crrev.com/5068bb05b4f5847dd4f242ea56639e42252824c7/net/quic/mock_crypto_client_stream.cc [modify] https://crrev.com/5068bb05b4f5847dd4f242ea56639e42252824c7/net/quic/quic_chromium_client_session_test.cc [modify] https://crrev.com/5068bb05b4f5847dd4f242ea56639e42252824c7/net/quic/quic_stream_factory_test.cc [modify] https://crrev.com/5068bb05b4f5847dd4f242ea56639e42252824c7/net/quic/quic_test_packet_maker.cc [modify] https://crrev.com/5068bb05b4f5847dd4f242ea56639e42252824c7/net/quic/quic_test_packet_maker.h
,
Aug 9
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/c144937d9a8a980080b8734cbde1575d488bf5c7 commit c144937d9a8a980080b8734cbde1575d488bf5c7 Author: Zhongyi Shi <zhongyi@chromium.org> Date: Thu Aug 09 09:58:58 2018 Do not attempt connection migration with probes when path degrading is triggered before handshake complete. Bug: 790547 Change-Id: I430eeb2741c430a241feddb69e468dbe33bdc368 Reviewed-on: https://chromium-review.googlesource.com/1163997 Commit-Queue: Zhongyi Shi <zhongyi@chromium.org> Reviewed-by: Ryan Hamilton <rch@chromium.org> Cr-Commit-Position: refs/heads/master@{#581849} [modify] https://crrev.com/c144937d9a8a980080b8734cbde1575d488bf5c7/net/quic/quic_chromium_client_session.cc [modify] https://crrev.com/c144937d9a8a980080b8734cbde1575d488bf5c7/net/quic/quic_chromium_client_session.h [modify] https://crrev.com/c144937d9a8a980080b8734cbde1575d488bf5c7/net/quic/quic_stream_factory_peer.cc [modify] https://crrev.com/c144937d9a8a980080b8734cbde1575d488bf5c7/net/quic/quic_stream_factory_peer.h [modify] https://crrev.com/c144937d9a8a980080b8734cbde1575d488bf5c7/net/quic/quic_stream_factory_test.cc [modify] https://crrev.com/c144937d9a8a980080b8734cbde1575d488bf5c7/tools/metrics/histograms/enums.xml
,
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
,
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
,
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
,
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
,
Aug 28
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/503a3c6c5f33ae3b8cca5911b83bc47bdc9d46b6 commit 503a3c6c5f33ae3b8cca5911b83bc47bdc9d46b6 Author: Zhongyi Shi <zhongyi@chromium.org> Date: Tue Aug 28 04:22:44 2018 Remove AlternativeService from the BrokenAlternativeServices method names. Bug: 790547 Change-Id: Iad6dcd4edaaac4be6dc167560f52553c16a6803c Reviewed-on: https://chromium-review.googlesource.com/1191863 Commit-Queue: Zhongyi Shi <zhongyi@chromium.org> Reviewed-by: Ryan Hamilton <rch@chromium.org> Cr-Commit-Position: refs/heads/master@{#586578} [modify] https://crrev.com/503a3c6c5f33ae3b8cca5911b83bc47bdc9d46b6/net/http/broken_alternative_services.cc [modify] https://crrev.com/503a3c6c5f33ae3b8cca5911b83bc47bdc9d46b6/net/http/broken_alternative_services.h [modify] https://crrev.com/503a3c6c5f33ae3b8cca5911b83bc47bdc9d46b6/net/http/broken_alternative_services_unittest.cc [modify] https://crrev.com/503a3c6c5f33ae3b8cca5911b83bc47bdc9d46b6/net/http/http_server_properties_impl.cc [modify] https://crrev.com/503a3c6c5f33ae3b8cca5911b83bc47bdc9d46b6/net/http/http_server_properties_impl_unittest.cc
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
Nov 28
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.
,
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
,
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 |
||||
Comment 1 by zhongyi@chromium.org
, Dec 1 2017