From d1ada1872155558b5347e2382464eb04de92526b Mon Sep 17 00:00:00 2001 From: Tess Rinearson Date: Fri, 6 Dec 2019 16:59:50 +0100 Subject: [PATCH] docs/introduction: add notes on architecture intro (#4175) --- docs/introduction/architecture.md | 113 ++++++++++++++++++++++++++++++ docs/introduction/tcp-window.png | Bin 0 -> 64976 bytes 2 files changed, 113 insertions(+) create mode 100644 docs/introduction/architecture.md create mode 100644 docs/introduction/tcp-window.png diff --git a/docs/introduction/architecture.md b/docs/introduction/architecture.md new file mode 100644 index 000000000..066814f23 --- /dev/null +++ b/docs/introduction/architecture.md @@ -0,0 +1,113 @@ +# Tendermint Architectural Overview +_November 2019_ + +Over the next few weeks, @brapse, @marbar3778 and I (@tessr) are having a series of meetings to go over the architecture of Tendermint Core. These are my notes from these meetings, which will either serve as an artifact for onboarding future engineers; or will provide the basis for such a document. + +## Communication + +There are three forms of communication (e.g., requests, responses, connections) that can happen in Tendermint Core: *internode communication*, *intranode communication*, and *client communication*. +- Internode communication: Happens between a node and other peers. This kind of communication happens over TCP or HTTP. More on this below. +- Intranode communication: Happens within the node itself (i.e., between reactors or other components). These are typically function or method calls, or occasionally happen through an event bus. +- Client communiation: Happens between a client (like a wallet or a browser) and a node on the network. + +### Internode Communication + +Internode communication can happen in two ways: +1. TCP connections through the p2p package + - Most common form of internode communication + - Connections between nodes are persisted and shared across reactors, facilitated by the switch. (More on the switch below.) +2. RPC over HTTP + - Reserved for short-lived, one-off requests + - Example: reactor-specific state, like height + - Also possible: websocks connected to channels for notifications (like new transactions) + +### P2P Business (the Switch, the PEX, and the Address Book) + +When writing a p2p service, there are two primary responsibilities: +1. Routing: Who gets which messages? +2. Peer management: Who can you talk to? What is their state? And how can you do peer discovery? + +The first responsibility is handled by the Switch: +- Responsible for routing connections between peers +- Notably _only handles TCP connections_; RPC/HTTP is separate +- Is a dependency for every reactor; all reactors expose a function `setSwitch` +- Holds onto channels (channels on the TCP connection--NOT Go channels) and uses them to route +- Is a global object, with a global namespace for messages +- Similar functionality to libp2p + +TODO: More information (maybe) on the implementation of the Switch. + +The second responsibility is handled by a combination of the PEX and the Address Book. + + TODO: What is the PEX and the Address Book? + +#### The Nature of TCP, and Introduction to the `mconnection` +Here are some relevant facts about TCP: +1. All TCP connections have a "frame window size" which represents the packet size to the "confidence;" i.e., if you are sending packets along a new connection, you must start out with small packets. As the packets are received successfully, you can start to send larger and larger packets. (This curve is illustrated below.) This means that TCP connections are slow to spin up. +3. The syn/ack process also means that there's a high overhead for small, frequent messages +4. Sockets are represented by file descriptors. + +![tcp-window](tcp-window.png) + +In order to have performant TCP connections under the conditions created in Tendermint, we've created the `mconnection`, or the multiplexing connection. It is our own protocol built on top of TCP. It lets us reuse TCP connections to minimize overhead, and it keeps the window size high by sending auxiliary messages when necessary. + +The `mconnection` is represented by a struct, which contains a batch of messages, read and write buffers, and a map of channel IDs to reactors. It communicates with TCP via file descriptors, which it can write to. There is one `mconnection` per peer connection. + +The `mconnection` has two methods: `send`, which takes a raw handle to the socket and writes to it; and `trySend`, which writes to a different buffer. (TODO: which buffer?) + +The `mconnection` is owned by a peer, which is owned (potentially with many other peers) by a (global) transport, which is owned by the (global) switch: + +``` +switch + transport + peer + mconnection + peer + mconnection + peer + mconnection +``` + +## node.go + +node.go is the entrypoint for running a node. It sets up reactors, sets up the switch, and registers all the RPC endpoints for a node. + +## Types of Nodes +1. Validator Node: +2. Full Node: +3. Seed Node: + +TODO: Flesh out the differences between the types of nodes and how they're configured. + +## Reactors + +Here are some Reactor Facts: +- Every reactor holds a pointer to the global switch (set through `SetSwitch()`) +- The switch holds a pointer to every reactor (`addReactor()`) +- Every reactor gets set up in node.go (and if you are using custom reactors, this is where you specify that) +- `addReactor` is called by the switch; `addReactor` calls `setSwitch` for that reactor +- There's an assumption that all the reactors are added before +- Sometimes reactors talk to each other by fetching references to one another via the switch (which maintains a pointer to each reactor). **Question: Can reactors talk to each other in any other way?** + +Furthermore, all reactors expose: +1. A TCP channel +2. A `receive` method +3. An `addReactor` call + +The `receive` method can be called many times by the mconnection. It has the same signature across all reactors. + +The `addReactor` call does a for loop over all the channels on the reactor and creates a map of channel IDs->reactors. The switch holds onto this map, and passes it to the _transport_, a thin wrapper around TCP connections. + +The following is an exhaustive (?) list of reactors: +- Blockchain Reactor +- Consensus Reactor +- Evidence Reactor +- Mempool Reactor +- PEX Reactor + +Each of these will be discussed in more detail later. + +### Blockchain Reactor +The blockchain reactor has two responsibilities: +1. Serve blocks at the request of peers +2. TODO: learn about the second responsibility of the blockchain reactor \ No newline at end of file diff --git a/docs/introduction/tcp-window.png b/docs/introduction/tcp-window.png new file mode 100644 index 0000000000000000000000000000000000000000..002afd73f693f6744f0a535e87e886a3b1997ef1 GIT binary patch literal 64976 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 d^rZX}!`miGeS6Q@bPxPTK}J