Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Modified and Unmodified i40e Driver

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

Understanding the Differences between Modified and Unmodified i40e 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 i40e driver the physical function sets the port to the MAC promiscuous and VLAN promiscuous mode. In this case, all the frames associated with the port is passed to the single VF which is associated with the vMX. A single VF instance might be supported on a PF and the total number of VLANs per IFD is limited to 64 if the vlan-offload option is configured.

In the unmodified i40e driver, the vMX configures the device through the PF driver with the VLAN ID that the PF driver receive. When an Ethernet frame is received, the outer VLAN is compared with configured VLAN ID and frame, and then forwarded to the VF associated with the vMX. In another vMX instance, using a different VF on the same physical port, you must 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. The IFL configuration determines the VLAN ID of the Ethernet frame that needs to be sent to the vMX through the VF.

Note:

When using the modified driver, you can only create a single VF per PF. Unmodified driver supports multiple VFs per PF.

Note:

By default LLDP is consumed by i40e physical function (PF) driver. To disable the LLDP packet consumption at PF level, use following command:

#echo lldp stop > /sys/kernel/debug/i40e/PCI-bus-info/

You can retrieve PCI bus information from the output of ethtool -i interface-name| grep bus-info command.

Note:

If you notice that i40e driver link is not stable, you can renegotiate the link speed by using the following command:

# ethtool -r ethX/interface-name

Deploying vMX with Unmodified i40e Driver

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

Note:

Starting in Junos OS Release 18.4R1, vMX instances can be deployed with an unmodified i40e driver on Ubuntu version 16.04. XL710 NIC recommended if unmodified i40e driver version is 2.4.10 and firmware version 6.01. Unmodified 2.4.10 driver is qualified for XL710.

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.
  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:
  4. Use the ethtool -i interface-name utility to determine the driver information.
    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.

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

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

    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:
  7. Install vMX.

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.

Moving from Modified i40e Driver to Unmodified i40e Driver

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

Note:

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

Note:

Support for modified drivers for i40e is not available starting in Junos OS Release 19.1 and later releases.

  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:
    Note:

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

  2. Configure the vMX configuration file (vmx.conf) to skip the installation of the modified driver. For example:
  3. Install vMX.
  4. Login to vMX and set the per IFD configuration knob for the respective IFDs.

Moving from Unmodified i40e Driver to Modified i40e Driver

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

  1. Clear the relevant knob from vMX configuration file.
  2. Clean the vMX.
  3. Reinstall vMX on your device.