pypi / support

Issue tracker for support requests related to using https://pypi.org
94 stars 48 forks source link

Extremely slow downloads from pypi.org #1931

Open micdoug opened 2 years ago

micdoug commented 2 years ago

My Platform

I started having extremely slow downloads from pypi.org, which makes pip unusable. I am from Brazil and my ISP doesn't provide support for IPv6. The issue started recently. My link has 400 Mbps of capacity for both download and upload, and I am experiencing downloads in the range of 30 to 60 kbps.

Fastly Debug

ewogICJnZW9pcCI6IHsKICAgICJjaSI6ICJpZ2FyYXBlIiwKICAgICJzdCI6ICJNRyIsCiAgICAiY3QiOiAiYnJhemlsIiwKICAgICJjbyI6ICJTQSIsCiAgICAiY19pcCI6ICIxNzAuODQuMjMuMjAyIiwKICAgICJjX2FzbiI6ICIyNjQ5OTAiLAogICAgImNfYXNuX25hbWUiOiAid3QgaW5mb3JtYXRpY2EgdGVsZWNvbXVuaWNhY29lcyBsdGRhIC0gbWUiLAogICAgInJfaXAiOiAiMTcyLjI1My4yMzMuNSIsCiAgICAicl9hc24iOiAiMTUxNjkiLAogICAgInJfYXNuX25hbWUiOiAiZ29vZ2xlIGxsYyIsCiAgICAicl9jaSI6ICJzYW8gcGF1bG8iLAogICAgInJfc3QiOiAiU1AiLAogICAgInJfY3QiOiAiYnJhemlsIiwKICAgICJyX2NvIjogIlNBIgogIH0sCiAgInBvcExhdGVuY3kiOiB7CiAgICAiYm9nIjogMjE3LAogICAgImNnaCI6IDE0LAogICAgImN3YiI6IDI1LAogICAgImV6ZSI6IDE1MywKICAgICJmb3IiOiA2NiwKICAgICJnaWciOiAxOCwKICAgICJncnUiOiAyMSwKICAgICJsaW0iOiAxODYsCiAgICAic2NsIjogMTYwLAogICAgImFueSI6IDE1NQogIH0sCiAgInBvcEFzc2lnbm1lbnRzIjogewogICAgImFjIjogImxnYSIsCiAgICAiYXMiOiAibGdhIgogIH0sCiAgInJlcXVlc3QiOiB7CiAgICAicmVzb2x2ZXJfaXAiOiAiMTcyLjI1My4yMzMuNSIsCiAgICAicmVzb2x2ZXJfYXNfbmFtZSI6ICJHT09HTEUsIFVTIiwKICAgICJyZXNvbHZlcl9hc19udW1iZXIiOiAiMTUxNjkiLAogICAgInJlc29sdmVyX2NvdW50cnlfY29kZSI6ICJVUyIsCiAgICAiY2xpZW50X2lwIjogIjE3MC44NC4yMy4yMDIiLAogICAgImNsaWVudF9hc19uYW1lIjogIldUIElORk9STUFUSUNBIFRFTEVDT01VTklDQUNPRVMgTFREQSAtIE1FLCBCUiIsCiAgICAiY2xpZW50X2FzX251bWJlciI6ICIyNjQ5OTAiLAogICAgInRpbWUiOiAiMjAyMi0wNS0xNFQyMDo0OTozMS4wMDBaIiwKICAgICJob3N0IjogInd3dy5mYXN0bHktZGVidWcuY29tIiwKICAgICJhY2NlcHQiOiAidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC45IiwKICAgICJ1c2VyYWdlbnQiOiAiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwMS4wLjQ5NTEuNjQgU2FmYXJpLzUzNy4zNiIsCiAgICAiYWNjZXB0bGFuZ3VhZ2UiOiAiZW4tVVMsZW47cT0wLjkscHQtQlI7cT0wLjgscHQ7cT0wLjciLAogICAgImFjY2VwdGVuY29kaW5nIjogImd6aXAiLAogICAgImZhc3RseXNlcnZlcmlwIjogIjE1MS4xMDEuMC42NCIsCiAgICAieGZmIjogIjE3MC44NC4yMy4yMDIiLAogICAgImRhdGFjZW50ZXIiOiAiTEdBIiwKICAgICJiYW5kd2lkdGhfbWJwcyI6ICIwLjE5IiwKICAgICJjd25kIjogMiwKICAgICJuZXh0aG9wIjogIjE3Mi4yMy42OC4xIiwKICAgICJydHQiOiAxNzEuNDE5LAogICAgImRlbHRhX3JldHJhbnMiOiAwLAogICAgInRvdGFsX3JldHJhbnMiOiA2NAogIH0KfQ==

