neo-go/pkg/network
Roman Khimov cfb5058018 network: batch getdata replies
This is not exactly the protocol-level batching as was tried in #1770 and
proposed by neo-project/neo#2365, but it's a TCP-level change in that we now
Write() a set of messages and given that Go sets up TCP sockets with
TCP_NODELAY by default this is a substantial change, we have less packets
generated with the same amount of data. It doesn't change anything on properly
connected networks, but the ones with delays benefit from it a lot.

This also improves queueing because we no longer generate 32 messages to
deliver on transaction's GetData, it's just one stream of bytes with 32
messages inside.

Do the same with GetBlocksByIndex, we can have a lot of messages there too.

But don't forget about potential peer DoS attacks, if a peer is to request a
lot of big blocks we need to flush them before we process the whole set.
2022-10-21 17:16:32 +03:00
..
capability [#2442] English Check 2022-05-04 19:48:27 +03:00
extpool [#2442] English Check 2022-05-04 19:48:27 +03:00
payload *: use uint*Size and SignatureLen constants where appropriate 2022-10-05 10:45:52 +03:00
blockqueue.go [#2442] English Check 2022-05-04 19:48:27 +03:00
blockqueue_test.go [#2442] English Check 2022-05-04 19:48:27 +03:00
compress.go network: check compressed payload size in decompress 2022-03-24 17:22:55 +03:00
discovery.go network: implement adaptive peer requests 2022-10-14 15:53:32 +03:00
discovery_test.go network: simplify discoverer, make it almost a lib 2022-10-14 15:53:32 +03:00
fuzz_test.go *: bump minimum supported go version 2022-08-08 13:59:32 +03:00
helper_test.go network: batch getdata replies 2022-10-21 17:16:32 +03:00
message.go golangci: enable errorlint and fix everything it found 2022-09-02 18:36:23 +03:00
message_string.go transaction: fix Rules stringer, it's WitnessRules in C# 2022-05-06 10:08:09 +03:00
message_test.go network: check compressed payload size in decompress 2022-03-24 17:22:55 +03:00
notary_feer.go network: decouple it from blockchainer.Blockchainer 2022-01-14 19:57:16 +03:00
peer.go network: batch getdata replies 2022-10-21 17:16:32 +03:00
prometheus.go network: add prometheus histogram with cmd processing time 2022-10-17 22:51:16 +03:00
server.go network: batch getdata replies 2022-10-21 17:16:32 +03:00
server_config.go network: add BroadcastFactor to control gossip, fix #2678 2022-10-14 15:53:32 +03:00
server_test.go network: separate tx handling from msg handling 2022-10-21 12:11:24 +03:00
state_sync.go network: decouple it from blockchainer.Blockchainer 2022-01-14 19:57:16 +03:00
tcp_peer.go network: batch getdata replies 2022-10-21 17:16:32 +03:00
tcp_peer_test.go network: drop unused EnqueueMessage interface from Peer 2022-10-12 15:27:08 +03:00
tcp_transport.go network: use net.ErrClosed to check network connection was closed 2022-03-17 19:39:18 +03:00
transport.go protocol: add capabilities to version payload 2020-05-27 19:01:14 +03:00