docs - added an updated take on running distributed and isolated it to its own higher level page
This commit is contained in:
parent
5b1c9a6e68
commit
3dac7f096c
3 changed files with 173 additions and 106 deletions
106
docs/usage.md
106
docs/usage.md
|
@ -728,112 +728,6 @@ pseudo-link will be drawn, representing the link between the two nodes on
|
|||
different canvases. Double-clicking on the label at the end of the arrow will
|
||||
jump to the canvas that it links.
|
||||
|
||||
Distributed Emulation
|
||||
---------------------
|
||||
|
||||
A large emulation scenario can be deployed on multiple emulation servers and
|
||||
controlled by a single GUI. The GUI, representing the entire topology, can be
|
||||
run on one of the emulation servers or on a separate machine. Emulations can be
|
||||
distributed on Linux.
|
||||
|
||||
Each machine that will act as an emulation server needs to have CORE installed.
|
||||
It is not important to have the GUI component but the CORE Python daemon
|
||||
**core-daemon** needs to be installed. Set the **listenaddr** line in the
|
||||
**/etc/core/core.conf** configuration file so that the CORE Python
|
||||
daemon will respond to commands from other servers:
|
||||
|
||||
```shell
|
||||
### core-daemon configuration options ###
|
||||
[core-daemon]
|
||||
pidfile = /var/run/core-daemon.pid
|
||||
logfile = /var/log/core-daemon.log
|
||||
listenaddr = 0.0.0.0
|
||||
```
|
||||
|
||||
|
||||
The **listenaddr** should be set to the address of the interface that should
|
||||
receive CORE API control commands from the other servers; setting **listenaddr
|
||||
= 0.0.0.0** causes the Python daemon to listen on all interfaces. CORE uses TCP
|
||||
port 4038 by default to communicate from the controlling machine (with GUI) to
|
||||
the emulation servers. Make sure that firewall rules are configured as
|
||||
necessary to allow this traffic.
|
||||
|
||||
In order to easily open shells on the emulation servers, the servers should be
|
||||
running an SSH server, and public key login should be enabled. This is
|
||||
accomplished by generating an SSH key for your user if you do not already have
|
||||
one (use **ssh-keygen -t rsa**), and then copying your public key to the
|
||||
authorized_keys file on the server (for example, **ssh-copy-id user@server** or
|
||||
**scp ~/.ssh/id_rsa.pub server:.ssh/authorized_keys**.) When double-clicking on
|
||||
a node during runtime, instead of opening a local shell, the GUI will attempt
|
||||
to SSH to the emulation server to run an interactive shell. The user name used
|
||||
for these remote shells is the same user that is running the CORE GUI.
|
||||
|
||||
**HINT: Here is a quick distributed emulation checklist.**
|
||||
|
||||
1. Install the CORE daemon on all servers.
|
||||
2. Configure public-key SSH access to all servers (if you want to use
|
||||
double-click shells or Widgets.)
|
||||
3. Set **listenaddr=0.0.0.0** in all of the server's core.conf files,
|
||||
then start (or restart) the daemon.
|
||||
4. Select nodes, right-click them, and choose *Assign to* to assign
|
||||
the servers (add servers through *Session*, *Emulation Servers...*)
|
||||
5. Press the *Start* button to launch the distributed emulation.
|
||||
|
||||
Servers are configured by choosing *Emulation servers...* from the *Session*
|
||||
menu. Servers parameters are configured in the list below and stored in a
|
||||
*servers.conf* file for use in different scenarios. The IP address and port of
|
||||
the server must be specified. The name of each server will be saved in the
|
||||
topology file as each node's location.
|
||||
|
||||
**NOTE:**
|
||||
The server that the GUI connects with
|
||||
is referred to as the master server.
|
||||
|
||||
The user needs to assign nodes to emulation servers in the scenario. Making no
|
||||
assignment means the node will be emulated on the master server
|
||||
In the configuration window of every node, a drop-down box located between
|
||||
the *Node name* and the *Image* button will select the name of the emulation
|
||||
server. By default, this menu shows *(none)*, indicating that the node will
|
||||
be emulated locally on the master. When entering Execute mode, the CORE GUI
|
||||
will deploy the node on its assigned emulation server.
|
||||
|
||||
Another way to assign emulation servers is to select one or more nodes using
|
||||
the select tool (shift-click to select multiple), and right-click one of the
|
||||
nodes and choose *Assign to...*.
|
||||
|
||||
The *CORE emulation servers* dialog box may also be used to assign nodes to
|
||||
servers. The assigned server name appears in parenthesis next to the node name.
|
||||
To assign all nodes to one of the servers, click on the server name and then
|
||||
the *all nodes* button. Servers that have assigned nodes are shown in blue in
|
||||
the server list. Another option is to first select a subset of nodes, then open
|
||||
the *CORE emulation servers* box and use the *selected nodes* button.
|
||||
|
||||
**IMPORTANT:**
|
||||
Leave the nodes unassigned if they are to be run on the master server.
|
||||
Do not explicitly assign the nodes to the master server.
|
||||
|
||||
The emulation server machines should be reachable on the specified port and via
|
||||
SSH. SSH is used when double-clicking a node to open a shell, the GUI will open
|
||||
an SSH prompt to that node's emulation server. Public-key authentication should
|
||||
be configured so that SSH passwords are not needed.
|
||||
|
||||
If there is a link between two nodes residing on different servers, the GUI
|
||||
will draw the link with a dashed line, and automatically create necessary
|
||||
tunnels between the nodes when executed. Care should be taken to arrange the
|
||||
topology such that the number of tunnels is minimized. The tunnels carry data
|
||||
between servers to connect nodes as specified in the topology.
|
||||
These tunnels are created using GRE tunneling, similar to the Tunnel Tool.
|
||||
|
||||
Wireless nodes, i.e. those connected to a WLAN node, can be assigned to
|
||||
different emulation servers and participate in the same wireless network
|
||||
only if an
|
||||
EMANE model is used for the WLAN. The basic range model does not work across multiple servers due
|
||||
to the Linux bridging and ebtables rules that are used.
|
||||
|
||||
**NOTE:**
|
||||
The basic range wireless model does not support distributed emulation,
|
||||
but EMANE does.
|
||||
|
||||
## Services
|
||||
|
||||
CORE uses the concept of services to specify what processes or scripts run on a
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue