Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
37d860a
Windows is now supported in the quickstart (#143)
EdJoJob Feb 6, 2020
83a44cb
quickstart updates all round (#141)
joshuafernandes Feb 9, 2020
693c405
Fixed typo (#150)
MadelineMurray Feb 10, 2020
31b556b
Add multi-tenancy information. (#131)
bgravenorst Feb 10, 2020
15123df
Apply renames for the quickstart repo (#152)
EdJoJob Feb 12, 2020
5e5158b
Added content on protocol upgrades (#132)
MadelineMurray Feb 13, 2020
95f0019
Fixed Ansible link and renamed topic (#168)
MadelineMurray Feb 14, 2020
fb8ffad
permissioning (#170)
wslyvh Feb 14, 2020
ba3df57
Vale and mdlint editorial updates - DCO.md (#162)
Feb 14, 2020
037b6d6
updated CI and customised checks (#165)
NicolasMassart Feb 19, 2020
b44dbc5
Added new NAT options (#179)
MadelineMurray Feb 20, 2020
03e595b
Editorial mdlint vale updates for Concepts/Transactions directory (#185)
Feb 20, 2020
56f0284
Editorial mklint and vale updates in Concepts/Permissioning dir (#181)
Feb 20, 2020
aa0b4f5
mdlint and vale editorial updates in Concepts/Consensus-Protocols dir…
Feb 20, 2020
15d207e
mdlint and vale editorial edits in the Concepts directory (#177)
Feb 20, 2020
0776f3a
vale and mklint editorial updates - CONTRIBUTING.md (#163)
Feb 20, 2020
80a8d9b
mdlint and vale editorial updates - index.md (#169)
Feb 20, 2020
1a2bef7
Added plugins_reloadPluginConfig (#184)
MadelineMurray Feb 21, 2020
a271d32
[BESU-163] Add inbound and outbound TLS information. (#124)
bgravenorst Feb 21, 2020
5ebb318
Add multi-tenancy whitelist info. (#193)
bgravenorst Feb 24, 2020
110d59d
add redirect plugin and initial configuration from RTD redirects (#172)
NicolasMassart Feb 24, 2020
ccad13b
Editorial mdlint and vale updates in the Concepts/Privacy dir (#183)
Feb 25, 2020
45c003b
Editorial mdlink and vale updates for HowTo/Configure directory (#187)
Feb 25, 2020
88d6743
Editorial mdlint and vale updates to Howto/Backup directory (#186)
Feb 25, 2020
2861f31
add an info pass for md linting (#205)
NicolasMassart Feb 25, 2020
5dc3b88
add postman collection locally and fix the postman button style (#174)
NicolasMassart Feb 25, 2020
9689e31
fix code blocks in doc by updating mkdocs and dependencies (#158)
NicolasMassart Feb 25, 2020
cdada2e
Add links to TLS content. (#191)
bgravenorst Feb 25, 2020
859347e
Add TLS diagram. (#194)
bgravenorst Feb 25, 2020
3e6ac74
Add Besu Plugin information (#142)
bgravenorst Feb 26, 2020
79c6b75
Editorial mdlint and vale updates for the HowTo/Find-and-Connect dire…
Feb 26, 2020
63325ed
A few more changes
Feb 26, 2020
49f975b
Merge branch 'master' into grantnoble-find-connect-mdlint-vale
Feb 26, 2020
20837cc
Merge branch 'master' into grantnoble-find-connect-mdlint-vale
Feb 27, 2020
80ae4a5
Merge branch 'master' into grantnoble-find-connect-mdlint-vale
NicolasMassart Feb 27, 2020
d3cf210
Updates based on @NicolasMassart review
Feb 27, 2020
c5dc7c7
Merge branch 'master' into grantnoble-find-connect-mdlint-vale
Mar 1, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 31 additions & 21 deletions docs/HowTo/Find-and-Connect/Bootnodes.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,50 @@
---
description: Configuring bootnodoes
<!--- END of page meta data -->
---

# Bootnodes

Bootnodes are used to initially discover peers. A bootnode is a regular node a node uses to discover nodes.
Using Bootnodes is a method for initially discovering peers. Bootnodes are regular nodes used to
discover other nodes.

!!! tip
Bootnodes and static nodes are parallel methods for finding peers. Depending on your use case, you can use only bootnodes,
only static nodes, or both bootnodes and statics nodes. For example, you run multiple nodes on MainNet (discovery via bootnode)
but want to ensure your nodes are always connected (using static nodes).

To find peers, configure one or more bootnodes as described below. To configure a
specific set of peer connections, use [static nodes](Static-Nodes.md).
!!! tip

## Mainnet and public testnets
Bootnodes and static nodes are parallel methods for finding peers. Depending on your use case,
you can use only bootnodes, only static nodes, or both bootnodes and statics nodes. For
example, you run multiple nodes on MainNet (discovery using bootnodes), but want to ensure your
nodes are always connected (using static nodes).

For mainnet, Rinkeby, Ropsten, and Görli, Hyperledger Besu predefines a list of enode URLs.
To find peers, configure one or more bootnodes as described below. To configure a specific set
of peer connections, use [static nodes](Static-Nodes.md).

## MainNet and public testnets

For MainNet and the Rinkeby, Ropsten, and Görli testnets, Hyperledger Besu predefines a list of
enode URLs and uses this list automatically when you specify the
[`--network`](../../Reference/CLI/CLI-Syntax.md#network) option.

## Private networks

In private networks for development or testing purposes, specify at least one bootnode.

In production networks, [configure two or more nodes as bootnodes](../Deploy/Bootnodes.md).

### Specify a bootnode
In production networks, [configure two or more nodes as bootnodes](../Deploy/Bootnodes.md).

To start a node specifying a bootnode for P2P discovery, use the [`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) option
to specify the [enode](../../Concepts/Node-Keys.md) of the bootnode.
### Specify a bootnode

To start a node, specifying a bootnode [enode](../../Concepts/Node-Keys.md) for P2P discovery,
using the [`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) option.

!!! example

```bash
besu --genesis-file=privateNetworkGenesis.json --data-path=nodeDataPath --bootnodes=enode://c35c3ec90a8a51fd5703594c6303382f3ae6b2ecb99bab2c04b3794f2bc3fc2631dabb0c08af795787a6c004d8f532230ae6e9925cbbefb0b28b79295d615f@127.0.0.1:30303
```
```

The default host and port for P2P peer discovery is `127.0.0.1:30303`. Use the [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host)
and [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port) option to specify a host and port.
The default host and port advertised to other peers for P2P peer discovery is `127.0.0.1:30303`. To
specify a different host or port, use the
[`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) and
[`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port) options.

By default, peer discovery listens on all available network interfaces. If the device that Besu runs on must bind to a specific interface,
use the [`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) option to specify the network interface to use.
By default, peer discovery listens on all available network interfaces. If the device Besu is
running on must bind to a specific network interface, specify the interface using the
[`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) option.
75 changes: 45 additions & 30 deletions docs/HowTo/Find-and-Connect/Configuring-Ports.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,61 @@
description: Hyperledger Besu ports must be exposed appropriately to enable communication
<!--- END of page meta data -->
---
description: To enable communication you must expose Hyperledger Besu ports appropriately
---

# Configuring Ports
# Configuring ports

To enable communication you must expose Hyperledger Besu ports appropriately. The following shows
an example port configuration for a Besu node on AWS.

Ports must be exposed appropriately to enable communication. An example port configuration for a
Hyperledger Besu node on AWS is:

![Port Configuration](../../images/PortConfiguration.png)

When running Besu from the [Docker image](../Get-Started/Run-Docker-Image.md), [expose ports](../Get-Started/Run-Docker-Image.md#exposing-ports).
When running Besu from the [Docker image](../Get-Started/Run-Docker-Image.md),
[expose ports](../Get-Started/Run-Docker-Image.md#exposing-ports).

!!! tip

!!! tip
Besu supports [UPnP](Specifying-NAT.md) for home or small office environments where a wireless router
or modem provides NAT isolation.
Besu supports [UPnP](Specifying-NAT.md) for home or small office environments where a wireless
router or modem provides NAT isolation.

## P2P Networking
## P2P networking

To enable peer discovery, the P2P UDP port must be open for inbound connections. The P2P port
is specified by the [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port) option. The default is `30303`.
To enable peer discovery, the P2P UDP port must be open for inbound connections. Specify the P2P
port using the [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port) option. The default is
`30303`.

We also recommended opening the P2P TCP port for inbound connections. This is not strictly required because
Besu attempts to initiate outbound TCP connections. However, if no nodes on the network are accepting inbound TCP
connections, nodes cannot communicate.
We also recommended opening the P2P TCP port for inbound connections. This is not strictly required
because Besu attempts to initiate outbound TCP connections. But if no nodes on the network are
accepting inbound TCP connections, nodes cannot communicate.

The P2P port is combined with [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) and [`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) when specifying the [P2P host](../../Reference/CLI/CLI-Syntax.md#p2p-host) and [P2P network interface](../../Reference/CLI/CLI-Syntax.md#p2p-interface).
Combine the P2P port with the values for the
[`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) and
[`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) options when specifying the
[P2P host](../../Reference/CLI/CLI-Syntax.md#p2p-host) and
[P2P network interface](../../Reference/CLI/CLI-Syntax.md#p2p-interface).

!!! info
By default, peer discovery listens on `0.0.0.0:30303` (all interfaces). If the device that Besu runs on must bind to a specific interface, use the [`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) option to specify the network interface to use.


## JSON-RPC API

To enable access to the [JSON-RPC API](../Interact/APIs/Using-JSON-RPC-API.md), open the HTTP JSON-RPC and WebSockets JSON-RPC ports to the intended users
of the JSON-RPC API on TCP.
By default, peer discovery listens on `0.0.0.0:30303` (all interfaces). If the device Besu is
running on must bind to a specific network interface, specify the interface using the
[`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) option.

## JSON-RPC API

To enable access to the [JSON-RPC API](../Interact/APIs/Using-JSON-RPC-API.md), open the HTTP
JSON-RPC and WebSockets JSON-RPC ports to the intended users of the JSON-RPC API on TCP.

The [`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port) and [`--rpc-ws-port`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-port)
options specify the HTTP and WebSockets JSON-RPC ports. The defaults are `8545` and `8546`.
Specify the HTTP and WebSockets JSON-RPC ports using the
[`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port) and
[`--rpc-ws-port`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-port) options. The defaults are `8545`
and `8546`.

## Metrics
## Metrics

To enable [Prometheus to access Besu](../Monitor/Metrics.md#monitor-node-performance-using-prometheus),
open the metrics port or metrics push port to Prometheus or the Prometheus push gateway on TCP.
To enable
[Prometheus to access Besu](../Monitor/Metrics.md#monitor-node-performance-using-prometheus), open
the metrics port or metrics push port to Prometheus or the Prometheus push gateway on TCP.

The [`--metrics-port`](../../Reference/CLI/CLI-Syntax.md#metrics-port) and [`--metrics-push-port`](../../Reference/CLI/CLI-Syntax.md#metrics-push-port)
options specify the ports for Prometheus and Prometheus push gateway. The defaults are `9545` and `9001`.
Specify the ports for Prometheus and Prometheus push gateway using the
[`--metrics-port`](../../Reference/CLI/CLI-Syntax.md#metrics-port) and
[`--metrics-push-port`](../../Reference/CLI/CLI-Syntax.md#metrics-push-port) options. The defaults
are `9545` and `9001`.
67 changes: 36 additions & 31 deletions docs/HowTo/Find-and-Connect/Managing-Peers.md
Original file line number Diff line number Diff line change
@@ -1,49 +1,54 @@
description: Managing Hyperledger Besu peers
<!--- END of page meta data -->
---
description: Managing Hyperledger Besu peers
---

# Managing Peers

## Limiting Peers
# Managing peers

Limiting peers reduces the bandwidth used by Hyperledger Besu. It also reduces the CPU time and disk access
used to manage and respond to peers.

Use the [`--max-peers`](../../Reference/CLI/CLI-Syntax.md#max-peers) command line option to reduce
the maximum number of peers. The default is 25.
## Limiting peers

## No Discovery
Limiting peers reduces the bandwidth used by Hyperledger Besu. Limiting peers also reduces the CPU
time and disk access used to manage and respond to peers.

The [`--discovery-enabled`](../../Reference/CLI/CLI-Syntax.md#discovery-enabled) command line option
can be used to disable P2P peer discovery.
To reduce the maximum number of peers, use the
[`--max-peers`](../../Reference/CLI/CLI-Syntax.md#max-peers) option. The default is 25.

With discovery disabled, connections may be initiated by peers that have already discovered or are otherwise
configured to connect to the local node (for example, using [`admin_addPeer`](../../Reference/API-Methods.md#admin_addpeer)).
Connections can also be initiated by configuring [static nodes](Static-Nodes.md).
## No discovery

## Monitoring Peer Connections
To disable P2P peer discovery, use the
[`--discovery-enabled`](../../Reference/CLI/CLI-Syntax.md#discovery-enabled) option.

JSON-RPC API methods to monitor peer connections include:
With discovery disabled, peers that have already discovered or are otherwise configured to connect
to the local node (for example, using
[`admin_addPeer`](../../Reference/API-Methods.md#admin_addpeer)) can initiate connections.
[Static nodes](Static-Nodes.md) can also initiate connections.

## Monitoring peer connections

JSON-RPC API methods to monitor peer connections include:

* [`net_peerCount`](../../Reference/API-Methods.md#net_peercount)
* [`admin_peers`](../../Reference/API-Methods.md#admin_peers)
* [`debug_metrics`](../../Reference/API-Methods.md#debug_metrics)
* [`debug_metrics`](../../Reference/API-Methods.md#debug_metrics).

## Node connections

## Node Connections
The default logging configuration does not list node connection and disconnection messages.

The default logging configuration does not list node connection and disconnection messages.
To enable listing of node connection and disconnection messages, specify the
[`--logging`](../../Reference/CLI/CLI-Syntax.md#logging) option `--logging=DEBUG`. For more
verbosity, specify `--logging=TRACE`.

To enable listing of node connection and disconnection messages, specify the
[`--logging`](../../Reference/CLI/CLI-Syntax.md#logging) command line option `--logging=DEBUG`.
For more verbosity, specify `--logging=TRACE`.
The console logs connection and disconnection events when the log level is `DEBUG` or higher. If
the message `Successfully accepted connection from ...` displays, connections are getting through
the firewalls.

The console logs connection and disconnection events when the log level is `DEBUG` or higher.
If `Successfully accepted connection from ...` is displayed, connections are getting through the firewalls.
!!! example "Sample log output"

!!! example "Example log output"
`2018-10-16 12:37:35.479-04:00 | nioEventLoopGroup-3-1 | INFO | NettyP2PNetwork | Successfully accepted connection from 0xa979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c`
`2018-10-16 12:37:35.479-04:00 | nioEventLoopGroup-3-1 | INFO | NettyP2PNetwork | Successfully accepted connection from 0xa979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c`

## Limiting Remote Connections
## Limiting remote connections

In private networks with a level of trust between peers, enabling the [remote connection limits](../../Reference/CLI/CLI-Syntax.md#remote-connections-limit-enabled)
is unnecessary and disabling may increase the speed at which nodes can join the network.
In private networks with a level of trust between peers, enabling the
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no fix to do here in this PR, but can we create a ticket to say that maybe we should add the info about why limiting remote connections and not only when not limiting?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

[remote connection limits](../../Reference/CLI/CLI-Syntax.md#remote-connections-limit-enabled)
is unnecessary and disabling might increase the speed at which nodes can join the network.

90 changes: 49 additions & 41 deletions docs/HowTo/Find-and-Connect/Specifying-NAT.md
Original file line number Diff line number Diff line change
@@ -1,64 +1,72 @@
---
description: Configuring NAT with Hyperledger Besu
<!--- END of page meta data -->
---

# Configuring NAT
# Configuring NAT

Use the [`--nat-method`](../../Reference/CLI/CLI-Syntax.md#nat-method) option to specify the
NAT method. Options are: `UPNP`, `MANUAL`, `DOCKER`, `AUTO`, and `NONE`.
Use the [`--nat-method`](../../Reference/CLI/CLI-Syntax.md#nat-method) option to specify the NAT
method. Options are: `UPNP`, `MANUAL`, `DOCKER`, `AUTO`, and `NONE`.

The [enode](../../Concepts/Node-Keys.md#enode-url) advertised to other nodes during discovery is the
external IP address and port. The [`admin_nodeInfo`](../../Reference/API-Methods.md#admin_nodeinfo)
JSON-RPC API method returns the external address and port for the `enode` and `listenAddr` properties.

While Hyperledger Besu is running, the following are not supported:
The [enode](../../Concepts/Node-Keys.md#enode-url) advertised to other nodes during discovery is
the external IP address and port. The
[`admin_nodeInfo`](../../Reference/API-Methods.md#admin_nodeinfo) JSON-RPC API method returns the
external address and port for the `enode` and `listenAddr` properties.

While Hyperledger Besu is running, the following are not supported:

* IP address changes
* Changing NAT methods. To change the NAT method, restart the node with the [`--nat-method`](../../Reference/CLI/CLI-Syntax.md#nat-method)
option set.
* Changing NAT methods. To change the NAT method, restart the node with the
[`--nat-method`](../../Reference/CLI/CLI-Syntax.md#nat-method) option set.

## UPnP

Specify `UPNP` to quickly allow inbound peer connections without manual router configuration. Use UPnP
in home or small office environments where a wireless router or modem provides NAT isolation.

UPnP automatically detects if a node is running in a UPnP environment and provides port forwarding.
UPnP might introduce delays during node startup, especially on networks where no UPnP gateway device can be found.
Specify `UPNP` to quickly allow inbound peer connections without manual router configuration. Use
UPnP in home or small office environments where a wireless router or modem provides NAT isolation.

!!! tip
UPnP support is often disabled by default in networking firmware. If disabled by default, you must
explicitly enable UPnP support.
UPnP automatically detects if a node is running in a UPnP environment and provides port forwarding.
UPnP might introduce delays during node startup, especially on networks without a UPnP gateway
device.

## Manual
!!! tip

Specify `MANUAL` to explicitly configure the external IP address and ports to advertise.
UPnP support is often disabled by default in networking firmware. If disabled by default, you
must explicitly enable UPnP support.

When `MANUAL` is specified:
## Manual

* [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) and [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port)
define the advertised host and port for the P2P service.
* [`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.md#rpc-http-host) and [`rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port)
define the advertised host and port for the JSON-RPC service.
Specify `MANUAL` to explicitly configure the external IP address and ports advertised.

## Docker
By specifying `MANUAL`:

Specify `DOCKER` to explicitly specify Hyperledger Besu is running inside a Docker container.
When `DOCKER` is specified, the host IP address is advertised not the container IP address.
* [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) and
[`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port) define the advertised host and port
for the P2P service.
* [`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.md#rpc-http-host) and
[`rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port) define the advertised host and
port for the JSON-RPC service.

The host IP is the advertised host specified in the [`docker run` command](https://docs.docker.com/engine/reference/commandline/run/#add-entries-to-container-hosts-file---add-host).
If not specified in the `docker run` command, the advertised host defaults to [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host)
and [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port).
## Docker

## Auto
Specify `DOCKER` to explicitly specify Hyperledger Besu is running inside a Docker container. If
you specify `DOCKER`, you advertise the host IP address not the container IP address.

`AUTO` is the default NAT method. `AUTO` detects if Besu is running inside Docker container. If
inside a Docker container, acts as if [`DOCKER`](#docker) is specified. Otherwise, acts as if
[`NONE`](#none) is specified.
The host IP is the advertised host specified in the
[`docker run` command](https://docs.docker.com/engine/reference/commandline/run/#add-entries-to-container-hosts-file---add-host).
If not specified in the `docker run` command, the advertised host defaults to the values for
[`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) and
[`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port).

## None
## Auto

Specify `NONE` to explicitly specify Besu does not use NAT. If the NAT method is `NONE` and [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host),
[`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port), [`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.md#rpc-http-host),
and [`rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port) are specified, they are
ignored in the advertised addresses and the default values are advertised.
`AUTO` is the default NAT method. `AUTO` detects if Besu is running inside Docker container. If
inside a Docker container, `AUTO` acts as if you specified [`DOCKER`](#docker). If not inside a
Docker container, `AUTO` acts as if you specified [`NONE`](#none).

## None

Specify `NONE` to explicitly specify Besu does not use NAT. If the NAT method is `NONE`, Besu
ignores any values specified in the [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host),
[`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port),
[`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.md#rpc-http-host), and
[`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port) options. Besu advertises the
default values instead.
Loading