Co-authored-by: Age Manning <Age@AgeManning.com>
This commit is contained in:
parent
6b68c628df
commit
39bd511838
@ -28,6 +28,7 @@
|
|||||||
* [WebSocket](./websockets.md)
|
* [WebSocket](./websockets.md)
|
||||||
* [Advanced Usage](./advanced.md)
|
* [Advanced Usage](./advanced.md)
|
||||||
* [Database Configuration](./advanced_database.md)
|
* [Database Configuration](./advanced_database.md)
|
||||||
|
* [Advanced Networking](./advanced_networking.md)
|
||||||
* [Contributing](./contributing.md)
|
* [Contributing](./contributing.md)
|
||||||
* [Development Environment](./setup.md)
|
* [Development Environment](./setup.md)
|
||||||
* [FAQs](./faq.md)
|
* [FAQs](./faq.md)
|
||||||
|
77
book/src/advanced_networking.md
Normal file
77
book/src/advanced_networking.md
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
# Advanced Networking
|
||||||
|
|
||||||
|
Lighthouse's networking stack has a number of configurable parameters that can
|
||||||
|
be adjusted to handle a variety of network situations. This section outlines
|
||||||
|
some of these configuration parameters and their consequences at the networking
|
||||||
|
level and their general intended use.
|
||||||
|
|
||||||
|
|
||||||
|
### Target Peers
|
||||||
|
|
||||||
|
The beacon node has a `--target-peers` CLI parameter. This allows you to
|
||||||
|
instruct the beacon node how many peers it should try to find and maintain.
|
||||||
|
Lighthouse allows an additional 10% of this value for nodes to connect to us.
|
||||||
|
Every 30 seconds, the excess peers are pruned. Lighthouse removes the
|
||||||
|
worst-performing peers and maintains the best performing peers.
|
||||||
|
|
||||||
|
It may be counter-intuitive, but having a very large peer count will likely
|
||||||
|
have a degraded performance for a beacon node in normal operation and during
|
||||||
|
sync.
|
||||||
|
|
||||||
|
Having a large peer count means that your node must act as an honest RPC server
|
||||||
|
to all your connected peers. If there are many that are syncing, they will
|
||||||
|
often be requesting a large number of blocks from your node. This means you
|
||||||
|
node must perform a lot of work reading and responding to these peers. If you
|
||||||
|
node is over-loaded with peers and cannot respond in time, other Lighthouse
|
||||||
|
peers will consider you non-performant and disfavour you from their peer
|
||||||
|
stores. You node will also have to handle and manage the gossip and extra
|
||||||
|
bandwidth that comes from having these extra peers. Having a non-responsive
|
||||||
|
node (due to overloading of connected peers), degrades the network as a whole.
|
||||||
|
|
||||||
|
It is often the belief that a higher peer counts will improve sync times.
|
||||||
|
Beyond a handful of peers, this is not true. On all current tested networks,
|
||||||
|
the bottleneck for syncing is not the network bandwidth of downloading blocks,
|
||||||
|
rather it is the CPU load of processing the blocks themselves. Most of the
|
||||||
|
time, the network is idle, waiting for blocks to be processed. Having a very
|
||||||
|
large peer count will not speed up sync.
|
||||||
|
|
||||||
|
For these reasons, we recommend users do not modify the `--target-peer` count
|
||||||
|
drastically and use the (recommended) default.
|
||||||
|
|
||||||
|
|
||||||
|
### NAT Traversal (Port Forwarding)
|
||||||
|
|
||||||
|
Lighthouse, by default, used port 9000 for both TCP and UDP. Lighthouse will
|
||||||
|
still function if it is behind a NAT without any port mappings. Although
|
||||||
|
Lighthouse still functions, we recommend that some mechanism is used to ensure
|
||||||
|
that your Lighthouse node is publicly accessible. This will typically improve
|
||||||
|
your peer count, allow the scoring system to find the best/most favourable
|
||||||
|
peers for your node and overall improve the eth2 network.
|
||||||
|
|
||||||
|
Lighthouse currently supports UPnP. If UPnP is enabled on your router,
|
||||||
|
Lighthouse will automatically establish the port mappings for you (the beacon
|
||||||
|
node will inform you of established routes in this case). If UPnP is not
|
||||||
|
enabled, we recommend you manually set up port mappings to both of Lighthouse's
|
||||||
|
TCP and UDP ports (9000 by default).
|
||||||
|
|
||||||
|
### ENR Configuration
|
||||||
|
|
||||||
|
Lighthouse has a number of CLI parameters for constructing and modifying the
|
||||||
|
local Ethereum Node Record (ENR). Examples are `--enr-address`,
|
||||||
|
`--enr-udp-port`, `--enr-tcp-port` and `--disable-enr-auto-update`. These
|
||||||
|
settings allow you construct your initial ENR. Their primary intention is for
|
||||||
|
setting up boot-like nodes and having a contactable ENR on boot. On normal
|
||||||
|
operation of a Lighthouse node, none of these flags need to be set. Setting
|
||||||
|
these flags incorrectly can lead to your node being incorrectly added to the
|
||||||
|
global DHT which will degrades the discovery process for all Eth2 peers.
|
||||||
|
|
||||||
|
The ENR of a Lighthouse node is initially set to be non-contactable. The
|
||||||
|
in-built discovery mechanism can determine if you node is publicly accessible,
|
||||||
|
and if it is, it will update your ENR to the correct public IP and port address
|
||||||
|
(meaning you do not need to set it manually). Lighthouse persists its ENR, so
|
||||||
|
on reboot it will re-load the settings it had discovered previously.
|
||||||
|
|
||||||
|
Modifying the ENR settings can degrade the discovery of your node making it
|
||||||
|
harder for peers to find you or potentially making it harder for other peers to
|
||||||
|
find each other. We recommend not touching these settings unless for a more
|
||||||
|
advanced use case.
|
@ -83,6 +83,11 @@ This is one of the earlier logs outputted, so you may have to scroll up or perfo
|
|||||||
> the genesis of the network is known (approx 2 days before the network
|
> the genesis of the network is known (approx 2 days before the network
|
||||||
> launches).
|
> launches).
|
||||||
|
|
||||||
|
> Note: Docker exposes ports TCP 9000 and UDP 9000 by default. Although not
|
||||||
|
> strictly required, we recommend setting up port forwards to expose these
|
||||||
|
> ports publicly. For more information see the FAQ or the [Advanced Networking](advanced_networking.html)
|
||||||
|
> section
|
||||||
|
|
||||||
To find an estimate for how long your beacon node will take to finish syncing, look for logs that look like this:
|
To find an estimate for how long your beacon node will take to finish syncing, look for logs that look like this:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -55,6 +55,12 @@ Start your beacon node with:
|
|||||||
> Current values are either `altona` or `medalla`. This is true for all the
|
> Current values are either `altona` or `medalla`. This is true for all the
|
||||||
> following commands in this document.
|
> following commands in this document.
|
||||||
|
|
||||||
|
> Note: Lighthouse, by default, opens port 9000 over TCP and UDP. Although not
|
||||||
|
> strictly required, we recommend setting up port forwards to expose these
|
||||||
|
> ports publicly. For more information see the FAQ or the [Advanced Networking](advanced_networking.html)
|
||||||
|
> section
|
||||||
|
|
||||||
|
|
||||||
You can also pass an external http endpoint (e.g. Infura) for the Eth1 node using the `--eth1-endpoint` flag:
|
You can also pass an external http endpoint (e.g. Infura) for the Eth1 node using the `--eth1-endpoint` flag:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -26,7 +26,6 @@ Once you've completed **either one** of these steps, you can move onto the next
|
|||||||
|
|
||||||
> Take note when running Lighthouse. Use the --testnet parameter to specify the testnet you whish to participate in. Medalla is currently the default, so make sure to use --testnet altona to join the Altona testnet.
|
> Take note when running Lighthouse. Use the --testnet parameter to specify the testnet you whish to participate in. Medalla is currently the default, so make sure to use --testnet altona to join the Altona testnet.
|
||||||
|
|
||||||
|
|
||||||
## 2. Submit your deposit to Goerli
|
## 2. Submit your deposit to Goerli
|
||||||
|
|
||||||
<div class="form-signin" id="uploadDiv">
|
<div class="form-signin" id="uploadDiv">
|
||||||
|
@ -79,3 +79,48 @@ repeats until the queue is cleared.
|
|||||||
|
|
||||||
Once a validator has been activated, there's no more waiting! It's time to
|
Once a validator has been activated, there's no more waiting! It's time to
|
||||||
produce blocks and attestations!
|
produce blocks and attestations!
|
||||||
|
|
||||||
|
### 3. Do I need to set up any port mappings
|
||||||
|
|
||||||
|
It is not strictly required to open any ports for Lighthouse to connect and
|
||||||
|
participate in the network. Lighthouse should work out-of-the-box. However, if
|
||||||
|
your node is not publicly accessible (you are behind a NAT or router that has
|
||||||
|
not been configured to allow access to Lighthouse ports) you will only be able
|
||||||
|
to reach peers who have a set up that is publicly accessible.
|
||||||
|
|
||||||
|
There are a number of undesired consequences of not making your Lighthouse node
|
||||||
|
publicly accessible.
|
||||||
|
|
||||||
|
Firstly, it will make it more difficult for your node to find peers, as your
|
||||||
|
node will not be added to the global DHT and other peers will not be able
|
||||||
|
to initiate connections with you.
|
||||||
|
Secondly, the peers in your peer store are more likely to end connections with
|
||||||
|
you and be less performant as these peers will likely be overloaded with
|
||||||
|
subscribing peers. The reason being, that peers that have correct port
|
||||||
|
forwarding (publicly accessible) are in higher demand than regular peers as other nodes behind NAT's
|
||||||
|
will also be looking for these peers.
|
||||||
|
Finally, not making your node publicly accessible degrades the overall network, making it more difficult for other
|
||||||
|
peers to join and degrades the overall connectivity of the global network.
|
||||||
|
|
||||||
|
For these reasons, we recommend that you make your node publicly accessible.
|
||||||
|
|
||||||
|
Lighthouse supports UPnP. If you are behind a NAT with a router that supports
|
||||||
|
UPnP you can simply ensure UPnP is enabled (Lighthouse will inform you in its
|
||||||
|
initial logs if a route has been established). You can also manually set up
|
||||||
|
port mappings in your router to your local Lighthouse instance. By default,
|
||||||
|
Lighthouse uses port 9000 for both TCP and UDP. Opening both these ports will
|
||||||
|
make your Lighthouse node maximally contactable.
|
||||||
|
|
||||||
|
#### 4. I have a low peer count and it is not increasing
|
||||||
|
|
||||||
|
If you cannot find *ANY* peers at all. It is likely that you have incorrect
|
||||||
|
testnet configuration settings. Ensure that the network you wish to connect to
|
||||||
|
is correct (the beacon node outputs the network it is connecting to in the
|
||||||
|
initial boot-up log lines). On top of this, ensure that you are not using the
|
||||||
|
same `datadir` as a previous network. I.e if you have been running the
|
||||||
|
`medalla` testnet and are now trying to join a new testnet but using the same
|
||||||
|
`datadir` (the `datadir` is also printed out in the beacon node's logs on
|
||||||
|
boot-up).
|
||||||
|
|
||||||
|
If you find yourself with a low peer count and is not reaching the target you
|
||||||
|
expect. Try setting up the correct port forwards as described in `3.` above.
|
||||||
|
Loading…
Reference in New Issue
Block a user