Docker VNF Manager for Open Baton

This VNF Manager (VNFM), together with the Docker Vim Driver, allows Open Baton to deploy Container on top of a running Docker engine. Both VNFM and VIM Driver are necessary in order to be able to deploy network services (NSs) over Docker

Requirements

Download the VNFM

You can download the VNFM for docker here. Choose the appropriate distribution.

wget https://github.com/openbaton/go-docker-vnfm/releases/download/5.0.0/go-docker-vnfm-darwin-amd64 -O docker-vnfm
chmod +x docker-vnfm

Check the usage

./docker-vnfm --help

Usage of docker-vnfm:
  -allocate
        if the docker vnfm must allocate resources (must be true)
        (default true)
  -cert string
        Use Handler for docker swarm services
        (default "/Users/usr/.docker/machine/machines/myvm1/")
  -conf string
        The config file of the Docker Vim Driver
  -desc string
        The description of the Docker Vim Driver(default "The docker vnfm")
  -dir string
        The directory where to persist the local db (default "badger")
  -ip string
        The Broker Ip (default "localhost")
  -level string
        The Log Level of the Docker Vim Driver (default "INFO")
  -name string
        The docker vnfm name (default "docker")
  -password string
        The registering password (default "openbaton")
  -persist
        to persist the local database using badger (default true)
  -port int
        The Broker Port (default 5672)
  -swarm
        Use Handler for docker swarm services
  -tsl
        Use docker client with tsl
  -type string
        The type of the Docker Vim Driver (default "docker")
  -username string
        The registering user (default "openbaton-manager-user")
  -workers int
        The number of workers (default 5)
exit status 2

Create a file called config.toml that looks like:

type        = "docker"
endpoint    = "docker"
allocate    = true
workers     = 1
description = "The Vnfm description"
username    = "openbaton-manager-user"
password    = "openbaton"
logLevel    = "INFO"
brokerIp    = "localhost"
brokerPort  = 5672

NOTE: the allocate field is set to true, in order to let the VNFM to allocate containers.

Then run docker-vnfm as:

./docker-vnfm -conf config.toml

If you don't need special configuration you can use the default values just by running:

./docker-vnfm

Even better using the docker image of the vnfm-docker-go:

docker run -v /var/run/docker.sock:/var/run/docker.sock openbaton/vnfm-docker-go vnfm-docker-go

How to use the Docker VNFM

The Docker VNFM works with the upstream Open Baton NFVO, so no changes are needed. Some fields of the VNF Descriptor (VNFD) could have a different meaning. An example of a MongoDB VNFPackage follows

The VNF Descriptor

{
  "name": "MongoDB",
  "vendor": "TUB",
  "version": "0.2",
  "lifecycle_event": [],
  "configurations": {
    "configurationParameters": [{
      "confKey":"KEY",
      "value":"Value"
    }],
    "name": "mongo-configuration"
  },
  "virtual_link": [{
    "name": "new-network"
  }],
  "vdu": [{
    "vm_image": [
    ],
    "scale_in_out": 2,
    "vnfc": [{
      "connection_point": [{
        "virtual_link_reference": "new-network"
      }]
    }]
  }],
  "deployment_flavour": [{
    "flavour_key": "m1.small"
  }],
  "type": "mongodb",
  "endpoint": "docker"
}
  • The Virtual Link will be a new Docker Network created if not existing.
  • The flavour_key must be set to m1.small (at the moment)
  • The vm_image will be filled by the metadata image name (see next section)

The Metadata.yaml

name: MongoDB
description: MongoDB
provider: TUB
nfvo_version: 5.0.0
vim_types:
- docker
image:
  upload: "check"
  names:
      - "mongo:latest"
  link: "mongo:latest"
image-config:
  name: "mongo:latest"
  diskFormat: QCOW2
  containerFormat: BARE
  minCPU: 0
  minDisk: 0
  minRam: 0
  isPublic: false

Here you can see some differences:

  • vim_types must have docker (pointing to the Docker VIM Driver)
  • image upload can be put to check in order to execute docker pull with the image link in case the image name is not available. NOTE: the image name must be the same as the link since in docker there is not distinction
  • image-config the name must be the same as the link. the Disk Format and container format are ignored so you can use "QCOW2" and "BARE", as well as for the limits, everything can be 0,

Build the VNFPackage

In order to build the VNF Package and to upload it please follow our documentation