docs: update node types to include lxc/docker type documentation, instead of being hidden within examples

This commit is contained in:
Blake Harnden 2021-11-11 10:59:11 -08:00
parent 1ce6e51318
commit b78c07bd24
5 changed files with 58 additions and 46 deletions

70
docs/docker.md Normal file
View file

@ -0,0 +1,70 @@
# Docker Node Support
## Overview
Provided below is some information for helping setup and use Docker
nodes within a CORE scenario.
## Installation
### Debian Systems
```shell
sudo apt install docker.io
```
### RHEL Systems
## Configuration
Custom configuration required to avoid iptable rules being added and removing
the need for the default docker network, since core will be orchestrating
connections between nodes.
Place the file below in **/etc/docker/docker.json**
```json
{
"bridge": "none",
"iptables": false
}
```
## Group Setup
To use Docker nodes within the python GUI, you will need to make sure the
user running the GUI is a member of the docker group.
```shell
# add group if does not exist
sudo groupadd docker
# add user to group
sudo usermod -aG docker $USER
# to get this change to take effect, log out and back in or run the following
newgrp docker
```
## Image Requirements
Images used by Docker nodes in CORE need to have networking tools installed for
CORE to automate setup and configuration of the network within the container.
Example Dockerfile:
```
FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y iproute2 ethtool
```
Build image:
```shell
sudo docker build -t <name> .
```
## Tools and Versions Tested With
* Docker version 18.09.5, build e8ff056
* nsenter from util-linux 2.31.1

View file

@ -20,15 +20,15 @@ networking scenarios, security studies, and increasing the size of physical test
| Topic | Description|
|-------|------------|
|[Architecture](architecture.md)|Overview of the architecture|
|[Installation](install.md)|How to install CORE and its requirements|
|[Architecture](architecture.md)|Overview of the architecture|
|[Node Types](nodetypes.md)|Overview of node types supported within CORE|
|[GUI](gui.md)|How to use the GUI|
|[(BETA) Python GUI](pygui.md)|How to use the BETA python based GUI|
|[Python API](python.md)|Covers how to control core directly using python|
|[gRPC API](grpc.md)|Covers how control core using gRPC|
|[Distributed](distributed.md)|Details for running CORE across multiple servers|
|[Node Types](nodetypes.md)|Overview of node types supported within CORE|
|[CTRLNET](ctrlnet.md)|How to use control networks to communicate with nodes from host|
|[Control Network](ctrlnet.md)|How to use control networks to communicate with nodes from host|
|[Services](services.md)|Overview of provided services and creating custom ones|
|[EMANE](emane.md)|Overview of EMANE integration and integrating custom EMANE models|
|[Performance](performance.md)|Notes on performance when using CORE|

41
docs/lxc.md Normal file
View file

@ -0,0 +1,41 @@
# LXC Support
LXC nodes are provided by way of LXD to create nodes using predefined
images and provide file system separation.
## Installation
### Debian Systems
```shell
sudo snap install lxd
```
## Configuration
Initialize LXD and say no to adding a default bridge.
```shell
sudo lxd init
```
## Group Setup
To use LXC nodes within the python GUI, you will need to make sure the user running the GUI is a member of the
lxd group.
```shell
# add group if does not exist
sudo groupadd lxd
# add user to group
sudo usermod -aG lxd $USER
# to get this change to take effect, log out and back in or run the following
newgrp lxd
```
## Tools and Versions Tested With
* LXD 3.14
* nsenter from util-linux 2.31.1

View file

@ -5,18 +5,30 @@
## Overview
Different node types can be configured in CORE, and each node type has a
*machine type* that indicates how the node will be represented at run time.
Different machine types allow for different options.
Different node types can be used within CORE, each with their own
tradeoffs and functionality.
## Netns Nodes
## CORE Nodes
The *netns* machine type is the default. This is for nodes that will be
backed by Linux network namespaces. This machine type uses very little
system resources in order to emulate a network. Another reason this is
designated as the default machine type is because this technology typically
requires no changes to the kernel; it is available out-of-the-box from the
latest mainstream Linux distributions.
CORE nodes are the standard node type typically used in CORE. They are
backed by Linux network namespaces. They use very little system resources
in order to emulate a network. They do however share the hosts file system
as they do not get their own. CORE nodes will have a directory uniquely
created for them as a place to keep their files and mounted directories
(`/tmp/pycore.<session id>/<node name.conf`),
which will usually be wiped and removed upon shutdown.
## Docker Nodes
Docker nodes provide a convenience for running nodes using predefind images
and filesystems that CORE nodes do not provide. Details for using Docker
nodes can be found [here](docker.md).
## LXC Nodes
LXC nodes provide a convenience for running nodes using predefind images
and filesystems that CORE nodes do not provide. Details for using LXC
nodes can be found [here](lxc.md).
## Physical Nodes