Software Architecture

CloudCIX is installed from an ISO image that can be burned onto a bootable USB stick. This ISO installs software on two servers referred to as PodNet and the CloudCIX Appliance. Both servers begin by having the Ubuntu 20.04 Operating System installed followed by the Docker containers relevant for the flavor of Pod required on the CloudCIX Appliance. The required Docker Containers are downloaded automatically from DockerHub and installed on the CloudCIX Appliance.

../_images/architecture.png

Docker Networking

CloudCIX uses two docker networks for connectivity one for IPv4 and other for IPv6. These two networks are defined through ‘docker-compose.yml` file. CloudCIX docker-compose.yml files are availale at github (https://github.com/CloudCIX/pod_yaml) .

  • The name of IPv4 docker network is the name of the Pod flavor and the name of the IPv6 docker network is ‘mgmt’.

*IPv4 (flavor)

**IPv6 (Docker Mgmt)

172.r.0.0/24

<p>:d0c6::1/64

*r, random decimal from 16 to 31.

**<p> represents the first three hextets in the /48 IPv6 Addresses assigned to a Pod.

  • Docker IPv6 mgmt /64 network is from the /48 assigned to a POD e.g. x:y:z:doc6::/64.

  • Using ‘ndppd’ (Neighbour Discovery Proxy Protocal Daemon) service this network is routed to Hosts /64 network. Config on ndppd.conf file:

     proxy <appliance_management_interface> {
               rule <p>:d0c6::1/64 {
                         auto
        }
    }
    
  • Also following ‘sysctl’ services are enabled.

    net.ipv6.conf.<appliance_management_interface>.proxy_ndp=1

    net.ipv6.conf.default.forwarding=1

  • A container gets a dynamic IP address from IPv4 docker network and/or a static IP address from IPv6 docker network. See the table for IP assignments of each docker container.