Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Configuring VNFs on NFX150 Devices

 

The NFX150 devices enable you to instantiate and manage virtualized network functions (VNFs) from the Junos Control Plane (JCP). The JCP supports the creation and management of third-party VNFs.

To configure a VNF, log in to the JCP and perform the following tasks:

Load the VNF Image

To load a VNF image on the device from a remote location, use the file-copy command. Alternatively, you can use the NETCONF command file-put, to load a VNF image.

Note

You must save the VNF image in the /var/public directory.

Prepare the Bootstrap Configuration

You can bootstrap a VNF using an attached config drive that contains a bootstrap-config ISO file. The config drive is a virtual drive, which can be a CD-ROM, USB drive or Disk drive associated to a VNF with the configuration data. Configuration data can be files or folders, which are bundled in the ISO file that makes a virtual CD-ROM, USB drive, or Disk drive.

A bootstrap configuration file must contain an initial configuration that allows the VNF to be accessible from an external controller, and accepts SSH, HTTP, or HTTPS connections from an external controller for further runtime configurations.

By attaching a config drive, you can pass the networking configurations such as the IP address, subnet mask, and gateway to the VNFs through a CLI. After receiving the configuration inputs, the device generates a bootstrap-config ISO file, and attaches the file to the VNF as a CD-ROM, USB drive, or Disk drive.

For more information about configuring and attaching a config drive, see (Optional) Attach a Config Drive to the VNF .

Note
  • The system saves the bootstrap-config ISO file in the /var/public folder. The file is saved only if the available space in the folder is more than double the total size of the contents in the file. If the available space in the folder is not sufficient, an error message is displayed when you commit the configuration.

  • When you reboot the system, the system generates a new bootstrap-config ISO file and replaces the existing ISO file with the new ISO file on the VNF.

  • The config drive is a read-only drive. Based on the VNF, you can specify the config drive as a read-only CD-ROM drive, USB drive, or a Disk drive.

The config drive supports the following data for VNFs:

  • Static content as files—The device accepts one or more file paths through a CLI, converts these files to an ISO image, and attaches it to the VNF. The config drive supports multiple static files in a VNF configuration.

  • Jinja2 template and parameters—Jinja2 parameters consist of key-value pairs. The key is specified in the template and the value replaces the key when the template is rendered. The system adds the rendered output file to the ISO image, and attaches it to the VNF. The maximum number of parameters for a template is 256 key-value pairs. The config drive supports multiple templates and its parameters in a VNF configuration.

    Note

    The config drive supports only Jinja2 templates.

  • Directory—The device accepts the specific directory contents, converts the folder structure in the given folder to an ISO image, and attaches it to the VNF. The config drive accepts only one folder. That folder becomes the root directory in the ISO image, and all the subsequent folders and files are added to the ISO image.

Note
  • You can add multiple source templates and source files in a VNF configuration.

  • To add multiple source templates and one source folder in a VNF configuration, the target template file must be inside the source folder.

  • You can add only one source folder in a VNF configuration.

  • If two VNFs share the same set of files, separate bootstrap-config ISO files are generated for each VNF. Deleting one VNF will not affect the other VNF.

Allocate CPUs for a VNF

Table 1 lists the CPUs available for VNF usage for the NFX150 models.

Table 1: CPUs Available for VNF Usage (Junos OS 19.1R1 Release)

Model

CPUs Available for VNF Usage

Throughput Mode

Hybrid Mode

Compute Mode

NFX150-C-S1

0

1

2

NFX150-C-S1-AE

0

1

2

NFX150-C-S1-AA

0

1

2

NFX150-C-S1E-AE

0

1

2

NFX150-C-S1E-AA

0

1

2

NFX150-S1

0

2

4

NFX150-S1E

0

2

4

Note

When you change the performance mode of the device, it is recommended to check the availability of the CPUs for VNFs.

To check the current operational mode of the device:

user@host> show vmhost mode

For more information, see show vmhost mode.

To check the CPU availability and its status:

user@host> show system visibility cpu

For more information, see show system visibility cpu.

To specify the number of virtual CPUs that are required for a VNF, use the following commands:

  1. Specify the number of CPUs required for the VNF:
    user@host# set virtual-network-functions vnf-name virtual-cpu count number
  2. Pin a virtual CPU to a physical CPU
    user@host# set virtual-network-functions vnf-name virtual-cpu vcpu-number physical-cpu pcpu-number
  3. Commit the configuration:
    user@host# commit

The physical CPU number can either be a number or a range. By default, a VNF is allocated with one virtual CPU that is not pinned to any physical CPU.

