Skip to main content

Bootnodes

Bootnode in Staex network is a node that is used to copy initial configuration to the new node that joins the network. A bootnode is not a special type of node: any existing node can be used as a bootnode. The IP address and the port of the bootnode is specified using -boot argument for mcc executable. You can not use IP address that you specified in -net-ip argument as the address of the bootnode. In this tutorial we will learn how to configure bootnodes in typical scenarios.

Scenario 1: VPN

Suppose you are a robotics company. You deployed your robots to a warehouse and now want to monitor and manage them remotely. You also have a fleet manager node runnning on client's premises. Your client kindly provided you with VPN access to the fleet manager node. On you premises you have multiple computers that are connected to the client's VPN via a bastion host. The following table contains example nodes and their addresses.

NodeIP addressNetworkNetwork owner
bastion172.27.0.100LANrobotics company
bastion10.123.0.101VPNwarehouse company
workstation 1172.27.0.201LANrobotics company
workstation 110.123.0.102LANrobotics company
workstation 2172.27.0.202LANrobotics company
workstation 210.123.0.103LANrobotics company
fleet manager node192.168.0.100LANwarehouse company
fleet manager node10.123.0.100VPNwarehouse company
robot 1192.168.0.101LANwarehouse company
robot 2192.168.0.102LANwarehouse company

Both fleet manager node and bastion node have two addresses: one in LAN and one in VPN. VPN is configured as a tunnel between these two nodes, and other nodes do not have an address in VPN. The following table shows all the networks.

NetworkAddressOwner
office LAN172.27.0.0/16robotics company
VPN10.123.0.0/16warehouse company
warehouse LAN192.168.0.0/16warehouse company

In the network infrastructure specified in the above tables there is no global connectivity. As a result we can not use one node as a bootnode and have to choose different bootnodes depenging on the physical network we are in. The following table shows one possible configuration.

NodeIP addressBootnode
bastion172.27.0.10010.123.0.100
workstation 1172.27.0.20110.123.0.100
workstation 2172.27.0.20210.123.0.100
fleet manager node192.168.0.100none
robot 1192.168.0.101192.168.0.100
robot 2192.168.0.102192.168.0.100

As you can see fleet manager node is the only node that does not have the bootnode. We could also choose bastion to not have the bootnode and point fleet manager node to bastion node for the initial configuration. This would result in the same connectivity within Staex network. The following diagram is a graphical representation of the configuration from the table.

Bootnodes for scenario 1.
Bootnodes for scenario 1. Bootnodes' addresses are in bold.

General advice

In general you may use any node that is directly accessible to the current node as a bootnode. Technically it is more efficient to use a node from the local network as a bootnode for all other nodes from this network, and then use a node with the public IP address as the bootnode for this local node. This will minimize the network traffic because only one local node needs to exchange internal messages with the node with a public IP address. Right now bootnodes is the only way to bridge several physical networks using Staex.

caution

There are certain limitations on how networks can be bridged with Staex. Using a node (or a group of nodes) with a public IP address you can bridge any number of local networks. Using a VPN you can also bridge any number of networks, but the VPN have to include all nodes from all networks except one arbitrary local network from which the VPN may include only one node.