XOS Configuration for CORD development POD
This directory holds files that are used to configure a development POD for CORD. For more information on the CORD project, including how to get started, check out the CORD wiki.
XOS is composed of several core services that are typically containerized. Dynamic On-boarding System and Service Profiles describes these containers and how they fit together.
This document is primarily focused on how to start the cord-pod
service-profile. This service profile is usually located in
~/service-profile/cord-pod/ on an installed pod. This directory is usually
located in the
xos virtual machine.
The following prerequisites should be met:
- OpenStack should be installed, and OpenStack services (keystone, nova, neutron, glance, etc) should be started.
- ONOS should be installed, and at a minimum, ONOS-Cord should be running the VTN app.
The usual way to meet these prerequisites is by following one of the methods of building a CORD POD on the CORD Wiki.
Makefile Targets to launch this service-profile
These are generally executed in sequence:
xosproject/xos-onboarding-synchronizer container images from source.
Bootstraps xos and onboards a stack of typical cord services. While the services are onboarded, they are not yet configured
Configures the vtn service. If you are using a custom platform that differs
from a typical single-node-pod experiment, then you may wish to
make vtn-external.yaml, then edit the autogenerated
Configures the fabric service.
Configures the vrouter service.
Configures the cord stack.
Creates a sample subscriber in the cord stack.
Builds an example service that launches a web server.
Utility Makefile targets
make stop and
make cleanup, and then goes
to some extra effort to destroy associated networks, VMs, etc. This is handy
when developing using single-node-pod, as it will cleanup the XOS installation
and allow the profile to be started fresh.
A common developer workflow that involves completely restarting the profile is:
- Upload new code
make cleanup; make local_containers; make; make vtn; make fabric; make cord; make cord-subscriber; make exampleservice
This workflow exercises many of the capabilities of a CORD POD. It does the following:
- Tears down XOS as well as all OpenStack state that it created
- Onboards all CORD services, and configures the ONOS apps
- Creates a sample CORD subscriber (which spins up a vSG)
exampleservice(described in the Tutorial on Assembling and On-Boarding Services)
- Creates an
exampleservicetenant (which creates a VM and loads and configures Apache in it)
Checking that VTN is functional
Before proceeding, check that the VTN app is controlling Open vSwitch on the compute nodes. Log
into ONOS and run the
$ ssh -p 8101 karaf@onos-cord # password is karaf onos> cordvtn-nodes hostname=nova-compute, hostMgmtIp=192.168.122.177/24, dpIp=192.168.199.1/24, br-int=of:0000000000000001, dpIntf=veth1, init=COMPLETE Total 1 nodes
The important part is the
init=COMPLETE at the end. If you do not see this,
refer to the CORD VTN Configuration
Guide for help
fixing the problem. This must be working to bring up VMs on the POD.
Inspecting the vSG
The above series of
make commands will spin up a vSG for a sample subscriber.
The vSG is implemented as a Docker container (using the
image hosted on Docker Hub) running inside an Ubuntu VM. Once the VM is
created, you can login as the
ubuntu user at the management network IP
(172.27.0.x) on the compute node hosting the VM, using the private key
generated on the head node by the install process. For example, in the
single-node development POD configuration, you can login to the VM with
management IP 172.27.0.2 using a ProxyCommand as follows:
ubuntu@pod:~$ ssh -o ProxyCommand="ssh -W %h:%p ubuntu@nova-compute" firstname.lastname@example.org
Alternatively, you could copy the generated private key to the compute node and login from there:
ubuntu@pod:~$ scp ~/.ssh/id_rsa ubuntu@nova-compute:~/.ssh ubuntu@pod:~$ ssh ubuntu@nova-compute ubuntu@nova-compute:~$ ssh email@example.com
Once logged in to the VM, you can run
sudo docker ps to see the running vSG
ubuntu@mysite-vsg-1:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2b0bfb3662c7 andybavier/docker-vcpe "/sbin/my_init" 5 days ago Up 5 days vcpe-222-111
Logging into XOS on CloudLab (or any remote host)
The CORD POD installation
process forwards port
80 on the head node to the
xos VM. You should be able to access the XOS GUI
by simply pointing your browser at the head node. Default username/password is