Note

You cannot change the CPU configuration of a VNF when the VNF is in running state. Restart the VNF for changes to take effect.

To enable hardware-virtualization or hardware-acceleration for VNF CPUs, type the following command:

user@host# set virtual-network-functions vnf-name virtual-cpu features hardware-virtualization

Allocate Memory for a VNF

On NFX150 devices running Junos OS Release 18.1R1, enabling hugepages for VNFs and pre-reserving of hugepages are not supported.

Table 2 lists the possible memory availability for VNF usage for the NFX150 models.

Table 2: Memory Availability for VNF Usage

Model

Memory Availability for VNF Usage (Junos OS 19.1R1 Release)

NFX150-C-S1

1 GB

NFX150-C-S1-AE

1 GB

NFX150-C-S1-AA

1 GB

NFX150-C-S1E-AE

9 GB

NFX150-C-S1E-AA

9 GB

NFX150-S1

7 GB

NFX150-S1E

23 GB

To specify the maximum primary memory that the VNF can use, enter the following command:

user@host# set virtual-network-functions vnf-name memory size size
Note

You cannot change the memory configuration of a VNF if the VNF is in the running state. Restart the VNF for changes to take effect.

(Optional) Attach a Config Drive to the VNF

Add files and template to the config drive.

  1. Specify the source file to add in the config drive:
    user@host# set virtual-network-functions vnf-name config-data source file source-file1
    user@host# set virtual-network-functions vnf-name config-data source file source-file2
  2. Specify the template file to add in the config drive:
    user@host# set virtual-network-functions vnf-name config-data source template template-name file template-file
    user@host# set virtual-network-functions vnf-name config-data source template template-name parameters image_type image-type
    user@host# set virtual-network-functions vnf-name config-data source template template-name parameters memory-size memory-size
    user@host# set virtual-network-functions vnf-name config-data source template template-name target target-filename
  3. Specify the device name and type to add in the config drive:
    user@host# set virtual-network-functions vnf-name config-data target device-name target-device-name
    user@host# set virtual-network-functions vnf-name config-data target device-type target-device-type

    The target device-type is optional. If you do not specify, it takes the device type as cd-rom.

    user@host# set virtual-network-functions vnf-name config-data target device-label target-device-label

    The target device-label is optional. If you do not specify, it takes the device label as config-data.

  4. Commit the configuration:
    user@host# commit

Add a directory to the config drive.

  1. Specify the source directory to add in the config drive:
    user@host# set virtual-network-functions vnf-name config-data source directory directory-name
  2. Specify the device name and type to add in the config drive:
    user@host# set virtual-network-functions vnf-name config-data target device-name target-device-name
    user@host# set virtual-network-functions vnf-name config-data target device-type device-type
    user@host# set virtual-network-functions vnf-name config-data target device-label device-label
  3. Commit the configuration:
    user@host# commit

To verify whether the config drive is attached to the VNF, see the VNF Disk Information section in the show system visibility vnf command output message.

Configuring VNF Interfaces and VLANs