DNS Resolution

$ dig pypi.org A
; <<>> DiG 9.10.6 <<>> pypi.org A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 901
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;pypi.org.          IN  A

;; ANSWER SECTION:
pypi.org.       21533   IN  A   151.101.64.223
pypi.org.       21533   IN  A   151.101.128.223
pypi.org.       21533   IN  A   151.101.0.223
pypi.org.       21533   IN  A   151.101.192.223

;; Query time: 19 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat May 14 17:51:27 -03 2022
;; MSG SIZE  rcvd: 101
$ dig pypi.org AAAA
; <<>> DiG 9.10.6 <<>> pypi.org AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46609
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;pypi.org.          IN  AAAA

;; ANSWER SECTION:
pypi.org.       21161   IN  AAAA    2a04:4e42:600::223
pypi.org.       21161   IN  AAAA    2a04:4e42::223
pypi.org.       21161   IN  AAAA    2a04:4e42:200::223
pypi.org.       21161   IN  AAAA    2a04:4e42:400::223

;; Query time: 19 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat May 14 17:51:53 -03 2022
;; MSG SIZE  rcvd: 149
$ dig files.pythonhosted.org A
; <<>> DiG 9.10.6 <<>> files.pythonhosted.org A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13477
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;files.pythonhosted.org.        IN  A

;; ANSWER SECTION:
files.pythonhosted.org. 18849   IN  CNAME   dualstack.r.ssl.global.fastly.net.
dualstack.r.ssl.global.fastly.net. 30 IN A  151.101.1.63
dualstack.r.ssl.global.fastly.net. 30 IN A  151.101.65.63
dualstack.r.ssl.global.fastly.net. 30 IN A  151.101.129.63
dualstack.r.ssl.global.fastly.net. 30 IN A  151.101.193.63

;; Query time: 17 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat May 14 17:52:17 -03 2022
;; MSG SIZE  rcvd: 162
$ dig files.pythonhosted.org AAAA
; <<>> DiG 9.10.6 <<>> files.pythonhosted.org AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59807
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;files.pythonhosted.org.        IN  AAAA

;; ANSWER SECTION:
files.pythonhosted.org. 21470   IN  CNAME   dualstack.r.ssl.global.fastly.net.
dualstack.r.ssl.global.fastly.net. 30 IN AAAA   2a04:4e42::319
dualstack.r.ssl.global.fastly.net. 30 IN AAAA   2a04:4e42:200::319
dualstack.r.ssl.global.fastly.net. 30 IN AAAA   2a04:4e42:400::319
dualstack.r.ssl.global.fastly.net. 30 IN AAAA   2a04:4e42:600::319

;; Query time: 19 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat May 14 17:52:39 -03 2022
;; MSG SIZE  rcvd: 210

Traceroutes / IPv4

