status-go/vendor/github.com
Jakub Sokołowski fe8dab7391 go-ethereum: Drop throttling of inbound connections
This fix puts an end to a saga that essentially start during the
Status Prague Meetup at the end of October 2018. At the time we were
experiencing massive issues with `Connecting...` spinners in the app in the
venue we rented. We were pulling our hairs out what to do and we could not
find the cause of the issue at the time.

Three months later I deployed the following change:
https://github.com/status-im/infra-eth-cluster/commit/63a13eed

Which used `iptables` to map the `443` port onto our `30504` Status node port
using `PREROUTING` chain and `REDIRECT` jump in order to fix issues people
have been complaining about when using WiFi networks in various venues:
https://github.com/status-im/status-react/issues/6351

Our thinking when trying to resolve the reported issue assumed that some
networks might block outgoing connections on non-standard ports other than
the usual `80`(HTTP)/`443`(HTTPS) which would disrupt Status connectivity.
While this fix could have indeed helped a few edge cases, what it really
did was cause the Status node to stop seeing actual public IPs of the clients.

But __pure accident__ this change caused the code we inherited from
`go-ethereum` implementation of DevP2P protocol to stop throttling new
incoming connections, because the IP as which they appeared was a
`172.16.0.0/12` network address of the Docker bridge.

The `go-ethereum` code used the `!netutil.IsLAN(remoteIP)` check to
avoid throttling connections from local addresses, which included the
local Docker bridge address:
https://github.com/status-im/status-go/blob/82680830/vendor/github.com/ethereum/go-ethereum/p2p/netutil/net.go#L36

The fix intended to target a small number of networks with fortified
firewall configuration accidentally resolved our issues with
`Connecting...` prompts that our application showed us en masse during
our Prauge Meetup. Part of the reason for that is that venues like that
normally give out local IP addresses and use NAT to translate them onto
the only public IP address they possess.

Since out application is supposed to be usable from within networks
behind NAT like airport WiFi networks for example, it makes no sense to
keep the inbound connection throttle time implemented in `go-ethereum`.

I'm leaving `inboundThrottleTime` in because it's used to calculate
value for `dialHistoryExpiration` in:
`vendor/github.com/ethereum/go-ethereum/p2p/dial.go`

I believe reducing that value one we deploy this change should also
increase the speed with which the Status application is able to reconnect
to a node that was temporarily unavailable, instead waiting the 5*30 seconds.