You can create a VNF interface and attach it to a physical NIC port, management interface, or VLANs.

  • To attach a VNF interface to a physical interface by using the SR-IOV virtual function:

    user@host# set virtual-network-functions vnf-name interfaces interface-name mapping physical-interface-name virtual-function [vlan-id vlan-id]

    vlan-id is optional and it is the port VLAN ID.

  • To create a VLAN:

    user@host# set host-name vlan vlan-name
  • To attach a VNF interface to a VLAN:

    user@host# set virtual-network-functions vnf-name interfaces interface-name mapping vlan members list-of-vlans [mode trunk|access]
    Note
    • The interfaces attached to the VNF are persistent across VNF restarts.

    • If the VNF supports hot-plugging, you can attach the interfaces when the VNF is in the running state. Otherwise, add the interfaces, and then restart the VNF.

    • You cannot change the mapping of VNF interface when the VNF is in running state.

    Starting in Junos OS Release 19.2R1, changes to the default MAC flooding behavior of the VNF interfaces improve the performance of multicast traffic. If a VNF interface is not attached to a VLAN, drop flow is not configured. The interface functions as a trunk port that can receive and forward the VLAN traffic. If the destination MAC address is known, the interface forwards the traffic to the destined port. If the MAC address is unknown, or if it is broadcast or multicast traffic, the interface forwards the traffic to all the ports in the same VLAN and to the ports that do not have a VLAN assigned.

    In earlier releases, if a VNF interface is not attached to a VLAN, drop flow is configured and the VNF interface drops the outgoing traffic.

    Note

    You can prevent the VNF interface from sending or receiving traffic by using the deny-forwarding CLI option.

    If the deny-forwarding option is enabled on an interface that is a part of cross-connect, then the cross-connect status goes down and drops all traffic.

    set virtual-network-options vnf-name interface interface-name forwarding-options deny-forwarding
  • To delete a VNF interface:

    user@host# delete virtual-network-functions vnf-name interfaces interface-name
    user@host# commit
    Note
    • To delete an interface, you must stop the VNF, delete the interface, and start the VNF.

    • After attaching or detaching a virtual function, you must restart the VNF for changes to take effect.

    • eth0 and eth1 are reserved for default VNF interfaces that are connected to the internal network and out-of-band management network. Therefore, the configurable VNF interface names start from eth2.

    • Within a VNF, the interface names can be different, based on guest OS naming convention. VNF interfaces that are configured in JCP might not appear in the same order within the VNF.

    • You must use the target PCI addresses to map to the VNF interfaces that are configured in JCP and name them accordingly.

  • Starting in Junos OS Release 19.2R1, you can manually disable the VNF interfaces (eth0 through eth9) on the OVS or custom bridge by issuing the following command:

    user@host# set virtual-network-functions vnf-name interfaces interface-name link disable
    Note
    • If a link in a cross-connect configuration is down, then the cross-connect will also be down.

    • You cannot manually disable the VF interfaces on the VNF.

    • The eth0 and eth1 interfaces, which function as management interfaces, can be disabled only if the no-default-interfaces option is configured.

    To identify a disabled link, issue the following command:

    user@host> show vmhost network nfv-back-plane

    For example, the following output shows that the eth2 link on the centos VNF is disabled. Note that the output is truncated to provide only the details relevant to the disabled link.

Configuring VNF Storage Devices

The NFX150 supports the following storage options for VNFs:

  • CD-ROM

  • Disk

  • USB

To add a virtual CD or to update the source file of a virtual CD, enter the following command:

user@host# set virtual-network-functions vnf-name storage device-name type cdrom source file file-name

You can specify a valid device name in the format hdx or sdx or vdx. For example, hdb, sdc, vdb and so on.

To add a virtual USB storage device, enter the following command:

user@host# set virtual-network-functions vnf-name storage device-name type usb source file file-name

To attach an additional hard disk, enter the following command:

user@host# set virtual-network-functions vnf-name storage device-name type disk [bus-type virtio | ide] [file-type raw | qcow2] source file file-name

To delete a virtual CD, USB storage device, or a hard disk from the VNF, enter the following command:

user@host# delete virtual-network-functions vnf-name storage device-name
Note
  • After attaching or detaching a CD from a VNF, you must restart the device for changes to take effect. The CD detach operation fails if the device is in use within the VNF.

  • VNF supports one virtual CD, one virtual USB storage device, and multiple virtual hard disks.

  • You can update the source file in a CD or USB storage device while the VNF is in running state.

  • You must save the source file in the /var/public directory and the file must have read and write permission for all users.

Instantiating a VNF

You can instantiate a VNF by configuring the VNF name, and by specifying the path of an image.

While instantiating a VNF with an image, two VNF interfaces are added by default. These interfaces are required for management and internal network. The target Peripheral Component Interconnect (PCI) addresses, such as 0000:00:03:0 and 0000:00:04:0 are reserved for these interfaces.

  • To instantiate a VNF using an image:

    Note

    Only Qcow2 and Raw image types are supported.

    user@host# set virtual-network-functions vnf-name image file-path
    user@host# set virtual-network-functions vnf-name image image-type image-type
    user@host# commit
    Note

    When configuring VNFs, do not use VNF names in the format vnfn—for example, vnf1, vnf2, and so on. Configurations containing such names fail to commit.

  • (Optional) To specify a UUID for the VNF:

    user@host# set virtual-network-functions vnf-name [uuid vnf-uuid]

    uuid is an optional parameter, and it is recommended to allow the system to allocate a UUID for the VNF.

Note

You cannot change image configuration after saving and committing the image configuration. To change the image for a VNF, you must delete and create a VNF again.

Verify that the VNF Instantiated Successfully

Verify that the VNF instantiated successfully by using the following command:

user@host> show virtual-network-functions

The Liveliness output field of a VNF indicates whether the IP address of the VNF is reachable or not reachable over the internal management network. The default IP address of the liveliness bridge is 192.0.2.1/24.