$ traceroute pypi.org
traceroute: Warning: pypi.org has multiple addresses; using 151.101.192.223
traceroute to pypi.org (151.101.192.223), 64 hops max, 52 byte packets
 1  10.0.0.1 (10.0.0.1)  2.952 ms  3.298 ms  3.136 ms
 2  170.84.20.49 (170.84.20.49)  7.377 ms  3.797 ms  4.210 ms
 3  170.84.23.165 (170.84.23.165)  3.185 ms  2.524 ms  6.600 ms
 4  170.84.23.162 (170.84.23.162)  5.230 ms  4.644 ms  4.087 ms
 5  131-161-104-72.rev.netcorporativa.com.br (131.161.104.72)  31.478 ms  31.261 ms  67.926 ms
 6  te0-3-0-8.rcr51.b070119-0.sao01.atlas.cogentco.com (199.100.3.73)  15.176 ms  13.367 ms  13.556 ms
 7  be2013.ccr31.sao01.atlas.cogentco.com (154.54.87.17)  15.577 ms  14.625 ms  13.895 ms
 8  be2531.ccr31.jfk10.atlas.cogentco.com (154.54.88.1)  123.013 ms  126.153 ms  126.858 ms
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
$ traceroute files.pythonhosted.org
traceroute: Warning: files.pythonhosted.org has multiple addresses; using 151.101.1.63
traceroute to dualstack.r.ssl.global.fastly.net (151.101.1.63), 64 hops max, 52 byte packets
 1  10.0.0.1 (10.0.0.1)  2.514 ms  2.405 ms  2.140 ms
 2  170.84.20.49 (170.84.20.49)  7.442 ms  3.861 ms  4.295 ms
 3  170.84.23.165 (170.84.23.165)  2.521 ms  2.397 ms  3.159 ms
 4  170.84.23.162 (170.84.23.162)  5.328 ms  4.565 ms  5.345 ms
 5  131-161-104-72.rev.netcorporativa.com.br (131.161.104.72)  15.668 ms  14.205 ms  14.176 ms
 6  te0-3-0-8.rcr51.b070119-0.sao01.atlas.cogentco.com (199.100.3.73)  14.518 ms  13.621 ms  14.019 ms
 7  be2013.ccr31.sao01.atlas.cogentco.com (154.54.87.17)  15.133 ms  16.061 ms  14.394 ms
 8  be2531.ccr31.jfk10.atlas.cogentco.com (154.54.88.1)  123.096 ms  127.522 ms  126.879 ms
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

Traceroutes / IPv6 (If available)

$ traceroute6 pypi.org
$ traceroute6 files.pythonhosted.org

HTTPS Requests / IPv4

