Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

header-navigation
keyboard_arrow_up
list Table of Contents
file_download PDF
{ "lLangCode": "en", "lName": "English", "lCountryCode": "us", "transcode": "en_US" }
English
keyboard_arrow_right

Modified and Unmodified IXGBE Driver

date_range 21-Sep-21

Read this topic to understand the modified and unmodified IXGBE driver support for vMX instances.

Understanding the Differences between Modified and Unmodified IXGBE Driver

The single root I/O virtualization (SR-IOV) functionality consists of a physical function (PF) driver and a virtual function (VF) driver. The PF driver of an SR-IOV device is used to manage the physical function of an SR-IOV capable device. A VF driver of an SR-IOV device shares one or more physical resources with the physical function and other virtual functions that are associated with the same physical function.

In the modified IXGBE driver, the PF driver is in VLAN promiscuous mode and the modified driver accepts and transfers all the packets to the virtual Forwarding Plane (vFP) irrespective of the VLAN tag. The vFP does the filtering of packets based on the VLAN and rejects the packets if the VLAN is not programmed. The knowledge of VLAN stays within the vFP.

In the unmodified IXGBE driver, the vMX configures the device using the PF driver with the VLAN ID the driver receives. When an Ethernet frame is received, the outer VLAN is compared with the configured VLAN ID and frame, and then forwarded to the appropriate VF associated with the vMX instance. When another vMX instance is using a different VF on the same physical port, you can configure a different set of VLAN IDs to the device to receive the Ethernet frames. As a result, multiple vMX instances can share the same physical port only if the VLAN ID is unique (multiple VFs are supported on a port).

The IFL configuration determines the VLAN ID of the Ethernet frames that can be sent to the vMX through the VF. In the case of unmodified IXGBE driver, the MAC cannot be set to promiscuous mode resulting in the layer 2 forwarding functionality not being supported on the vMX with the unmodified driver.

Note:

On a vMX instance, you can create multiple VFs on the same PF, but only one VF from the PF must be assigned to one vMX instance. You can assign other VFs from the same PF to other vMX instances.

Deploying vMX with Unmodified IXGBE Driver

Before installing a vMX instance, you must choose to load the unmodified IXGBE driver. To load the unmodified IXGBE driver:

Note:

Starting in Junos OS Release 18.4R1, vMX instances can be deployed with an unmodified IXGBE driver on Ubuntu version 16.04. IXGBE based NIC recommended if IXGBE driver version is 5.3.6 and compatible firmware version is 0x61bd0001.

Note:

To use the unmodified driver, you must set the value of the use_native_drivers command to true in the vMX configuration file.

  1. Upgrade the host OS to Ubuntu 16.04 version or later, and ensure that the IP route package value is iproute2-4.9.0.
  2. Remove the existing driver module.
    content_copy zoom_out_map
    rmmod ixgbe
  3. Install the required version of the unmodified driver on the host. If host is running an older version of the driver, upgrade the host to the required version. For example:
    content_copy zoom_out_map
    insmod ixgbe.ko
    
  4. Use the ethtool -i interface-name utility to determine the driver information.
    content_copy zoom_out_map
    [root@host ~]# ethtool -i eth6
    
    driver: ixgbe
    version: 5.3.6
    firmware-version: 0x61bd0001
    Note:

    The firmware version must be compatible with the driver version that you are installing.

  5. Create a virtual function (VF) using either of the following commands.
    content_copy zoom_out_map
    echo num_of_vf > /sys/class/net/<interface-name>/device/sriov_numvfs
    

    For example, if you want to create two VFs, use the following command:

    content_copy zoom_out_map
    echo 2 > /sys/class/net/eth16/device/sriov_numvfs
    

    If you want to modify the number of VFs, use the following command:

    content_copy zoom_out_map
    echo 0 > /sys/class/net/<interface-name>/device/sriov_numvfs
    echo num_of_vf > /sys/class/net/<interface-name>/device/sriov_numvfs
    
    Note:

    On some PCI devices, when you change the number of VFs, you might receive the error message : Device or resource busy. In such cases, you first set sriov_numvfs to 0, and then set it to your new value.

    If the value of sriov_numvfs > 0, then you have to set it to 0 first and then change it to numeric value.

  6. Configure the vMX configuration file (vmx.conf) to skip the installation of the modified driver. For example:
    content_copy zoom_out_map
    FORWARDING_PLANE:
        memory-mb   : 16384
        vcpus       : 12
        console_port: 8602
        device-type : sriov
        use_native_drivers : true 
    
  7. Install vMX.
    content_copy zoom_out_map
     ./vmx.sh --install --cfg ../vmx.conf
    

The vMX programs the PF driver with VLAN information. The PF driver compares the outer VLAN of the VLAN tag information of the packets against the programmed VLAN and forwards to corresponding VF.

  1. Enter the CLI configuration mode after logging in to the vMX and set the per interface configuration knob for the respective interface.

    content_copy zoom_out_map
    set interfaces <interface-name>  vlan-offload
    

Moving from Modified IXGBE Driver to Unmodified IXGBE Driver

When you try to move an existing deployment from modified IXGBE driver to unmodified IXGBE driver, perform the following steps:

Note:

Use the set interface <interface-name> new-vlan-offload-knob command to offload the VLAN filtering to unmodified PF driver.

  1. Install the required version of the unmodified driver on the host. If host is running an older version of the driver, upgrade the host to the required version. For example:
    content_copy zoom_out_map
    insmod ./ixgbe.ko <installing the driver>
    ethtool -i eth8
    driver: ixgbe
    version: 5.3.6
    firmware-version: 0x61bd0001
    
    Note:

    The vMX with the modified driver is the default choice at the time of spawning vMX. You can choose the unmodified PF driver through the configuration. This selection must be made before installing vMX and cannot be modified during run time.

  2. Configure the vMX configuration file (vmx.conf) to skip the installation of the modified driver. For example:
    content_copy zoom_out_map
    FORWARDING_PLANE:
        memory-mb   : 16384
        vcpus       : 12
        console_port: 8602
        device-type : sriov
        use_native_drivers : true 
    
  3. Install vMX.
    content_copy zoom_out_map
     ./vmx.sh --install --cfg ../vmx.conf
    
  4. Login to vMX and set the VLAN offload option.
    content_copy zoom_out_map
    set interfaces <interface-name>  vlan-offload
    

    A single VF instance might be supported on a PF and the total number of VLANs per interface is limited to 64 if the vlan-offload option is configured.

Moving from Unmodified IXGBE Driver to Modified IXGBE Driver

When you try to move an existing deployment from unmodified IXGBE driver to modified IXGBE driver, perform the following steps:

  1. Clear the relevant knob from vMX configuration file.
    content_copy zoom_out_map
    FORWARDING_PLANE:
        memory-mb   : 16384
        vcpus       : 12
        console_port: 8602
        device-type : sriov
    
  2. Cleanup the vMX, delete existing configuration and VLAN IDs.
    content_copy zoom_out_map
     ./vmx.sh --cleanup --cfg ../vmx.conf
    
  3. Reinstall vMX on your device.
    content_copy zoom_out_map
     ./vmx.sh --install --cfg ../vmx.conf
    
footer-navigation