Virtual Network Function Descriptor

The VirtualNetworkFunctionDescriptor is contained inside the Network Service Descriptor (NSD). It is a json file and is defined as follows:

{  
    "vendor":"fokus",
    "version":"0.2",
    "name":"iperf-server",
    "type":"server",
    "endpoint":"generic",
    "configurations":{
        "name":"config_name",
        "configurationParameters":[
        {
            "confKey":"key",
            "value":"value"
        }
        ]
    },
    "vdu":[  
        {  
            "vm_image":[  
                "ubuntu-14.04-server-cloudimg-amd64-disk1"
            ],
            "vimInstanceName":["vim-instance"],
            "scale_in_out":2,
            "vnfc":[  
                {  
                    "connection_point":[  
                        {  
                            "floatingIp":"random",
                            "virtual_link_reference":"private",
                            "interfaceId":0
                        }
                    ]
                }
            ]
        }
    ],
    "virtual_link":[  
        {  
            "name":"private"
        }
    ],
    "lifecycle_event":[  
        {  
            "event":"INSTANTIATE",
            "lifecycle_events":[  
                "install.sh",
                "install-srv.sh"
            ]
        }
    ],
    "deployment_flavour":[  
        {  
            "flavour_key":"m1.small"
        }
    ],
    "vnfPackageLocation":"link_to_gitrepo",
    "requires":{
        "server":{
            "parameters":["netname_floatingIp"]
        }
    }
}
Params Meaning
name The name of the Virtual Network Function
vendor The provider or vendor of this Virtual Network Function
version The version of the Virtual Network Function (can be any string)
type The type of the Virtual Network Function (can be any string) and it is used in the dependency parameters in the scripts
endpoint The endpoint of the Virtual Network Function (can be any string) that defines the responsible VNF Manager

The other most important parameters are described in the following sections.

Virtual Deployment Unit (VDU)

Params Meaning
vm_image The list of image names or ids existing in the PoP or in the VNF Package (in case it will be uploaded while onboarding)
vimInstanceName The list of PoP where the VNF Components of this VDU will be deployed. If several are selected, the PoP will be randomly chosen
scale_in_out The maximum number of instances which can be launched (scaled out) at runtime within this VDU
vnfc The list of VNF Components which will be deployed while instantiating the VDU
VNFC

After launching a network service, every VNFComponent will run on a separate virtual machine. If scaling is enabled by the scale_in_out field in the VDU, the number of instantiated VNFCs can increase. VNFCs contain the following fields:

Params Meaning
connection_point This defines the reference to an Internal Virtual Link (see Connection Point at ETSI NFV). Moreover you can specify a Floating IP to be assigned to this connection point in the form "192.168.0.123". Please be aware of the fact that the NFVO will try to allocate this IP from the external network associated to the tenant. Therefore it is important to have an already configured external network before making use of floating IPs. The possible values are the actual floatingip ip or "random" if no preference is specified. If omitted no floatingip will be assigned. Optionally, the ethernet interface to be attached to a specific network can be chosen through the interfaceId. The interfaceId have to be a numeric value and is used while sorting the list of networks.

Configurations

The configuration object contains a list of parameters defined by key, value that can be used in the scripts (see VNF Parameters).

The Internal Virtual Link points to a Virtual Link Descriptor defined in the Network Service Descriptor.

Note: at the moment there are no difference between internal and external VL. All the available networks should be specified in the NSD->VLD, then in the VNFD->VL you specify which networks you want to use. Finally in the VNFD->VDU->VNFC->connection_point you can specify which network to attach among those available in VNFD->VL. The virtual_link_reference parameter also must be filled with the exact same links.

Lifecycle Events

A lifecycle event is composed by an Event and a list of strings that correspond to the script names needed to be run in that particular Event. Currently supported events are:

Event name Description
INSTANTIATE ...
CONFIGURE ...
START ...
TERMINATE ...
SCALE_IN ...

The VNF events state machine follows the state diagram for the VNFR (and NSR) displayed in this slide

Deployment Flavour

A delpoyment flavour corresponds to a flavour name existing in the VimInstance. For example if you are using Openstack as Vim, the flavour_key parameter shall correspond to a flavour name of Openstack (e.q. m1.small).

Inter-VNFs dependencies

In many cases, you may need or you may provide some information in order to interact with other VNFs inside a network service composition. Please refer to the Inter-VNFs dependencies page for a better understanding of this concept and in particular for learning how to make use of provides and requires inside a VNFD for interacting with other VNFs.