$ curl -vvv -I --ipv4 https://pypi.org/pypi/pip/json
*   Trying 151.101.192.223:443...
* Connected to pypi.org (151.101.192.223) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=pypi.org
*  start date: Oct 22 18:55:44 2021 GMT
*  expire date: Nov 23 18:55:43 2022 GMT
*  subjectAltName: host "pypi.org" matched cert's "pypi.org"
*  issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Atlas R3 DV TLS CA H2 2021
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x14380b600)
> HEAD /pypi/pip/json HTTP/2
> Host: pypi.org
> user-agent: curl/7.79.1
> accept: */*
>
< HTTP/2 200
HTTP/2 200
< access-control-allow-headers: Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since
access-control-allow-headers: Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since
< access-control-allow-methods: GET
access-control-allow-methods: GET
< access-control-allow-origin: *
access-control-allow-origin: *
< access-control-expose-headers: X-PyPI-Last-Serial
access-control-expose-headers: X-PyPI-Last-Serial
< access-control-max-age: 86400
access-control-max-age: 86400
< cache-control: max-age=900, public
cache-control: max-age=900, public
< content-security-policy: base-uri 'self'; block-all-mixed-content; connect-src 'self' https://api.github.com/repos/ fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self'; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://warehouse-camo.ingress.cmh1.psfhosted.org/ www.google-analytics.com *.fastly-insights.com *.ethicalads.io; script-src 'self' www.googletagmanager.com www.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='; worker-src *.fastly-insights.com
content-security-policy: base-uri 'self'; block-all-mixed-content; connect-src 'self' https://api.github.com/repos/ fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self'; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://warehouse-camo.ingress.cmh1.psfhosted.org/ www.google-analytics.com *.fastly-insights.com *.ethicalads.io; script-src 'self' www.googletagmanager.com www.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='; worker-src *.fastly-insights.com
< content-type: application/json
content-type: application/json
< etag: "CUhEKJfxAClupzxhd+PTKg"
etag: "CUhEKJfxAClupzxhd+PTKg"
< referrer-policy: origin-when-cross-origin
referrer-policy: origin-when-cross-origin
< server: nginx/1.13.9
server: nginx/1.13.9
< x-pypi-last-serial: 13785958
x-pypi-last-serial: 13785958
< accept-ranges: bytes
accept-ranges: bytes
< date: Sat, 14 May 2022 21:03:13 GMT
date: Sat, 14 May 2022 21:03:13 GMT
< x-served-by: cache-iad-kiad7000116-IAD, cache-lga21928-LGA
x-served-by: cache-iad-kiad7000116-IAD, cache-lga21928-LGA
< x-cache: HIT, HIT
x-cache: HIT, HIT
< x-cache-hits: 2, 1
x-cache-hits: 2, 1
< x-timer: S1652562193.443415,VS0,VE1
x-timer: S1652562193.443415,VS0,VE1
< vary: Accept-Encoding, Accept-Encoding
vary: Accept-Encoding, Accept-Encoding
< strict-transport-security: max-age=31536000; includeSubDomains; preload
strict-transport-security: max-age=31536000; includeSubDomains; preload
< x-frame-options: deny
x-frame-options: deny
< x-xss-protection: 1; mode=block
x-xss-protection: 1; mode=block
< x-content-type-options: nosniff
x-content-type-options: nosniff
< x-permitted-cross-domain-policies: none
x-permitted-cross-domain-policies: none
< content-length: 139929
content-length: 139929

<
* Connection #0 to host pypi.org left intact
$ curl -vvv -I --ipv4 https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz
*   Trying 151.101.1.63:443...
* Connected to files.pythonhosted.org (151.101.1.63) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (OUT), TLS handshake, Client hello (1):
* (304) (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=*.pythonhosted.org
*  start date: Dec 24 19:42:31 2021 GMT
*  expire date: Jan 25 19:42:30 2023 GMT
*  subjectAltName: host "files.pythonhosted.org" matched cert's "*.pythonhosted.org"
*  issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Atlas R3 DV TLS CA H2 2021
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x14a80fa00)
> HEAD /packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz HTTP/2
> Host: files.pythonhosted.org
> user-agent: curl/7.79.1
> accept: */*
>
< HTTP/2 200
HTTP/2 200
< last-modified: Wed, 26 Feb 2020 17:47:37 GMT
last-modified: Wed, 26 Feb 2020 17:47:37 GMT
< etag: "83a177756e2c801d0b3a6f7b0d4f3f7e"
etag: "83a177756e2c801d0b3a6f7b0d4f3f7e"
< content-type: binary/octet-stream
content-type: binary/octet-stream
< x-goog-hash: crc32c=Om2N1A==
x-goog-hash: crc32c=Om2N1A==
< x-goog-hash: md5=g6F3dW4sgB0LOm97DU8/fg==
x-goog-hash: md5=g6F3dW4sgB0LOm97DU8/fg==
< server: UploadServer
server: UploadServer
< cache-control: max-age=365000000, immutable, public
cache-control: max-age=365000000, immutable, public
< accept-ranges: bytes
accept-ranges: bytes
< date: Sat, 14 May 2022 21:03:48 GMT
date: Sat, 14 May 2022 21:03:48 GMT
< age: 290689
age: 290689
< x-served-by: cache-sea4460-SEA, cache-lga21968-LGA
x-served-by: cache-sea4460-SEA, cache-lga21968-LGA
< x-cache: HIT, HIT
x-cache: HIT, HIT
< x-cache-hits: 1, 1
x-cache-hits: 1, 1
< x-timer: S1652562229.901735,VS0,VE5
x-timer: S1652562229.901735,VS0,VE5
< strict-transport-security: max-age=31536000; includeSubDomains; preload
strict-transport-security: max-age=31536000; includeSubDomains; preload
< x-frame-options: deny
x-frame-options: deny
< x-xss-protection: 1; mode=block
x-xss-protection: 1; mode=block
< x-content-type-options: nosniff
x-content-type-options: nosniff
< x-permitted-cross-domain-policies: none
x-permitted-cross-domain-policies: none
< x-robots-header: noindex
x-robots-header: noindex
< content-length: 1246072
content-length: 1246072

