Commit Graph
89 Commits
Author SHA1 Message Date
Pierre Krieger 35a67b31e5 Add a 16MiB hard limit to Substrate packets (#2009) 2019-03-15 14:52:22 +01:00
Pierre Krieger e91426ac77 Add a warning when banning or dropping reserved peers (#1976) 2019-03-12 15:43:22 +01:00
Pierre Krieger ead437d0f4 Remove dialing without a PeerId 2019-03-12 11:47:08 +01:00
Pierre Krieger a3a5031d9d Add timeouts for initialization and opening (#1948)
* Add timeouts for initialization and opening

* Don't keep alive opening and init

* Reset deadline when timer error
2019-03-11 12:09:03 +01:00
Pierre Krieger 0a300b061e Remove the error from network-libp2p (#1950) 2019-03-11 11:40:22 +01:00
Pierre Krieger 560057ebfd Update rw-stream-sink (#1954) 2019-03-10 19:36:11 +01:00
Pierre Krieger 97fd1831e9 Fix old connections not being reused (#1934)
* Fix old connections not being reused

* Address issues
2019-03-07 22:15:40 +01:00
Pierre Krieger bcda2fafa0 Add even more diagnostic messages (#1925)
* Add even more diagnostic messages

* Fix
2019-03-05 22:44:55 +01:00
Pierre Krieger ff331e7fdc Bump libp2p to 0.4.2 (#1891)
* Bump libp2p to 0.4.2

* Update yamux
2019-03-01 19:12:50 +01:00
Pierre Krieger 90eef10d5c Address review in #1884 (#1906) 2019-03-01 11:40:57 +01:00
Pierre Krieger c21d7436cc Add an RPC request for the state of the network (#1884)
* Add an RPC request for the state of the network

* Fix concerns

* Fix tests

* Replace comment with TODO

* Rename the RPC
2019-02-28 19:28:38 +01:00
Pierre Krieger 34fccecc02 Add names to tokio threads (#1866) 2019-02-25 15:40:51 -05:00
Pierre Krieger 733ce7d616 Split Substrate messages into multiple substreams (#1796)
* Split Substrate messages into multiple substreams

* Add back Clogged event
2019-02-25 11:55:45 +01:00
Pierre Krieger eaa8f0c97f Add back logging when we ban a peer (#1843)
* Add back logging when we ban a peer

* Make it less verbose
2019-02-22 13:48:59 +01:00
Pierre Krieger 2b71b3e84b Update to libp2p v0.4 (#1836) 2019-02-21 10:04:53 +01:00
Pierre Krieger f5ba8a2ad9 Report the network PeerId to the telemetry (#1835)
* Report the network PeerId to the telemetry

* Fix accidental paste
2019-02-21 10:03:47 +01:00
Pierre Krieger 8a3f52bdd8 Fix #1825 (#1828)
* Fix #1825

* Add comment
2019-02-21 10:02:27 +01:00
Pierre Krieger 6e26c52191 Add debug name in node infos (#1769) 2019-02-12 18:03:46 +01:00
Pierre Krieger 9e999cdd81 Make network-libp2p's Service generic over the message (#1708)
* Make network-libp2p's Service generic over the message

* Apply suggestions from code review

Co-Authored-By: tomaka <pierre.krieger1708@gmail.com>

* Fix warning
2019-02-12 15:36:15 +01:00
Pierre Krieger d93769b0fd Fix infinite loop in reserved mode (#1759) 2019-02-11 15:04:23 +00:00
Pierre Krieger 35a4aa638c Make the discovery test more strict (#1721) 2019-02-11 13:47:14 +01:00
Pierre Krieger bf2dd5f419 Reduce the spam from network misbehaviours (#1750)
* Reduce the spam from network misbehaviours

* Add protocol id to misbehaviour
2019-02-11 11:39:14 +01:00
Pierre Krieger 3509b69c4c Remove warning about empty list of identify addresses (#1739) 2019-02-08 15:39:15 +03:00
Pierre Krieger 7afe69066f Fix panic in custom protocol handler (#1723) 2019-02-07 16:16:41 +00:00
Pierre Krieger 0da92bf114 Protect against flood of addresses (#1718) 2019-02-07 14:54:59 +01:00
Pierre Krieger 593c292f14 Update libp2p-core to 0.3.4 (#1720) 2019-02-07 14:30:17 +01:00
Pierre Krieger b6fd967dfb Update libp2p to v0.3 (#1634)
* Update libp2p

* Some more diagnostics

* 30 seconds back to 5 seconds

* Bump libp2p-core and improve test

* Fix runtime Cargo.lock

* More work

* Finish upgrade to libp2p 0.3

* Add a maximum of 60 seconds for the rounds

* Remove env_logger

* Update Cargo.lock

* Update Cargo.lock in test-runtime

* Fix test compilation

* Make the test pass

* Add identify addresses to Kademlia

* Don't connect to nodes we're already connected to

* Add warning for non-Substrate nodes

* Fix external address not added

* Start in Enabled mode
2019-02-06 16:39:22 +01:00
Pierre Krieger ec790acf4d Print the local node address again (#1628) 2019-01-30 23:33:14 +01:00
Pierre Krieger a1586df41b Report the average network bandwidth (#1551)
* Report the average network bandwidth

* Fix concerns
2019-01-25 10:34:34 +00:00
Pierre Krieger d30a8e0bc3 Log the clogging networking messages (#1532) 2019-01-23 15:24:25 +01:00
Pierre Krieger cd86643f33 Report when peer is clogged (#1528) 2019-01-23 14:30:20 +01:00
Pierre Krieger 3c7d6c7b72 Add some networking tests (#1480) 2019-01-21 19:26:12 +01:00
Pierre Krieger f67c2cc181 Store identification info about the remote (#1500)
* Store identification info about the remote

* Add node name on the wire

* Fix tests
2019-01-21 14:33:25 +01:00
Pierre Krieger 763d133173 Put back support for WebSockets in the transport (#1486) 2019-01-19 12:41:17 +01:00
Pierre Krieger b009b42a68 Update network-libp2p to edition 2018 (#1481) 2019-01-19 12:38:52 +01:00
Pierre Krieger f1f32ac620 Don't queue messages after shutdown (#1476) 2019-01-19 12:37:07 +01:00
Pierre Krieger 6ee9b6db25 Fix Dockerfile (#1485)
* Fix Dockerfile

* Use ENTRYPOINT instead of CMD
2019-01-19 12:34:19 +01:00
Pierre Krieger eb000fb1ae Remove warning for large buffer (#1357) 2019-01-17 09:33:39 +01:00
Pierre Krieger 9018d752dc Update libp2p-kad and libp2p-secio (#1447)
* Update libp2p-kad and libp2p-secio

* Fix concern
2019-01-16 12:59:24 -03:00
Pierre Krieger a0d458aa06 Update to latest libp2p (#1386)
* Update to latest libp2p

* Fix indentations

* Add basic test

* Apply suggestions from code review

Co-Authored-By: tomaka <pierre.krieger1708@gmail.com>

* Remove Mutex from topology

* Remove unused method

* Fix concerns
2019-01-14 13:38:36 +01:00
Pierre Krieger 42c30609d3 Update ring to 0.13 and subtle to 2.0 (#1383) 2019-01-10 13:32:27 +01:00
Pierre Krieger 74e907f3cb Some tweaks in the network crate (#1108)
* Move Roles to network::config

* Make network::config public

* Move NetworkConfig and NonReservedMode to config

* Move Params to config

* Move node_id() to NetworkManager and fix tests

* Rename Specialization to NetworkSpecialization
2018-11-14 11:25:16 +01:00
Pierre Krieger f94bba0802 Remove dependency on libp2p from cli (#1107) 2018-11-13 16:26:53 +01:00
Pierre Krieger b76ba06472 Some minor TODOs removal (#1102)
* Only reconnect if topology changed

* Minor changes
2018-11-12 17:54:57 +01:00
Pierre Krieger fcae7ac582 Switch to libp2p master (#931) 2018-11-05 19:22:26 +01:00
Pierre Krieger 15fe5f7540 Remove the packet ID system (#900) 2018-10-16 12:57:42 +01:00
Pierre Krieger 8050979660 Rename min-peers and max-peers CLI options (#909) 2018-10-16 08:34:59 +01:00
Pierre Krieger 0666759b16 Clean up the networking layer (#881) 2018-10-08 18:20:38 +02:00
Pierre Krieger d14700f7b6 The NodeId is always available in the session info (#859) 2018-10-01 18:31:07 +01:00
Pierre Krieger 79d538ee66 Clean up the "custom protocol" code (#832)
* No longer use a channel for custom protocols

* Fix warnings

* Add graceful shutdown and comments

* Minor cleanups

* Add warning if queue goes over threshold

* Increase threshold

* Address grumble
2018-09-29 12:01:23 +01:00
Pierre Krieger dea800586f Remove accidentally-added .cargo/config (#806) 2018-09-26 17:59:23 +01:00
Pierre Krieger 52dbf0cace Rewrite the libp2p networking (#742)
* Rewrite the libp2p networking

* Fix erroneous replacement during rebase

* Update libp2p

* Update libp2p

* Remove the logic error about useless substreams

* Use the new NodeHandler system of libp2p

* Commit the Cargo.lock

* Upgrade yamux

* Forward port latest changes

* Fix compilation issues

* Implement the external URL

* Update to latest networking fixes

* Forward port rest of v0.2

* Fix reserved peers being dropped when we're full
2018-09-26 11:56:32 +02:00
Pierre Krieger abf64386bb Improvements to the Kademlia system (#688) 2018-09-07 18:56:38 +02:00
Pierre Krieger 28d3c2afe9 Use BufReader and BufWriter (#684)
* Use BufReader and BufWriter

* Add TODOs
2018-09-07 18:54:51 +02:00
Pierre Krieger af3ad2109f Update to latest libp2p (#673) 2018-09-06 14:56:41 +02:00
Pierre Krieger 0d422878a3 Upgrade to libp2p master (#660) 2018-09-05 09:05:28 +02:00
Pierre Krieger 26ebf3a0a0 Fix warnings in networking (#652) 2018-09-04 10:26:54 +02:00
Pierre Krieger 360ffa2dbb Add a reputation system (#645)
* Add a reputation system

* Fix tests

* Don't try to dial peers to which we are already connected

* Use the master branch of libp2p
2018-09-04 08:52:20 +02:00
Pierre Krieger eb10c392ce Allow specifying listening multiaddresses (#577) 2018-08-28 12:16:51 +01:00
Pierre Krieger 68c1fc0b66 Update libp2p (#559) 2018-08-14 13:14:04 +02:00
Pierre Krieger 3128f258ba Update libp2p and some log (#532)
* Update libp2p and some log and yamux

* Replace trace! with info!

* Only have one log message on disconnect
2018-08-10 13:00:16 +02:00
Pierre Krieger 6f4a401afa Some networking cleanups (#504)
* Some networking cleanups

* Fix tests

* Fix wrong port in new_local
2018-08-08 20:05:40 +02:00
Pierre Krieger 9b0c23ac86 Build with locked Cargo.lock on CI (#514) 2018-08-08 17:01:57 +02:00
Pierre Krieger 11b9496a6a NetworkService::new starts the network (#462) 2018-08-06 11:57:08 +02:00
Pierre Krieger 1725fcef18 Merge pull request #454 from yuelipeng/master
Update README.adoc
2018-07-31 11:50:29 +02:00
Pierre Krieger 9dd746e867 Make ping unidirectional (#458) 2018-07-31 10:19:38 +02:00
Pierre Krieger fb2a8ada37 Update libp2p again (#445) 2018-07-29 09:56:02 +02:00
Pierre Krieger 2cb4ed8dcc Fix the public key of bootnode 3 (#441) 2018-07-28 17:33:50 +02:00
Pierre Krieger 53a68d8b9f Update libp2p (#442) 2018-07-28 14:55:43 +01:00
Pierre Krieger b1a3552aa0 Switch to the master branch of libp2p (#427)
* Switch to the master branch of libp2p

* Fixed having to clear manually

* Fix TTL of bootstrap nodes

* Speed up compilation time

* Update libp2p

* Remove obsolete comment
2018-07-28 10:42:26 +01:00
Pierre Krieger 988440a368 Fix memory leaks in libp2p (#432)
* Fix memory leaks in libp2p

* Fix memory leaks in libp2p
2018-07-27 16:09:49 +02:00
Pierre Krieger 1b0e3e57dd Better logging for public key mismatch (#429) 2018-07-27 09:35:24 +02:00
Pierre Krieger e65672575f Add some logging if the timeouts stream ends (#414) 2018-07-24 15:54:19 +02:00
Pierre Krieger fcb30f4009 General multiplexing fixes (#408) 2018-07-23 15:58:48 +02:00
Pierre Krieger 625918394a Introduce support for yamux (#388) 2018-07-20 00:44:21 +02:00
Pierre Krieger 831810b155 Register protocols at the same time as we start (#385)
* Register protocols at the same time as we start

* Fix tests
2018-07-19 20:50:07 +02:00
Pierre Krieger 0fbf66b07e More networking fixes (#384)
* Don't connect to ourselves for Kademlia

* Improve log messages

* Manually drop connections

* Kademlia is now 32 seconds

* Fix potential panic

* Fix other potential panic

* No longer pass the endpoint everywhere
2018-07-19 17:56:39 +02:00
Pierre Krieger bcd2f274f9 Network improvements (#374)
* Ping active connections

* Bump rust-libp2p

* Deny connection attempts if we're already connected

* Properly check max_peers against custom connections

* Fix set_until not immediately called

* Clean up unusued connections and stop pinging them

* Disconnect Kad connections after 20 seconds of inactivity
2018-07-19 15:22:07 +02:00
Pierre Krieger 3dfd53cc86 Timeouts now repeat forever (#372) 2018-07-18 17:59:31 +02:00
Pierre Krieger 4dfa17ab37 Fix style in #364 (#365) 2018-07-18 14:34:05 +02:00
Pierre Krieger de168ca034 Fix the networking (#364)
* Serve only non-empty Kademlia nodes

* Use the number of custom protos to determine whether to open more

* Add timeout when connecting

* Connect to random peers from the peer store

* Various adjustements

* Typo

* Explicitely connect to bootnodes

* Fix potential overflow
2018-07-18 13:55:38 +02:00
Pierre Krieger 1809f0596b Fix install command in README (#354) 2018-07-17 20:31:34 +02:00
Pierre Krieger 428682d3b5 More robust connections (#343)
* Make Kademlia connection more robust

* Make custom connetions more robust

* Fix potential deadlock

* Style and minor changes

* Upgrade rust-libp2p
2018-07-17 17:14:06 +02:00
Pierre Krieger bb8987df28 Better reporting in libp2p (#337) 2018-07-16 19:11:19 +02:00
Pierre Krieger 801747cb76 Fix nodes not connecting to each other (#330)
* Fix nodes not connecting to each other

* Only report external addresses
2018-07-16 14:27:11 +02:00
Pierre Krieger b3916c2999 Remove dependency on parity/network (#323)
* Remove dependency on parity/network

* Remove dependency on RLP as well

* Fix tests

* Fix tests again
2018-07-15 19:25:29 +02:00
Pierre Krieger e32b77ffdc Disable peers only for 5 minutes (#320)
* Disable peers only for 5 minutes

* Fix formatting
2018-07-15 15:14:00 +02:00
Pierre Krieger 5924b361a3 Switch from devp2p to libp2p (#268)
* Switch from devp2p to libp2p

* Move the keys in the network state

* Properly load, store or generate private key

* Some robustness

* Update for latest libp2p

* Allow secio

* Don't open a new Kademlia connec all the time

* Handle Kademlia disconnection

* Set correct permissions on key file

* Improvements to secret key storage

* Flush the peer store at Kademlia requests

* Use RAII guards for disconnection

* Some misc work

* Set informations about peers

* Fix tests and external URL

* Fix some style

* Split obtain_private_key into multiple function

* More style fixes

* More style fixes

* Fix some concerns

* Turn // into ///

* More style fixes

* More style fixes

* Add annotations to unreachable!

* Fix style again

* Remove commented out code

* Fix test year

* More concerns
2018-07-15 11:45:37 +02:00
Pierre Krieger 094b2568b2 Amend #205 (#206) 2018-06-07 13:39:11 +02:00