Research issue: https://github.com/status-im/infra-eth-cluster/issues/35

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-02-16 20:38:47 +01:00
..
BurntSushi/toml Create a home submodule for Eth node bridges- Rename StatusBackend to GethStatusBackend 2019-11-27 17:02:09 +01:00
PuerkitoBio/goquery feat: add bookmarks table for the browser bookmarks 2020-11-16 13:31:34 -05:00
allegro/bigcache Verify ens endpoint, only against mainnet (#1657) 2019-11-04 11:08:22 +01:00
andybalholm/cascadia feat: add bookmarks table for the browser bookmarks 2020-11-16 13:31:34 -05:00
aristanetworks/goarista migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
beevik/ntp migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
beorn7/perks use prometheus/client_golang for metrics 2019-11-04 13:18:50 +01:00
btcsuite Use status-protocol-go/bridge/geth (#1638) 2019-10-14 09:53:38 +02:00
cenkalti/backoff/v3 Remove protocol and eth-node submodules (#1835) 2020-02-10 12:22:37 +01:00
cespare/xxhash/v2 Upgrade deps (#1892) 2020-03-09 08:55:58 +01:00
coreos/go-semver migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
davecgh/go-spew migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
deckarep/golang-set integrate status-protocol-go 2019-07-24 18:46:43 +02:00
edsrzf/mmap-go Verify ens endpoint, only against mainnet (#1657) 2019-11-04 11:08:22 +01:00
elastic/gosigar Add statusUpdate code (#1861) 2020-02-21 15:48:53 +01:00
ethereum/go-ethereum go-ethereum: Drop throttling of inbound connections 2021-02-16 20:38:47 +01:00
fjl/memsize Verify ens endpoint, only against mainnet (#1657) 2019-11-04 11:08:22 +01:00
gballet/go-libpcsclite Remove protocol and eth-node submodules (#1835) 2020-02-10 12:22:37 +01:00
go-playground Move to protobuf for Message type (#1706) 2019-12-05 17:25:34 +01:00
go-stack/stack migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
gogo/protobuf Add Commands (#1731) 2020-01-10 19:59:01 +01:00
golang feat: add bookmarks table for the browser bookmarks 2020-11-16 13:31:34 -05:00
golang-migrate/migrate/v4 Remove protocol and eth-node submodules (#1835) 2020-02-10 12:22:37 +01:00
google/uuid migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
gorilla/websocket Upgrade geth to 1.9.5 and Whisper (#1617) 2019-10-04 17:21:24 +02:00
hashicorp migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
huin/goupnp migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
ipfs Upgrade geth to 1.9.5 and Whisper (#1617) 2019-10-04 17:21:24 +02:00
jackpal Add statusUpdate code (#1861) 2020-02-21 15:48:53 +01:00
jbenet Add Commands (#1731) 2020-01-10 19:59:01 +01:00
jinzhu/copier Add datasync, v1messages & disable discovery topic options 2019-07-29 19:39:44 +02:00
karalabe/usb Remove protocol and eth-node submodules (#1835) 2020-02-10 12:22:37 +01:00
keighl/metabolize Add GitHub to whitelist for URL unfurling #11426 2021-01-11 11:15:09 +01:00
kilic/bls12-381 Feature/key compression (#1990) 2020-06-23 11:47:17 +01:00
koron/go-ssdp Add Commands (#1731) 2020-01-10 19:59:01 +01:00
leodido/go-urn Move to protobuf for Message type (#1706) 2019-12-05 17:25:34 +01:00
lib/pq Upgrade pq library 2021-01-27 09:23:11 +01:00
libp2p Add Commands (#1731) 2020-01-10 19:59:01 +01:00
lucasb-eyer/go-colorful Remove protocol and eth-node submodules (#1835) 2020-02-10 12:22:37 +01:00
mat/besticon feat: add bookmarks table for the browser bookmarks 2020-11-16 13:31:34 -05:00
mattn vendor 2020-07-30 20:20:56 +02:00
matttproud/golang_protobuf_extensions use prometheus/client_golang for metrics 2019-11-04 13:18:50 +01:00
minio Upgrade geth to 1.9.5 and Whisper (#1617) 2019-10-04 17:21:24 +02:00
mr-tron/base58 migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
multiformats Feature/key compression (#1990) 2020-06-23 11:47:17 +01:00
mutecomm/go-sqlcipher Add persistent datasync, use single database and handle negotiated filters (#1580) 2019-08-27 14:04:15 +02:00
nfnt/resize avoid division by 0 2020-12-17 14:10:00 +01:00
okzk/sdnotify add script for easier setup of mailserver 2019-10-10 11:27:32 +02:00
olekukonko/tablewriter vendor 2020-07-30 20:20:56 +02:00
oliamb/cutter make vendor 2020-12-17 14:10:00 +01:00
opentracing/opentracing-go Verify ens endpoint, only against mainnet (#1657) 2019-11-04 11:08:22 +01:00
pborman/uuid Upgrade geth to 1.9.5 and Whisper (#1617) 2019-10-04 17:21:24 +02:00
pkg/errors Upgrade deps (#1892) 2020-03-09 08:55:58 +01:00
pmezard/go-difflib Introduce the dependency vendoring tool: `dep`. (#551) 2018-01-25 14:08:43 +01:00
prometheus Upgrade deps (#1892) 2020-03-09 08:55:58 +01:00
rjeczalik/notify Verify ens endpoint, only against mainnet (#1657) 2019-11-04 11:08:22 +01:00
rs/cors Add statusUpdate code (#1861) 2020-02-21 15:48:53 +01:00
russolsen/transit migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
shopspring/decimal migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
spacemonkeygo/spacelog Upgrade geth to 1.9.5 and Whisper (#1617) 2019-10-04 17:21:24 +02:00
spaolacci/murmur3 migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
status-im Clean topics that we don't listen to 2021-01-26 09:39:57 +01:00
steakknife Upgrade geth to 1.9.5 and Whisper (#1617) 2019-10-04 17:21:24 +02:00
stretchr Clean topics that we don't listen to 2021-01-26 09:39:57 +01:00
syndtr/goleveldb migrate to go 1.12 and go modules 2019-06-12 13:12:00 +02:00
tsenart/tb Update Whisper and introduce rate limiting (#1673) 2019-11-18 11:22:23 +01:00
tyler-smith/go-bip39 Upgrade geth to 1.9.5 and Whisper (#1617) 2019-10-04 17:21:24 +02:00
vacp2p/mvds Fix datasync retry 2020-11-26 16:25:52 +01:00
wealdtech Remove protocol and eth-node submodules (#1835) 2020-02-10 12:22:37 +01:00
whyrusleeping Add Commands (#1731) 2020-01-10 19:59:01 +01:00
wsddn/go-ecdh Upgrade geth to 1.9.5 and Whisper (#1617) 2019-10-04 17:21:24 +02:00