<
* Connection #0 to host files.pythonhosted.org left intact

HTTPS Requests / IPv6 (If available)

$ curl -vvv -I --ipv6 https://pypi.org/pypi/pip/json
$ curl -vvv -I --ipv6 https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz

TLS Debug / IPv4

$ echo -n | openssl s_client -4 -connect pypi.org:443
CONNECTED(00000005)
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA H2 2021
verify return:1
depth=0 CN = www.python.org
verify return:1
---
Certificate chain
 0 s:/CN=www.python.org
   i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Atlas R3 DV TLS CA H2 2021
 1 s:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Atlas R3 DV TLS CA H2 2021
   i:/OU=GlobalSign Root CA - R3/O=GlobalSign/CN=GlobalSign
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGpzCCBY+gAwIBAgIQAbfGzQPo4HG+SMKxp5lAdTANBgkqhkiG9w0BAQsFADBY
MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEuMCwGA1UE
AxMlR2xvYmFsU2lnbiBBdGxhcyBSMyBEViBUTFMgQ0EgSDIgMjAyMTAeFw0yMTEw
MjIxODQxMTFaFw0yMjExMjMxODQxMTBaMBkxFzAVBgNVBAMMDnd3dy5weXRob24u
b3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9LggNSqPtkBioKAb
eomQ0Kff15MT/IiUU38vnApHUDB30rY9axYZY+o1faWd8vY/n8TlrmNnUdVv6OvM
6JyYjvN6Ry/lB+DQH5khCaCxbtZAFbl6XnK2IKQU/RndbTWLaAacW/gc6HUfByMd
TuQwBnay4cxOgs3yqQN9bIh9yW0PU9lISiscGUglC+Fg1B72LxppOeWJWxISZujo
AG98pm1APo1H5j8bOQHKrd4/lmBR/9Q6Q53AGQUDU/624zuVjvAp/Z07DGPcCva/
AVIZz3eV8IKtBwjoPZiQqobl6RgjMTD8CckEwrNS4+wy0OwLvqUNni1VZ+Z6k/3b
ZtGzgQIDAQABo4IDqjCCA6YwXwYDVR0RBFgwVoIOd3d3LnB5dGhvbi5vcmeCDCou
cHl0aG9uLm9yZ4IPZG9jcy5weXRob24ub3JnghRkb3dubG9hZHMucHl0aG9uLm9y
Z4IPcHlwaS5weXRob24ub3JnMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggr
BgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFJN26IaF38fykujiYsJI7xYkx/pk
MFcGA1UdIARQME4wCAYGZ4EMAQIBMEIGCisGAQQBoDIKAQMwNDAyBggrBgEFBQcC
ARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wDAYDVR0T
AQH/BAIwADCBngYIKwYBBQUHAQEEgZEwgY4wQAYIKwYBBQUHMAGGNGh0dHA6Ly9v
Y3NwLmdsb2JhbHNpZ24uY29tL2NhL2dzYXRsYXNyM2R2dGxzY2FoMjIwMjEwSgYI
KwYBBQUHMAKGPmh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2FjZXJ0L2dz
YXRsYXNyM2R2dGxzY2FoMjIwMjEuY3J0MB8GA1UdIwQYMBaAFCo0uar6vzyI8Ufy
0hJ4vsXlqrBpMEgGA1UdHwRBMD8wPaA7oDmGN2h0dHA6Ly9jcmwuZ2xvYmFsc2ln
bi5jb20vY2EvZ3NhdGxhc3IzZHZ0bHNjYWgyMjAyMS5jcmwwggGABgorBgEEAdZ5
AgQCBIIBcASCAWwBagB3AG9Tdqwx8DEZ2JkApFEV/3cVHBHZAsEAKQaNsgiaN9kT
AAABfKlOkrUAAAQDAEgwRgIhAII5UIOyXvdQcRiBa9YOSeyDx2/wWzHQK64LefqW
cyZZAiEAp1+Lt6zCaagIwu6D6l3x1UpqZwvL3rAQMA7cprVrNEYAdwBGpVXrdfqR
IDC1oolp9PN9ESxBdL79SbiFq/L8cP5tRwAAAXypTpKwAAAEAwBIMEYCIQDWjDM7
Kq9hGiqN441efh80hvSvI8n1qjGR0YVezctuKAIhAMlJ0CS4C4W1To6/npYfYI2I
6zxNh/o/FFHtFrREQdTlAHYAVYHUwhaQNgFK6gubVzxT8MDkOHhwJQgXL6OqHQcT
0wwAAAF8qU6TIAAABAMARzBFAiA6B/M3ULcym41okykkdko2KtSYwjAf1+gTXgjk
SvDN7gIhAK2ZBwRKYaTiuQTa0z7R8CtgUTVwRnCk1eiTaHB2RL6BMA0GCSqGSIb3
DQEBCwUAA4IBAQBjJ9hl4W0AWlVgdQJfZAfL2oubfMPPG+nAdb3usfGBZhULFJ2G
R6cl1Yu2XY0x3oI3tkdeIlpmdIjT6W0RkYFj2dPgzkUk63UssZwzh/ZFpBkWX8gm
NpQyfRhrKm3WkJg++5Kxjtgthcl1LdMtSnQF60ZmJIrniCmx0Q9tstFDEIToA5Iz
ENiDjIJVGdYrSB+/Mu+LUfk663F1daqg29WVXqHvSknjbSk0xzKaxKWBOMjT8KFE
4G3CHwX2t4bj7IWFRIm4gTa04Rln7IWHjDRYN+pTGjPykB2JkkWlNNGJzvw/u0P5
/Lv5DpfLTrOag2HBbNLiXMfGWaiMq43af4PE
-----END CERTIFICATE-----
subject=/CN=www.python.org
issuer=/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Atlas R3 DV TLS CA H2 2021
---
No client certificate CA names sent
Server Temp Key: ECDH, X25519, 253 bits
---
SSL handshake has read 3548 bytes and written 281 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-CHACHA20-POLY1305
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-CHACHA20-POLY1305
    Session-ID: 16872AD44D0AABDB55C0553EBFDF904B071560213A21040FF02576B9422E3DA1
    Session-ID-ctx:
    Master-Key: 98924EBB6A833D61E0F5A8C99115A64F3F2DD2974FC481CC40D72631495884D0014CCA8FDB620AC64B211933CEB2C666
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - 47 ae 38 50 fe 83 8b b5-ea 19 6f 1a 08 98 ee 9f   G.8P......o.....
    0010 - 05 32 e2 c4 30 7e 18 67-53 0d 75 76 ed 5a 8b e6   .2..0~.gS.uv.Z..
    0020 - 90 1d c0 68 28 a6 11 e6-1c bc f0 45 6d 9e f0 1f   ...h(......Em...
    0030 - 65 a6 b0 54 6a 1d f6 12-17 5b 9e 68 c7 26 3c 01   e..Tj....[.h.&<.
    0040 - 71 72 af b4 06 70 ed 4e-d8 81 01 32 30 c8 5b 7e   qr...p.N...20.[~
    0050 - d2 24 c8 52 33 7d 08 44-90 7d 3f 4e 6e ce 67 48   .$.R3}.D.}?Nn.gH
    0060 - be 72 91 5a 96 41 75 61-3c 40 d3 73 53 46 5e 76   .r.Z.Aua<@.sSF^v
    0070 - fe 0c e8 15 59 e1 1a 46-79 3c 52 70 12 5b 38 33   ....Y..Fy<Rp.[83
    0080 - 80 0c 80 34 92 67 a7 e4-03 24 9f f0 77 0b 25 85   ...4.g...$..w.%.
    0090 - 30 9a cd 9a c7 bd 40 7e-34 73 ee e8 ab 8b 50 f0   0.....@~4s....P.

    Start Time: 1652562264
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---
DONE
$ echo -n | openssl s_client -4 -connect files.pythonhosted.org:443
CONNECTED(00000005)
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2020
verify return:1
depth=0 CN = r.shared-319-default.ssl.fastly.net
verify return:1
---
Certificate chain
 0 s:/CN=r.shared-319-default.ssl.fastly.net
   i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Atlas R3 DV TLS CA 2020
 1 s:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Atlas R3 DV TLS CA 2020
   i:/OU=GlobalSign Root CA - R3/O=GlobalSign/CN=GlobalSign
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGfDCCBWSgAwIBAgIQAR8Fx56lM6Sa05OTEE6sfDANBgkqhkiG9w0BAQsFADBV
MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTErMCkGA1UE
AxMiR2xvYmFsU2lnbiBBdGxhcyBSMyBEViBUTFMgQ0EgMjAyMDAeFw0yMTA2MDcy
MjA0MjNaFw0yMjA3MDkyMjA0MjJaMC4xLDAqBgNVBAMMI3Iuc2hhcmVkLTMxOS1k
ZWZhdWx0LnNzbC5mYXN0bHkubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEArwu0wXbuXx7yEmrxGIXpSOB9eyU9JijhV0E/hxvdxV6MzxNIbIv3uBiB
e7YmuVEEX297nszWkISqTxf/ldesik528mxNOz2T1G8TIf2Piky12gsSAUqndALj
GwwJ7ii3Bx2anMbkVZOLztLY6PuvBxHtKjnn9qGx1PphbyNS+1s03MB11N3B2Ck+
r2prWhRYZE+C7GkTSsOXCKzysG80qNPKbFz0IkPcvy18lKj5m3sA4Msd3mV6wlKv
RgfpLuvjMpPq6B7IUey7rkSKEnx3QwuMsBudSgr4aJc9H/VhB7XJh+gEtTtYh4ka
czZjGWb7jcQqhREY237uWLMBgcHtMQIDAQABo4IDbTCCA2kwLgYDVR0RBCcwJYIj
ci5zaGFyZWQtMzE5LWRlZmF1bHQuc3NsLmZhc3RseS5uZXQwDgYDVR0PAQH/BAQD
AgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4EFgQUBDeb
+03w6aX8FgBybtkg1FQi0MUwVgYDVR0gBE8wTTBBBgkrBgEEAaAyAQowNDAyBggr
BgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8w
CAYGZ4EMAQIBMAkGA1UdEwQCMAAwgZoGCCsGAQUFBwEBBIGNMIGKMD4GCCsGAQUF
BzABhjJodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9jYS9nc2F0bGFzcjNkdnRs
c2NhMjAyMDBIBggrBgEFBQcwAoY8aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNv
bS9jYWNlcnQvZ3NhdGxhc3IzZHZ0bHNjYTIwMjAuY3J0MB8GA1UdIwQYMBaAFEJt
Vy1PHyZ3dKYnZPaA+o9IaP58MEYGA1UdHwQ/MD0wO6A5oDeGNWh0dHA6Ly9jcmwu
Z2xvYmFsc2lnbi5jb20vY2EvZ3NhdGxhc3IzZHZ0bHNjYTIwMjAuY3JsMIIBfgYK
KwYBBAHWeQIEAgSCAW4EggFqAWgAdQBvU3asMfAxGdiZAKRRFf93FRwR2QLBACkG
jbIImjfZEwAAAXnogWA6AAAEAwBGMEQCICe5vtEHeVVVgR8It9RO1K/BHMNiRvqR
HHBghVfCS7ffAiBBK6I3mKxfRgL2TSAc4HGhgYIYng9qFCPNI1CNS1PERAB2AEal
Vet1+pEgMLWiiWn0830RLEF0vv1JuIWr8vxw/m1HAAABeeiBYDEAAAQDAEcwRQIh
ANpbj0CdEn42vzdnsU4uyr/bQsEkEphVhf47rDSfPPY5AiBUomsI8sYO1Qe3MfcG
IZmqzD6KtuvgLTmMX+XeZR3VIwB3AFGjsPX9AXmcVm24N3iPDKR6zBsny/eeiEKa
Df7UiwXlAAABeeiBYFwAAAQDAEgwRgIhANOmzp0QUCsXlm7VZk1JgVXpUdx7EShf
uCCvDMnzYU6aAiEAncocAph2E2Q7zVQ2JIkut/ZmaNg/e3n2Ao1DxpHdQ6UwDQYJ
KoZIhvcNAQELBQADggEBACPAfh4CqW5E39zfYJ4sPkW+QMok9gWHHeehUnsCHrfQ
iC962mCzVl+tikiEVVbv+i5afoEXLjQVz2DeTbUn+cc4fl3rjhCQtQDbHg5Z2TrM
51Z6ThSz2BEFZZvqulfqUeiqn1++T236SAekDQHBdiwIkdD10gYnr06Rqac33JoI
Dc4rn85UayBDcvotgeHNfSo4RbwIodNRoU4LYtBirEtOMiRvFDbHZffgsY/mgcdN
RH/StN3896aB1nDpwei5YOrdd17sLjSC1MHtcEO85Vc5m14tpW52oA5/mIb82DlP
K1aIA7Uo7obwr3wRiypNBdzZjHD834Y2GBbXhYZ2sOY=
-----END CERTIFICATE-----
subject=/CN=r.shared-319-default.ssl.fastly.net
issuer=/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Atlas R3 DV TLS CA 2020
---
No client certificate CA names sent
Server Temp Key: ECDH, X25519, 253 bits
---
SSL handshake has read 3486 bytes and written 281 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-CHACHA20-POLY1305
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-CHACHA20-POLY1305
    Session-ID: 2FD28EC8D525B20C3602DFF7F8A41A977D87A9F16F3533584DB6475637CDB8CB
    Session-ID-ctx:
    Master-Key: 4BBDF2033F40337C71F8FADEA3D6477C46DCA34A6646160AA978BC11218EE9A72817AE4D309D333E68F88353C374A97F
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - 47 ae 38 50 fe 83 8b b5-ea 19 6f 1a 08 98 ee 9f   G.8P......o.....
    0010 - 9d af d9 eb d7 2e 83 ca-78 3e a0 4e 82 b2 44 85   ........x>.N..D.
    0020 - e9 9f cf 28 02 47 d0 a2-aa b5 a5 0f 73 c4 f4 33   ...(.G......s..3
    0030 - a5 61 f4 e8 2c 2b ec 59-3e a3 23 28 82 e2 1e 65   .a..,+.Y>.#(...e
    0040 - 72 cb a3 55 a5 75 5e f8-11 40 7a 34 17 21 5d fb   r..U.u^..@z4.!].
    0050 - 39 9e 8e dd d8 c1 d9 e3-d9 44 ec aa cd 56 f4 a9   9........D...V..
    0060 - 8a a8 13 5a d5 38 e8 5e-81 4c dd e8 be 01 08 d7   ...Z.8.^.L......
    0070 - ac 45 a8 6a 07 be 0f 80-b7 f5 47 5a 67 86 bd 40   .E.j......GZg..@
    0080 - ed fb 8b c3 f7 4c 75 4d-d6 3f ae 62 65 68 01 24   .....LuM.?.beh.$
    0090 - bb 82 ac 84 11 c9 79 f3-43 09 86 04 01 2d de 38   ......y.C....-.8

    Start Time: 1652562291
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---
DONE

TLS Debug / IPv6 (If available)

$ echo -n | openssl s_client -6 -connect pypi.org:443
$ echo -n | openssl s_client -6 -connect files.pythonhosted.org:443

Code of Conduct

adradr commented 9 months ago

@micdoug I started experience the same, did you find any solutions since?

sauravkhakurel commented 6 months ago

@micdoug I started experience the same, did you find any solutions since?

adradr commented 6 months ago

@micdoug I started experience the same, did you find any solutions since?

It's solved on its own so I suppose it was something on my local network

iamtalhaasghar commented 5 months ago

I am also having very slow downloads on my networks. Not sure what the problem is. image

My wifi speed: image

sauravkhakurel commented 2 months ago

The best solution is to contact the ISP and let them resolve the issue. I did the same with my ISP and they were able to fix the problem within a few weeks. Most likely the issue is caused due to DNS misconfiguration on the ISP side.